diff --git a/.gitbook.yaml b/.gitbook.yaml index 76d4e9b810..282a1e5371 100644 --- a/.gitbook.yaml +++ b/.gitbook.yaml @@ -1,13 +1,106 @@ root: ./ -redirects: - security: contributors/contributing/security/README.md - guides/developer/quick-start: development-docs.md - guides/developer-guides/rest-api/: development-docs.md - guides/developer/mobile-apps/whitelabeling-mobile-apps: development-docs.md - guides/apps-development/getting-started: development-docs.md - guides/bots/create-and-run-a-bot/hubot-bot: development-docs.md - apps-development/getting-started: development-docs.md - api/rest-api: development-docs.md +redirects: + security: contributors/how-can-i-help/security/README.md + guides/developer/quick-start: rocket.chat-resources/development-docs.md + guides/developer-guides/rest-api/: rocket.chat-resources/development-docs.md + guides/developer/mobile-apps/whitelabeling-mobile-apps: rocket.chat-resources/development-docs.md + guides/apps-development/getting-started: rocket.chat-resources/development-docs.md + guides/bots/create-and-run-a-bot/hubot-bot: rocket.chat-resources/development-docs.md + guides/administration/administration/identity-management-ee-vs-ce: guides/administration/identity-management-ee-vs-ce.md + apps-development/getting-started: rocket.chat-resources/development-docs.md + api/rest-api: rocket.chat-resources/development-docs.md + guides/administration/settings/ldap: guides/administration/admin-panel/settings/ldap/README.md + guides/administration/admin-panel/settings/ldap/user-search-settings: guides/administration/admin-panel/settings/ldap/README.md + installation/manual-installation/centos: quick-start/deploying-rocket.chat/other-deployment-methods/manual-installation/rocket.chat-in-centos.md + administrator-guides/integrations/zapier/using-zaps: guides/administration/admin-panel/integrations/zapier.md + installation/docker-containers/docker-compose: quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/README.md + developer-guides/rest-api: rocket.chat-resources/development-docs.md + developer-guides/rest-api/authentication/login: rocket.chat-resources/development-docs.md + developer-guides/realtime-api: rocket.chat-resources/development-docs.md + guides/administration/settings/video-conference-admin-guide/omnichannel-video-audio-call-admins-guide: guides/rocket.chat-conference-call/omnichannel-video-audio-call-admins-guide.md + developer-guides/mobile-apps/supporting-ssl: rocket.chat-resources/development-docs.md + developer-guides: rocket.chat-resources/development-docs.md + guides/administration/settings/omnichannel-admins-guide: guides/administration/admin-panel/settings/omnichannel-admins-guide/README.md + quick-start/installing-and-updating/paas-deployments/aws-marketplace: quick-start/installing-and-updating/paas-deployments/aws.md + guides/administration/administration/settings/canned-responses-rocket.chat-admins-guides: guides/omnichannel/canned-responses/canned-responses-rocket.chat-admins-guides.md + developer-guides/iframe-integration/authentication: rocket.chat-resources/development-docs.md + developer-guides/rest-api/chat/postmessage: rocket.chat-resources/development-docs.md + api/rest-api/personal-access-tokens: rocket.chat-resources/development-docs.md + developer-guides/livechat-api: rocket.chat-resources/development-docs.md + developer-guides/rest-api/im: rocket.chat-resources/development-docs.md + developer-guides/rest-api/authentication: rocket.chat-resources/development-docs.md + guides/omnichannel-guides/omnichannel-manger-guides: guides/omnichannel/managers.md + quick-start/installing-and-updating/docker-containers/docker-compose: quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/README.md + developer-guides/developing-apps/getting-started: rocket.chat-resources/development-docs.md + developer-guides/rest-api/channels/cleanhistory: rocket.chat-resources/development-docs.md + developer-guides/rest-api/channels/info: rocket.chat-resources/development-docs.md + developer-guides/rest-api/livechat/sms-incoming: rocket.chat-resources/development-docs.md + guides/administration/settings/account-settings: guides/administration/admin-panel/settings/account-settings/README.md + guides/developer/iframe-integration/authentication/testing-the-iframe-authentication: rocket.chat-resources/development-docs.md + installation/manual-installation/centos/: quick-start/deploying-rocket.chat/other-deployment-methods/manual-installation/rocket.chat-in-centos.md + installation/paas-deployments/heroku: quick-start/installing-and-updating/introduction/choosing-a-deployment-method.md + installing-and-updating/manual-installation/centos: quick-start/deploying-rocket.chat/other-deployment-methods/manual-installation/rocket.chat-in-centos.md + developer-guides/quick-start: rocket.chat-resources/development-docs.md + api/rest-api/methods/chat/sendmessage: rocket.chat-resources/development-docs.md + developer-guides/mobile-apps: rocket.chat-resources/development-docs.md + developer-guides/realtime-api/subscriptions: rocket.chat-resources/development-docs.md + api/rest-api/methods/subscriptions/read: rocket.chat-resources/development-docs.md + api/rest-api/methods/users/create: rocket.chat-resources/development-docs.md + developer-guides/realtime-api/method-calls/login: rocket.chat-resources/development-docs.md + developer-guides/realtime-api/method-calls/login/: rocket.chat-resources/development-docs.md + developer-guides/rest-api/livechat: rocket.chat-resources/development-docs.md + quick-start/installing-and-updating/manual-installation/centos: quick-start/deploying-rocket.chat/other-deployment-methods/manual-installation/rocket.chat-in-centos.md + user-guides/voice-and-video-calls: guides/rocket.chat-conference-call/README.md + developer-guides/deeplink: rocket.chat-resources/development-docs.md + developer-guides/rest-api/users/info: rocket.chat-resources/development-docs.md + api/realtime-api/subscriptions/stream-notify-room: rocket.chat-resources/development-docs.md + api/rest-api/methods/chat/getthreadslist: rocket.chat-resources/development-docs.md + guides/administration/administration/settings/email/direct-reply: guides/administration/admin-panel/settings/email/direct-reply.md + administrator-guides/setting-up-video-conferencing: guides/rocket.chat-conference-call/conference-call-admin-guide/README.md + api/realtime-api: rocket.chat-resources/development-docs.md + api/realtime-api/method-calls: rocket.chat-resources/development-docs.md + api/realtime-api/method-calls/logout: rocket.chat-resources/development-docs.md + guides/administration/administration/settings/ldap: guides/administration/admin-panel/settings/ldap/README.md + developer-guides/ui-and-theming: rocket.chat-resources/development-docs.md + developer-guides/branches-and-releases: rocket.chat-resources/development-docs.md + developer-guides/rest-api/im/list: rocket.chat-resources/development-docs.md + developer-guides/rest-api/integration: rocket.chat-resources/development-docs.md + developer-guides/rest-api/miscellaneous/spotlight: rocket.chat-resources/development-docs.md + developer-guides/rest-api/rate-limiter/: rocket.chat-resources/development-docs.md + developer-guides/rest-api/rooms/upload: rocket.chat-resources/development-docs.md + developer-guides/rest-api/subscriptions/get: rocket.chat-resources/development-docs.md + quick-start/accessing-your-workspace/creating-the-first-administrator: quick-start/accessing-your-workspace/admin-account-creation.md + quick-start/accessing-your-workspace/starting-and-stopping: quick-start/accessing-your-workspace/starting-and-stopping-docker-compose.md + guides/administration/administration/settings/email/setup: guides/administration/admin-panel/settings/email/setup.md + guides/administration/settings/file-upload: guides/administration/admin-panel/settings/file-upload/README.md + quick-start/installing-and-updating/paas-deployments/oracle-cloud: quick-start/deploying-rocket.chat/README.md + master/server-management/integration-and-webhooks/telegram: guides/administration/admin-panel/integrations/telegram.md + installation/paas-deployments/ibm-bluemix/: quick-start/deploying-rocket.chat/README.md + guides/administration/settings/video-conference-admin-guide/jitsi-admins-guide: guides/rocket.chat-conference-call/README.md + guides/administration/admin-panel/settings/ldap/ldap-authentication-settings: guides/administration/admin-panel/settings/ldap/ldap-connection-setting.md + guides/administration/admin-panel/settings/ldap/ldap-basic-settings: guides/administration/admin-panel/settings/ldap/README.md + guides/administration/admin-panel/settings/ldap/settings: guides/administration/admin-panel/settings/ldap/README.md + guides/administration/admin-panel/settings/ldap/ldap-sync-settings: guides/administration/admin-panel/settings/ldap/ldap-data-sync-settings.md + getting-support/asking-for-help: getting-support/community-resources.md + guides/administrator-guides/setting-up-video-conferencing: guides/rocket.chat-conference-call/README.md + developer-guides/rest-api/users/create: rocket.chat-resources/development-docs.md + api/rest-api/methods/authentication/login: rocket.chat-resources/development-docs.md + apps-development/uikit: rocket.chat-resources/development-docs.md + guides/user-guides/user-panel/managing-your-account/profile: use-rocket.chat/user-guides/user-panel/README.md + guides/administration: use-rocket.chat/workspace-administration/README.md + guides/user-guides/direct-messages-between-multiple-users: use-rocket.chat/user-guides/rooms/direct-messages/README.md + api/rest-api/methods/: rocket.chat-resources/development-docs.md + apps-development/getting-started/rocket.chat-app-engine-cli: rocket.chat-resources/development-docs.md + guides/administration/admin-panel/users/invite-users-to-your-rocket.chat-workspace?_hsmi=238490370&_hsenc=p2ANqtz-_1Sa8se6RnH7aUMWdqyZHL0mT4grGKT7QdFZQAMyv5eLladNKe_29HV7J0gLaHgB7S18qfyHOO5S0-qZNOIr_0S9ytmg: use-rocket.chat/workspace-administration/users/README.md + guides/omnichannel/livechat-widget-installation/troubleshoot-livechat-widget-installation: use-rocket.chat/omnichannel/livechat-widget-installation.md + guides/rocket.chat-call-center/voip-introduction/voip-prerequisites: use-rocket.chat/rocket.chat-voice-channel/getting-started-with-voice-channel.md + guides/user-guides/channels/channel-actions/channel-message-list: use-rocket.chat/user-guides/rooms/channels/create-a-new-channel.md + guides/user-guides/rooms/direct-messages/direct-messages-action/export-messages-in-direct-message: use-rocket.chat/user-guides/rooms/direct-messages/direct-messages-action.md + guides/user-guides/rooms/direct-messages/direct-messages-between-multiple-users: use-rocket.chat/user-guides/rooms/direct-messages/README.md + guides/user-guides/teams/teams-channels/delete-a-teams-channel: use-rocket.chat/user-guides/rooms/README.md + guides/user-guides/user-panel/managing-your-account/personal-access-token: /use-rocket.chat/user-guides/user-panel/managing-your-account/README.md + + diff --git a/.gitbook/assets/ Configure the FreePBX firewall b/.gitbook/assets/ Configure the FreePBX firewall new file mode 100644 index 0000000000..94ee1871ad Binary files /dev/null and b/.gitbook/assets/ Configure the FreePBX firewall differ diff --git a/.gitbook/assets/0 (1).png b/.gitbook/assets/0 (1).png new file mode 100644 index 0000000000..904c359383 Binary files /dev/null and b/.gitbook/assets/0 (1).png differ diff --git a/.gitbook/assets/0 (2) (2).png b/.gitbook/assets/0 (2) (1) (1) (1) (1) (1) (1).png similarity index 100% rename from .gitbook/assets/0 (2) (2).png rename to .gitbook/assets/0 (2) (1) (1) (1) (1) (1) (1).png diff --git a/.gitbook/assets/0 (2) (1) (1) (1) (1) (1).png b/.gitbook/assets/0 (2) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..ad6eddf626 Binary files /dev/null and b/.gitbook/assets/0 (2) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/0 (2) (1) (1) (1) (1).png b/.gitbook/assets/0 (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..ad6eddf626 Binary files /dev/null and b/.gitbook/assets/0 (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/0 (2) (1) (1) (2).png b/.gitbook/assets/0 (2) (1) (1) (2).png new file mode 100644 index 0000000000..ad6eddf626 Binary files /dev/null and b/.gitbook/assets/0 (2) (1) (1) (2).png differ diff --git a/.gitbook/assets/0 (3).png b/.gitbook/assets/0 (3).png new file mode 100644 index 0000000000..8eaef916e8 Binary files /dev/null and b/.gitbook/assets/0 (3).png differ diff --git a/.gitbook/assets/0 (4).png b/.gitbook/assets/0 (4).png new file mode 100644 index 0000000000..80baa0f1b8 Binary files /dev/null and b/.gitbook/assets/0 (4).png differ diff --git a/.gitbook/assets/0 (5).png b/.gitbook/assets/0 (5).png new file mode 100644 index 0000000000..c09c51b039 Binary files /dev/null and b/.gitbook/assets/0 (5).png differ diff --git a/.gitbook/assets/0 (6).png b/.gitbook/assets/0 (6).png new file mode 100644 index 0000000000..e6481c7d76 Binary files /dev/null and b/.gitbook/assets/0 (6).png differ diff --git a/.gitbook/assets/0 (7).png b/.gitbook/assets/0 (7).png new file mode 100644 index 0000000000..36fbfff51a Binary files /dev/null and b/.gitbook/assets/0 (7).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (1).png similarity index 100% rename from .gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1).png rename to .gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (1).png diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (10).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (10).png similarity index 100% rename from .gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (10).png rename to .gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (10).png diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (4).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (11).png similarity index 100% rename from .gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (4).png rename to .gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (11).png diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (6).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (12).png similarity index 100% rename from .gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (6).png rename to .gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (12).png diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (9).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (13).png similarity index 100% rename from .gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (9).png rename to .gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (13).png diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (14).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (14).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (14).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (15).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (15).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (15).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (16).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (16).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (16).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (17).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (17).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (17).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (18).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (18).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (18).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (19).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (19).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (19).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (2).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (2).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (2).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (20).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (20).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (20).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (21).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (21).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (21).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (22).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (22).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (22).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (3).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (3).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (3).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (4).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (4).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (4).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (5).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (5).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (5).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (6).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (6).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (6).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (7).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (7).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (7).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (8).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (8).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (8).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (9).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (9).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (9).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (13).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (13).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (13).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (14).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (14).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (14).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (15).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (15).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (15).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (16).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (16).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (16).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (17).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (17).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (17).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (18).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (18).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (18).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (19).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (19).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (19).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (2).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (2).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (20).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (20).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (20).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (21).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (21).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (21).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (3).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (4).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (5).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (6).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (6).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (7).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (7).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (8).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (8).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (9).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (9).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (10).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (10).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (10).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (11).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (11).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (11).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (12).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (12).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (12).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (13).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (13).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (13).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (14).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (14).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (14).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (15).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (15).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (15).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (16).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (16).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (16).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (17).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (17).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (17).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (18).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (18).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (18).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (19).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (19).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (19).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (2).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (2).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (20).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (20).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (20).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (21).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (21).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (21).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (3).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (4).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (5).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (6).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (6).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (7).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (7).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (8).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (8).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (9).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (9).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (10).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (10).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (10).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (11).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (11).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (11).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (12).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (12).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (12).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (13).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (13).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (13).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (14).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (14).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (14).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (15).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (15).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (15).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (16).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (16).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (16).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (17).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (17).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (17).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (18).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (18).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (18).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (19).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (19).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (19).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (2).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (2).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (2).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (20).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (20).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (20).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (3).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (3).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (3).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (4).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (4).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (4).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (5).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (5).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (5).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (6).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (6).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (6).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (7).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (7).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (7).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (8).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (8).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (8).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (9).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (9).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1) (9).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (1).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (1).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (1).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (1).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (10).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (10).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (10).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (11).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (11).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (11).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (12).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (12).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (12).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (13).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (13).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (13).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (14).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (14).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (14).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (15).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (15).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (15).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (16).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (16).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (16).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (17).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (17).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (17).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (18).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (18).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (18).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (19).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (19).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (19).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (2).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (2).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (2).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (20).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (20).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (20).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (21).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (21).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (21).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (3).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (3).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (3).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (4).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (4).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (4).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (5).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (5).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (5).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (6).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (6).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (6).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (7).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (7).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (7).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (8).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (8).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (8).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (9).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (9).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (14) (9).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (15).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (15).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (15).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (16).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (16).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (16).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (17).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (17).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (17).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (18).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (18).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (18).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (19).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (19).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (19).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (2).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (2).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (2).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (3).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (3).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (3).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (4).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (4).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (4).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (5).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (5).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (5).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (6).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (6).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (6).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (7).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (7).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (7).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (8).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (8).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (8).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (9).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (9).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10) (9).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (10).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (11).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (11).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (11).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (12).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (12).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (12).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (13).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (13).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (13).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (14).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (14).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (14).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (15).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (15).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (15).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (16).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (16).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (16).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (17).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (17).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (17).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (18).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (18).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (18).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (19).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (19).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (19).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (2).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (2).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (2).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (20).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (20).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (20).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (3).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (3).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (3).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (4).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (4).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (4).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (5).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (5).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (5).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (6).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (6).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (6).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (7).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (7).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (7).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (8).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (8).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (8).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (9).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (9).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12) (9).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (12).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (13).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (13).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (13).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (14).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (14).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (14).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (15).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (15).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (15).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (16).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (16).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (16).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (17).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (17).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (17).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (18).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (18).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (18).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (19).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (19).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (19).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (2).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (2).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (3).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (4).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (5).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (6).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (6).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (7).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (7).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (8).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (8).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (9).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (9).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (10).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (10).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (10).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (11).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (11).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (11).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (12).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (12).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (12).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (13).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (13).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (13).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (14).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (14).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (14).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (15).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (15).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (15).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (16).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (16).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (16).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (17).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (17).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (17).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (18) (1).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (18) (1).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (18) (1).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (18).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (18).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (18).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (19).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (19).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (19).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (2).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (2).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (3).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (3).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (4).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (4).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (5).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (5).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (6).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (6).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (7).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (7).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (8).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (8).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (9).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (9).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (1).png differ diff --git a/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (10).png b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (10).png new file mode 100644 index 0000000000..92d84d8c26 Binary files /dev/null and b/.gitbook/assets/0 (8) (5) (5) (5) (5) (5) (4) (4) (1) (1) (10).png differ diff --git a/.gitbook/assets/0 (8).png b/.gitbook/assets/0 (8).png new file mode 100644 index 0000000000..aa8b3de553 Binary files /dev/null and b/.gitbook/assets/0 (8).png differ diff --git a/.gitbook/assets/002 (1).jpg b/.gitbook/assets/002 (1).jpg new file mode 100644 index 0000000000..156d8aae1c Binary files /dev/null and b/.gitbook/assets/002 (1).jpg differ diff --git a/.gitbook/assets/002.jpg b/.gitbook/assets/002.jpg new file mode 100644 index 0000000000..156d8aae1c Binary files /dev/null and b/.gitbook/assets/002.jpg differ diff --git a/.gitbook/assets/004 (1).jpg b/.gitbook/assets/004 (1).jpg new file mode 100644 index 0000000000..8fffd3c920 Binary files /dev/null and b/.gitbook/assets/004 (1).jpg differ diff --git a/.gitbook/assets/004.jpg b/.gitbook/assets/004.jpg new file mode 100644 index 0000000000..2cc57ef9de Binary files /dev/null and b/.gitbook/assets/004.jpg differ diff --git a/.gitbook/assets/009.jpg b/.gitbook/assets/009.jpg new file mode 100644 index 0000000000..79e6ea0080 Binary files /dev/null and b/.gitbook/assets/009.jpg differ diff --git a/.gitbook/assets/0365 OAuth RC details b/.gitbook/assets/0365 OAuth RC details new file mode 100644 index 0000000000..f96cd1ef3d Binary files /dev/null and b/.gitbook/assets/0365 OAuth RC details differ diff --git a/.gitbook/assets/1 (12).png b/.gitbook/assets/1 (12).png index 067a0743fc..e24d147be3 100644 Binary files a/.gitbook/assets/1 (12).png and b/.gitbook/assets/1 (12).png differ diff --git a/.gitbook/assets/1 (13).png b/.gitbook/assets/1 (13).png index e24d147be3..067a0743fc 100644 Binary files a/.gitbook/assets/1 (13).png and b/.gitbook/assets/1 (13).png differ diff --git a/.gitbook/assets/1 (4).png b/.gitbook/assets/1 (4).png index eae1abbe30..8d06e6d2d7 100644 Binary files a/.gitbook/assets/1 (4).png and b/.gitbook/assets/1 (4).png differ diff --git a/.gitbook/assets/1 (5).png b/.gitbook/assets/1 (5).png index 8d06e6d2d7..eae1abbe30 100644 Binary files a/.gitbook/assets/1 (5).png and b/.gitbook/assets/1 (5).png differ diff --git a/.gitbook/assets/120.png b/.gitbook/assets/120.png new file mode 100644 index 0000000000..84ef4e7fdf Binary files /dev/null and b/.gitbook/assets/120.png differ diff --git a/.gitbook/assets/16 (1).png b/.gitbook/assets/16 (1).png index 4efe3c1bfc..c01ca7dc85 100644 Binary files a/.gitbook/assets/16 (1).png and b/.gitbook/assets/16 (1).png differ diff --git a/.gitbook/assets/16 (2).png b/.gitbook/assets/16 (2).png index c01ca7dc85..f8e15b6d6d 100644 Binary files a/.gitbook/assets/16 (2).png and b/.gitbook/assets/16 (2).png differ diff --git a/.gitbook/assets/16.png b/.gitbook/assets/16.png new file mode 100644 index 0000000000..4efe3c1bfc Binary files /dev/null and b/.gitbook/assets/16.png differ diff --git a/.gitbook/assets/2 (10).png b/.gitbook/assets/2 (10).png new file mode 100644 index 0000000000..52688ca2da Binary files /dev/null and b/.gitbook/assets/2 (10).png differ diff --git a/.gitbook/assets/2 (12).png b/.gitbook/assets/2 (12).png index 52688ca2da..a3f6fe7751 100644 Binary files a/.gitbook/assets/2 (12).png and b/.gitbook/assets/2 (12).png differ diff --git a/.gitbook/assets/2 (13).png b/.gitbook/assets/2 (13).png index a3f6fe7751..ed53719585 100644 Binary files a/.gitbook/assets/2 (13).png and b/.gitbook/assets/2 (13).png differ diff --git a/.gitbook/assets/2 (4).png b/.gitbook/assets/2 (4).png index 1ce0978791..f984492dab 100644 Binary files a/.gitbook/assets/2 (4).png and b/.gitbook/assets/2 (4).png differ diff --git a/.gitbook/assets/2 (5).png b/.gitbook/assets/2 (5).png index f984492dab..1ce0978791 100644 Binary files a/.gitbook/assets/2 (5).png and b/.gitbook/assets/2 (5).png differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (1).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (1).jpg similarity index 100% rename from .gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (1).jpg rename to .gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (1).jpg diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (2).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (10).jpg similarity index 100% rename from .gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (2).jpg rename to .gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (10).jpg diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (11).jpg similarity index 100% rename from .gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3).jpg rename to .gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (11).jpg diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (12).jpg similarity index 100% rename from .gitbook/assets/2021-06-10_22-31-38 (3) (3) (3).jpg rename to .gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (12).jpg diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (13).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (13).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (13).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (14).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (14).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (14).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (15).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (15).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (15).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (16).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (16).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (16).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (17).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (17).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (17).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (18).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (18).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (18).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (19).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (19).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (19).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (2).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (2).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (2).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (20).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (20).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (20).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (21).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (21).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (21).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (22).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (22).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (22).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (23).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (23).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (23).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (24).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (24).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (24).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (25).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (25).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (25).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (26).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (26).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (26).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (27).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (27).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (27).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (28).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (28).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (28).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (29).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (29).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (29).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (3).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (3).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (3).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (30).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (30).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (30).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (31).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (31).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (31).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (32).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (32).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (32).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (33).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (33).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (33).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (34).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (34).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (34).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (35).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (35).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (35).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (36).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (36).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (36).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (37).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (37).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (37).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (38).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (38).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (38).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (39).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (39).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (39).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (4).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (4).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (4).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (5).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (5).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (5).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (6).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (6).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (6).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (7).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (7).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (7).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (8).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (8).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (8).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (9).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (9).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (9).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (13).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (13).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (13).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (14).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (14).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (14).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (15).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (15).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (15).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (16).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (16).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (16).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (17).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (17).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (17).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (18).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (18).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (18).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (19).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (19).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (19).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (2).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (2).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (2).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (20).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (20).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (20).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (21).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (21).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (21).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (22).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (22).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (22).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (23).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (23).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (23).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (25).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (25).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (25).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (27).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (27).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (27).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (28).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (28).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (28).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (29).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (29).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (29).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (3).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (3).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (3).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (30).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (30).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (30).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (31).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (31).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (31).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (32).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (32).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (32).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (33).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (33).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (33).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (34).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (34).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (34).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (35).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (35).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (35).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (36).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (36).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (36).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (37).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (37).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (37).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (38).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (38).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (38).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (4).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (4).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (4).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (5).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (5).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (5).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (6).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (6).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (6).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (7).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (7).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (7).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (8).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (8).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (8).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (9).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (9).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (9).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (10).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (10).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (10).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (11).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (11).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (11).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (12).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (12).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (12).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (13).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (13).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (13).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (14).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (14).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (14).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (15).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (15).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (15).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (16).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (16).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (16).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (17).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (17).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (17).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (18).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (18).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (18).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (19).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (19).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (19).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (2).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (2).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (2).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (20).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (20).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (20).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (21).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (21).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (21).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (22).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (22).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (22).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (23).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (23).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (23).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (24).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (24).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (24).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (25).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (25).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (25).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (26).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (26).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (26).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (27).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (27).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (27).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (28).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (28).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (28).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (29).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (29).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (29).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (3).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (3).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (3).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (30).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (30).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (30).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (31).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (31).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (31).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (32).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (32).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (32).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (33).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (33).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (33).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (34).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (34).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (34).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (35).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (35).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (35).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (36).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (36).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (36).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (37).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (37).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (37).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (4).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (4).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (4).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (5).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (5).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (5).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (6).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (6).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (6).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (7).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (7).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (7).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (8).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (8).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (8).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (9).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (9).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (9).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (3).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (3).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (3).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (1).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (1).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (1).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (10).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (10).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (10).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (11).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (11).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (11).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (12).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (12).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (12).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (13).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (13).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (13).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (14).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (14).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (14).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (15).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (15).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (15).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (16).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (16).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (16).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (17).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (17).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (17).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (18).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (18).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (18).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (19).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (19).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (19).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (2).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (2).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (2).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (20).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (20).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (20).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (21).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (21).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (21).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (22).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (22).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (22).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (3).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (3).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (3).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (4).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (4).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (4).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (5).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (5).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (5).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (6).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (6).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (6).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (7).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (7).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (7).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (8).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (8).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (8).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (9).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (9).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1) (9).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (1).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (1).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (1).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (1).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (10).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (10).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (10).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (11).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (11).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (11).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (12).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (12).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (12).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (13).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (13).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (13).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (14).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (14).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (14).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (15).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (15).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (15).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (16).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (16).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (16).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (17).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (17).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (17).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (18).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (18).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (18).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (19).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (19).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (19).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (2).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (2).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (2).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (20).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (20).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (20).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (21).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (21).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (21).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (22).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (22).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (22).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (23).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (23).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (23).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (24).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (24).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (24).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (25).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (25).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (25).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (26).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (26).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (26).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (27).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (27).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (27).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (28).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (28).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (28).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (29).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (29).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (29).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (3).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (3).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (3).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (30).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (30).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (30).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (31).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (31).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (31).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (32).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (32).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (32).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (4).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (4).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (4).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (5).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (5).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (5).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (6).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (6).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (6).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (7).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (7).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (7).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (8).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (8).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (8).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (9).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (9).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (13) (9).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (14).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (14).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (14).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (15).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (15).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (15).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (16).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (16).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (16).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (17).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (17).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (17).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (18).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (18).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (18).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (19).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (19).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (19).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (2).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (2).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (2).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (20).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (20).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (20).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (21).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (21).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (21).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (3).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (3).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (3).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (4).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (4).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (4).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (5).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (5).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (5).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (6).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (6).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (6).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (7).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (7).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (7).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (8).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (8).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (8).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (9).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (9).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10) (9).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (10).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (11).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (11).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (11).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (12).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (12).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (12).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (13).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (13).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (13).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (14).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (14).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (14).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (15).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (15).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (15).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (16).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (16).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (16).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (17).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (17).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (17).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (18).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (18).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (18).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (19).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (19).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (19).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (2).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (2).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (2).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (20).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (20).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (20).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (21).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (21).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (21).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (22).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (22).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (22).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (3).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (3).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (3).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (4).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (4).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (4).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (5).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (5).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (5).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (6).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (6).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (6).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (7).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (7).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (7).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (8).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (8).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (8).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (9).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (9).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12) (9).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (12).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (13).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (13).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (13).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (14).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (14).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (14).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (15).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (15).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (15).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (2).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (2).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (2).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (3).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (3).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (3).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (4).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (4).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (4).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (5).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (5).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (5).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (6).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (6).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (6).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (7).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (7).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (7).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (8).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (8).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (8).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (9).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (9).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (9).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (10).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (10).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (10).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (11) (1) (1).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (11) (1) (1).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (11) (1) (1).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (11) (1).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (11) (1).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (11) (1).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (11) (2).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (11) (2).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (11) (2).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (11).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (11).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (11).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (12) (1) (1).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (12) (1) (1).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (12) (1) (1).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (12) (1) (2).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (12) (1) (2).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (12) (1) (2).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (12) (1).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (12) (1).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (12) (1).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (12).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (12).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (12).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (13).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (13).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (13).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (14) (1) (1).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (14) (1) (1).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (14) (1) (1).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (14) (1) (2).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (14) (1) (2).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (14) (1) (2).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (14) (1).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (14) (1).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (14) (1).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (14).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (14).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (14).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (15) (1) (1).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (15) (1) (1).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (15) (1) (1).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (15) (1).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (15) (1).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (15) (1).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (15) (2).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (15) (2).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (15) (2).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (15).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (15).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (15).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (2).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (2).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (2).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (3).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (3).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (3).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (4).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (4).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (4).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (5).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (5).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (5).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (6).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (6).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (6).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (7).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (7).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (7).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (8).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (8).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (8).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (9) (1).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (9) (1).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (9) (1).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (9).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (9).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (9).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (2).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (2).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (2).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (2).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (2).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (2).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (3).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (3).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (3).jpg differ diff --git a/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3).jpg b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/2021-06-10_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3).jpg differ diff --git a/.gitbook/assets/2021-11-11_12h17_17.png b/.gitbook/assets/2021-11-11_12h17_17.png new file mode 100644 index 0000000000..e2fc24221a Binary files /dev/null and b/.gitbook/assets/2021-11-11_12h17_17.png differ diff --git a/.gitbook/assets/2021-11-12_10h12_51.png b/.gitbook/assets/2021-11-12_10h12_51.png new file mode 100644 index 0000000000..fe11b5dc07 Binary files /dev/null and b/.gitbook/assets/2021-11-12_10h12_51.png differ diff --git a/.gitbook/assets/2021-11-12_10h34_12.png b/.gitbook/assets/2021-11-12_10h34_12.png new file mode 100644 index 0000000000..224ad67ec6 Binary files /dev/null and b/.gitbook/assets/2021-11-12_10h34_12.png differ diff --git a/.gitbook/assets/2021-11-12_10h45_09.png b/.gitbook/assets/2021-11-12_10h45_09.png new file mode 100644 index 0000000000..97bf33daf7 Binary files /dev/null and b/.gitbook/assets/2021-11-12_10h45_09.png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (10).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (10).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (10).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (11).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (11).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (11).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (12).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (12).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (12).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (13).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (13).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (13).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (14).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (14).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (14).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (15).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (15).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (15).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (16).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (16).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (16).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (17).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (17).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (17).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (18).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (18).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (18).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (19).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (19).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (19).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (2).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (2).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (2).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (20).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (20).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (20).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (21).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (21).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (21).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (22).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (22).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (22).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (23).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (23).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (23).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (24).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (24).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (24).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (25).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (25).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (25).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (26).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (26).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (26).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (27).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (27).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (27).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (28).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (28).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (28).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (29).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (29).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (29).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (3).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (3).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (3).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (30).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (30).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (30).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (31).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (31).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (31).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (32).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (32).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (32).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (33).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (33).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (33).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (34).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (34).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (34).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (35).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (35).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (35).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (36).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (36).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (36).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (37).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (37).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (37).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (38).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (38).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (38).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (39).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (39).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (39).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (4).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (4).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (4).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (40).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (40).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (40).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (41).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (41).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (41).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (42).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (42).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (42).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (43).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (43).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (43).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (44).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (44).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (44).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (45).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (45).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (45).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (46).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (46).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (46).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (47).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (47).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (47).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (48).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (48).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (48).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (49).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (49).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (49).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (5).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (5).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (5).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (50).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (50).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (50).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (51).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (51).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (51).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (52).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (52).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (52).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (53).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (53).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (53).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (54).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (54).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (54).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (55).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (55).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (55).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (56).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (56).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (56).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (57).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (57).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (57).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (58).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (58).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (58).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (59).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (59).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (59).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (6).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (6).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (6).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (7).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (7).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (7).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (8).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (8).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (8).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (9).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (9).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (9).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (13).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (13).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (13).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (14).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (14).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (14).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (15).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (15).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (15).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (16).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (16).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (16).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (17).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (17).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (17).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (18).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (18).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (18).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (19).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (19).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (19).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (2).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (2).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (20).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (20).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (20).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (21).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (21).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (21).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (22).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (22).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (22).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (23).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (23).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (23).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (24).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (24).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (24).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (25).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (25).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (25).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (26).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (26).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (26).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (27).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (27).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (27).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (28).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (28).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (28).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (29).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (29).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (29).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (3).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (30).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (30).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (30).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (31).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (31).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (31).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (32).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (32).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (32).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (33).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (33).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (33).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (34).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (34).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (34).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (35).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (35).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (35).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (36).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (36).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (36).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (37).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (37).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (37).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (38).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (38).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (38).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (39).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (39).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (39).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (4).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (40).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (40).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (40).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (41).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (41).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (41).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (42).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (42).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (42).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (43).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (43).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (43).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (44).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (44).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (44).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (45).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (45).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (45).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (46).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (46).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (46).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (47).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (47).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (47).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (48).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (48).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (48).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (49).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (49).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (49).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (5).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (50).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (50).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (50).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (51).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (51).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (51).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (52).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (52).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (52).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (53).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (53).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (53).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (54).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (54).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (54).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (55).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (55).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (55).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (56).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (56).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (56).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (57).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (57).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (57).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (58).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (58).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (58).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (6).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (6).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (7).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (7).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (8).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (8).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (9).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (9).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (10).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (10).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (10).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (11).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (11).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (11).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (12).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (12).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (12).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (13).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (13).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (13).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (14).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (14).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (14).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (15).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (15).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (15).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (16).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (16).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (16).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (17).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (17).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (17).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (18).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (18).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (18).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (19).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (19).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (19).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (2).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (2).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (20).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (20).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (20).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (21).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (21).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (21).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (22).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (22).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (22).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (23).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (23).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (23).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (24).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (24).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (24).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (25).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (25).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (25).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (26).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (26).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (26).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (27).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (27).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (27).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (28).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (28).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (28).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (29).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (29).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (29).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (3).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (30).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (30).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (30).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (31).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (31).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (31).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (32).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (32).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (32).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (33).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (33).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (33).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (34).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (34).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (34).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (35).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (35).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (35).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (36).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (36).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (36).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (37).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (37).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (37).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (38).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (38).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (38).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (39).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (39).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (39).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (4).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (40).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (40).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (40).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (41).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (41).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (41).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (42).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (42).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (42).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (43).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (43).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (43).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (44).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (44).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (44).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (45).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (45).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (45).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (46).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (46).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (46).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (47).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (47).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (47).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (48).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (48).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (48).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (49).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (49).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (49).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (5).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (50).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (50).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (50).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (51).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (51).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (51).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (52).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (52).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (52).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (53).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (53).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (53).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (54).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (54).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (54).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (55).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (55).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (55).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (56).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (56).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (56).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (57).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (57).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (57).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (58).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (58).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (58).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (6).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (6).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (7).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (7).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (8).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (8).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (9).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (9).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (12).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (12).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (12).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (13).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (13).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (13).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (14).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (14).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (14).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (2).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (2).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (3).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (3).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (4).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (4).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (4).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (5).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (5).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (5).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (6).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (6).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (6).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (7).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (7).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (7).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (8).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (8).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (8).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (9).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (9).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (9).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (10).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (10).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (10).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (12).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (12).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (12).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (13).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (13).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (13).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (14).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (14).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (14).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (15).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (15).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (15).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (17) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (17) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (17) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (17).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (17).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (17).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (18).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (18).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (18).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (19).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (19).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (19).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (2).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (2).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (2).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (20).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (20).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (20).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (21) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (21) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (21) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (21).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (21).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (21).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (22).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (22).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (22).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (23).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (23).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (23).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (24).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (24).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (24).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (25).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (25).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (25).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (26) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (26) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (26) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (26).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (26).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (26).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (27) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (27) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (27) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (27).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (27).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (27).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (28).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (28).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (28).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (29) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (29) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (29) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (29).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (29).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (29).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (3).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (3).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (3).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (30).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (30).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (30).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (31).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (31).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (31).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (32).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (32).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (32).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (33).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (33).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (33).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (34).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (34).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (34).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (35).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (35).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (35).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (4).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (4).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (4).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (5) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (5) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (5) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (5).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (5).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (5).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (6) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (6) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (6) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (6).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (6).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (6).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (7) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (7) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (7) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (7).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (7).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (7).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (8) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (8) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (8) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (8).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (8).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (8).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (9) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (9) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (9) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (9).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (9).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1) (9).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (10).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (10).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (10).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (11).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (11).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (11).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (12).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (12).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (12).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (13).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (13).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (13).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (14).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (14).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (14).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (15).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (15).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (15).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (16).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (16).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (16).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (17).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (17).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (17).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (18).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (18).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (18).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (19).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (19).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (19).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (2).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (2).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (2).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (20).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (20).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (20).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (21).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (21).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (21).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (22).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (22).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (22).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (23).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (23).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (23).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (24).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (24).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (24).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (25).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (25).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (25).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (26).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (26).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (26).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (27).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (27).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (27).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (28).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (28).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (28).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (29).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (29).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (29).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (3).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (3).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (3).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (30).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (30).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (30).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (31).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (31).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (31).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (32).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (32).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (32).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (33).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (33).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (33).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (34).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (34).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (34).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (35).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (35).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (35).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (36).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (36).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (36).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (37).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (37).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (37).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (38).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (38).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (38).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (39).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (39).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (39).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (4).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (4).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (4).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (5).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (5).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (5).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (6).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (6).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (6).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (7).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (7).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (7).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (8).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (8).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (8).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (9).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (9).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (12) (9).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (13).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (13).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (13).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (14).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (14).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (14).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (15).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (15).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (15).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (16).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (16).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (16).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (17).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (17).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (17).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (18).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (18).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (18).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (19).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (19).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (19).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (2) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (2) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (2) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (2).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (2).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (2).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (20).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (20).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (20).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (21).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (21).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (21).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (22).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (22).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (22).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (23).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (23).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (23).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (24).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (24).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (24).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (25).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (25).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (25).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (26).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (26).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (26).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (27).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (27).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (27).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (28).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (28).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (28).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (29).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (29).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (29).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (3).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (3).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (3).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (30).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (30).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (30).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (31).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (31).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (31).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (32).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (32).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (32).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (33).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (33).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (33).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (4).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (4).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (4).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (5).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (5).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (5).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (6).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (6).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (6).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (7).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (7).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (7).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (8).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (8).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (8).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (9).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (9).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10) (9).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (10).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (11).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (11).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (11).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (12).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (12).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (12).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (13).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (13).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (13).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (14).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (14).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (14).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (15).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (15).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (15).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (16).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (16).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (16).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (17).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (17).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (17).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (18).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (18).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (18).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (19).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (19).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (19).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (2).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (2).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (2).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (20).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (20).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (20).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (21).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (21).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (21).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (22).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (22).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (22).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (23).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (23).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (23).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (24).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (24).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (24).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (25).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (25).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (25).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (26).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (26).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (26).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (27).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (27).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (27).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (28).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (28).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (28).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (29).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (29).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (29).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (3).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (3).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (3).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (30).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (30).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (30).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (31).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (31).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (31).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (32).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (32).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (32).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (33).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (33).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (33).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (4).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (4).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (4).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (5).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (5).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (5).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (6).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (6).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (6).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (7).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (7).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (7).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (8).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (8).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (8).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (9).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (9).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12) (9).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (12).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (13).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (13).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (13).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (14).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (14).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (14).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (15).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (15).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (15).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (16).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (16).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (16).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (17).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (17).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (17).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (18).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (18).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (18).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (19).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (19).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (19).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (2).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (2).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (20).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (20).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (20).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (21).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (21).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (21).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (22).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (22).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (22).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (23).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (23).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (23).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (24).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (24).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (24).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (25).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (25).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (25).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (26).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (26).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (26).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (27).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (27).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (27).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (28).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (28).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (28).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (29).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (29).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (29).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (3).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (30).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (30).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (30).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (4).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (5).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (6).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (6).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (7).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (7).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (8).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (8).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (9).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (9).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (10).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (10).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (10).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (11).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (11).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (11).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (12).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (12).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (12).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (13).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (13).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (13).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (14).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (14).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (14).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (15).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (15).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (15).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (16).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (16).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (16).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (17).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (17).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (17).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (18).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (18).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (18).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (19).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (19).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (19).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (2) (1) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (2) (1) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (2) (1) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (2) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (2) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (2) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (2).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (2).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (20).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (20).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (20).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (21).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (21).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (21).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (22).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (22).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (22).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (23).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (23).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (23).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (24).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (24).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (24).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (25).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (25).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (25).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (26) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (26) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (26) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (26).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (26).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (26).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (27).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (27).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (27).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (28).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (28).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (28).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (29) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (29) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (29) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (29).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (29).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (29).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (3) (1) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (3) (1) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (3) (1) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (3) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (3) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (3) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (3) (2).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (3) (2).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (3) (2).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (3).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (3).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (30).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (30).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (30).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (4).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (4).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (5).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (5).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (6).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (6).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (7).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (7).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (8).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (8).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (9).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (9).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (10).png b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (10).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 (1) (1) (10).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 copy (1) (1).png b/.gitbook/assets/2021-11-20_23-29-48 copy (1) (1).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 copy (1) (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-29-48 copy (3).png b/.gitbook/assets/2021-11-20_23-29-48 copy (3).png new file mode 100644 index 0000000000..54bafc9d53 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-29-48 copy (3).png differ diff --git a/.gitbook/assets/2021-11-20_23-36-08.png b/.gitbook/assets/2021-11-20_23-36-08.png new file mode 100644 index 0000000000..ada9209e81 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-36-08.png differ diff --git a/.gitbook/assets/2021-11-20_23-38-23 (1).png b/.gitbook/assets/2021-11-20_23-38-23 (1).png new file mode 100644 index 0000000000..6637e96260 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-38-23 (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-38-23.png b/.gitbook/assets/2021-11-20_23-38-23.png new file mode 100644 index 0000000000..6637e96260 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-38-23.png differ diff --git a/.gitbook/assets/2021-11-20_23-42-35 (1).png b/.gitbook/assets/2021-11-20_23-42-35 (1).png new file mode 100644 index 0000000000..2076812ed4 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-42-35 (1).png differ diff --git a/.gitbook/assets/2021-11-20_23-42-35.png b/.gitbook/assets/2021-11-20_23-42-35.png new file mode 100644 index 0000000000..2076812ed4 Binary files /dev/null and b/.gitbook/assets/2021-11-20_23-42-35.png differ diff --git a/.gitbook/assets/2021-11-21_00-03-04 (1).png b/.gitbook/assets/2021-11-21_00-03-04 (1).png new file mode 100644 index 0000000000..06bb47e828 Binary files /dev/null and b/.gitbook/assets/2021-11-21_00-03-04 (1).png differ diff --git a/.gitbook/assets/2021-11-21_00-03-04.png b/.gitbook/assets/2021-11-21_00-03-04.png new file mode 100644 index 0000000000..06bb47e828 Binary files /dev/null and b/.gitbook/assets/2021-11-21_00-03-04.png differ diff --git a/.gitbook/assets/2021-11-21_00-05-22.png b/.gitbook/assets/2021-11-21_00-05-22.png new file mode 100644 index 0000000000..ea8666a46e Binary files /dev/null and b/.gitbook/assets/2021-11-21_00-05-22.png differ diff --git a/.gitbook/assets/2021-11-21_00-06-49.png b/.gitbook/assets/2021-11-21_00-06-49.png new file mode 100644 index 0000000000..ff2ab8ec7c Binary files /dev/null and b/.gitbook/assets/2021-11-21_00-06-49.png differ diff --git a/.gitbook/assets/2021-11-21_00-28-10 (1).png b/.gitbook/assets/2021-11-21_00-28-10 (1).png new file mode 100644 index 0000000000..c90e1447a6 Binary files /dev/null and b/.gitbook/assets/2021-11-21_00-28-10 (1).png differ diff --git a/.gitbook/assets/2021-11-21_00-28-10.png b/.gitbook/assets/2021-11-21_00-28-10.png new file mode 100644 index 0000000000..182403a92a Binary files /dev/null and b/.gitbook/assets/2021-11-21_00-28-10.png differ diff --git a/.gitbook/assets/2021-11-21_00-36-03.png b/.gitbook/assets/2021-11-21_00-36-03.png new file mode 100644 index 0000000000..4dc6a0b088 Binary files /dev/null and b/.gitbook/assets/2021-11-21_00-36-03.png differ diff --git a/.gitbook/assets/2021-11-21_01-37-12.png b/.gitbook/assets/2021-11-21_01-37-12.png new file mode 100644 index 0000000000..177ce3a1d9 Binary files /dev/null and b/.gitbook/assets/2021-11-21_01-37-12.png differ diff --git a/.gitbook/assets/2021-11-21_01-47-40.png b/.gitbook/assets/2021-11-21_01-47-40.png new file mode 100644 index 0000000000..e5f9377827 Binary files /dev/null and b/.gitbook/assets/2021-11-21_01-47-40.png differ diff --git a/.gitbook/assets/2021-11-21_01-53-58.png b/.gitbook/assets/2021-11-21_01-53-58.png new file mode 100644 index 0000000000..b9a3ab9883 Binary files /dev/null and b/.gitbook/assets/2021-11-21_01-53-58.png differ diff --git a/.gitbook/assets/2021-11-21_01-58-36.png b/.gitbook/assets/2021-11-21_01-58-36.png new file mode 100644 index 0000000000..9f668ed3ae Binary files /dev/null and b/.gitbook/assets/2021-11-21_01-58-36.png differ diff --git a/.gitbook/assets/2021-11-22_21-12-21 copy.png b/.gitbook/assets/2021-11-22_21-12-21 copy.png new file mode 100644 index 0000000000..eb1380abee Binary files /dev/null and b/.gitbook/assets/2021-11-22_21-12-21 copy.png differ diff --git a/.gitbook/assets/2021-11-22_21-12-21.png b/.gitbook/assets/2021-11-22_21-12-21.png new file mode 100644 index 0000000000..94676f5bd4 Binary files /dev/null and b/.gitbook/assets/2021-11-22_21-12-21.png differ diff --git a/.gitbook/assets/2021-11-22_21-21-35 (1).png b/.gitbook/assets/2021-11-22_21-21-35 (1).png new file mode 100644 index 0000000000..fc14c61774 Binary files /dev/null and b/.gitbook/assets/2021-11-22_21-21-35 (1).png differ diff --git a/.gitbook/assets/2021-11-22_21-21-35.png b/.gitbook/assets/2021-11-22_21-21-35.png new file mode 100644 index 0000000000..fc14c61774 Binary files /dev/null and b/.gitbook/assets/2021-11-22_21-21-35.png differ diff --git a/.gitbook/assets/2021-11-22_21-26-55.png b/.gitbook/assets/2021-11-22_21-26-55.png new file mode 100644 index 0000000000..02bbfc8ca8 Binary files /dev/null and b/.gitbook/assets/2021-11-22_21-26-55.png differ diff --git a/.gitbook/assets/2021-11-22_21-27-14.png b/.gitbook/assets/2021-11-22_21-27-14.png new file mode 100644 index 0000000000..00daad5025 Binary files /dev/null and b/.gitbook/assets/2021-11-22_21-27-14.png differ diff --git a/.gitbook/assets/2021-11-22_21-37-32.png b/.gitbook/assets/2021-11-22_21-37-32.png new file mode 100644 index 0000000000..0f4fa3ff47 Binary files /dev/null and b/.gitbook/assets/2021-11-22_21-37-32.png differ diff --git a/.gitbook/assets/2021-11-22_21-38-23 (1).png b/.gitbook/assets/2021-11-22_21-38-23 (1).png new file mode 100644 index 0000000000..d1f3bbf1ce Binary files /dev/null and b/.gitbook/assets/2021-11-22_21-38-23 (1).png differ diff --git a/.gitbook/assets/2021-11-22_21-38-23.png b/.gitbook/assets/2021-11-22_21-38-23.png new file mode 100644 index 0000000000..d1f3bbf1ce Binary files /dev/null and b/.gitbook/assets/2021-11-22_21-38-23.png differ diff --git a/.gitbook/assets/2021-11-22_22-15-23.png b/.gitbook/assets/2021-11-22_22-15-23.png new file mode 100644 index 0000000000..2cf156d8f6 Binary files /dev/null and b/.gitbook/assets/2021-11-22_22-15-23.png differ diff --git a/.gitbook/assets/2021-11-22_22-18-28.png b/.gitbook/assets/2021-11-22_22-18-28.png new file mode 100644 index 0000000000..b5d3f73ea2 Binary files /dev/null and b/.gitbook/assets/2021-11-22_22-18-28.png differ diff --git a/.gitbook/assets/2021-11-22_22-18-53.png b/.gitbook/assets/2021-11-22_22-18-53.png new file mode 100644 index 0000000000..0dfb2acf8e Binary files /dev/null and b/.gitbook/assets/2021-11-22_22-18-53.png differ diff --git a/.gitbook/assets/2021-11-22_22-27-32 (1).png b/.gitbook/assets/2021-11-22_22-27-32 (1).png new file mode 100644 index 0000000000..052d3d64e0 Binary files /dev/null and b/.gitbook/assets/2021-11-22_22-27-32 (1).png differ diff --git a/.gitbook/assets/2021-11-22_22-27-32.png b/.gitbook/assets/2021-11-22_22-27-32.png new file mode 100644 index 0000000000..052d3d64e0 Binary files /dev/null and b/.gitbook/assets/2021-11-22_22-27-32.png differ diff --git a/.gitbook/assets/2021-11-22_22-29-03 (1).png b/.gitbook/assets/2021-11-22_22-29-03 (1).png new file mode 100644 index 0000000000..2a1197bde5 Binary files /dev/null and b/.gitbook/assets/2021-11-22_22-29-03 (1).png differ diff --git a/.gitbook/assets/2021-11-22_22-29-03.png b/.gitbook/assets/2021-11-22_22-29-03.png new file mode 100644 index 0000000000..2a1197bde5 Binary files /dev/null and b/.gitbook/assets/2021-11-22_22-29-03.png differ diff --git a/.gitbook/assets/2021-11-22_22-29-48.png b/.gitbook/assets/2021-11-22_22-29-48.png new file mode 100644 index 0000000000..01b293a419 Binary files /dev/null and b/.gitbook/assets/2021-11-22_22-29-48.png differ diff --git a/.gitbook/assets/2021-11-22_22-32-16.png b/.gitbook/assets/2021-11-22_22-32-16.png new file mode 100644 index 0000000000..debee747bd Binary files /dev/null and b/.gitbook/assets/2021-11-22_22-32-16.png differ diff --git a/.gitbook/assets/2021-11-22_22-47-19.png b/.gitbook/assets/2021-11-22_22-47-19.png new file mode 100644 index 0000000000..76913a0638 Binary files /dev/null and b/.gitbook/assets/2021-11-22_22-47-19.png differ diff --git a/.gitbook/assets/2021-11-22_22-48-44.png b/.gitbook/assets/2021-11-22_22-48-44.png new file mode 100644 index 0000000000..888bd4b67b Binary files /dev/null and b/.gitbook/assets/2021-11-22_22-48-44.png differ diff --git a/.gitbook/assets/2021-11-22_22-50-12.png b/.gitbook/assets/2021-11-22_22-50-12.png new file mode 100644 index 0000000000..2e2c39ff82 Binary files /dev/null and b/.gitbook/assets/2021-11-22_22-50-12.png differ diff --git a/.gitbook/assets/2021-11-22_22-52-05 (1).png b/.gitbook/assets/2021-11-22_22-52-05 (1).png new file mode 100644 index 0000000000..0078602db9 Binary files /dev/null and b/.gitbook/assets/2021-11-22_22-52-05 (1).png differ diff --git a/.gitbook/assets/2021-11-22_22-52-05.png b/.gitbook/assets/2021-11-22_22-52-05.png new file mode 100644 index 0000000000..0078602db9 Binary files /dev/null and b/.gitbook/assets/2021-11-22_22-52-05.png differ diff --git a/.gitbook/assets/2021-11-22_22-56-51.png b/.gitbook/assets/2021-11-22_22-56-51.png new file mode 100644 index 0000000000..822cd3fefc Binary files /dev/null and b/.gitbook/assets/2021-11-22_22-56-51.png differ diff --git a/.gitbook/assets/2021-11-22_23-08-37.png b/.gitbook/assets/2021-11-22_23-08-37.png new file mode 100644 index 0000000000..04d5fd9261 Binary files /dev/null and b/.gitbook/assets/2021-11-22_23-08-37.png differ diff --git a/.gitbook/assets/2021-11-24_14-19-37.png b/.gitbook/assets/2021-11-24_14-19-37.png new file mode 100644 index 0000000000..0f9915110c Binary files /dev/null and b/.gitbook/assets/2021-11-24_14-19-37.png differ diff --git a/.gitbook/assets/2021-11-25_19h51_46.png b/.gitbook/assets/2021-11-25_19h51_46.png new file mode 100644 index 0000000000..bd90a9c87b Binary files /dev/null and b/.gitbook/assets/2021-11-25_19h51_46.png differ diff --git a/.gitbook/assets/2021-11-26_01-35-25.png b/.gitbook/assets/2021-11-26_01-35-25.png new file mode 100644 index 0000000000..73241429a9 Binary files /dev/null and b/.gitbook/assets/2021-11-26_01-35-25.png differ diff --git a/.gitbook/assets/2021-11-26_01-59-31.png b/.gitbook/assets/2021-11-26_01-59-31.png new file mode 100644 index 0000000000..433f8aaaa7 Binary files /dev/null and b/.gitbook/assets/2021-11-26_01-59-31.png differ diff --git a/.gitbook/assets/2021-11-28_02-22-24 (1).png b/.gitbook/assets/2021-11-28_02-22-24 (1).png new file mode 100644 index 0000000000..7f17177ab6 Binary files /dev/null and b/.gitbook/assets/2021-11-28_02-22-24 (1).png differ diff --git a/.gitbook/assets/2021-11-28_02-22-24.png b/.gitbook/assets/2021-11-28_02-22-24.png new file mode 100644 index 0000000000..924ae95acd Binary files /dev/null and b/.gitbook/assets/2021-11-28_02-22-24.png differ diff --git a/.gitbook/assets/2021-11-28_02-33-07 (1).png b/.gitbook/assets/2021-11-28_02-33-07 (1).png new file mode 100644 index 0000000000..181e6f79c7 Binary files /dev/null and b/.gitbook/assets/2021-11-28_02-33-07 (1).png differ diff --git a/.gitbook/assets/2021-11-28_02-33-07 (2).png b/.gitbook/assets/2021-11-28_02-33-07 (2).png new file mode 100644 index 0000000000..b60c9189b9 Binary files /dev/null and b/.gitbook/assets/2021-11-28_02-33-07 (2).png differ diff --git a/.gitbook/assets/2021-11-28_02-33-07 (3).png b/.gitbook/assets/2021-11-28_02-33-07 (3).png new file mode 100644 index 0000000000..8880502bf1 Binary files /dev/null and b/.gitbook/assets/2021-11-28_02-33-07 (3).png differ diff --git a/.gitbook/assets/2021-11-28_02-33-07.png b/.gitbook/assets/2021-11-28_02-33-07.png new file mode 100644 index 0000000000..8880502bf1 Binary files /dev/null and b/.gitbook/assets/2021-11-28_02-33-07.png differ diff --git a/.gitbook/assets/2021-11-28_02-38-09 (1).png b/.gitbook/assets/2021-11-28_02-38-09 (1).png new file mode 100644 index 0000000000..5e715822ed Binary files /dev/null and b/.gitbook/assets/2021-11-28_02-38-09 (1).png differ diff --git a/.gitbook/assets/2021-11-28_02-38-09.png b/.gitbook/assets/2021-11-28_02-38-09.png new file mode 100644 index 0000000000..301c43ce5c Binary files /dev/null and b/.gitbook/assets/2021-11-28_02-38-09.png differ diff --git a/.gitbook/assets/2021-11-28_02-59-33.png b/.gitbook/assets/2021-11-28_02-59-33.png new file mode 100644 index 0000000000..919da8d887 Binary files /dev/null and b/.gitbook/assets/2021-11-28_02-59-33.png differ diff --git a/.gitbook/assets/2021-11-28_03-04-58 (1).png b/.gitbook/assets/2021-11-28_03-04-58 (1).png new file mode 100644 index 0000000000..95bb7384c0 Binary files /dev/null and b/.gitbook/assets/2021-11-28_03-04-58 (1).png differ diff --git a/.gitbook/assets/2021-11-28_03-04-58.png b/.gitbook/assets/2021-11-28_03-04-58.png new file mode 100644 index 0000000000..95bb7384c0 Binary files /dev/null and b/.gitbook/assets/2021-11-28_03-04-58.png differ diff --git a/.gitbook/assets/2021-11-28_20-19-31.png b/.gitbook/assets/2021-11-28_20-19-31.png new file mode 100644 index 0000000000..d23a731f31 Binary files /dev/null and b/.gitbook/assets/2021-11-28_20-19-31.png differ diff --git a/.gitbook/assets/2021-11-28_20-21-07 (1).png b/.gitbook/assets/2021-11-28_20-21-07 (1).png new file mode 100644 index 0000000000..8f3b3ccd36 Binary files /dev/null and b/.gitbook/assets/2021-11-28_20-21-07 (1).png differ diff --git a/.gitbook/assets/2021-11-28_20-21-07.png b/.gitbook/assets/2021-11-28_20-21-07.png new file mode 100644 index 0000000000..cb3b2591fd Binary files /dev/null and b/.gitbook/assets/2021-11-28_20-21-07.png differ diff --git a/.gitbook/assets/2021-11-29_01-14-57 (1).png b/.gitbook/assets/2021-11-29_01-14-57 (1).png new file mode 100644 index 0000000000..b6c44169ad Binary files /dev/null and b/.gitbook/assets/2021-11-29_01-14-57 (1).png differ diff --git a/.gitbook/assets/2021-11-29_01-14-57 (2).png b/.gitbook/assets/2021-11-29_01-14-57 (2).png new file mode 100644 index 0000000000..9e587a0763 Binary files /dev/null and b/.gitbook/assets/2021-11-29_01-14-57 (2).png differ diff --git a/.gitbook/assets/2021-11-29_01-14-57.png b/.gitbook/assets/2021-11-29_01-14-57.png new file mode 100644 index 0000000000..fb20e85758 Binary files /dev/null and b/.gitbook/assets/2021-11-29_01-14-57.png differ diff --git a/.gitbook/assets/2021-11-30_01-43-15.png b/.gitbook/assets/2021-11-30_01-43-15.png new file mode 100644 index 0000000000..fb76bf300c Binary files /dev/null and b/.gitbook/assets/2021-11-30_01-43-15.png differ diff --git a/.gitbook/assets/2021-12-01_18-09-09 (1).png b/.gitbook/assets/2021-12-01_18-09-09 (1).png new file mode 100644 index 0000000000..8d14a080ce Binary files /dev/null and b/.gitbook/assets/2021-12-01_18-09-09 (1).png differ diff --git a/.gitbook/assets/2021-12-01_18-09-09 (2).png b/.gitbook/assets/2021-12-01_18-09-09 (2).png new file mode 100644 index 0000000000..8d14a080ce Binary files /dev/null and b/.gitbook/assets/2021-12-01_18-09-09 (2).png differ diff --git a/.gitbook/assets/2021-12-01_18-09-09.png b/.gitbook/assets/2021-12-01_18-09-09.png new file mode 100644 index 0000000000..06511c5f88 Binary files /dev/null and b/.gitbook/assets/2021-12-01_18-09-09.png differ diff --git a/.gitbook/assets/2021-12-05_15-09-19 (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-05_15-09-19 (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..232b44369d Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-09-19 (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-05_15-09-19 (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-05_15-09-19 (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..232b44369d Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-09-19 (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-05_15-09-19 (1) (1) (1) (1).png b/.gitbook/assets/2021-12-05_15-09-19 (1) (1) (1) (1).png new file mode 100644 index 0000000000..232b44369d Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-09-19 (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-05_15-09-19 (1) (1) (2).png b/.gitbook/assets/2021-12-05_15-09-19 (1) (1) (2).png new file mode 100644 index 0000000000..232b44369d Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-09-19 (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-05_15-09-19 (1).png b/.gitbook/assets/2021-12-05_15-09-19 (1).png new file mode 100644 index 0000000000..232b44369d Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-09-19 (1).png differ diff --git a/.gitbook/assets/2021-12-05_15-09-19.png b/.gitbook/assets/2021-12-05_15-09-19.png new file mode 100644 index 0000000000..232b44369d Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-09-19.png differ diff --git a/.gitbook/assets/2021-12-05_15-23-14 (1).png b/.gitbook/assets/2021-12-05_15-23-14 (1).png new file mode 100644 index 0000000000..fb4a1de576 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-23-14 (1).png differ diff --git a/.gitbook/assets/2021-12-05_15-23-14 (2).png b/.gitbook/assets/2021-12-05_15-23-14 (2).png new file mode 100644 index 0000000000..acf422de47 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-23-14 (2).png differ diff --git a/.gitbook/assets/2021-12-05_15-23-14.png b/.gitbook/assets/2021-12-05_15-23-14.png new file mode 100644 index 0000000000..acf422de47 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-23-14.png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (2).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (3).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (4).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (4).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (3).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (3).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (4).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (4).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (5).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (5).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1) (5).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (2) (1).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (3) (1).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (3) (1).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (3) (1).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (3) (2).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (3) (2).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (3) (2).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (3) (3).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (3) (3).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (3) (3).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (3) (4).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (3) (4).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (3) (4).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (3) (5).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (3) (5).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (3) (5).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (4).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (4).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (5).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (5).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4) (5).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (2).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (2).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (3).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (3).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (4).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (4).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (1).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (1).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (1).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (1) (2).png b/.gitbook/assets/2021-12-05_15-24-49 (1) (2).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (1) (2).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (3).png b/.gitbook/assets/2021-12-05_15-24-49 (3).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (3).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (4).png b/.gitbook/assets/2021-12-05_15-24-49 (4).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (4).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49 (5).png b/.gitbook/assets/2021-12-05_15-24-49 (5).png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49 (5).png differ diff --git a/.gitbook/assets/2021-12-05_15-24-49.png b/.gitbook/assets/2021-12-05_15-24-49.png new file mode 100644 index 0000000000..2ecc3021e1 Binary files /dev/null and b/.gitbook/assets/2021-12-05_15-24-49.png differ diff --git a/.gitbook/assets/2021-12-05_17-24-06.png b/.gitbook/assets/2021-12-05_17-24-06.png new file mode 100644 index 0000000000..7eb5d1a9e5 Binary files /dev/null and b/.gitbook/assets/2021-12-05_17-24-06.png differ diff --git a/.gitbook/assets/2021-12-05_17-28-39 (1).png b/.gitbook/assets/2021-12-05_17-28-39 (1).png new file mode 100644 index 0000000000..064ff27f16 Binary files /dev/null and b/.gitbook/assets/2021-12-05_17-28-39 (1).png differ diff --git a/.gitbook/assets/2021-12-05_17-28-39.png b/.gitbook/assets/2021-12-05_17-28-39.png new file mode 100644 index 0000000000..064ff27f16 Binary files /dev/null and b/.gitbook/assets/2021-12-05_17-28-39.png differ diff --git a/.gitbook/assets/2021-12-05_17-36-47.png b/.gitbook/assets/2021-12-05_17-36-47.png new file mode 100644 index 0000000000..89747e3e60 Binary files /dev/null and b/.gitbook/assets/2021-12-05_17-36-47.png differ diff --git a/.gitbook/assets/2021-12-05_17-46-32 (1).png b/.gitbook/assets/2021-12-05_17-46-32 (1).png new file mode 100644 index 0000000000..59fa4f90b5 Binary files /dev/null and b/.gitbook/assets/2021-12-05_17-46-32 (1).png differ diff --git a/.gitbook/assets/2021-12-05_17-46-32.png b/.gitbook/assets/2021-12-05_17-46-32.png new file mode 100644 index 0000000000..59fa4f90b5 Binary files /dev/null and b/.gitbook/assets/2021-12-05_17-46-32.png differ diff --git a/.gitbook/assets/2021-12-05_17-50-24 (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-05_17-50-24 (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..734e4db6a3 Binary files /dev/null and b/.gitbook/assets/2021-12-05_17-50-24 (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-05_17-50-24 (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-05_17-50-24 (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..734e4db6a3 Binary files /dev/null and b/.gitbook/assets/2021-12-05_17-50-24 (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-05_17-50-24 (1) (1) (1) (1).png b/.gitbook/assets/2021-12-05_17-50-24 (1) (1) (1) (1).png new file mode 100644 index 0000000000..734e4db6a3 Binary files /dev/null and b/.gitbook/assets/2021-12-05_17-50-24 (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-05_17-50-24 (1) (1) (2).png b/.gitbook/assets/2021-12-05_17-50-24 (1) (1) (2).png new file mode 100644 index 0000000000..734e4db6a3 Binary files /dev/null and b/.gitbook/assets/2021-12-05_17-50-24 (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-05_17-50-24 (1).png b/.gitbook/assets/2021-12-05_17-50-24 (1).png new file mode 100644 index 0000000000..734e4db6a3 Binary files /dev/null and b/.gitbook/assets/2021-12-05_17-50-24 (1).png differ diff --git a/.gitbook/assets/2021-12-05_17-50-24.png b/.gitbook/assets/2021-12-05_17-50-24.png new file mode 100644 index 0000000000..734e4db6a3 Binary files /dev/null and b/.gitbook/assets/2021-12-05_17-50-24.png differ diff --git a/.gitbook/assets/2021-12-06_15-27-12 (1).png b/.gitbook/assets/2021-12-06_15-27-12 (1).png new file mode 100644 index 0000000000..35a10672a4 Binary files /dev/null and b/.gitbook/assets/2021-12-06_15-27-12 (1).png differ diff --git a/.gitbook/assets/2021-12-06_15-27-12.png b/.gitbook/assets/2021-12-06_15-27-12.png new file mode 100644 index 0000000000..35a10672a4 Binary files /dev/null and b/.gitbook/assets/2021-12-06_15-27-12.png differ diff --git a/.gitbook/assets/2021-12-06_15-33-08 (1).png b/.gitbook/assets/2021-12-06_15-33-08 (1).png new file mode 100644 index 0000000000..19ae925327 Binary files /dev/null and b/.gitbook/assets/2021-12-06_15-33-08 (1).png differ diff --git a/.gitbook/assets/2021-12-06_15-33-08.png b/.gitbook/assets/2021-12-06_15-33-08.png new file mode 100644 index 0000000000..19ae925327 Binary files /dev/null and b/.gitbook/assets/2021-12-06_15-33-08.png differ diff --git a/.gitbook/assets/2021-12-08_18-54-06.png b/.gitbook/assets/2021-12-08_18-54-06.png new file mode 100644 index 0000000000..17f2de277e Binary files /dev/null and b/.gitbook/assets/2021-12-08_18-54-06.png differ diff --git a/.gitbook/assets/2021-12-08_18-56-24 (1).png b/.gitbook/assets/2021-12-08_18-56-24 (1).png new file mode 100644 index 0000000000..158f37356a Binary files /dev/null and b/.gitbook/assets/2021-12-08_18-56-24 (1).png differ diff --git a/.gitbook/assets/2021-12-08_18-56-24.png b/.gitbook/assets/2021-12-08_18-56-24.png new file mode 100644 index 0000000000..158f37356a Binary files /dev/null and b/.gitbook/assets/2021-12-08_18-56-24.png differ diff --git a/.gitbook/assets/2021-12-08_18-57-02.png b/.gitbook/assets/2021-12-08_18-57-02.png new file mode 100644 index 0000000000..49b3222ab7 Binary files /dev/null and b/.gitbook/assets/2021-12-08_18-57-02.png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (6).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (6).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (6).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (7).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (7).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (7).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (8).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (8).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (8).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (5).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (6).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (6).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (7).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (7).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (2).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (3).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (4).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (4).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (5).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (5).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (6).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (6).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (7).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (7).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (3).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (3).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (4).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (4).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (5).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (5).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (5).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (6).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (6).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1) (6).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (1).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (3).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (3).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (3).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (5).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (5).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (5).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (6).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (6).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (6).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (7).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (7).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (7).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (8).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (8).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (2) (8).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (3).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (3).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (3).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (4).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (4).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (5).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (5).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (5).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (6).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (6).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4) (6).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (5).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (5).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (2).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (2).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (3).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (3).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (4).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (4).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (5) (1).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (5) (1).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (5) (1).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (5) (2).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (5) (2).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (5) (2).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (5).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (5).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1) (5).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (1).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (1).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (1).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (1) (2).png b/.gitbook/assets/2021-12-08_19-00-51 (1) (2).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (1) (2).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (3).png b/.gitbook/assets/2021-12-08_19-00-51 (3).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (3).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (4).png b/.gitbook/assets/2021-12-08_19-00-51 (4).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (4).png differ diff --git a/.gitbook/assets/2021-12-08_19-00-51 (5).png b/.gitbook/assets/2021-12-08_19-00-51 (5).png new file mode 100644 index 0000000000..7be522d9ce Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-00-51 (5).png differ diff --git a/.gitbook/assets/2021-12-08_19-03-28.png b/.gitbook/assets/2021-12-08_19-03-28.png new file mode 100644 index 0000000000..f8b04e10d6 Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-03-28.png differ diff --git a/.gitbook/assets/2021-12-08_19-04-44.png b/.gitbook/assets/2021-12-08_19-04-44.png new file mode 100644 index 0000000000..bc63ce4be5 Binary files /dev/null and b/.gitbook/assets/2021-12-08_19-04-44.png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (1) (1) (1) (3) (1).png b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (1) (1) (1) (3) (1).png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (1) (1) (1) (3) (1).png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (1) (1) (1) (3) (2).png b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (1) (1) (1) (3) (2).png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (1) (1) (1) (3) (2).png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (1) (1) (1) (3) (3).png b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (1) (1) (1) (3) (3).png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (1) (1) (1) (3) (3).png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (1) (1) (1) (3) (4).png b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (1) (1) (1) (3).png b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (1) (1) (2).png b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (1) (1) (3).png b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (3).png b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (3).png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (4).png b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (4).png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1).png b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1).png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (2) (1).png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (4) (1).png b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (4) (1).png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (4) (1).png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (4) (2).png b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (4) (2).png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (4) (2).png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (4) (3).png b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (4) (3).png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (4) (3).png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (4) (4).png b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (4) (4).png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1).png b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1).png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (2).png b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (2).png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (3).png b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (3).png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16 (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16 (1) (1).png b/.gitbook/assets/2021-12-09_15-34-16 (1) (1).png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16 (1) (1).png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16 (1) (2).png b/.gitbook/assets/2021-12-09_15-34-16 (1) (2).png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16 (1) (2).png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16 (3).png b/.gitbook/assets/2021-12-09_15-34-16 (3).png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16 (3).png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16 (4).png b/.gitbook/assets/2021-12-09_15-34-16 (4).png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16 (4).png differ diff --git a/.gitbook/assets/2021-12-09_15-34-16.png b/.gitbook/assets/2021-12-09_15-34-16.png new file mode 100644 index 0000000000..24de4b5ab3 Binary files /dev/null and b/.gitbook/assets/2021-12-09_15-34-16.png differ diff --git a/.gitbook/assets/2021-12-09_23-25-38 (1).png b/.gitbook/assets/2021-12-09_23-25-38 (1).png new file mode 100644 index 0000000000..16bf0d1172 Binary files /dev/null and b/.gitbook/assets/2021-12-09_23-25-38 (1).png differ diff --git a/.gitbook/assets/2021-12-09_23-25-38.png b/.gitbook/assets/2021-12-09_23-25-38.png new file mode 100644 index 0000000000..16bf0d1172 Binary files /dev/null and b/.gitbook/assets/2021-12-09_23-25-38.png differ diff --git a/.gitbook/assets/2021-12-12_16-43-07 (1).png b/.gitbook/assets/2021-12-12_16-43-07 (1).png new file mode 100644 index 0000000000..8e3311c981 Binary files /dev/null and b/.gitbook/assets/2021-12-12_16-43-07 (1).png differ diff --git a/.gitbook/assets/2021-12-12_16-43-07.png b/.gitbook/assets/2021-12-12_16-43-07.png new file mode 100644 index 0000000000..8e3311c981 Binary files /dev/null and b/.gitbook/assets/2021-12-12_16-43-07.png differ diff --git a/.gitbook/assets/2021-12-12_16-51-00.png b/.gitbook/assets/2021-12-12_16-51-00.png new file mode 100644 index 0000000000..2ce0ceb206 Binary files /dev/null and b/.gitbook/assets/2021-12-12_16-51-00.png differ diff --git a/.gitbook/assets/2021-12-12_16-51-49.png b/.gitbook/assets/2021-12-12_16-51-49.png new file mode 100644 index 0000000000..6d9618b54d Binary files /dev/null and b/.gitbook/assets/2021-12-12_16-51-49.png differ diff --git a/.gitbook/assets/2021-12-12_17-56-02 (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-12_17-56-02 (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..c2a9eb0fd5 Binary files /dev/null and b/.gitbook/assets/2021-12-12_17-56-02 (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-12_17-56-02 (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-12_17-56-02 (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..c2a9eb0fd5 Binary files /dev/null and b/.gitbook/assets/2021-12-12_17-56-02 (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-12_17-56-02 (1) (1) (1) (1).png b/.gitbook/assets/2021-12-12_17-56-02 (1) (1) (1) (1).png new file mode 100644 index 0000000000..c2a9eb0fd5 Binary files /dev/null and b/.gitbook/assets/2021-12-12_17-56-02 (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-12_17-56-02 (1) (1) (2).png b/.gitbook/assets/2021-12-12_17-56-02 (1) (1) (2).png new file mode 100644 index 0000000000..c2a9eb0fd5 Binary files /dev/null and b/.gitbook/assets/2021-12-12_17-56-02 (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-12_17-56-02 (1).png b/.gitbook/assets/2021-12-12_17-56-02 (1).png new file mode 100644 index 0000000000..c2a9eb0fd5 Binary files /dev/null and b/.gitbook/assets/2021-12-12_17-56-02 (1).png differ diff --git a/.gitbook/assets/2021-12-12_17-56-02 (3).png b/.gitbook/assets/2021-12-12_17-56-02 (3).png new file mode 100644 index 0000000000..8f272f0b40 Binary files /dev/null and b/.gitbook/assets/2021-12-12_17-56-02 (3).png differ diff --git a/.gitbook/assets/2021-12-12_17-56-02.png b/.gitbook/assets/2021-12-12_17-56-02.png new file mode 100644 index 0000000000..c2a9eb0fd5 Binary files /dev/null and b/.gitbook/assets/2021-12-12_17-56-02.png differ diff --git a/.gitbook/assets/2021-12-12_18-46-48 copy.png b/.gitbook/assets/2021-12-12_18-46-48 copy.png new file mode 100644 index 0000000000..39ad0fb8c5 Binary files /dev/null and b/.gitbook/assets/2021-12-12_18-46-48 copy.png differ diff --git a/.gitbook/assets/2021-12-12_19-05-24.png b/.gitbook/assets/2021-12-12_19-05-24.png new file mode 100644 index 0000000000..13f5884ecb Binary files /dev/null and b/.gitbook/assets/2021-12-12_19-05-24.png differ diff --git a/.gitbook/assets/2021-12-23_19-50-54.png b/.gitbook/assets/2021-12-23_19-50-54.png new file mode 100644 index 0000000000..5bec131cf5 Binary files /dev/null and b/.gitbook/assets/2021-12-23_19-50-54.png differ diff --git a/.gitbook/assets/2021-12-23_19-51-58.png b/.gitbook/assets/2021-12-23_19-51-58.png new file mode 100644 index 0000000000..aff21daa08 Binary files /dev/null and b/.gitbook/assets/2021-12-23_19-51-58.png differ diff --git a/.gitbook/assets/2021-12-26_12-43-20 (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-26_12-43-20 (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..6b60219c91 Binary files /dev/null and b/.gitbook/assets/2021-12-26_12-43-20 (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-26_12-43-20 (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-26_12-43-20 (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..6b60219c91 Binary files /dev/null and b/.gitbook/assets/2021-12-26_12-43-20 (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-26_12-43-20 (1) (1) (1) (1).png b/.gitbook/assets/2021-12-26_12-43-20 (1) (1) (1) (1).png new file mode 100644 index 0000000000..6b60219c91 Binary files /dev/null and b/.gitbook/assets/2021-12-26_12-43-20 (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-26_12-43-20 (1) (1) (2).png b/.gitbook/assets/2021-12-26_12-43-20 (1) (1) (2).png new file mode 100644 index 0000000000..6b60219c91 Binary files /dev/null and b/.gitbook/assets/2021-12-26_12-43-20 (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-26_12-43-20 (1).png b/.gitbook/assets/2021-12-26_12-43-20 (1).png new file mode 100644 index 0000000000..6b60219c91 Binary files /dev/null and b/.gitbook/assets/2021-12-26_12-43-20 (1).png differ diff --git a/.gitbook/assets/2021-12-26_12-43-20 (3).png b/.gitbook/assets/2021-12-26_12-43-20 (3).png new file mode 100644 index 0000000000..19d2599d65 Binary files /dev/null and b/.gitbook/assets/2021-12-26_12-43-20 (3).png differ diff --git a/.gitbook/assets/2021-12-26_12-43-20.png b/.gitbook/assets/2021-12-26_12-43-20.png new file mode 100644 index 0000000000..6b60219c91 Binary files /dev/null and b/.gitbook/assets/2021-12-26_12-43-20.png differ diff --git a/.gitbook/assets/2021-12-26_12-48-51 (1).png b/.gitbook/assets/2021-12-26_12-48-51 (1).png new file mode 100644 index 0000000000..481ac69117 Binary files /dev/null and b/.gitbook/assets/2021-12-26_12-48-51 (1).png differ diff --git a/.gitbook/assets/2021-12-26_12-48-51.png b/.gitbook/assets/2021-12-26_12-48-51.png new file mode 100644 index 0000000000..481ac69117 Binary files /dev/null and b/.gitbook/assets/2021-12-26_12-48-51.png differ diff --git a/.gitbook/assets/2021-12-28_21-03-31 (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-28_21-03-31 (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..548d8a4067 Binary files /dev/null and b/.gitbook/assets/2021-12-28_21-03-31 (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-28_21-03-31 (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-28_21-03-31 (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..548d8a4067 Binary files /dev/null and b/.gitbook/assets/2021-12-28_21-03-31 (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-28_21-03-31 (1) (1) (1) (1).png b/.gitbook/assets/2021-12-28_21-03-31 (1) (1) (1) (1).png new file mode 100644 index 0000000000..548d8a4067 Binary files /dev/null and b/.gitbook/assets/2021-12-28_21-03-31 (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-28_21-03-31 (1) (1) (2).png b/.gitbook/assets/2021-12-28_21-03-31 (1) (1) (2).png new file mode 100644 index 0000000000..548d8a4067 Binary files /dev/null and b/.gitbook/assets/2021-12-28_21-03-31 (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-28_21-03-31 (1).png b/.gitbook/assets/2021-12-28_21-03-31 (1).png new file mode 100644 index 0000000000..548d8a4067 Binary files /dev/null and b/.gitbook/assets/2021-12-28_21-03-31 (1).png differ diff --git a/.gitbook/assets/2021-12-28_21-03-31.png b/.gitbook/assets/2021-12-28_21-03-31.png new file mode 100644 index 0000000000..548d8a4067 Binary files /dev/null and b/.gitbook/assets/2021-12-28_21-03-31.png differ diff --git a/.gitbook/assets/2021-12-29_17-04-47.png b/.gitbook/assets/2021-12-29_17-04-47.png new file mode 100644 index 0000000000..8c15aed9eb Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-04-47.png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (6).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (6).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (6).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (5).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (2).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (3).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (4).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (4).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (5).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (5).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (3).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (3).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (4).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (4).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (5).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (5).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (5).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (6).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (6).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1) (6).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (1).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (3).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (3).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (3).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (5).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (5).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (5).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (6).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (6).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (2) (6).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (3).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (3).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (3).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (4).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (4).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (5).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (5).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (5).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (6).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (6).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4) (6).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (5).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (5).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (2).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (2).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (3).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (3).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (4).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (4).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (5).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (5).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1) (5).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (1).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (1).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (1).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (1) (2).png b/.gitbook/assets/2021-12-29_17-05-48 (1) (2).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (1) (2).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (3).png b/.gitbook/assets/2021-12-29_17-05-48 (3).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (3).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (4).png b/.gitbook/assets/2021-12-29_17-05-48 (4).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (4).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (5).png b/.gitbook/assets/2021-12-29_17-05-48 (5).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (5).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48 (6).png b/.gitbook/assets/2021-12-29_17-05-48 (6).png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48 (6).png differ diff --git a/.gitbook/assets/2021-12-29_17-05-48.png b/.gitbook/assets/2021-12-29_17-05-48.png new file mode 100644 index 0000000000..94f6d3bacd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-05-48.png differ diff --git a/.gitbook/assets/2021-12-29_17-32-22.png b/.gitbook/assets/2021-12-29_17-32-22.png new file mode 100644 index 0000000000..ae96eb4de0 Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-32-22.png differ diff --git a/.gitbook/assets/2021-12-29_17-34-16.png b/.gitbook/assets/2021-12-29_17-34-16.png new file mode 100644 index 0000000000..1ffe1944ed Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-34-16.png differ diff --git a/.gitbook/assets/2021-12-29_17-42-55.png b/.gitbook/assets/2021-12-29_17-42-55.png new file mode 100644 index 0000000000..962f876705 Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-42-55.png differ diff --git a/.gitbook/assets/2021-12-29_17-43-33.png b/.gitbook/assets/2021-12-29_17-43-33.png new file mode 100644 index 0000000000..640a1026fd Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-43-33.png differ diff --git a/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (1) (1) (1) (3) (1).png b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (1) (1) (1) (3) (1).png new file mode 100644 index 0000000000..7c588ecd8a Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (1) (1) (1) (3) (1).png differ diff --git a/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (1) (1) (1) (3) (2).png b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (1) (1) (1) (3) (2).png new file mode 100644 index 0000000000..7c588ecd8a Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (1) (1) (1) (3) (2).png differ diff --git a/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (1) (1) (1) (3) (3).png b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (1) (1) (1) (3) (3).png new file mode 100644 index 0000000000..7c588ecd8a Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (1) (1) (1) (3) (3).png differ diff --git a/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (1) (1) (1) (3) (4).png b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..7c588ecd8a Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (1) (1) (1) (3).png b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..7c588ecd8a Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (1) (1) (2).png b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..7c588ecd8a Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (1) (1) (3).png b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..7c588ecd8a Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (3).png b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (3).png new file mode 100644 index 0000000000..7c588ecd8a Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (4).png b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (4).png new file mode 100644 index 0000000000..7c588ecd8a Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1).png b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1).png new file mode 100644 index 0000000000..7c588ecd8a Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (2) (1).png differ diff --git a/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (4) (1).png b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (4) (1).png new file mode 100644 index 0000000000..7c588ecd8a Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (4) (1).png differ diff --git a/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (4) (2).png b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (4) (2).png new file mode 100644 index 0000000000..7c588ecd8a Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (4) (2).png differ diff --git a/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (4) (3).png b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (4) (3).png new file mode 100644 index 0000000000..7c588ecd8a Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (4) (3).png differ diff --git a/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (4) (4).png b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (4) (4).png new file mode 100644 index 0000000000..7c588ecd8a Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1).png b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1).png new file mode 100644 index 0000000000..7c588ecd8a Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (2).png b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (2).png new file mode 100644 index 0000000000..7c588ecd8a Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (3).png b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (3).png new file mode 100644 index 0000000000..7c588ecd8a Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-48-45 (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-29_17-48-45 (1) (1).png b/.gitbook/assets/2021-12-29_17-48-45 (1) (1).png new file mode 100644 index 0000000000..7c588ecd8a Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-48-45 (1) (1).png differ diff --git a/.gitbook/assets/2021-12-29_17-48-45 (1) (2).png b/.gitbook/assets/2021-12-29_17-48-45 (1) (2).png new file mode 100644 index 0000000000..7c588ecd8a Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-48-45 (1) (2).png differ diff --git a/.gitbook/assets/2021-12-29_17-48-45.png b/.gitbook/assets/2021-12-29_17-48-45.png new file mode 100644 index 0000000000..7c588ecd8a Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-48-45.png differ diff --git a/.gitbook/assets/2021-12-29_17-56-37.png b/.gitbook/assets/2021-12-29_17-56-37.png new file mode 100644 index 0000000000..cbf7331f3f Binary files /dev/null and b/.gitbook/assets/2021-12-29_17-56-37.png differ diff --git a/.gitbook/assets/2021-12-30_00-54-38 (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-30_00-54-38 (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..b125caf122 Binary files /dev/null and b/.gitbook/assets/2021-12-30_00-54-38 (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-30_00-54-38 (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-30_00-54-38 (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..b125caf122 Binary files /dev/null and b/.gitbook/assets/2021-12-30_00-54-38 (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-30_00-54-38 (1) (1) (1) (1).png b/.gitbook/assets/2021-12-30_00-54-38 (1) (1) (1) (1).png new file mode 100644 index 0000000000..b125caf122 Binary files /dev/null and b/.gitbook/assets/2021-12-30_00-54-38 (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-30_00-54-38 (1) (1) (2).png b/.gitbook/assets/2021-12-30_00-54-38 (1) (1) (2).png new file mode 100644 index 0000000000..b125caf122 Binary files /dev/null and b/.gitbook/assets/2021-12-30_00-54-38 (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-30_00-54-38 (1).png b/.gitbook/assets/2021-12-30_00-54-38 (1).png new file mode 100644 index 0000000000..b125caf122 Binary files /dev/null and b/.gitbook/assets/2021-12-30_00-54-38 (1).png differ diff --git a/.gitbook/assets/2021-12-30_00-54-38.png b/.gitbook/assets/2021-12-30_00-54-38.png new file mode 100644 index 0000000000..b125caf122 Binary files /dev/null and b/.gitbook/assets/2021-12-30_00-54-38.png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (6).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (6).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (6).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (7).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (7).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (7).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (8).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (8).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (8).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (9).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (9).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (9).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (5).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (6).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (6).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (7).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (7).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (8).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (8).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (2).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (3).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (4).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (4).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (5).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (5).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (6).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (6).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (7).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (7).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (8).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (8).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (3).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (3).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (4).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (4).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (5).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (5).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (5).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (6).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (6).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (6).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (7).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (7).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (7).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (8).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (8).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (8).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (9).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (9).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1) (9).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (1).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (1).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (1).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (1).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (2).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (2).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (2).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (3).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (3).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (3).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (4).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (4).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (4).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (5).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (5).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (5).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (6).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (6).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (6).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (7).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (7).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (7).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (8).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (8).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (8).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (9).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (9).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (6) (9).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (7).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (7).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (7).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (8).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (8).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2) (8).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (2).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (3).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (3).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (3).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (4).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (4).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (5).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (5).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (5).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (6).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (6).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (6).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (7).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (7).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (7).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (8).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (8).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (8).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (9).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (9).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4) (9).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (5).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (5).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (6).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (6).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (7).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (7).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (8).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (8).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (2).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (2).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (3).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (3).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (4).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (4).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (5).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (5).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (5).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (6).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (6).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (6).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (7).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (7).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (7).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (8).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (8).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1) (8).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (1).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (1).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (1).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (1) (2).png b/.gitbook/assets/2021-12-30_01-28-22 (1) (2).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (1) (2).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (3).png b/.gitbook/assets/2021-12-30_01-28-22 (3).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (3).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (4).png b/.gitbook/assets/2021-12-30_01-28-22 (4).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (4).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (5).png b/.gitbook/assets/2021-12-30_01-28-22 (5).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (5).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (6).png b/.gitbook/assets/2021-12-30_01-28-22 (6).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (6).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (7).png b/.gitbook/assets/2021-12-30_01-28-22 (7).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (7).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (8).png b/.gitbook/assets/2021-12-30_01-28-22 (8).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (8).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22 (9).png b/.gitbook/assets/2021-12-30_01-28-22 (9).png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22 (9).png differ diff --git a/.gitbook/assets/2021-12-30_01-28-22.png b/.gitbook/assets/2021-12-30_01-28-22.png new file mode 100644 index 0000000000..e4cda71ee4 Binary files /dev/null and b/.gitbook/assets/2021-12-30_01-28-22.png differ diff --git a/.gitbook/assets/2021-12-31_17-19-27 (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-31_17-19-27 (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..bcec45dd44 Binary files /dev/null and b/.gitbook/assets/2021-12-31_17-19-27 (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_17-19-27 (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-31_17-19-27 (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..bcec45dd44 Binary files /dev/null and b/.gitbook/assets/2021-12-31_17-19-27 (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_17-19-27 (1) (1) (1) (1).png b/.gitbook/assets/2021-12-31_17-19-27 (1) (1) (1) (1).png new file mode 100644 index 0000000000..bcec45dd44 Binary files /dev/null and b/.gitbook/assets/2021-12-31_17-19-27 (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_17-19-27 (1) (1) (2).png b/.gitbook/assets/2021-12-31_17-19-27 (1) (1) (2).png new file mode 100644 index 0000000000..bcec45dd44 Binary files /dev/null and b/.gitbook/assets/2021-12-31_17-19-27 (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-31_17-19-27 (1).png b/.gitbook/assets/2021-12-31_17-19-27 (1).png new file mode 100644 index 0000000000..bcec45dd44 Binary files /dev/null and b/.gitbook/assets/2021-12-31_17-19-27 (1).png differ diff --git a/.gitbook/assets/2021-12-31_17-19-27.png b/.gitbook/assets/2021-12-31_17-19-27.png new file mode 100644 index 0000000000..bcec45dd44 Binary files /dev/null and b/.gitbook/assets/2021-12-31_17-19-27.png differ diff --git a/.gitbook/assets/2021-12-31_17-24-46 (1).png b/.gitbook/assets/2021-12-31_17-24-46 (1).png new file mode 100644 index 0000000000..7fe637f092 Binary files /dev/null and b/.gitbook/assets/2021-12-31_17-24-46 (1).png differ diff --git a/.gitbook/assets/2021-12-31_17-24-46 (2).png b/.gitbook/assets/2021-12-31_17-24-46 (2).png new file mode 100644 index 0000000000..ac7b643d51 Binary files /dev/null and b/.gitbook/assets/2021-12-31_17-24-46 (2).png differ diff --git a/.gitbook/assets/2021-12-31_17-24-46 (3).png b/.gitbook/assets/2021-12-31_17-24-46 (3).png new file mode 100644 index 0000000000..bd1cf4c7d4 Binary files /dev/null and b/.gitbook/assets/2021-12-31_17-24-46 (3).png differ diff --git a/.gitbook/assets/2021-12-31_17-24-46 (4).png b/.gitbook/assets/2021-12-31_17-24-46 (4).png new file mode 100644 index 0000000000..7fe637f092 Binary files /dev/null and b/.gitbook/assets/2021-12-31_17-24-46 (4).png differ diff --git a/.gitbook/assets/2021-12-31_17-24-46.png b/.gitbook/assets/2021-12-31_17-24-46.png new file mode 100644 index 0000000000..ac7b643d51 Binary files /dev/null and b/.gitbook/assets/2021-12-31_17-24-46.png differ diff --git a/.gitbook/assets/2021-12-31_18-10-57 (1).png b/.gitbook/assets/2021-12-31_18-10-57 (1).png new file mode 100644 index 0000000000..3214255a98 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-10-57 (1).png differ diff --git a/.gitbook/assets/2021-12-31_18-10-57.png b/.gitbook/assets/2021-12-31_18-10-57.png new file mode 100644 index 0000000000..3214255a98 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-10-57.png differ diff --git a/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..f9dfd72abd Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (1) (1) (1) (1) (2).png b/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (1) (1) (1) (1) (2).png new file mode 100644 index 0000000000..f9dfd72abd Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (1) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (1) (1) (1) (1) (3).png b/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..f9dfd72abd Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..f9dfd72abd Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (1).png b/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (1).png new file mode 100644 index 0000000000..f9dfd72abd Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (2) (1) (2).png b/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (2) (1) (2).png new file mode 100644 index 0000000000..f9dfd72abd Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (2) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (2) (1).png b/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (2) (1).png new file mode 100644 index 0000000000..f9dfd72abd Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (2) (1).png differ diff --git a/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (2) (2).png b/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (2) (2).png new file mode 100644 index 0000000000..f9dfd72abd Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-11-21 (1) (1) (2) (2).png differ diff --git a/.gitbook/assets/2021-12-31_18-11-21 (1) (1).png b/.gitbook/assets/2021-12-31_18-11-21 (1) (1).png new file mode 100644 index 0000000000..f9dfd72abd Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-11-21 (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_18-11-21 (1).png b/.gitbook/assets/2021-12-31_18-11-21 (1).png new file mode 100644 index 0000000000..f9dfd72abd Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-11-21 (1).png differ diff --git a/.gitbook/assets/2021-12-31_18-11-40 (1).png b/.gitbook/assets/2021-12-31_18-11-40 (1).png new file mode 100644 index 0000000000..ab4a5a7fd1 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-11-40 (1).png differ diff --git a/.gitbook/assets/2021-12-31_18-11-40.png b/.gitbook/assets/2021-12-31_18-11-40.png new file mode 100644 index 0000000000..ab4a5a7fd1 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-11-40.png differ diff --git a/.gitbook/assets/2021-12-31_18-11-52.png b/.gitbook/assets/2021-12-31_18-11-52.png new file mode 100644 index 0000000000..59db3c8dcd Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-11-52.png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (2).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (3).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (4).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (4).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (3).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (3).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (4).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (4).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (5).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (5).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1) (5).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (2) (1).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (3) (1).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (3) (1).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (3) (1).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (3) (2).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (3) (2).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (3) (2).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (3) (3).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (3) (3).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (3) (3).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (3) (4).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (3) (4).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (3) (4).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (3) (5).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (3) (5).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (3) (5).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (4).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (4).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (5).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (5).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4) (5).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (2).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (2).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (3).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (3).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (4).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (4).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1) (4).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (1).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (1).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (1) (2).png b/.gitbook/assets/2021-12-31_18-12-56 (1) (2).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (1) (2).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (2).png b/.gitbook/assets/2021-12-31_18-12-56 (2).png new file mode 100644 index 0000000000..26ea59d029 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (2).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (3) (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-31_18-12-56 (3) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..4f9eb617c1 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (3) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (3) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-31_18-12-56 (3) (1) (1) (1) (1).png new file mode 100644 index 0000000000..4f9eb617c1 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (3) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (3) (1) (1) (1).png b/.gitbook/assets/2021-12-31_18-12-56 (3) (1) (1) (1).png new file mode 100644 index 0000000000..4f9eb617c1 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (3) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (3) (1) (2).png b/.gitbook/assets/2021-12-31_18-12-56 (3) (1) (2).png new file mode 100644 index 0000000000..4f9eb617c1 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (3) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (3).png b/.gitbook/assets/2021-12-31_18-12-56 (3).png new file mode 100644 index 0000000000..4f9eb617c1 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (3).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (4).png b/.gitbook/assets/2021-12-31_18-12-56 (4).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (4).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (6).png b/.gitbook/assets/2021-12-31_18-12-56 (6).png new file mode 100644 index 0000000000..b4a29857e3 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (6).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (7).png b/.gitbook/assets/2021-12-31_18-12-56 (7).png new file mode 100644 index 0000000000..fd00727125 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (7).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56 (9).png b/.gitbook/assets/2021-12-31_18-12-56 (9).png new file mode 100644 index 0000000000..26ea59d029 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56 (9).png differ diff --git a/.gitbook/assets/2021-12-31_18-12-56.png b/.gitbook/assets/2021-12-31_18-12-56.png new file mode 100644 index 0000000000..4f9eb617c1 Binary files /dev/null and b/.gitbook/assets/2021-12-31_18-12-56.png differ diff --git a/.gitbook/assets/2021-12-31_19-18-27 (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-31_19-18-27 (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..97543297ff Binary files /dev/null and b/.gitbook/assets/2021-12-31_19-18-27 (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_19-18-27 (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-31_19-18-27 (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..97543297ff Binary files /dev/null and b/.gitbook/assets/2021-12-31_19-18-27 (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_19-18-27 (1) (1) (1) (1).png b/.gitbook/assets/2021-12-31_19-18-27 (1) (1) (1) (1).png new file mode 100644 index 0000000000..97543297ff Binary files /dev/null and b/.gitbook/assets/2021-12-31_19-18-27 (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_19-18-27 (1) (1) (2).png b/.gitbook/assets/2021-12-31_19-18-27 (1) (1) (2).png new file mode 100644 index 0000000000..97543297ff Binary files /dev/null and b/.gitbook/assets/2021-12-31_19-18-27 (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-31_19-18-27 (1).png b/.gitbook/assets/2021-12-31_19-18-27 (1).png new file mode 100644 index 0000000000..97543297ff Binary files /dev/null and b/.gitbook/assets/2021-12-31_19-18-27 (1).png differ diff --git a/.gitbook/assets/2021-12-31_19-18-27.png b/.gitbook/assets/2021-12-31_19-18-27.png new file mode 100644 index 0000000000..97543297ff Binary files /dev/null and b/.gitbook/assets/2021-12-31_19-18-27.png differ diff --git a/.gitbook/assets/2021-12-31_20-12-15.png b/.gitbook/assets/2021-12-31_20-12-15.png new file mode 100644 index 0000000000..6ecfe72e92 Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-12-15.png differ diff --git a/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..581e22f49f Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (1) (1) (1) (1) (2).png b/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (1) (1) (1) (1) (2).png new file mode 100644 index 0000000000..581e22f49f Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (1) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (1) (1) (1) (1) (3).png b/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..581e22f49f Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..581e22f49f Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (1).png b/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (1).png new file mode 100644 index 0000000000..581e22f49f Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (2) (1) (2).png b/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (2) (1) (2).png new file mode 100644 index 0000000000..581e22f49f Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (2) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (2) (1).png b/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (2) (1).png new file mode 100644 index 0000000000..581e22f49f Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (2) (1).png differ diff --git a/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (2) (2).png b/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (2) (2).png new file mode 100644 index 0000000000..581e22f49f Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-14-10 (1) (1) (2) (2).png differ diff --git a/.gitbook/assets/2021-12-31_20-14-10 (1) (1).png b/.gitbook/assets/2021-12-31_20-14-10 (1) (1).png new file mode 100644 index 0000000000..581e22f49f Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-14-10 (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_20-14-10 (1) (2).png b/.gitbook/assets/2021-12-31_20-14-10 (1) (2).png new file mode 100644 index 0000000000..581e22f49f Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-14-10 (1) (2).png differ diff --git a/.gitbook/assets/2021-12-31_20-14-10 (3).png b/.gitbook/assets/2021-12-31_20-14-10 (3).png new file mode 100644 index 0000000000..581e22f49f Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-14-10 (3).png differ diff --git a/.gitbook/assets/2021-12-31_20-14-10.png b/.gitbook/assets/2021-12-31_20-14-10.png new file mode 100644 index 0000000000..581e22f49f Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-14-10.png differ diff --git a/.gitbook/assets/2021-12-31_20-27-38 (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-31_20-27-38 (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..eb3c38db48 Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-27-38 (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_20-27-38 (1) (1) (1) (1) (1) (1) (2).png b/.gitbook/assets/2021-12-31_20-27-38 (1) (1) (1) (1) (1) (1) (2).png new file mode 100644 index 0000000000..eb3c38db48 Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-27-38 (1) (1) (1) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-31_20-27-38 (1) (1) (1) (1) (1) (1) (3).png b/.gitbook/assets/2021-12-31_20-27-38 (1) (1) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..eb3c38db48 Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-27-38 (1) (1) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2021-12-31_20-27-38 (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2021-12-31_20-27-38 (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..eb3c38db48 Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-27-38 (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_20-27-38 (1) (1) (2) (1).png b/.gitbook/assets/2021-12-31_20-27-38 (1) (1) (2) (1).png new file mode 100644 index 0000000000..eb3c38db48 Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-27-38 (1) (1) (2) (1).png differ diff --git a/.gitbook/assets/2021-12-31_20-27-38 (1) (1) (2) (2).png b/.gitbook/assets/2021-12-31_20-27-38 (1) (1) (2) (2).png new file mode 100644 index 0000000000..eb3c38db48 Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-27-38 (1) (1) (2) (2).png differ diff --git a/.gitbook/assets/2021-12-31_20-27-38 (1) (1) (2).png b/.gitbook/assets/2021-12-31_20-27-38 (1) (1) (2).png new file mode 100644 index 0000000000..eb3c38db48 Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-27-38 (1) (1) (2).png differ diff --git a/.gitbook/assets/2021-12-31_20-27-38 (1) (1).png b/.gitbook/assets/2021-12-31_20-27-38 (1) (1).png new file mode 100644 index 0000000000..eb3c38db48 Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-27-38 (1) (1).png differ diff --git a/.gitbook/assets/2021-12-31_20-27-38 (1).png b/.gitbook/assets/2021-12-31_20-27-38 (1).png new file mode 100644 index 0000000000..eb3c38db48 Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-27-38 (1).png differ diff --git a/.gitbook/assets/2021-12-31_20-27-38.png b/.gitbook/assets/2021-12-31_20-27-38.png new file mode 100644 index 0000000000..eb3c38db48 Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-27-38.png differ diff --git a/.gitbook/assets/2021-12-31_20-30-41.png b/.gitbook/assets/2021-12-31_20-30-41.png new file mode 100644 index 0000000000..7c90e41492 Binary files /dev/null and b/.gitbook/assets/2021-12-31_20-30-41.png differ diff --git a/.gitbook/assets/2022-01-01_14-31-40 (1).png b/.gitbook/assets/2022-01-01_14-31-40 (1).png new file mode 100644 index 0000000000..0aac0060fc Binary files /dev/null and b/.gitbook/assets/2022-01-01_14-31-40 (1).png differ diff --git a/.gitbook/assets/2022-01-01_14-31-40.png b/.gitbook/assets/2022-01-01_14-31-40.png new file mode 100644 index 0000000000..0aac0060fc Binary files /dev/null and b/.gitbook/assets/2022-01-01_14-31-40.png differ diff --git a/.gitbook/assets/2022-01-01_14-46-42.png b/.gitbook/assets/2022-01-01_14-46-42.png new file mode 100644 index 0000000000..62081e6fd5 Binary files /dev/null and b/.gitbook/assets/2022-01-01_14-46-42.png differ diff --git a/.gitbook/assets/2022-01-01_15-46-46 (1).png b/.gitbook/assets/2022-01-01_15-46-46 (1).png new file mode 100644 index 0000000000..1772a7505b Binary files /dev/null and b/.gitbook/assets/2022-01-01_15-46-46 (1).png differ diff --git a/.gitbook/assets/2022-01-01_15-46-46 (2).png b/.gitbook/assets/2022-01-01_15-46-46 (2).png new file mode 100644 index 0000000000..79f9449800 Binary files /dev/null and b/.gitbook/assets/2022-01-01_15-46-46 (2).png differ diff --git a/.gitbook/assets/2022-01-01_15-46-46 (3).png b/.gitbook/assets/2022-01-01_15-46-46 (3).png new file mode 100644 index 0000000000..79f9449800 Binary files /dev/null and b/.gitbook/assets/2022-01-01_15-46-46 (3).png differ diff --git a/.gitbook/assets/2022-01-01_15-46-46 (4).png b/.gitbook/assets/2022-01-01_15-46-46 (4).png new file mode 100644 index 0000000000..3b1913873c Binary files /dev/null and b/.gitbook/assets/2022-01-01_15-46-46 (4).png differ diff --git a/.gitbook/assets/2022-01-01_15-46-46.png b/.gitbook/assets/2022-01-01_15-46-46.png new file mode 100644 index 0000000000..3b1913873c Binary files /dev/null and b/.gitbook/assets/2022-01-01_15-46-46.png differ diff --git a/.gitbook/assets/2022-01-01_16-32-28 (1).png b/.gitbook/assets/2022-01-01_16-32-28 (1).png new file mode 100644 index 0000000000..3e099bd4f5 Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-32-28 (1).png differ diff --git a/.gitbook/assets/2022-01-01_16-32-28.png b/.gitbook/assets/2022-01-01_16-32-28.png new file mode 100644 index 0000000000..3e099bd4f5 Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-32-28.png differ diff --git a/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (1) (1) (1) (3) (1).png b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (1) (1) (1) (3) (1).png new file mode 100644 index 0000000000..32a824be6b Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (1) (1) (1) (3) (1).png differ diff --git a/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (1) (1) (1) (3) (2).png b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (1) (1) (1) (3) (2).png new file mode 100644 index 0000000000..32a824be6b Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (1) (1) (1) (3) (2).png differ diff --git a/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (1) (1) (1) (3) (3).png b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (1) (1) (1) (3) (3).png new file mode 100644 index 0000000000..32a824be6b Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (1) (1) (1) (3) (3).png differ diff --git a/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (1) (1) (1) (3) (4).png b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..32a824be6b Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (1) (1) (1) (3).png b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..32a824be6b Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (1) (1) (2).png b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..32a824be6b Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (1) (1) (3).png b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..32a824be6b Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (3).png b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (3).png new file mode 100644 index 0000000000..32a824be6b Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (3).png differ diff --git a/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (4).png b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (4).png new file mode 100644 index 0000000000..32a824be6b Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1) (4).png differ diff --git a/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1).png b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1).png new file mode 100644 index 0000000000..32a824be6b Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (2) (1).png differ diff --git a/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (4) (1).png b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (4) (1).png new file mode 100644 index 0000000000..32a824be6b Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (4) (1).png differ diff --git a/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (4) (2).png b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (4) (2).png new file mode 100644 index 0000000000..32a824be6b Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (4) (2).png differ diff --git a/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (4) (3).png b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (4) (3).png new file mode 100644 index 0000000000..32a824be6b Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (4) (3).png differ diff --git a/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (4) (4).png b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (4) (4).png new file mode 100644 index 0000000000..32a824be6b Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1).png b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1).png new file mode 100644 index 0000000000..32a824be6b Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (2).png b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (2).png new file mode 100644 index 0000000000..32a824be6b Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (2).png differ diff --git a/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (3).png b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (3).png new file mode 100644 index 0000000000..32a824be6b Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-34-21 (1) (1) (3).png differ diff --git a/.gitbook/assets/2022-01-01_16-34-21 (1) (1).png b/.gitbook/assets/2022-01-01_16-34-21 (1) (1).png new file mode 100644 index 0000000000..32a824be6b Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-34-21 (1) (1).png differ diff --git a/.gitbook/assets/2022-01-01_16-34-21 (1) (2).png b/.gitbook/assets/2022-01-01_16-34-21 (1) (2).png new file mode 100644 index 0000000000..32a824be6b Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-34-21 (1) (2).png differ diff --git a/.gitbook/assets/2022-01-01_16-34-21 (3).png b/.gitbook/assets/2022-01-01_16-34-21 (3).png new file mode 100644 index 0000000000..3166f454da Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-34-21 (3).png differ diff --git a/.gitbook/assets/2022-01-01_16-34-21.png b/.gitbook/assets/2022-01-01_16-34-21.png new file mode 100644 index 0000000000..32a824be6b Binary files /dev/null and b/.gitbook/assets/2022-01-01_16-34-21.png differ diff --git a/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..49460567ef Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (1) (1) (1) (1) (2).png b/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (1) (1) (1) (1) (2).png new file mode 100644 index 0000000000..49460567ef Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (1) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (1) (1) (1) (1) (3).png b/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..49460567ef Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..49460567ef Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (1).png b/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (1).png new file mode 100644 index 0000000000..49460567ef Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (2) (1) (2).png b/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (2) (1) (2).png new file mode 100644 index 0000000000..49460567ef Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (2) (1) (2).png differ diff --git a/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (2) (1).png b/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (2) (1).png new file mode 100644 index 0000000000..49460567ef Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (2) (1).png differ diff --git a/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (2) (2).png b/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (2) (2).png new file mode 100644 index 0000000000..49460567ef Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-13-30 (1) (1) (2) (2).png differ diff --git a/.gitbook/assets/2022-01-15_19-13-30 (1) (1).png b/.gitbook/assets/2022-01-15_19-13-30 (1) (1).png new file mode 100644 index 0000000000..49460567ef Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-13-30 (1) (1).png differ diff --git a/.gitbook/assets/2022-01-15_19-13-30 (1).png b/.gitbook/assets/2022-01-15_19-13-30 (1).png new file mode 100644 index 0000000000..49460567ef Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-13-30 (1).png differ diff --git a/.gitbook/assets/2022-01-15_19-43-25.png b/.gitbook/assets/2022-01-15_19-43-25.png new file mode 100644 index 0000000000..d65491f7bd Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-43-25.png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3) (1).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3) (1).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3) (1).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3) (2).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3) (2).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3) (2).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3) (3).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3) (3).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3) (3).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3) (4).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3) (5).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3) (5).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3) (5).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3) (6).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3) (6).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3) (6).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (5).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (2).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (2).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (4).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (5).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (2).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (2).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (2).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (3) (1).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (3) (1).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (3) (1).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (3).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (3).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (3).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (4).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (4).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (4).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (5).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (5).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1) (5).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (2) (1).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (3) (1).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (3) (1).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (3) (1).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (3) (2).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (3) (2).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (3) (2).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (3) (3).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (3) (3).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (3) (3).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (3) (4).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (3) (4).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (3) (4).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (3) (5).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (3) (5).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (3) (5).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (4).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (4).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (5).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (5).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4) (5).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (2).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (2).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (2).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (3).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (3).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (3).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (4).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (4).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1) (4).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (1).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (1).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (1).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (1) (2).png b/.gitbook/assets/2022-01-15_19-53-39 (1) (2).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (1) (2).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (3).png b/.gitbook/assets/2022-01-15_19-53-39 (3).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (3).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (4).png b/.gitbook/assets/2022-01-15_19-53-39 (4).png new file mode 100644 index 0000000000..f27d7a6792 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (4).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (5) (1) (1) (1) (1) (1).png b/.gitbook/assets/2022-01-15_19-53-39 (5) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..6c36069978 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (5) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (5) (1) (1) (1) (1).png b/.gitbook/assets/2022-01-15_19-53-39 (5) (1) (1) (1) (1).png new file mode 100644 index 0000000000..6c36069978 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (5) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (5) (1) (1) (1).png b/.gitbook/assets/2022-01-15_19-53-39 (5) (1) (1) (1).png new file mode 100644 index 0000000000..6c36069978 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (5) (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (5) (1) (2).png b/.gitbook/assets/2022-01-15_19-53-39 (5) (1) (2).png new file mode 100644 index 0000000000..6c36069978 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (5) (1) (2).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (5).png b/.gitbook/assets/2022-01-15_19-53-39 (5).png new file mode 100644 index 0000000000..6c36069978 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (5).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (8).png b/.gitbook/assets/2022-01-15_19-53-39 (8).png new file mode 100644 index 0000000000..6c36069978 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (8).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39 (9).png b/.gitbook/assets/2022-01-15_19-53-39 (9).png new file mode 100644 index 0000000000..5a94eb276a Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39 (9).png differ diff --git a/.gitbook/assets/2022-01-15_19-53-39.png b/.gitbook/assets/2022-01-15_19-53-39.png new file mode 100644 index 0000000000..ea42a433e8 Binary files /dev/null and b/.gitbook/assets/2022-01-15_19-53-39.png differ diff --git a/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..64d83fa9f0 Binary files /dev/null and b/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (1) (1) (1) (1) (2).png b/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (1) (1) (1) (1) (2).png new file mode 100644 index 0000000000..64d83fa9f0 Binary files /dev/null and b/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (1) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (1) (1) (1) (1) (3).png b/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..64d83fa9f0 Binary files /dev/null and b/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..64d83fa9f0 Binary files /dev/null and b/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (1).png b/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (1).png new file mode 100644 index 0000000000..64d83fa9f0 Binary files /dev/null and b/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (2) (1) (2).png b/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (2) (1) (2).png new file mode 100644 index 0000000000..64d83fa9f0 Binary files /dev/null and b/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (2) (1) (2).png differ diff --git a/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (2) (1).png b/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (2) (1).png new file mode 100644 index 0000000000..64d83fa9f0 Binary files /dev/null and b/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (2) (1).png differ diff --git a/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (2) (2).png b/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (2) (2).png new file mode 100644 index 0000000000..64d83fa9f0 Binary files /dev/null and b/.gitbook/assets/2022-01-20_16-37-33 (1) (1) (2) (2).png differ diff --git a/.gitbook/assets/2022-01-20_16-37-33 (1) (1).png b/.gitbook/assets/2022-01-20_16-37-33 (1) (1).png new file mode 100644 index 0000000000..64d83fa9f0 Binary files /dev/null and b/.gitbook/assets/2022-01-20_16-37-33 (1) (1).png differ diff --git a/.gitbook/assets/2022-01-20_16-37-33 (1) (2).png b/.gitbook/assets/2022-01-20_16-37-33 (1) (2).png new file mode 100644 index 0000000000..64d83fa9f0 Binary files /dev/null and b/.gitbook/assets/2022-01-20_16-37-33 (1) (2).png differ diff --git a/.gitbook/assets/2022-01-20_16-37-33 (3).png b/.gitbook/assets/2022-01-20_16-37-33 (3).png new file mode 100644 index 0000000000..64d83fa9f0 Binary files /dev/null and b/.gitbook/assets/2022-01-20_16-37-33 (3).png differ diff --git a/.gitbook/assets/2022-01-20_16-37-33.png b/.gitbook/assets/2022-01-20_16-37-33.png new file mode 100644 index 0000000000..64d83fa9f0 Binary files /dev/null and b/.gitbook/assets/2022-01-20_16-37-33.png differ diff --git a/.gitbook/assets/2022-01-20_19-57-08.png b/.gitbook/assets/2022-01-20_19-57-08.png new file mode 100644 index 0000000000..80577b78e1 Binary files /dev/null and b/.gitbook/assets/2022-01-20_19-57-08.png differ diff --git a/.gitbook/assets/2022-01-20_20-13-08 (1).png b/.gitbook/assets/2022-01-20_20-13-08 (1).png new file mode 100644 index 0000000000..1b1768087c Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-13-08 (1).png differ diff --git a/.gitbook/assets/2022-01-20_20-13-08.png b/.gitbook/assets/2022-01-20_20-13-08.png new file mode 100644 index 0000000000..1b1768087c Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-13-08.png differ diff --git a/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..62b1d2a06c Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (1) (1) (1) (1) (2).png b/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (1) (1) (1) (1) (2).png new file mode 100644 index 0000000000..62b1d2a06c Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (1) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (1) (1) (1) (1) (3).png b/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..62b1d2a06c Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..62b1d2a06c Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (1).png b/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (1).png new file mode 100644 index 0000000000..62b1d2a06c Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (2) (1) (2).png b/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (2) (1) (2).png new file mode 100644 index 0000000000..62b1d2a06c Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (2) (1) (2).png differ diff --git a/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (2) (1).png b/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (2) (1).png new file mode 100644 index 0000000000..62b1d2a06c Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (2) (1).png differ diff --git a/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (2) (2).png b/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (2) (2).png new file mode 100644 index 0000000000..62b1d2a06c Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-15-38 (1) (1) (2) (2).png differ diff --git a/.gitbook/assets/2022-01-20_20-15-38 (1) (1).png b/.gitbook/assets/2022-01-20_20-15-38 (1) (1).png new file mode 100644 index 0000000000..62b1d2a06c Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-15-38 (1) (1).png differ diff --git a/.gitbook/assets/2022-01-20_20-15-38 (1) (2).png b/.gitbook/assets/2022-01-20_20-15-38 (1) (2).png new file mode 100644 index 0000000000..62b1d2a06c Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-15-38 (1) (2).png differ diff --git a/.gitbook/assets/2022-01-20_20-15-38 (3).png b/.gitbook/assets/2022-01-20_20-15-38 (3).png new file mode 100644 index 0000000000..62b1d2a06c Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-15-38 (3).png differ diff --git a/.gitbook/assets/2022-01-20_20-15-38.png b/.gitbook/assets/2022-01-20_20-15-38.png new file mode 100644 index 0000000000..62b1d2a06c Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-15-38.png differ diff --git a/.gitbook/assets/2022-01-20_20-26-27 (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2022-01-20_20-26-27 (1) (1) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..c96b66c990 Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-26-27 (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-20_20-26-27 (1) (1) (1) (1) (1) (1) (1) (1) (2).png b/.gitbook/assets/2022-01-20_20-26-27 (1) (1) (1) (1) (1) (1) (1) (1) (2).png new file mode 100644 index 0000000000..c96b66c990 Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-26-27 (1) (1) (1) (1) (1) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2022-01-20_20-26-27 (1) (1) (1) (1) (1) (1) (1) (1) (3).png b/.gitbook/assets/2022-01-20_20-26-27 (1) (1) (1) (1) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..c96b66c990 Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-26-27 (1) (1) (1) (1) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2022-01-20_20-26-27 (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/2022-01-20_20-26-27 (1) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..c96b66c990 Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-26-27 (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-20_20-26-27 (1) (1) (1) (1).png b/.gitbook/assets/2022-01-20_20-26-27 (1) (1) (1) (1).png new file mode 100644 index 0000000000..c96b66c990 Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-26-27 (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-20_20-26-27 (1) (1) (1) (2) (1).png b/.gitbook/assets/2022-01-20_20-26-27 (1) (1) (1) (2) (1).png new file mode 100644 index 0000000000..c96b66c990 Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-26-27 (1) (1) (1) (2) (1).png differ diff --git a/.gitbook/assets/2022-01-20_20-26-27 (1) (1) (1) (2).png b/.gitbook/assets/2022-01-20_20-26-27 (1) (1) (1) (2).png new file mode 100644 index 0000000000..c96b66c990 Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-26-27 (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2022-01-20_20-26-27 (1) (1).png b/.gitbook/assets/2022-01-20_20-26-27 (1) (1).png new file mode 100644 index 0000000000..c96b66c990 Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-26-27 (1) (1).png differ diff --git a/.gitbook/assets/2022-01-20_20-26-27 (1) (2) (1) (1) (1) (1).png b/.gitbook/assets/2022-01-20_20-26-27 (1) (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..48b94de6ec Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-26-27 (1) (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-20_20-26-27 (1) (2) (1) (1) (1).png b/.gitbook/assets/2022-01-20_20-26-27 (1) (2) (1) (1) (1).png new file mode 100644 index 0000000000..48b94de6ec Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-26-27 (1) (2) (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-20_20-26-27 (1) (2) (1) (1).png b/.gitbook/assets/2022-01-20_20-26-27 (1) (2) (1) (1).png new file mode 100644 index 0000000000..48b94de6ec Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-26-27 (1) (2) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-20_20-26-27 (1) (2) (2).png b/.gitbook/assets/2022-01-20_20-26-27 (1) (2) (2).png new file mode 100644 index 0000000000..48b94de6ec Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-26-27 (1) (2) (2).png differ diff --git a/.gitbook/assets/2022-01-20_20-26-27 (1).png b/.gitbook/assets/2022-01-20_20-26-27 (1).png new file mode 100644 index 0000000000..48b94de6ec Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-26-27 (1).png differ diff --git a/.gitbook/assets/2022-01-20_20-26-27 (3).png b/.gitbook/assets/2022-01-20_20-26-27 (3).png new file mode 100644 index 0000000000..48b94de6ec Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-26-27 (3).png differ diff --git a/.gitbook/assets/2022-01-20_20-26-27.png b/.gitbook/assets/2022-01-20_20-26-27.png new file mode 100644 index 0000000000..c96b66c990 Binary files /dev/null and b/.gitbook/assets/2022-01-20_20-26-27.png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (1).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (2).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (3).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (4).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (4).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (3).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (3).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (3).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (4).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (4).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (4).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (5).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (5).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1) (5).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (2) (1).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (3) (1).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (3) (1).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (3) (1).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (3) (2).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (3) (2).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (3) (2).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (3) (3).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (3) (3).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (3) (3).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (3) (4).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (3) (4).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (3) (4).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (3) (5).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (3) (5).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (3) (5).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (4).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (4).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (5).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (5).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4) (5).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (2).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (2).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (3).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (3).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (4).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (4).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (2).png b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (2).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (1) (1) (2).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (2).png b/.gitbook/assets/2022-01-20_21-12-36 (2).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (2).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (3).png b/.gitbook/assets/2022-01-20_21-12-36 (3).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (3).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36 (4).png b/.gitbook/assets/2022-01-20_21-12-36 (4).png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36 (4).png differ diff --git a/.gitbook/assets/2022-01-20_21-12-36.png b/.gitbook/assets/2022-01-20_21-12-36.png new file mode 100644 index 0000000000..f69fd778b2 Binary files /dev/null and b/.gitbook/assets/2022-01-20_21-12-36.png differ diff --git a/.gitbook/assets/2022-01-23_18-36-40 (1).png b/.gitbook/assets/2022-01-23_18-36-40 (1).png new file mode 100644 index 0000000000..dfe4c16925 Binary files /dev/null and b/.gitbook/assets/2022-01-23_18-36-40 (1).png differ diff --git a/.gitbook/assets/2022-01-23_18-36-40.png b/.gitbook/assets/2022-01-23_18-36-40.png new file mode 100644 index 0000000000..dfe4c16925 Binary files /dev/null and b/.gitbook/assets/2022-01-23_18-36-40.png differ diff --git a/.gitbook/assets/2022-01-23_18-44-32.png b/.gitbook/assets/2022-01-23_18-44-32.png new file mode 100644 index 0000000000..a7748007f7 Binary files /dev/null and b/.gitbook/assets/2022-01-23_18-44-32.png differ diff --git a/.gitbook/assets/2022-01-23_18-46-32.png b/.gitbook/assets/2022-01-23_18-46-32.png new file mode 100644 index 0000000000..0c83773169 Binary files /dev/null and b/.gitbook/assets/2022-01-23_18-46-32.png differ diff --git a/.gitbook/assets/2022-01-23_18-47-17 (1).png b/.gitbook/assets/2022-01-23_18-47-17 (1).png new file mode 100644 index 0000000000..99e7dfa56c Binary files /dev/null and b/.gitbook/assets/2022-01-23_18-47-17 (1).png differ diff --git a/.gitbook/assets/2022-01-23_18-47-17.png b/.gitbook/assets/2022-01-23_18-47-17.png new file mode 100644 index 0000000000..99e7dfa56c Binary files /dev/null and b/.gitbook/assets/2022-01-23_18-47-17.png differ diff --git a/.gitbook/assets/2022-01-23_20-47-25 (1).png b/.gitbook/assets/2022-01-23_20-47-25 (1).png new file mode 100644 index 0000000000..e278a2fcf8 Binary files /dev/null and b/.gitbook/assets/2022-01-23_20-47-25 (1).png differ diff --git a/.gitbook/assets/2022-01-23_20-47-25.png b/.gitbook/assets/2022-01-23_20-47-25.png new file mode 100644 index 0000000000..be75415cd9 Binary files /dev/null and b/.gitbook/assets/2022-01-23_20-47-25.png differ diff --git a/.gitbook/assets/2022-01-23_21-00-43 (1).png b/.gitbook/assets/2022-01-23_21-00-43 (1).png new file mode 100644 index 0000000000..d4c6ce5b2f Binary files /dev/null and b/.gitbook/assets/2022-01-23_21-00-43 (1).png differ diff --git a/.gitbook/assets/2022-01-23_21-00-43 (2).png b/.gitbook/assets/2022-01-23_21-00-43 (2).png new file mode 100644 index 0000000000..20d3e89b36 Binary files /dev/null and b/.gitbook/assets/2022-01-23_21-00-43 (2).png differ diff --git a/.gitbook/assets/2022-01-23_21-00-43.png b/.gitbook/assets/2022-01-23_21-00-43.png new file mode 100644 index 0000000000..d4c6ce5b2f Binary files /dev/null and b/.gitbook/assets/2022-01-23_21-00-43.png differ diff --git a/.gitbook/assets/2022-01-23_21-10-25 (1).png b/.gitbook/assets/2022-01-23_21-10-25 (1).png new file mode 100644 index 0000000000..9a7f0770e8 Binary files /dev/null and b/.gitbook/assets/2022-01-23_21-10-25 (1).png differ diff --git a/.gitbook/assets/2022-01-23_21-10-25 (2).png b/.gitbook/assets/2022-01-23_21-10-25 (2).png new file mode 100644 index 0000000000..69a95339ce Binary files /dev/null and b/.gitbook/assets/2022-01-23_21-10-25 (2).png differ diff --git a/.gitbook/assets/2022-01-23_21-10-25 (3).png b/.gitbook/assets/2022-01-23_21-10-25 (3).png new file mode 100644 index 0000000000..69a95339ce Binary files /dev/null and b/.gitbook/assets/2022-01-23_21-10-25 (3).png differ diff --git a/.gitbook/assets/2022-01-23_21-10-25.png b/.gitbook/assets/2022-01-23_21-10-25.png new file mode 100644 index 0000000000..9a7f0770e8 Binary files /dev/null and b/.gitbook/assets/2022-01-23_21-10-25.png differ diff --git a/.gitbook/assets/2022-01-23_21-13-12 (1).png b/.gitbook/assets/2022-01-23_21-13-12 (1).png new file mode 100644 index 0000000000..dbc16b3272 Binary files /dev/null and b/.gitbook/assets/2022-01-23_21-13-12 (1).png differ diff --git a/.gitbook/assets/2022-01-23_21-13-12.png b/.gitbook/assets/2022-01-23_21-13-12.png new file mode 100644 index 0000000000..dbc16b3272 Binary files /dev/null and b/.gitbook/assets/2022-01-23_21-13-12.png differ diff --git a/.gitbook/assets/2022-01-27_23-50-36.png b/.gitbook/assets/2022-01-27_23-50-36.png new file mode 100644 index 0000000000..2f2625a261 Binary files /dev/null and b/.gitbook/assets/2022-01-27_23-50-36.png differ diff --git a/.gitbook/assets/2022-01-28_00-00-27.png b/.gitbook/assets/2022-01-28_00-00-27.png new file mode 100644 index 0000000000..e590d8690c Binary files /dev/null and b/.gitbook/assets/2022-01-28_00-00-27.png differ diff --git a/.gitbook/assets/2022-01-28_00-07-07 (1).png b/.gitbook/assets/2022-01-28_00-07-07 (1).png new file mode 100644 index 0000000000..49327c3faf Binary files /dev/null and b/.gitbook/assets/2022-01-28_00-07-07 (1).png differ diff --git a/.gitbook/assets/2022-01-28_00-07-07.png b/.gitbook/assets/2022-01-28_00-07-07.png new file mode 100644 index 0000000000..cddfe2db17 Binary files /dev/null and b/.gitbook/assets/2022-01-28_00-07-07.png differ diff --git a/.gitbook/assets/2022-01-28_00-12-09.png b/.gitbook/assets/2022-01-28_00-12-09.png new file mode 100644 index 0000000000..165e7aa934 Binary files /dev/null and b/.gitbook/assets/2022-01-28_00-12-09.png differ diff --git a/.gitbook/assets/2022-01-28_00-59-16.png b/.gitbook/assets/2022-01-28_00-59-16.png new file mode 100644 index 0000000000..c5dc3059aa Binary files /dev/null and b/.gitbook/assets/2022-01-28_00-59-16.png differ diff --git a/.gitbook/assets/2022-01-28_01-26-27 (1).png b/.gitbook/assets/2022-01-28_01-26-27 (1).png new file mode 100644 index 0000000000..e4a5afa0ee Binary files /dev/null and b/.gitbook/assets/2022-01-28_01-26-27 (1).png differ diff --git a/.gitbook/assets/2022-01-28_01-26-27.png b/.gitbook/assets/2022-01-28_01-26-27.png new file mode 100644 index 0000000000..e4a5afa0ee Binary files /dev/null and b/.gitbook/assets/2022-01-28_01-26-27.png differ diff --git a/.gitbook/assets/2022-01-28_01-29-59.png b/.gitbook/assets/2022-01-28_01-29-59.png new file mode 100644 index 0000000000..fc91b2ff0d Binary files /dev/null and b/.gitbook/assets/2022-01-28_01-29-59.png differ diff --git a/.gitbook/assets/2022-01-28_01-35-24 (1).png b/.gitbook/assets/2022-01-28_01-35-24 (1).png new file mode 100644 index 0000000000..1cc1512419 Binary files /dev/null and b/.gitbook/assets/2022-01-28_01-35-24 (1).png differ diff --git a/.gitbook/assets/2022-01-28_01-35-24.png b/.gitbook/assets/2022-01-28_01-35-24.png new file mode 100644 index 0000000000..1cc1512419 Binary files /dev/null and b/.gitbook/assets/2022-01-28_01-35-24.png differ diff --git a/.gitbook/assets/2022-01-28_01-52-52.png b/.gitbook/assets/2022-01-28_01-52-52.png new file mode 100644 index 0000000000..745d941078 Binary files /dev/null and b/.gitbook/assets/2022-01-28_01-52-52.png differ diff --git a/.gitbook/assets/2022-01-28_01-53-56.png b/.gitbook/assets/2022-01-28_01-53-56.png new file mode 100644 index 0000000000..76ebf4deca Binary files /dev/null and b/.gitbook/assets/2022-01-28_01-53-56.png differ diff --git a/.gitbook/assets/2022-01-28_01-57-46.png b/.gitbook/assets/2022-01-28_01-57-46.png new file mode 100644 index 0000000000..d9b59e42e3 Binary files /dev/null and b/.gitbook/assets/2022-01-28_01-57-46.png differ diff --git a/.gitbook/assets/2022-01-28_02-02-42.png b/.gitbook/assets/2022-01-28_02-02-42.png new file mode 100644 index 0000000000..443f347a99 Binary files /dev/null and b/.gitbook/assets/2022-01-28_02-02-42.png differ diff --git a/.gitbook/assets/2022-01-28_02-03-37 (1).png b/.gitbook/assets/2022-01-28_02-03-37 (1).png new file mode 100644 index 0000000000..2f6d18f152 Binary files /dev/null and b/.gitbook/assets/2022-01-28_02-03-37 (1).png differ diff --git a/.gitbook/assets/2022-01-28_02-03-37.png b/.gitbook/assets/2022-01-28_02-03-37.png new file mode 100644 index 0000000000..2f6d18f152 Binary files /dev/null and b/.gitbook/assets/2022-01-28_02-03-37.png differ diff --git a/.gitbook/assets/2022-02-01_03-05-53 (1).png b/.gitbook/assets/2022-02-01_03-05-53 (1).png new file mode 100644 index 0000000000..e7057d719a Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-05-53 (1).png differ diff --git a/.gitbook/assets/2022-02-01_03-05-53.png b/.gitbook/assets/2022-02-01_03-05-53.png new file mode 100644 index 0000000000..e7057d719a Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-05-53.png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (2).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (3).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (4).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (4).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (3).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (3).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (3).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (4).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (4).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (4).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (5).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (5).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1) (5).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (2) (1).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (3) (1).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (3) (1).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (3) (1).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (3) (2).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (3) (2).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (3) (2).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (3) (3).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (3) (3).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (3) (3).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (3) (4).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (3) (4).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (3) (4).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (3) (5).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (3) (5).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (3) (5).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (4).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (4).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (5).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (5).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4) (5).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (1).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (2).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (2).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (2).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (3).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (3).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (3).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (4).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (4).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1) (4).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (1).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (1).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (1).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (1) (2).png b/.gitbook/assets/2022-02-01_03-15-12 (1) (2).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (1) (2).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12 (3).png b/.gitbook/assets/2022-02-01_03-15-12 (3).png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12 (3).png differ diff --git a/.gitbook/assets/2022-02-01_03-15-12.png b/.gitbook/assets/2022-02-01_03-15-12.png new file mode 100644 index 0000000000..0e6d055c34 Binary files /dev/null and b/.gitbook/assets/2022-02-01_03-15-12.png differ diff --git a/.gitbook/assets/2022-02-01_16-04-42 (1).png b/.gitbook/assets/2022-02-01_16-04-42 (1).png new file mode 100644 index 0000000000..bdab67e26c Binary files /dev/null and b/.gitbook/assets/2022-02-01_16-04-42 (1).png differ diff --git a/.gitbook/assets/2022-02-01_16-04-42.png b/.gitbook/assets/2022-02-01_16-04-42.png new file mode 100644 index 0000000000..bdab67e26c Binary files /dev/null and b/.gitbook/assets/2022-02-01_16-04-42.png differ diff --git a/.gitbook/assets/2022-02-01_16-14-03.png b/.gitbook/assets/2022-02-01_16-14-03.png new file mode 100644 index 0000000000..e437fd97ec Binary files /dev/null and b/.gitbook/assets/2022-02-01_16-14-03.png differ diff --git a/.gitbook/assets/2022-02-01_16-23-07.png b/.gitbook/assets/2022-02-01_16-23-07.png new file mode 100644 index 0000000000..9698f4a865 Binary files /dev/null and b/.gitbook/assets/2022-02-01_16-23-07.png differ diff --git a/.gitbook/assets/2022-02-01_16-32-31.png b/.gitbook/assets/2022-02-01_16-32-31.png new file mode 100644 index 0000000000..bd2c9ea5ab Binary files /dev/null and b/.gitbook/assets/2022-02-01_16-32-31.png differ diff --git a/.gitbook/assets/2022-02-01_16-38-15.png b/.gitbook/assets/2022-02-01_16-38-15.png new file mode 100644 index 0000000000..7c2a7da9b2 Binary files /dev/null and b/.gitbook/assets/2022-02-01_16-38-15.png differ diff --git a/.gitbook/assets/2022-02-01_16-54-28.png b/.gitbook/assets/2022-02-01_16-54-28.png new file mode 100644 index 0000000000..8f8ace40d4 Binary files /dev/null and b/.gitbook/assets/2022-02-01_16-54-28.png differ diff --git a/.gitbook/assets/2022-02-01_16-57-48 (1).png b/.gitbook/assets/2022-02-01_16-57-48 (1).png new file mode 100644 index 0000000000..79e92b939f Binary files /dev/null and b/.gitbook/assets/2022-02-01_16-57-48 (1).png differ diff --git a/.gitbook/assets/2022-02-01_16-57-48.png b/.gitbook/assets/2022-02-01_16-57-48.png new file mode 100644 index 0000000000..79e92b939f Binary files /dev/null and b/.gitbook/assets/2022-02-01_16-57-48.png differ diff --git a/.gitbook/assets/2022-02-01_17-02-44.png b/.gitbook/assets/2022-02-01_17-02-44.png new file mode 100644 index 0000000000..dc0bfbad24 Binary files /dev/null and b/.gitbook/assets/2022-02-01_17-02-44.png differ diff --git a/.gitbook/assets/2022-02-01_17-05-50.png b/.gitbook/assets/2022-02-01_17-05-50.png new file mode 100644 index 0000000000..1c5122ca70 Binary files /dev/null and b/.gitbook/assets/2022-02-01_17-05-50.png differ diff --git a/.gitbook/assets/2022-07-22_12-28-56 (1) (1) (1) (3) (1).png b/.gitbook/assets/2022-07-22_12-28-56 (1) (1) (1) (3) (1).png new file mode 100644 index 0000000000..13dbb4794e Binary files /dev/null and b/.gitbook/assets/2022-07-22_12-28-56 (1) (1) (1) (3) (1).png differ diff --git a/.gitbook/assets/2022-07-22_12-28-56 (1) (1) (1) (3) (2).png b/.gitbook/assets/2022-07-22_12-28-56 (1) (1) (1) (3) (2).png new file mode 100644 index 0000000000..13dbb4794e Binary files /dev/null and b/.gitbook/assets/2022-07-22_12-28-56 (1) (1) (1) (3) (2).png differ diff --git a/.gitbook/assets/2022-07-22_12-28-56 (1) (1) (1) (3) (3).png b/.gitbook/assets/2022-07-22_12-28-56 (1) (1) (1) (3) (3).png new file mode 100644 index 0000000000..13dbb4794e Binary files /dev/null and b/.gitbook/assets/2022-07-22_12-28-56 (1) (1) (1) (3) (3).png differ diff --git a/.gitbook/assets/2022-07-22_12-28-56 (1) (1) (1) (3) (4).png b/.gitbook/assets/2022-07-22_12-28-56 (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..13dbb4794e Binary files /dev/null and b/.gitbook/assets/2022-07-22_12-28-56 (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/2022-07-22_12-28-56 (1) (1) (1) (3).png b/.gitbook/assets/2022-07-22_12-28-56 (1) (1) (1) (3).png new file mode 100644 index 0000000000..13dbb4794e Binary files /dev/null and b/.gitbook/assets/2022-07-22_12-28-56 (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/2022-07-22_12-28-56 (1) (1) (2).png b/.gitbook/assets/2022-07-22_12-28-56 (1) (1) (2).png new file mode 100644 index 0000000000..13dbb4794e Binary files /dev/null and b/.gitbook/assets/2022-07-22_12-28-56 (1) (1) (2).png differ diff --git a/.gitbook/assets/2022-07-22_12-28-56 (1) (1) (3).png b/.gitbook/assets/2022-07-22_12-28-56 (1) (1) (3).png new file mode 100644 index 0000000000..13dbb4794e Binary files /dev/null and b/.gitbook/assets/2022-07-22_12-28-56 (1) (1) (3).png differ diff --git a/.gitbook/assets/24 (1).png b/.gitbook/assets/24.png similarity index 100% rename from .gitbook/assets/24 (1).png rename to .gitbook/assets/24.png diff --git a/.gitbook/assets/26 (1).png b/.gitbook/assets/26.png similarity index 100% rename from .gitbook/assets/26 (1).png rename to .gitbook/assets/26.png diff --git a/.gitbook/assets/27001-large.png b/.gitbook/assets/27001 large.png similarity index 100% rename from .gitbook/assets/27001-large.png rename to .gitbook/assets/27001 large.png diff --git a/.gitbook/assets/27001 small.png b/.gitbook/assets/27001 small.png new file mode 100644 index 0000000000..9b4cb32384 Binary files /dev/null and b/.gitbook/assets/27001 small.png differ diff --git a/.gitbook/assets/3 (10).png b/.gitbook/assets/3 (10).png new file mode 100644 index 0000000000..2df9347cca Binary files /dev/null and b/.gitbook/assets/3 (10).png differ diff --git a/.gitbook/assets/3 (11).png b/.gitbook/assets/3 (11).png index 2df9347cca..1129b39a4a 100644 Binary files a/.gitbook/assets/3 (11).png and b/.gitbook/assets/3 (11).png differ diff --git a/.gitbook/assets/3 (12).png b/.gitbook/assets/3 (12).png index 1129b39a4a..f8c9758cfb 100644 Binary files a/.gitbook/assets/3 (12).png and b/.gitbook/assets/3 (12).png differ diff --git a/.gitbook/assets/3 (13).png b/.gitbook/assets/3 (13).png index f8c9758cfb..e34afa434f 100644 Binary files a/.gitbook/assets/3 (13).png and b/.gitbook/assets/3 (13).png differ diff --git a/.gitbook/assets/3 (4).png b/.gitbook/assets/3 (4).png index c63ebcda3d..c81640cdc0 100644 Binary files a/.gitbook/assets/3 (4).png and b/.gitbook/assets/3 (4).png differ diff --git a/.gitbook/assets/3 (5).png b/.gitbook/assets/3 (5).png index 26ab743242..c63ebcda3d 100644 Binary files a/.gitbook/assets/3 (5).png and b/.gitbook/assets/3 (5).png differ diff --git a/.gitbook/assets/3 (6).png b/.gitbook/assets/3 (6).png index c81640cdc0..26ab743242 100644 Binary files a/.gitbook/assets/3 (6).png and b/.gitbook/assets/3 (6).png differ diff --git a/.gitbook/assets/30-05-2022-Keyclock_User Roles -001 (1) (1) (1) (1).jpg b/.gitbook/assets/30-05-2022-Keyclock_User Roles -001 (1) (1) (1) (1).jpg new file mode 100644 index 0000000000..90dab45f3a Binary files /dev/null and b/.gitbook/assets/30-05-2022-Keyclock_User Roles -001 (1) (1) (1) (1).jpg differ diff --git a/.gitbook/assets/30-05-2022-Keyclock_User Roles -001 (1) (1) (1) (2).jpg b/.gitbook/assets/30-05-2022-Keyclock_User Roles -001 (1) (1) (1) (2).jpg new file mode 100644 index 0000000000..90dab45f3a Binary files /dev/null and b/.gitbook/assets/30-05-2022-Keyclock_User Roles -001 (1) (1) (1) (2).jpg differ diff --git a/.gitbook/assets/30-05-2022-Keyclock_User Roles -001 (1) (1) (1) (3).jpg b/.gitbook/assets/30-05-2022-Keyclock_User Roles -001 (1) (1) (1) (3).jpg new file mode 100644 index 0000000000..90dab45f3a Binary files /dev/null and b/.gitbook/assets/30-05-2022-Keyclock_User Roles -001 (1) (1) (1) (3).jpg differ diff --git a/.gitbook/assets/30-05-2022-Keyclock_User Roles -001 (1) (1) (1).jpg b/.gitbook/assets/30-05-2022-Keyclock_User Roles -001 (1) (1) (1).jpg new file mode 100644 index 0000000000..90dab45f3a Binary files /dev/null and b/.gitbook/assets/30-05-2022-Keyclock_User Roles -001 (1) (1) (1).jpg differ diff --git a/.gitbook/assets/30-05-2022-Keyclock_User Roles -001.jpg b/.gitbook/assets/30-05-2022-Keyclock_User Roles -001.jpg new file mode 100644 index 0000000000..90dab45f3a Binary files /dev/null and b/.gitbook/assets/30-05-2022-Keyclock_User Roles -001.jpg differ diff --git a/.gitbook/assets/30052022_Addnewrole.jpg b/.gitbook/assets/30052022_Addnewrole.jpg new file mode 100644 index 0000000000..b4e9e8a12a Binary files /dev/null and b/.gitbook/assets/30052022_Addnewrole.jpg differ diff --git a/.gitbook/assets/30052022_Createprotocalmapping.jpg b/.gitbook/assets/30052022_Createprotocalmapping.jpg new file mode 100644 index 0000000000..1241e7a6ce Binary files /dev/null and b/.gitbook/assets/30052022_Createprotocalmapping.jpg differ diff --git a/.gitbook/assets/30052022_User Mapper.jpg b/.gitbook/assets/30052022_User Mapper.jpg new file mode 100644 index 0000000000..1111d1c501 Binary files /dev/null and b/.gitbook/assets/30052022_User Mapper.jpg differ diff --git a/.gitbook/assets/4 (4).png b/.gitbook/assets/4 (4).png index d725d45d91..bf71daccdf 100644 Binary files a/.gitbook/assets/4 (4).png and b/.gitbook/assets/4 (4).png differ diff --git a/.gitbook/assets/4 (6).png b/.gitbook/assets/4 (6).png index bf71daccdf..d725d45d91 100644 Binary files a/.gitbook/assets/4 (6).png and b/.gitbook/assets/4 (6).png differ diff --git a/.gitbook/assets/6 (4).png b/.gitbook/assets/6 (4).png index b1c5d878d5..b054655969 100644 Binary files a/.gitbook/assets/6 (4).png and b/.gitbook/assets/6 (4).png differ diff --git a/.gitbook/assets/6 (5).png b/.gitbook/assets/6 (5).png index b054655969..b1c5d878d5 100644 Binary files a/.gitbook/assets/6 (5).png and b/.gitbook/assets/6 (5).png differ diff --git a/.gitbook/assets/8 (6) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/8 (6) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..6d5c1e387a Binary files /dev/null and b/.gitbook/assets/8 (6) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/8 (6) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/8 (6) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..6d5c1e387a Binary files /dev/null and b/.gitbook/assets/8 (6) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/8 (6) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/8 (6) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..6d5c1e387a Binary files /dev/null and b/.gitbook/assets/8 (6) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/8 (6) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (2).png b/.gitbook/assets/8 (6) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (2).png new file mode 100644 index 0000000000..6d5c1e387a Binary files /dev/null and b/.gitbook/assets/8 (6) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/86484314-588bf780-bd2c-11ea-9718-17acdde71b18-1-.png b/.gitbook/assets/86484314-588bf780-bd2c-11ea-9718-17acdde71b18 (1).png similarity index 100% rename from .gitbook/assets/86484314-588bf780-bd2c-11ea-9718-17acdde71b18-1-.png rename to .gitbook/assets/86484314-588bf780-bd2c-11ea-9718-17acdde71b18 (1).png diff --git a/.gitbook/assets/9 (1).png b/.gitbook/assets/9 (1).png index 5d488c57eb..b01e984c13 100644 Binary files a/.gitbook/assets/9 (1).png and b/.gitbook/assets/9 (1).png differ diff --git a/.gitbook/assets/9 (2).png b/.gitbook/assets/9 (2).png index b01e984c13..26ccaa54ec 100644 Binary files a/.gitbook/assets/9 (2).png and b/.gitbook/assets/9 (2).png differ diff --git a/.gitbook/assets/9 (3).png b/.gitbook/assets/9 (3).png index 26ccaa54ec..1a253e1f1f 100644 Binary files a/.gitbook/assets/9 (3).png and b/.gitbook/assets/9 (3).png differ diff --git a/.gitbook/assets/9 (5) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/9 (5) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..0009429e8d Binary files /dev/null and b/.gitbook/assets/9 (5) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/9 (5) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/9 (5) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..0009429e8d Binary files /dev/null and b/.gitbook/assets/9 (5) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/9 (5) (1) (1) (1) (1) (1).png b/.gitbook/assets/9 (5) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..0009429e8d Binary files /dev/null and b/.gitbook/assets/9 (5) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/9 (5) (1) (1) (1) (2).png b/.gitbook/assets/9 (5) (1) (1) (1) (2).png new file mode 100644 index 0000000000..0009429e8d Binary files /dev/null and b/.gitbook/assets/9 (5) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/9.png b/.gitbook/assets/9.png new file mode 100644 index 0000000000..5d488c57eb Binary files /dev/null and b/.gitbook/assets/9.png differ diff --git a/.gitbook/assets/AMI Connection.png b/.gitbook/assets/AMI Connection.png new file mode 100644 index 0000000000..4446c7f402 Binary files /dev/null and b/.gitbook/assets/AMI Connection.png differ diff --git a/.gitbook/assets/AMI connection-voice channel.png b/.gitbook/assets/AMI connection-voice channel.png new file mode 100644 index 0000000000..f0de1501dc Binary files /dev/null and b/.gitbook/assets/AMI connection-voice channel.png differ diff --git a/.gitbook/assets/AMI service-FreePBX.png b/.gitbook/assets/AMI service-FreePBX.png new file mode 100644 index 0000000000..5b9724fe19 Binary files /dev/null and b/.gitbook/assets/AMI service-FreePBX.png differ diff --git a/.gitbook/assets/ActivateGuestuser.png b/.gitbook/assets/ActivateGuestuser.png new file mode 100644 index 0000000000..28f7b793a1 Binary files /dev/null and b/.gitbook/assets/ActivateGuestuser.png differ diff --git a/.gitbook/assets/Add Google Calendar API to project b/.gitbook/assets/Add Google Calendar API to project new file mode 100644 index 0000000000..a110050dec Binary files /dev/null and b/.gitbook/assets/Add Google Calendar API to project differ diff --git a/.gitbook/assets/Add Google Drive API to project b/.gitbook/assets/Add Google Drive API to project new file mode 100644 index 0000000000..e1a4f8b19b Binary files /dev/null and b/.gitbook/assets/Add Google Drive API to project differ diff --git a/.gitbook/assets/Add assets to Meta business user.png b/.gitbook/assets/Add assets to Meta business user.png new file mode 100644 index 0000000000..636c277c2e Binary files /dev/null and b/.gitbook/assets/Add assets to Meta business user.png differ diff --git a/.gitbook/assets/Add permissions to Meta business system user.png b/.gitbook/assets/Add permissions to Meta business system user.png new file mode 100644 index 0000000000..985a6099c7 Binary files /dev/null and b/.gitbook/assets/Add permissions to Meta business system user.png differ diff --git a/.gitbook/assets/Add role (1).jpg b/.gitbook/assets/Add role (1).jpg new file mode 100644 index 0000000000..039f3819a7 Binary files /dev/null and b/.gitbook/assets/Add role (1).jpg differ diff --git a/.gitbook/assets/Add role.jpg b/.gitbook/assets/Add role.jpg new file mode 100644 index 0000000000..b4e9e8a12a Binary files /dev/null and b/.gitbook/assets/Add role.jpg differ diff --git a/.gitbook/assets/AddApp.png b/.gitbook/assets/AddApp.png new file mode 100644 index 0000000000..f65c8bf728 Binary files /dev/null and b/.gitbook/assets/AddApp.png differ diff --git a/.gitbook/assets/AddApplication.png b/.gitbook/assets/AddApplication.png new file mode 100644 index 0000000000..e91774f147 Binary files /dev/null and b/.gitbook/assets/AddApplication.png differ diff --git a/.gitbook/assets/Adding WhatsApp phone number to Facebook App.png b/.gitbook/assets/Adding WhatsApp phone number to Facebook App.png new file mode 100644 index 0000000000..d91553e5af Binary files /dev/null and b/.gitbook/assets/Adding WhatsApp phone number to Facebook App.png differ diff --git a/.gitbook/assets/Administration Workspace navigation.png b/.gitbook/assets/Administration Workspace navigation.png new file mode 100644 index 0000000000..25c3de79ec Binary files /dev/null and b/.gitbook/assets/Administration Workspace navigation.png differ diff --git a/.gitbook/assets/Agent to extension association-voice channel.png b/.gitbook/assets/Agent to extension association-voice channel.png new file mode 100644 index 0000000000..c0d925885b Binary files /dev/null and b/.gitbook/assets/Agent to extension association-voice channel.png differ diff --git a/.gitbook/assets/Allowed Domains (1).png b/.gitbook/assets/Allowed Domains (1).png new file mode 100644 index 0000000000..0d9e02f884 Binary files /dev/null and b/.gitbook/assets/Allowed Domains (1).png differ diff --git a/.gitbook/assets/Allowed Domains.png b/.gitbook/assets/Allowed Domains.png new file mode 100644 index 0000000000..0d9e02f884 Binary files /dev/null and b/.gitbook/assets/Allowed Domains.png differ diff --git a/.gitbook/assets/Allowed_Blocked Domains (1).png b/.gitbook/assets/Allowed_Blocked Domains (1).png new file mode 100644 index 0000000000..ff46666246 Binary files /dev/null and b/.gitbook/assets/Allowed_Blocked Domains (1).png differ diff --git a/.gitbook/assets/Allowed_Blocked Domains.png b/.gitbook/assets/Allowed_Blocked Domains.png new file mode 100644 index 0000000000..ff46666246 Binary files /dev/null and b/.gitbook/assets/Allowed_Blocked Domains.png differ diff --git a/.gitbook/assets/Alphafederation.png b/.gitbook/assets/Alphafederation.png new file mode 100644 index 0000000000..2abde41c58 Binary files /dev/null and b/.gitbook/assets/Alphafederation.png differ diff --git a/.gitbook/assets/App Service Registration File content.png b/.gitbook/assets/App Service Registration File content.png new file mode 100644 index 0000000000..9dcf7fc69a Binary files /dev/null and b/.gitbook/assets/App Service Registration File content.png differ diff --git a/.gitbook/assets/App installation page.png b/.gitbook/assets/App installation page.png new file mode 100644 index 0000000000..a9e132200e Binary files /dev/null and b/.gitbook/assets/App installation page.png differ diff --git a/.gitbook/assets/AppDetails.png b/.gitbook/assets/AppDetails.png new file mode 100644 index 0000000000..c0e357871a Binary files /dev/null and b/.gitbook/assets/AppDetails.png differ diff --git a/.gitbook/assets/AppVeyor.png b/.gitbook/assets/AppVeyor.png new file mode 100644 index 0000000000..af844f477d Binary files /dev/null and b/.gitbook/assets/AppVeyor.png differ diff --git a/.gitbook/assets/Apps panel.png b/.gitbook/assets/Apps panel.png new file mode 100644 index 0000000000..a82629dd5f Binary files /dev/null and b/.gitbook/assets/Apps panel.png differ diff --git a/.gitbook/assets/Assets.png b/.gitbook/assets/Assets.png new file mode 100644 index 0000000000..40c75d59ac Binary files /dev/null and b/.gitbook/assets/Assets.png differ diff --git a/.gitbook/assets/Assign Meta for business asset.png b/.gitbook/assets/Assign Meta for business asset.png new file mode 100644 index 0000000000..c4912889e9 Binary files /dev/null and b/.gitbook/assets/Assign Meta for business asset.png differ diff --git a/.gitbook/assets/Assign Omnichannel Agent to a department b/.gitbook/assets/Assign Omnichannel Agent to a department new file mode 100644 index 0000000000..10d6c37523 Binary files /dev/null and b/.gitbook/assets/Assign Omnichannel Agent to a department differ diff --git a/.gitbook/assets/Asterisk Builtin mini-HTTP server .png b/.gitbook/assets/Asterisk Builtin mini-HTTP server .png new file mode 100644 index 0000000000..b8c240a3aa Binary files /dev/null and b/.gitbook/assets/Asterisk Builtin mini-HTTP server .png differ diff --git a/.gitbook/assets/Asterisk manager.png b/.gitbook/assets/Asterisk manager.png new file mode 100644 index 0000000000..ea2d42ab4a Binary files /dev/null and b/.gitbook/assets/Asterisk manager.png differ diff --git a/.gitbook/assets/Asterisk status FreePBX.png b/.gitbook/assets/Asterisk status FreePBX.png new file mode 100644 index 0000000000..c9fe7a4f5a Binary files /dev/null and b/.gitbook/assets/Asterisk status FreePBX.png differ diff --git a/.gitbook/assets/Asterisk status.png b/.gitbook/assets/Asterisk status.png new file mode 100644 index 0000000000..2f24f229ee Binary files /dev/null and b/.gitbook/assets/Asterisk status.png differ diff --git a/.gitbook/assets/Authorize Google calendar app b/.gitbook/assets/Authorize Google calendar app new file mode 100644 index 0000000000..696f86fbbe Binary files /dev/null and b/.gitbook/assets/Authorize Google calendar app differ diff --git a/.gitbook/assets/Available for accepting calls.png b/.gitbook/assets/Available for accepting calls.png new file mode 100644 index 0000000000..58a393a304 Binary files /dev/null and b/.gitbook/assets/Available for accepting calls.png differ diff --git a/.gitbook/assets/Azure AD App details b/.gitbook/assets/Azure AD App details new file mode 100644 index 0000000000..1ce7e24d5d Binary files /dev/null and b/.gitbook/assets/Azure AD App details differ diff --git a/.gitbook/assets/Azure AD App secret page b/.gitbook/assets/Azure AD App secret page new file mode 100644 index 0000000000..bd0e5ec64c Binary files /dev/null and b/.gitbook/assets/Azure AD App secret page differ diff --git a/.gitbook/assets/Azure Active Directory new App Registration b/.gitbook/assets/Azure Active Directory new App Registration new file mode 100644 index 0000000000..65b3741ca6 Binary files /dev/null and b/.gitbook/assets/Azure Active Directory new App Registration differ diff --git a/.gitbook/assets/Azure Portal b/.gitbook/assets/Azure Portal new file mode 100644 index 0000000000..558b800a28 Binary files /dev/null and b/.gitbook/assets/Azure Portal differ diff --git a/.gitbook/assets/BBBappSettings.png b/.gitbook/assets/BBBappSettings.png new file mode 100644 index 0000000000..6c2529129c Binary files /dev/null and b/.gitbook/assets/BBBappSettings.png differ diff --git a/.gitbook/assets/Blocked Domains.png b/.gitbook/assets/Blocked Domains.png new file mode 100644 index 0000000000..f4e96e3a7a Binary files /dev/null and b/.gitbook/assets/Blocked Domains.png differ diff --git a/.gitbook/assets/BotsSettings.png b/.gitbook/assets/BotsSettings.png new file mode 100644 index 0000000000..851b35f545 Binary files /dev/null and b/.gitbook/assets/BotsSettings.png differ diff --git a/.gitbook/assets/Call initiation - room- conference call.png b/.gitbook/assets/Call initiation - room- conference call.png new file mode 100644 index 0000000000..8d7b00b858 Binary files /dev/null and b/.gitbook/assets/Call initiation - room- conference call.png differ diff --git a/.gitbook/assets/Call initiation-Conference call.png b/.gitbook/assets/Call initiation-Conference call.png new file mode 100644 index 0000000000..66a742243c Binary files /dev/null and b/.gitbook/assets/Call initiation-Conference call.png differ diff --git a/.gitbook/assets/CallCenterSettings.png b/.gitbook/assets/CallCenterSettings.png new file mode 100644 index 0000000000..03c2920a83 Binary files /dev/null and b/.gitbook/assets/CallCenterSettings.png differ diff --git a/.gitbook/assets/Calling state-Conference call.png b/.gitbook/assets/Calling state-Conference call.png new file mode 100644 index 0000000000..cce632b2a9 Binary files /dev/null and b/.gitbook/assets/Calling state-Conference call.png differ diff --git a/.gitbook/assets/Certificate 2020.pdf b/.gitbook/assets/Certificate 2020.pdf new file mode 100644 index 0000000000..5306ed694f Binary files /dev/null and b/.gitbook/assets/Certificate 2020.pdf differ diff --git a/.gitbook/assets/Certificate management PBX.png b/.gitbook/assets/Certificate management PBX.png new file mode 100644 index 0000000000..78ab18e6fc Binary files /dev/null and b/.gitbook/assets/Certificate management PBX.png differ diff --git a/.gitbook/assets/Certificate management.png b/.gitbook/assets/Certificate management.png new file mode 100644 index 0000000000..9e8d63a5f9 Binary files /dev/null and b/.gitbook/assets/Certificate management.png differ diff --git a/.gitbook/assets/Change telegram bot group privacy settings.png b/.gitbook/assets/Change telegram bot group privacy settings.png new file mode 100644 index 0000000000..5901f2b9b0 Binary files /dev/null and b/.gitbook/assets/Change telegram bot group privacy settings.png differ diff --git a/.gitbook/assets/Clear filters.png b/.gitbook/assets/Clear filters.png new file mode 100644 index 0000000000..0d33a96804 Binary files /dev/null and b/.gitbook/assets/Clear filters.png differ diff --git a/.gitbook/assets/Clipboard - May 12, 2022 4_21 PM.png b/.gitbook/assets/Clipboard - May 12, 2022 4_21 PM.png new file mode 100644 index 0000000000..c3c019dfe6 Binary files /dev/null and b/.gitbook/assets/Clipboard - May 12, 2022 4_21 PM.png differ diff --git a/.gitbook/assets/Clipboard -2.png b/.gitbook/assets/Clipboard -2.png new file mode 100644 index 0000000000..e666101d90 Binary files /dev/null and b/.gitbook/assets/Clipboard -2.png differ diff --git a/.gitbook/assets/Cloud Account Registration.png b/.gitbook/assets/Cloud Account Registration.png new file mode 100644 index 0000000000..3ec621f3c8 Binary files /dev/null and b/.gitbook/assets/Cloud Account Registration.png differ diff --git a/.gitbook/assets/Cloud services.png b/.gitbook/assets/Cloud services.png new file mode 100644 index 0000000000..320001bf37 Binary files /dev/null and b/.gitbook/assets/Cloud services.png differ diff --git a/.gitbook/assets/Communicate (1).png b/.gitbook/assets/Communicate (1).png new file mode 100644 index 0000000000..3d3af9b8ac Binary files /dev/null and b/.gitbook/assets/Communicate (1).png differ diff --git a/.gitbook/assets/Communicate.png b/.gitbook/assets/Communicate.png new file mode 100644 index 0000000000..3d3af9b8ac Binary files /dev/null and b/.gitbook/assets/Communicate.png differ diff --git a/.gitbook/assets/Comunication (1).png b/.gitbook/assets/Comunication (1).png new file mode 100644 index 0000000000..c8c48afba7 Binary files /dev/null and b/.gitbook/assets/Comunication (1).png differ diff --git a/.gitbook/assets/Comunication.png b/.gitbook/assets/Comunication.png new file mode 100644 index 0000000000..c8c48afba7 Binary files /dev/null and b/.gitbook/assets/Comunication.png differ diff --git a/.gitbook/assets/ConferenceCall.png b/.gitbook/assets/ConferenceCall.png new file mode 100644 index 0000000000..df0df41ac3 Binary files /dev/null and b/.gitbook/assets/ConferenceCall.png differ diff --git a/.gitbook/assets/ConferenceCallName.png b/.gitbook/assets/ConferenceCallName.png new file mode 100644 index 0000000000..0a3f5fe687 Binary files /dev/null and b/.gitbook/assets/ConferenceCallName.png differ diff --git a/.gitbook/assets/Configure Facebook App webhook.png b/.gitbook/assets/Configure Facebook App webhook.png new file mode 100644 index 0000000000..3c830c0cb7 Binary files /dev/null and b/.gitbook/assets/Configure Facebook App webhook.png differ diff --git a/.gitbook/assets/Connect WhatsApp Number.png b/.gitbook/assets/Connect WhatsApp Number.png new file mode 100644 index 0000000000..b5f84b53bd Binary files /dev/null and b/.gitbook/assets/Connect WhatsApp Number.png differ diff --git a/.gitbook/assets/Connect new WhatsApp number.png b/.gitbook/assets/Connect new WhatsApp number.png new file mode 100644 index 0000000000..f11177d8ff Binary files /dev/null and b/.gitbook/assets/Connect new WhatsApp number.png differ diff --git a/.gitbook/assets/Connectivity Services Offline.png b/.gitbook/assets/Connectivity Services Offline.png new file mode 100644 index 0000000000..c61df7c904 Binary files /dev/null and b/.gitbook/assets/Connectivity Services Offline.png differ diff --git a/.gitbook/assets/Continue Online with Cloud Services.png b/.gitbook/assets/Continue Online with Cloud Services.png new file mode 100644 index 0000000000..834f5159b0 Binary files /dev/null and b/.gitbook/assets/Continue Online with Cloud Services.png differ diff --git a/.gitbook/assets/Create Canned Response b/.gitbook/assets/Create Canned Response new file mode 100644 index 0000000000..bf8505fc0c Binary files /dev/null and b/.gitbook/assets/Create Canned Response differ diff --git a/.gitbook/assets/Create Canned Responses in Chat b/.gitbook/assets/Create Canned Responses in Chat new file mode 100644 index 0000000000..5f9ca89c71 Binary files /dev/null and b/.gitbook/assets/Create Canned Responses in Chat differ diff --git a/.gitbook/assets/Create New Cloud Account Step 01.png b/.gitbook/assets/Create New Cloud Account Step 01.png new file mode 100644 index 0000000000..eabffa0279 Binary files /dev/null and b/.gitbook/assets/Create New Cloud Account Step 01.png differ diff --git a/.gitbook/assets/Create New Omnichannel Livechat Trigger b/.gitbook/assets/Create New Omnichannel Livechat Trigger new file mode 100644 index 0000000000..a6002d94f9 Binary files /dev/null and b/.gitbook/assets/Create New Omnichannel Livechat Trigger differ diff --git a/.gitbook/assets/Create Tickets.png b/.gitbook/assets/Create Tickets.png new file mode 100644 index 0000000000..3590e7adf9 Binary files /dev/null and b/.gitbook/assets/Create Tickets.png differ diff --git a/.gitbook/assets/Create new GitHub incoming webhook.png b/.gitbook/assets/Create new GitHub incoming webhook.png new file mode 100644 index 0000000000..eb6107af57 Binary files /dev/null and b/.gitbook/assets/Create new GitHub incoming webhook.png differ diff --git a/.gitbook/assets/Create new Google Drive file b/.gitbook/assets/Create new Google Drive file new file mode 100644 index 0000000000..05e352bb7e Binary files /dev/null and b/.gitbook/assets/Create new Google Drive file differ diff --git a/.gitbook/assets/Create new custom field b/.gitbook/assets/Create new custom field new file mode 100644 index 0000000000..20ac796ec7 Binary files /dev/null and b/.gitbook/assets/Create new custom field differ diff --git a/.gitbook/assets/Create new service - FreePBX.png b/.gitbook/assets/Create new service - FreePBX.png new file mode 100644 index 0000000000..10fdfb72c9 Binary files /dev/null and b/.gitbook/assets/Create new service - FreePBX.png differ diff --git a/.gitbook/assets/Createprotocalmapping.jpg b/.gitbook/assets/Createprotocalmapping.jpg new file mode 100644 index 0000000000..e715cf91d9 Binary files /dev/null and b/.gitbook/assets/Createprotocalmapping.jpg differ diff --git a/.gitbook/assets/Creating OAuth consent screen on Google Cloud b/.gitbook/assets/Creating OAuth consent screen on Google Cloud new file mode 100644 index 0000000000..c889e1855d Binary files /dev/null and b/.gitbook/assets/Creating OAuth consent screen on Google Cloud differ diff --git a/.gitbook/assets/Creating a new Google OAuth credentials b/.gitbook/assets/Creating a new Google OAuth credentials new file mode 100644 index 0000000000..1345e91446 Binary files /dev/null and b/.gitbook/assets/Creating a new Google OAuth credentials differ diff --git a/.gitbook/assets/Creating custom OAuth b/.gitbook/assets/Creating custom OAuth new file mode 100644 index 0000000000..ef8eaa40ce Binary files /dev/null and b/.gitbook/assets/Creating custom OAuth differ diff --git a/.gitbook/assets/Creating telegram bot.png b/.gitbook/assets/Creating telegram bot.png new file mode 100644 index 0000000000..337c58814d Binary files /dev/null and b/.gitbook/assets/Creating telegram bot.png differ diff --git a/.gitbook/assets/Custom Services FreePBX.png b/.gitbook/assets/Custom Services FreePBX.png new file mode 100644 index 0000000000..04e32a7ddd Binary files /dev/null and b/.gitbook/assets/Custom Services FreePBX.png differ diff --git a/.gitbook/assets/Customized RocketChat UI.png b/.gitbook/assets/Customized RocketChat UI.png new file mode 100644 index 0000000000..e8fc4b27a2 Binary files /dev/null and b/.gitbook/assets/Customized RocketChat UI.png differ diff --git a/.gitbook/assets/DLP Channel moderator action.png b/.gitbook/assets/DLP Channel moderator action.png new file mode 100644 index 0000000000..fec145388b Binary files /dev/null and b/.gitbook/assets/DLP Channel moderator action.png differ diff --git a/.gitbook/assets/DNS settings saas.png b/.gitbook/assets/DNS settings saas.png new file mode 100644 index 0000000000..9fa07c1220 Binary files /dev/null and b/.gitbook/assets/DNS settings saas.png differ diff --git a/.gitbook/assets/Deactivateguest.png b/.gitbook/assets/Deactivateguest.png new file mode 100644 index 0000000000..b7ca685725 Binary files /dev/null and b/.gitbook/assets/Deactivateguest.png differ diff --git a/.gitbook/assets/Default certificate PBX.png b/.gitbook/assets/Default certificate PBX.png new file mode 100644 index 0000000000..441c6f173d Binary files /dev/null and b/.gitbook/assets/Default certificate PBX.png differ diff --git a/.gitbook/assets/Deprecated (1).png b/.gitbook/assets/Deprecated (1).png new file mode 100644 index 0000000000..03f1bdf5b7 Binary files /dev/null and b/.gitbook/assets/Deprecated (1).png differ diff --git a/.gitbook/assets/Device Management_Screen01.png b/.gitbook/assets/Device Management_Screen01.png new file mode 100644 index 0000000000..da5e7a4a77 Binary files /dev/null and b/.gitbook/assets/Device Management_Screen01.png differ diff --git a/.gitbook/assets/Device Managment_Logout DeviceMenu.png b/.gitbook/assets/Device Managment_Logout DeviceMenu.png new file mode 100644 index 0000000000..09fb93ada0 Binary files /dev/null and b/.gitbook/assets/Device Managment_Logout DeviceMenu.png differ diff --git a/.gitbook/assets/DirectCall.png b/.gitbook/assets/DirectCall.png new file mode 100644 index 0000000000..69bbbebc9e Binary files /dev/null and b/.gitbook/assets/DirectCall.png differ diff --git a/.gitbook/assets/DirectCallUserIcon&Status (1).png b/.gitbook/assets/DirectCallUserIcon&Status (1).png new file mode 100644 index 0000000000..0fa9398c9a Binary files /dev/null and b/.gitbook/assets/DirectCallUserIcon&Status (1).png differ diff --git a/.gitbook/assets/DirectCallUserIcon&Status.png b/.gitbook/assets/DirectCallUserIcon&Status.png new file mode 100644 index 0000000000..0fa9398c9a Binary files /dev/null and b/.gitbook/assets/DirectCallUserIcon&Status.png differ diff --git a/.gitbook/assets/DisabledForm.png b/.gitbook/assets/DisabledForm.png new file mode 100644 index 0000000000..5fd09ea864 Binary files /dev/null and b/.gitbook/assets/DisabledForm.png differ diff --git a/.gitbook/assets/Disconnect WhatsApp number.png b/.gitbook/assets/Disconnect WhatsApp number.png new file mode 100644 index 0000000000..a2ec1e55dd Binary files /dev/null and b/.gitbook/assets/Disconnect WhatsApp number.png differ diff --git a/.gitbook/assets/Edit WhatsApp number.png b/.gitbook/assets/Edit WhatsApp number.png new file mode 100644 index 0000000000..215477e326 Binary files /dev/null and b/.gitbook/assets/Edit WhatsApp number.png differ diff --git a/.gitbook/assets/Edit workspace URL.png b/.gitbook/assets/Edit workspace URL.png new file mode 100644 index 0000000000..27b8f09c33 Binary files /dev/null and b/.gitbook/assets/Edit workspace URL.png differ diff --git a/.gitbook/assets/Element change role permission.png b/.gitbook/assets/Element change role permission.png new file mode 100644 index 0000000000..2f6b0a7da6 Binary files /dev/null and b/.gitbook/assets/Element change role permission.png differ diff --git a/.gitbook/assets/Enable Google Calendar API b/.gitbook/assets/Enable Google Calendar API new file mode 100644 index 0000000000..98cacc1bc2 Binary files /dev/null and b/.gitbook/assets/Enable Google Calendar API differ diff --git a/.gitbook/assets/Enable Google Drive API b/.gitbook/assets/Enable Google Drive API new file mode 100644 index 0000000000..a03368a80b Binary files /dev/null and b/.gitbook/assets/Enable Google Drive API differ diff --git a/.gitbook/assets/Enable app development mode.png b/.gitbook/assets/Enable app development mode.png new file mode 100644 index 0000000000..37222bae72 Binary files /dev/null and b/.gitbook/assets/Enable app development mode.png differ diff --git a/.gitbook/assets/Enforce HTTPS PBX.png b/.gitbook/assets/Enforce HTTPS PBX.png new file mode 100644 index 0000000000..e8dd04ca1c Binary files /dev/null and b/.gitbook/assets/Enforce HTTPS PBX.png differ diff --git a/.gitbook/assets/EnterpriseEditionTag (1).jpg b/.gitbook/assets/EnterpriseEditionTag (1).jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/EnterpriseEditionTag (1).jpg differ diff --git a/.gitbook/assets/EnterpriseEditionTag.jpg b/.gitbook/assets/EnterpriseEditionTag.jpg new file mode 100644 index 0000000000..1654b99a4e Binary files /dev/null and b/.gitbook/assets/EnterpriseEditionTag.jpg differ diff --git a/.gitbook/assets/Example Settings code b/.gitbook/assets/Example Settings code new file mode 100644 index 0000000000..1ef1b48b62 Binary files /dev/null and b/.gitbook/assets/Example Settings code differ diff --git a/.gitbook/assets/Existing Hubspot contact gets identified by the app.png b/.gitbook/assets/Existing Hubspot contact gets identified by the app.png new file mode 100644 index 0000000000..919f44951c Binary files /dev/null and b/.gitbook/assets/Existing Hubspot contact gets identified by the app.png differ diff --git a/.gitbook/assets/Extensions PBX.png b/.gitbook/assets/Extensions PBX.png new file mode 100644 index 0000000000..3b347cc312 Binary files /dev/null and b/.gitbook/assets/Extensions PBX.png differ diff --git a/.gitbook/assets/Extensions-voice channel.png b/.gitbook/assets/Extensions-voice channel.png new file mode 100644 index 0000000000..446c5c823c Binary files /dev/null and b/.gitbook/assets/Extensions-voice channel.png differ diff --git a/.gitbook/assets/Facebook Developer Create App.png b/.gitbook/assets/Facebook Developer Create App.png new file mode 100644 index 0000000000..9190262aef Binary files /dev/null and b/.gitbook/assets/Facebook Developer Create App.png differ diff --git a/.gitbook/assets/Facebook Developer WhatsApp credentials.png b/.gitbook/assets/Facebook Developer WhatsApp credentials.png new file mode 100644 index 0000000000..e99446b80f Binary files /dev/null and b/.gitbook/assets/Facebook Developer WhatsApp credentials.png differ diff --git a/.gitbook/assets/Facebook Developer WhatsApp setup.png b/.gitbook/assets/Facebook Developer WhatsApp setup.png new file mode 100644 index 0000000000..86c28d7617 Binary files /dev/null and b/.gitbook/assets/Facebook Developer WhatsApp setup.png differ diff --git a/.gitbook/assets/Facebook Developers new app.png b/.gitbook/assets/Facebook Developers new app.png new file mode 100644 index 0000000000..44e46396e9 Binary files /dev/null and b/.gitbook/assets/Facebook Developers new app.png differ diff --git a/.gitbook/assets/Facebook app credentials (1).png b/.gitbook/assets/Facebook app credentials (1).png new file mode 100644 index 0000000000..7d03fdbf6e Binary files /dev/null and b/.gitbook/assets/Facebook app credentials (1).png differ diff --git a/.gitbook/assets/Facebook app credentials.png b/.gitbook/assets/Facebook app credentials.png new file mode 100644 index 0000000000..fb4aa4d924 Binary files /dev/null and b/.gitbook/assets/Facebook app credentials.png differ diff --git a/.gitbook/assets/Favourite icon.png b/.gitbook/assets/Favourite icon.png new file mode 100644 index 0000000000..1ef52e27a7 Binary files /dev/null and b/.gitbook/assets/Favourite icon.png differ diff --git a/.gitbook/assets/Federation_Create Channel (1).png b/.gitbook/assets/Federation_Create Channel (1).png new file mode 100644 index 0000000000..67dc0f47bf Binary files /dev/null and b/.gitbook/assets/Federation_Create Channel (1).png differ diff --git a/.gitbook/assets/Federation_Create Channel.png b/.gitbook/assets/Federation_Create Channel.png new file mode 100644 index 0000000000..8a36004201 Binary files /dev/null and b/.gitbook/assets/Federation_Create Channel.png differ diff --git a/.gitbook/assets/Firewall - services - FreePBX.png b/.gitbook/assets/Firewall - services - FreePBX.png new file mode 100644 index 0000000000..dbefd538db Binary files /dev/null and b/.gitbook/assets/Firewall - services - FreePBX.png differ diff --git a/.gitbook/assets/FreePBX connection.png b/.gitbook/assets/FreePBX connection.png new file mode 100644 index 0000000000..0a3e7efef1 Binary files /dev/null and b/.gitbook/assets/FreePBX connection.png differ diff --git a/.gitbook/assets/Generate new token Meta for Business.png b/.gitbook/assets/Generate new token Meta for Business.png new file mode 100644 index 0000000000..9ecda78538 Binary files /dev/null and b/.gitbook/assets/Generate new token Meta for Business.png differ diff --git a/.gitbook/assets/Generated WhatsApp Cloud API permanent token.png b/.gitbook/assets/Generated WhatsApp Cloud API permanent token.png new file mode 100644 index 0000000000..c0aff2228a Binary files /dev/null and b/.gitbook/assets/Generated WhatsApp Cloud API permanent token.png differ diff --git a/.gitbook/assets/GitHub webhook notifications.png b/.gitbook/assets/GitHub webhook notifications.png new file mode 100644 index 0000000000..03b7d962ca Binary files /dev/null and b/.gitbook/assets/GitHub webhook notifications.png differ diff --git a/.gitbook/assets/GitHub webhook setting.png b/.gitbook/assets/GitHub webhook setting.png new file mode 100644 index 0000000000..f42e9e2df9 Binary files /dev/null and b/.gitbook/assets/GitHub webhook setting.png differ diff --git a/.gitbook/assets/GitLab new incoming Webhook.png b/.gitbook/assets/GitLab new incoming Webhook.png new file mode 100644 index 0000000000..eba5df8fc7 Binary files /dev/null and b/.gitbook/assets/GitLab new incoming Webhook.png differ diff --git a/.gitbook/assets/GitLab webhook setting.png b/.gitbook/assets/GitLab webhook setting.png new file mode 100644 index 0000000000..f9b333f222 Binary files /dev/null and b/.gitbook/assets/GitLab webhook setting.png differ diff --git a/.gitbook/assets/GitLab webhook test.png b/.gitbook/assets/GitLab webhook test.png new file mode 100644 index 0000000000..7498ae0490 Binary files /dev/null and b/.gitbook/assets/GitLab webhook test.png differ diff --git a/.gitbook/assets/GitLab webhook url and token.png b/.gitbook/assets/GitLab webhook url and token.png new file mode 100644 index 0000000000..7b40730def Binary files /dev/null and b/.gitbook/assets/GitLab webhook url and token.png differ diff --git a/.gitbook/assets/GoFullyFeatured.png b/.gitbook/assets/GoFullyFeatured.png new file mode 100644 index 0000000000..dd89a3081e Binary files /dev/null and b/.gitbook/assets/GoFullyFeatured.png differ diff --git a/.gitbook/assets/Google Calendar app connect account b/.gitbook/assets/Google Calendar app connect account new file mode 100644 index 0000000000..b551877b79 Binary files /dev/null and b/.gitbook/assets/Google Calendar app connect account differ diff --git a/.gitbook/assets/Google Calendar app list events b/.gitbook/assets/Google Calendar app list events new file mode 100644 index 0000000000..26c0bf136f Binary files /dev/null and b/.gitbook/assets/Google Calendar app list events differ diff --git a/.gitbook/assets/Google Calendar app list of events.png b/.gitbook/assets/Google Calendar app list of events.png new file mode 100644 index 0000000000..b72b793830 Binary files /dev/null and b/.gitbook/assets/Google Calendar app list of events.png differ diff --git a/.gitbook/assets/Google Calendar app settings page b/.gitbook/assets/Google Calendar app settings page new file mode 100644 index 0000000000..83f675c961 Binary files /dev/null and b/.gitbook/assets/Google Calendar app settings page differ diff --git a/.gitbook/assets/Google Calendar app successful authorization b/.gitbook/assets/Google Calendar app successful authorization new file mode 100644 index 0000000000..b0fec87687 Binary files /dev/null and b/.gitbook/assets/Google Calendar app successful authorization differ diff --git a/.gitbook/assets/Google Calendar settings panel b/.gitbook/assets/Google Calendar settings panel new file mode 100644 index 0000000000..be1649b556 Binary files /dev/null and b/.gitbook/assets/Google Calendar settings panel differ diff --git a/.gitbook/assets/Google Calendar settings side panel.png b/.gitbook/assets/Google Calendar settings side panel.png new file mode 100644 index 0000000000..62bb4acf0f Binary files /dev/null and b/.gitbook/assets/Google Calendar settings side panel.png differ diff --git a/.gitbook/assets/Google Cloud OAuth2 credentials b/.gitbook/assets/Google Cloud OAuth2 credentials new file mode 100644 index 0000000000..7f59004ed5 Binary files /dev/null and b/.gitbook/assets/Google Cloud OAuth2 credentials differ diff --git a/.gitbook/assets/Google Drive App List all files.png b/.gitbook/assets/Google Drive App List all files.png new file mode 100644 index 0000000000..b6929dfbc7 Binary files /dev/null and b/.gitbook/assets/Google Drive App List all files.png differ diff --git a/.gitbook/assets/Google Drive App List files b/.gitbook/assets/Google Drive App List files new file mode 100644 index 0000000000..73f2e0ab74 Binary files /dev/null and b/.gitbook/assets/Google Drive App List files differ diff --git a/.gitbook/assets/Google Drive App Open file in browser b/.gitbook/assets/Google Drive App Open file in browser new file mode 100644 index 0000000000..deb4200a2b Binary files /dev/null and b/.gitbook/assets/Google Drive App Open file in browser differ diff --git a/.gitbook/assets/Google Drive App delete file.png b/.gitbook/assets/Google Drive App delete file.png new file mode 100644 index 0000000000..8c71e81ed1 Binary files /dev/null and b/.gitbook/assets/Google Drive App delete file.png differ diff --git a/.gitbook/assets/Google Drive App details page b/.gitbook/assets/Google Drive App details page new file mode 100644 index 0000000000..04ab971419 Binary files /dev/null and b/.gitbook/assets/Google Drive App details page differ diff --git a/.gitbook/assets/Google Drive app access means b/.gitbook/assets/Google Drive app access means new file mode 100644 index 0000000000..4ffa04fd90 Binary files /dev/null and b/.gitbook/assets/Google Drive app access means differ diff --git a/.gitbook/assets/Google Drive app bot authorize message b/.gitbook/assets/Google Drive app bot authorize message new file mode 100644 index 0000000000..e41a4ba100 Binary files /dev/null and b/.gitbook/assets/Google Drive app bot authorize message differ diff --git a/.gitbook/assets/Google Drive app connect account b/.gitbook/assets/Google Drive app connect account new file mode 100644 index 0000000000..444ea51a41 Binary files /dev/null and b/.gitbook/assets/Google Drive app connect account differ diff --git a/.gitbook/assets/Google Drive app file information.png b/.gitbook/assets/Google Drive app file information.png new file mode 100644 index 0000000000..2f6c8c564a Binary files /dev/null and b/.gitbook/assets/Google Drive app file information.png differ diff --git a/.gitbook/assets/Google Drive app open file in browser.png b/.gitbook/assets/Google Drive app open file in browser.png new file mode 100644 index 0000000000..f622ba4a77 Binary files /dev/null and b/.gitbook/assets/Google Drive app open file in browser.png differ diff --git a/.gitbook/assets/Google Drive bot first message b/.gitbook/assets/Google Drive bot first message new file mode 100644 index 0000000000..fc46b76748 Binary files /dev/null and b/.gitbook/assets/Google Drive bot first message differ diff --git a/.gitbook/assets/Google Drive create consent screen b/.gitbook/assets/Google Drive create consent screen new file mode 100644 index 0000000000..cfa93ff332 Binary files /dev/null and b/.gitbook/assets/Google Drive create consent screen differ diff --git a/.gitbook/assets/Google Drive file information b/.gitbook/assets/Google Drive file information new file mode 100644 index 0000000000..e055aac97c Binary files /dev/null and b/.gitbook/assets/Google Drive file information differ diff --git a/.gitbook/assets/Google Drive file information.png b/.gitbook/assets/Google Drive file information.png new file mode 100644 index 0000000000..0da76c1de9 Binary files /dev/null and b/.gitbook/assets/Google Drive file information.png differ diff --git a/.gitbook/assets/Google Drive file set permissions b/.gitbook/assets/Google Drive file set permissions new file mode 100644 index 0000000000..4e5d48cb9c Binary files /dev/null and b/.gitbook/assets/Google Drive file set permissions differ diff --git a/.gitbook/assets/Google Drive file set permissions.png b/.gitbook/assets/Google Drive file set permissions.png new file mode 100644 index 0000000000..9a8b302f2a Binary files /dev/null and b/.gitbook/assets/Google Drive file set permissions.png differ diff --git a/.gitbook/assets/Google Drive new file link b/.gitbook/assets/Google Drive new file link new file mode 100644 index 0000000000..8a44879170 Binary files /dev/null and b/.gitbook/assets/Google Drive new file link differ diff --git a/.gitbook/assets/Google Drive see file information b/.gitbook/assets/Google Drive see file information new file mode 100644 index 0000000000..0831ec4dea Binary files /dev/null and b/.gitbook/assets/Google Drive see file information differ diff --git a/.gitbook/assets/Google Drive see file information.png b/.gitbook/assets/Google Drive see file information.png new file mode 100644 index 0000000000..bb60aef3af Binary files /dev/null and b/.gitbook/assets/Google Drive see file information.png differ diff --git a/.gitbook/assets/Google Drive share file in room b/.gitbook/assets/Google Drive share file in room new file mode 100644 index 0000000000..ee95ad488b Binary files /dev/null and b/.gitbook/assets/Google Drive share file in room differ diff --git a/.gitbook/assets/Google Drive share file in room.png b/.gitbook/assets/Google Drive share file in room.png new file mode 100644 index 0000000000..3c91a012c3 Binary files /dev/null and b/.gitbook/assets/Google Drive share file in room.png differ diff --git a/.gitbook/assets/Google Drive shared file link b/.gitbook/assets/Google Drive shared file link new file mode 100644 index 0000000000..5e0d1ce417 Binary files /dev/null and b/.gitbook/assets/Google Drive shared file link differ diff --git a/.gitbook/assets/Google OAuth consent screen Calendar.png b/.gitbook/assets/Google OAuth consent screen Calendar.png new file mode 100644 index 0000000000..7e7ccf8f75 Binary files /dev/null and b/.gitbook/assets/Google OAuth consent screen Calendar.png differ diff --git a/.gitbook/assets/Google calendar app details screen.png b/.gitbook/assets/Google calendar app details screen.png new file mode 100644 index 0000000000..780311412f Binary files /dev/null and b/.gitbook/assets/Google calendar app details screen.png differ diff --git a/.gitbook/assets/Google calendar app page b/.gitbook/assets/Google calendar app page new file mode 100644 index 0000000000..5c0735d7d2 Binary files /dev/null and b/.gitbook/assets/Google calendar app page differ diff --git a/.gitbook/assets/Google calendar app required permissions b/.gitbook/assets/Google calendar app required permissions new file mode 100644 index 0000000000..67f4785853 Binary files /dev/null and b/.gitbook/assets/Google calendar app required permissions differ diff --git a/.gitbook/assets/Google calendar notifications.png b/.gitbook/assets/Google calendar notifications.png new file mode 100644 index 0000000000..c1b2593fc5 Binary files /dev/null and b/.gitbook/assets/Google calendar notifications.png differ diff --git a/.gitbook/assets/Google calendar set check hours.png b/.gitbook/assets/Google calendar set check hours.png new file mode 100644 index 0000000000..58bb5801ee Binary files /dev/null and b/.gitbook/assets/Google calendar set check hours.png differ diff --git a/.gitbook/assets/Google calendar setup command b/.gitbook/assets/Google calendar setup command new file mode 100644 index 0000000000..3cb1c691a2 Binary files /dev/null and b/.gitbook/assets/Google calendar setup command differ diff --git a/.gitbook/assets/Google calendar setup instruction b/.gitbook/assets/Google calendar setup instruction new file mode 100644 index 0000000000..407f056bff Binary files /dev/null and b/.gitbook/assets/Google calendar setup instruction differ diff --git a/.gitbook/assets/google-calendar.png b/.gitbook/assets/Google-calendar.png similarity index 100% rename from .gitbook/assets/google-calendar.png rename to .gitbook/assets/Google-calendar.png diff --git a/.gitbook/assets/GoogleMeetDefaultProvider.png b/.gitbook/assets/GoogleMeetDefaultProvider.png new file mode 100644 index 0000000000..0127a3cf55 Binary files /dev/null and b/.gitbook/assets/GoogleMeetDefaultProvider.png differ diff --git a/.gitbook/assets/group-66.png b/.gitbook/assets/Group 66.png similarity index 100% rename from .gitbook/assets/group-66.png rename to .gitbook/assets/Group 66.png diff --git a/.gitbook/assets/Group 71.png b/.gitbook/assets/Group 71.png new file mode 100644 index 0000000000..a76c1c2253 Binary files /dev/null and b/.gitbook/assets/Group 71.png differ diff --git a/.gitbook/assets/Group 73.png b/.gitbook/assets/Group 73.png new file mode 100644 index 0000000000..4f8493c42d Binary files /dev/null and b/.gitbook/assets/Group 73.png differ diff --git a/.gitbook/assets/Group 85.png b/.gitbook/assets/Group 85.png new file mode 100644 index 0000000000..429b60e108 Binary files /dev/null and b/.gitbook/assets/Group 85.png differ diff --git a/.gitbook/assets/Group 87.png b/.gitbook/assets/Group 87.png new file mode 100644 index 0000000000..ab2ce44880 Binary files /dev/null and b/.gitbook/assets/Group 87.png differ diff --git a/.gitbook/assets/group-97.png b/.gitbook/assets/Group 97.png similarity index 100% rename from .gitbook/assets/group-97.png rename to .gitbook/assets/Group 97.png diff --git a/.gitbook/assets/Group 98.png b/.gitbook/assets/Group 98.png new file mode 100644 index 0000000000..44ae69c53f Binary files /dev/null and b/.gitbook/assets/Group 98.png differ diff --git a/.gitbook/assets/Group 99.png b/.gitbook/assets/Group 99.png new file mode 100644 index 0000000000..36de769aa0 Binary files /dev/null and b/.gitbook/assets/Group 99.png differ diff --git a/.gitbook/assets/GuestUser_Permissions.png b/.gitbook/assets/GuestUser_Permissions.png new file mode 100644 index 0000000000..df4b71df4a Binary files /dev/null and b/.gitbook/assets/GuestUser_Permissions.png differ diff --git a/.gitbook/assets/HTTP and HTTPS status FreePBX.png b/.gitbook/assets/HTTP and HTTPS status FreePBX.png new file mode 100644 index 0000000000..b527984909 Binary files /dev/null and b/.gitbook/assets/HTTP and HTTPS status FreePBX.png differ diff --git a/.gitbook/assets/HTTP and HTTPS status check PBX.png b/.gitbook/assets/HTTP and HTTPS status check PBX.png new file mode 100644 index 0000000000..503c17210f Binary files /dev/null and b/.gitbook/assets/HTTP and HTTPS status check PBX.png differ diff --git a/.gitbook/assets/HTTPS setup.png b/.gitbook/assets/HTTPS setup.png new file mode 100644 index 0000000000..481e0d3014 Binary files /dev/null and b/.gitbook/assets/HTTPS setup.png differ diff --git a/.gitbook/assets/Hubsport_UploadApp.png b/.gitbook/assets/Hubsport_UploadApp.png new file mode 100644 index 0000000000..748897e9c5 Binary files /dev/null and b/.gitbook/assets/Hubsport_UploadApp.png differ diff --git a/.gitbook/assets/HubspotInstall (1).png b/.gitbook/assets/HubspotInstall (1).png new file mode 100644 index 0000000000..b677a8f045 Binary files /dev/null and b/.gitbook/assets/HubspotInstall (1).png differ diff --git a/.gitbook/assets/HubspotInstall.png b/.gitbook/assets/HubspotInstall.png new file mode 100644 index 0000000000..21821ddbff Binary files /dev/null and b/.gitbook/assets/HubspotInstall.png differ diff --git a/.gitbook/assets/HubstpotSettings.png b/.gitbook/assets/HubstpotSettings.png new file mode 100644 index 0000000000..06913eecc7 Binary files /dev/null and b/.gitbook/assets/HubstpotSettings.png differ diff --git a/.gitbook/assets/IMG_3509.PNG b/.gitbook/assets/IMG_3509.PNG new file mode 100644 index 0000000000..dffa505c9e Binary files /dev/null and b/.gitbook/assets/IMG_3509.PNG differ diff --git a/.gitbook/assets/Incoming direct call-Conference call.png b/.gitbook/assets/Incoming direct call-Conference call.png new file mode 100644 index 0000000000..1637886563 Binary files /dev/null and b/.gitbook/assets/Incoming direct call-Conference call.png differ diff --git a/.gitbook/assets/Initiating a call - direct messages-Conferenc.png b/.gitbook/assets/Initiating a call - direct messages-Conferenc.png new file mode 100644 index 0000000000..9a58215d12 Binary files /dev/null and b/.gitbook/assets/Initiating a call - direct messages-Conferenc.png differ diff --git a/.gitbook/assets/Initiating a call from the dialpad.png b/.gitbook/assets/Initiating a call from the dialpad.png new file mode 100644 index 0000000000..64c6d9fbef Binary files /dev/null and b/.gitbook/assets/Initiating a call from the dialpad.png differ diff --git a/.gitbook/assets/Invite Users.png b/.gitbook/assets/Invite Users.png new file mode 100644 index 0000000000..8cb4779b21 Binary files /dev/null and b/.gitbook/assets/Invite Users.png differ diff --git a/.gitbook/assets/Inviting_users.png b/.gitbook/assets/Inviting_users.png new file mode 100644 index 0000000000..7900b8ad44 Binary files /dev/null and b/.gitbook/assets/Inviting_users.png differ diff --git a/.gitbook/assets/Jira-webhook.png b/.gitbook/assets/Jira-webhook.png new file mode 100644 index 0000000000..e9983f9779 Binary files /dev/null and b/.gitbook/assets/Jira-webhook.png differ diff --git a/.gitbook/assets/Join Pexip call.png b/.gitbook/assets/Join Pexip call.png new file mode 100644 index 0000000000..74c549cb33 Binary files /dev/null and b/.gitbook/assets/Join Pexip call.png differ diff --git a/.gitbook/assets/Keyclock_Client Roles_31052022.jpg b/.gitbook/assets/Keyclock_Client Roles_31052022.jpg new file mode 100644 index 0000000000..d19956797a Binary files /dev/null and b/.gitbook/assets/Keyclock_Client Roles_31052022.jpg differ diff --git a/.gitbook/assets/Keyclock_User Roles -001 (1) (1) (2).jpg b/.gitbook/assets/Keyclock_User Roles -001 (1) (1) (2).jpg new file mode 100644 index 0000000000..90dab45f3a Binary files /dev/null and b/.gitbook/assets/Keyclock_User Roles -001 (1) (1) (2).jpg differ diff --git a/.gitbook/assets/Keyclock_User Roles -001 (1) (1).jpg b/.gitbook/assets/Keyclock_User Roles -001 (1) (1).jpg new file mode 100644 index 0000000000..90dab45f3a Binary files /dev/null and b/.gitbook/assets/Keyclock_User Roles -001 (1) (1).jpg differ diff --git a/.gitbook/assets/Keyclock_User Roles -001 (1) (2).jpg b/.gitbook/assets/Keyclock_User Roles -001 (1) (2).jpg new file mode 100644 index 0000000000..90dab45f3a Binary files /dev/null and b/.gitbook/assets/Keyclock_User Roles -001 (1) (2).jpg differ diff --git a/.gitbook/assets/Keyclock_User Roles -001 (2).jpg b/.gitbook/assets/Keyclock_User Roles -001 (2).jpg new file mode 100644 index 0000000000..90dab45f3a Binary files /dev/null and b/.gitbook/assets/Keyclock_User Roles -001 (2).jpg differ diff --git a/.gitbook/assets/Keyclock_User Roles -001.jpg b/.gitbook/assets/Keyclock_User Roles -001.jpg new file mode 100644 index 0000000000..90dab45f3a Binary files /dev/null and b/.gitbook/assets/Keyclock_User Roles -001.jpg differ diff --git a/.gitbook/assets/Keyclock_User Roles.jpg b/.gitbook/assets/Keyclock_User Roles.jpg new file mode 100644 index 0000000000..0d403db562 Binary files /dev/null and b/.gitbook/assets/Keyclock_User Roles.jpg differ diff --git a/.gitbook/assets/LDAP connection settings.png b/.gitbook/assets/LDAP connection settings.png new file mode 100644 index 0000000000..24ce6eda7e Binary files /dev/null and b/.gitbook/assets/LDAP connection settings.png differ diff --git a/.gitbook/assets/List of running docker containers b/.gitbook/assets/List of running docker containers new file mode 100644 index 0000000000..daf04ca667 Binary files /dev/null and b/.gitbook/assets/List of running docker containers differ diff --git a/.gitbook/assets/List of users in a Pexip call.png b/.gitbook/assets/List of users in a Pexip call.png new file mode 100644 index 0000000000..67aa4d4542 Binary files /dev/null and b/.gitbook/assets/List of users in a Pexip call.png differ diff --git a/.gitbook/assets/Livechat Real-time Chat metrics b/.gitbook/assets/Livechat Real-time Chat metrics new file mode 100644 index 0000000000..2b36065aa3 Binary files /dev/null and b/.gitbook/assets/Livechat Real-time Chat metrics differ diff --git a/.gitbook/assets/Livechat Real-time activity metrics by time b/.gitbook/assets/Livechat Real-time activity metrics by time new file mode 100644 index 0000000000..1de4c3682e Binary files /dev/null and b/.gitbook/assets/Livechat Real-time activity metrics by time differ diff --git a/.gitbook/assets/Livechat Real-time conversation metrics b/.gitbook/assets/Livechat Real-time conversation metrics new file mode 100644 index 0000000000..cd2036f228 Binary files /dev/null and b/.gitbook/assets/Livechat Real-time conversation metrics differ diff --git a/.gitbook/assets/Livechat widget select department b/.gitbook/assets/Livechat widget select department new file mode 100644 index 0000000000..75d900afdc Binary files /dev/null and b/.gitbook/assets/Livechat widget select department differ diff --git a/.gitbook/assets/logo-horizontal-1.png b/.gitbook/assets/Logo Horizontal 1.png similarity index 100% rename from .gitbook/assets/logo-horizontal-1.png rename to .gitbook/assets/Logo Horizontal 1.png diff --git a/.gitbook/assets/logo-horizontal-2.png b/.gitbook/assets/Logo Horizontal 2.png similarity index 100% rename from .gitbook/assets/logo-horizontal-2.png rename to .gitbook/assets/Logo Horizontal 2.png diff --git a/.gitbook/assets/Logout Device.png b/.gitbook/assets/Logout Device.png new file mode 100644 index 0000000000..5392b335bf Binary files /dev/null and b/.gitbook/assets/Logout Device.png differ diff --git a/.gitbook/assets/Manage Devices 01.png b/.gitbook/assets/Manage Devices 01.png new file mode 100644 index 0000000000..bbe38a1265 Binary files /dev/null and b/.gitbook/assets/Manage Devices 01.png differ diff --git a/.gitbook/assets/Manage Devices _user.png b/.gitbook/assets/Manage Devices _user.png new file mode 100644 index 0000000000..c6f9d028d9 Binary files /dev/null and b/.gitbook/assets/Manage Devices _user.png differ diff --git a/.gitbook/assets/Manage Facebook app webhook fields.png b/.gitbook/assets/Manage Facebook app webhook fields.png new file mode 100644 index 0000000000..840d2bdf38 Binary files /dev/null and b/.gitbook/assets/Manage Facebook app webhook fields.png differ diff --git a/.gitbook/assets/MatrixSynapseTest.png b/.gitbook/assets/MatrixSynapseTest.png new file mode 100644 index 0000000000..64d9cd88b4 Binary files /dev/null and b/.gitbook/assets/MatrixSynapseTest.png differ diff --git a/.gitbook/assets/Matrix_config2.png b/.gitbook/assets/Matrix_config2.png new file mode 100644 index 0000000000..86ec724689 Binary files /dev/null and b/.gitbook/assets/Matrix_config2.png differ diff --git a/.gitbook/assets/Matrix_server_files.png b/.gitbook/assets/Matrix_server_files.png new file mode 100644 index 0000000000..8352157571 Binary files /dev/null and b/.gitbook/assets/Matrix_server_files.png differ diff --git a/.gitbook/assets/Matrixbridgenew (1).png b/.gitbook/assets/Matrixbridgenew (1).png new file mode 100644 index 0000000000..1cc180007d Binary files /dev/null and b/.gitbook/assets/Matrixbridgenew (1).png differ diff --git a/.gitbook/assets/Matrixbridgenew.png b/.gitbook/assets/Matrixbridgenew.png new file mode 100644 index 0000000000..1cc180007d Binary files /dev/null and b/.gitbook/assets/Matrixbridgenew.png differ diff --git a/.gitbook/assets/MediaKit_Rocket.Chat.7z b/.gitbook/assets/MediaKit_Rocket.Chat.7z new file mode 100644 index 0000000000..59e57e073d Binary files /dev/null and b/.gitbook/assets/MediaKit_Rocket.Chat.7z differ diff --git a/.gitbook/assets/Message-read-receipt.png b/.gitbook/assets/Message-read-receipt.png new file mode 100644 index 0000000000..a76cce06d6 Binary files /dev/null and b/.gitbook/assets/Message-read-receipt.png differ diff --git a/.gitbook/assets/Meta business system users.png b/.gitbook/assets/Meta business system users.png new file mode 100644 index 0000000000..aeac25c7ee Binary files /dev/null and b/.gitbook/assets/Meta business system users.png differ diff --git a/.gitbook/assets/Meta for Developers apps page.png b/.gitbook/assets/Meta for Developers apps page.png new file mode 100644 index 0000000000..3e65b95544 Binary files /dev/null and b/.gitbook/assets/Meta for Developers apps page.png differ diff --git a/.gitbook/assets/Micro services deployment - v0.1@2x (1).png b/.gitbook/assets/Micro services deployment - v0.1@2x (1).png new file mode 100644 index 0000000000..b43b8ed317 Binary files /dev/null and b/.gitbook/assets/Micro services deployment - v0.1@2x (1).png differ diff --git a/.gitbook/assets/MicroBadger.png b/.gitbook/assets/MicroBadger.png new file mode 100644 index 0000000000..851fae0a4f Binary files /dev/null and b/.gitbook/assets/MicroBadger.png differ diff --git a/.gitbook/assets/Microsoft account sign in b/.gitbook/assets/Microsoft account sign in new file mode 100644 index 0000000000..0b5a8eb50e Binary files /dev/null and b/.gitbook/assets/Microsoft account sign in differ diff --git a/.gitbook/assets/Microsoft login grant permision b/.gitbook/assets/Microsoft login grant permision new file mode 100644 index 0000000000..7c1a0ee322 Binary files /dev/null and b/.gitbook/assets/Microsoft login grant permision differ diff --git a/.gitbook/assets/Modules FreePBX.png b/.gitbook/assets/Modules FreePBX.png new file mode 100644 index 0000000000..3664511370 Binary files /dev/null and b/.gitbook/assets/Modules FreePBX.png differ diff --git a/.gitbook/assets/Modules PBX.png b/.gitbook/assets/Modules PBX.png new file mode 100644 index 0000000000..2c1da36585 Binary files /dev/null and b/.gitbook/assets/Modules PBX.png differ diff --git a/.gitbook/assets/Muteunmute.png b/.gitbook/assets/Muteunmute.png new file mode 100644 index 0000000000..0a0cab3bc4 Binary files /dev/null and b/.gitbook/assets/Muteunmute.png differ diff --git a/.gitbook/assets/Network Difinition PBX.png b/.gitbook/assets/Network Difinition PBX.png new file mode 100644 index 0000000000..a5fe4a59fa Binary files /dev/null and b/.gitbook/assets/Network Difinition PBX.png differ diff --git a/.gitbook/assets/Network ping.png b/.gitbook/assets/Network ping.png new file mode 100644 index 0000000000..4d4c3b999f Binary files /dev/null and b/.gitbook/assets/Network ping.png differ diff --git a/.gitbook/assets/New Pexip VMR link in RocketChat.png b/.gitbook/assets/New Pexip VMR link in RocketChat.png new file mode 100644 index 0000000000..495ef3a58e Binary files /dev/null and b/.gitbook/assets/New Pexip VMR link in RocketChat.png differ diff --git a/.gitbook/assets/New User.png b/.gitbook/assets/New User.png new file mode 100644 index 0000000000..c228d4c284 Binary files /dev/null and b/.gitbook/assets/New User.png differ diff --git a/.gitbook/assets/O365 Button on login and sign in pages b/.gitbook/assets/O365 Button on login and sign in pages new file mode 100644 index 0000000000..3f1e77a06c Binary files /dev/null and b/.gitbook/assets/O365 Button on login and sign in pages differ diff --git a/.gitbook/assets/OAuth 365 integration settings page b/.gitbook/assets/OAuth 365 integration settings page new file mode 100644 index 0000000000..ca68f7dead Binary files /dev/null and b/.gitbook/assets/OAuth 365 integration settings page differ diff --git a/.gitbook/assets/Offline code.png b/.gitbook/assets/Offline code.png new file mode 100644 index 0000000000..29eb4661af Binary files /dev/null and b/.gitbook/assets/Offline code.png differ diff --git a/.gitbook/assets/Offline license from cloud console.png b/.gitbook/assets/Offline license from cloud console.png new file mode 100644 index 0000000000..e6792611aa Binary files /dev/null and b/.gitbook/assets/Offline license from cloud console.png differ diff --git a/.gitbook/assets/Omnichannel Agent Availability status b/.gitbook/assets/Omnichannel Agent Availability status new file mode 100644 index 0000000000..a345ddab6d Binary files /dev/null and b/.gitbook/assets/Omnichannel Agent Availability status differ diff --git a/.gitbook/assets/Omnichannel Agent's home page b/.gitbook/assets/Omnichannel Agent's home page new file mode 100644 index 0000000000..068a81e24f Binary files /dev/null and b/.gitbook/assets/Omnichannel Agent's home page differ diff --git a/.gitbook/assets/Omnichannel Agents Panel b/.gitbook/assets/Omnichannel Agents Panel new file mode 100644 index 0000000000..f20908c735 Binary files /dev/null and b/.gitbook/assets/Omnichannel Agents Panel differ diff --git a/.gitbook/assets/Omnichannel Business hours b/.gitbook/assets/Omnichannel Business hours new file mode 100644 index 0000000000..c3bb1a72c0 Binary files /dev/null and b/.gitbook/assets/Omnichannel Business hours differ diff --git a/.gitbook/assets/Omnichannel Current Chats.png b/.gitbook/assets/Omnichannel Current Chats.png new file mode 100644 index 0000000000..431ece258d Binary files /dev/null and b/.gitbook/assets/Omnichannel Current Chats.png differ diff --git a/.gitbook/assets/Omnichannel Livechat Widget in action b/.gitbook/assets/Omnichannel Livechat Widget in action new file mode 100644 index 0000000000..a58e2dcf7b Binary files /dev/null and b/.gitbook/assets/Omnichannel Livechat Widget in action differ diff --git a/.gitbook/assets/Omnichannel Monitors Page b/.gitbook/assets/Omnichannel Monitors Page new file mode 100644 index 0000000000..c5c3776d50 Binary files /dev/null and b/.gitbook/assets/Omnichannel Monitors Page differ diff --git a/.gitbook/assets/Omnichannel Priorities Page b/.gitbook/assets/Omnichannel Priorities Page new file mode 100644 index 0000000000..0692a32e6e Binary files /dev/null and b/.gitbook/assets/Omnichannel Priorities Page differ diff --git a/.gitbook/assets/Omnichannel Queue list b/.gitbook/assets/Omnichannel Queue list new file mode 100644 index 0000000000..09db700097 Binary files /dev/null and b/.gitbook/assets/Omnichannel Queue list differ diff --git a/.gitbook/assets/Omnichannel Tags settings b/.gitbook/assets/Omnichannel Tags settings new file mode 100644 index 0000000000..d0a5c70018 Binary files /dev/null and b/.gitbook/assets/Omnichannel Tags settings differ diff --git a/.gitbook/assets/Omnichannel Units page b/.gitbook/assets/Omnichannel Units page new file mode 100644 index 0000000000..6a639cf697 Binary files /dev/null and b/.gitbook/assets/Omnichannel Units page differ diff --git a/.gitbook/assets/Omnichannel add priority to conversation b/.gitbook/assets/Omnichannel add priority to conversation new file mode 100644 index 0000000000..791ed0b212 Binary files /dev/null and b/.gitbook/assets/Omnichannel add priority to conversation differ diff --git a/.gitbook/assets/Omnichannel call details b/.gitbook/assets/Omnichannel call details new file mode 100644 index 0000000000..502152143c Binary files /dev/null and b/.gitbook/assets/Omnichannel call details differ diff --git a/.gitbook/assets/Omnichannel contact center b/.gitbook/assets/Omnichannel contact center new file mode 100644 index 0000000000..693937ba28 Binary files /dev/null and b/.gitbook/assets/Omnichannel contact center differ diff --git a/.gitbook/assets/Omnichannel create business hours b/.gitbook/assets/Omnichannel create business hours new file mode 100644 index 0000000000..53e8139bcb Binary files /dev/null and b/.gitbook/assets/Omnichannel create business hours differ diff --git a/.gitbook/assets/Omnichannel manager panel b/.gitbook/assets/Omnichannel manager panel new file mode 100644 index 0000000000..4266c63dac Binary files /dev/null and b/.gitbook/assets/Omnichannel manager panel differ diff --git a/.gitbook/assets/Omnichannel take new conversation b/.gitbook/assets/Omnichannel take new conversation new file mode 100644 index 0000000000..281bd05783 Binary files /dev/null and b/.gitbook/assets/Omnichannel take new conversation differ diff --git a/.gitbook/assets/Ongoing Call.png b/.gitbook/assets/Ongoing Call.png new file mode 100644 index 0000000000..1f55d763f8 Binary files /dev/null and b/.gitbook/assets/Ongoing Call.png differ diff --git a/.gitbook/assets/Ongoing call - room - conference call.png b/.gitbook/assets/Ongoing call - room - conference call.png new file mode 100644 index 0000000000..3f9ae7f80c Binary files /dev/null and b/.gitbook/assets/Ongoing call - room - conference call.png differ diff --git a/.gitbook/assets/PJSIP FreePBX.png b/.gitbook/assets/PJSIP FreePBX.png new file mode 100644 index 0000000000..edfec330e4 Binary files /dev/null and b/.gitbook/assets/PJSIP FreePBX.png differ diff --git a/.gitbook/assets/PexipAppDetails.png b/.gitbook/assets/PexipAppDetails.png new file mode 100644 index 0000000000..90afb87ebd Binary files /dev/null and b/.gitbook/assets/PexipAppDetails.png differ diff --git a/.gitbook/assets/PexipAppInstall.png b/.gitbook/assets/PexipAppInstall.png new file mode 100644 index 0000000000..19ea8ab6d6 Binary files /dev/null and b/.gitbook/assets/PexipAppInstall.png differ diff --git a/.gitbook/assets/Port management PBX (1).png b/.gitbook/assets/Port management PBX (1).png new file mode 100644 index 0000000000..6a9886ee15 Binary files /dev/null and b/.gitbook/assets/Port management PBX (1).png differ diff --git a/.gitbook/assets/Port management PBX.png b/.gitbook/assets/Port management PBX.png new file mode 100644 index 0000000000..6a9886ee15 Binary files /dev/null and b/.gitbook/assets/Port management PBX.png differ diff --git a/.gitbook/assets/Port management.png b/.gitbook/assets/Port management.png new file mode 100644 index 0000000000..30a5558fbd Binary files /dev/null and b/.gitbook/assets/Port management.png differ diff --git a/.gitbook/assets/PrivateAppScopes.png b/.gitbook/assets/PrivateAppScopes.png new file mode 100644 index 0000000000..45b3d501a9 Binary files /dev/null and b/.gitbook/assets/PrivateAppScopes.png differ diff --git a/.gitbook/assets/PrivateAppTokenCreation.png b/.gitbook/assets/PrivateAppTokenCreation.png new file mode 100644 index 0000000000..5ca04fe79e Binary files /dev/null and b/.gitbook/assets/PrivateAppTokenCreation.png differ diff --git a/.gitbook/assets/Profile.png b/.gitbook/assets/Profile.png new file mode 100644 index 0000000000..d01e899029 Binary files /dev/null and b/.gitbook/assets/Profile.png differ diff --git a/.gitbook/assets/Publisher Roles.png b/.gitbook/assets/Publisher Roles.png new file mode 100644 index 0000000000..6d09123371 Binary files /dev/null and b/.gitbook/assets/Publisher Roles.png differ diff --git a/.gitbook/assets/RC Settings.png b/.gitbook/assets/RC Settings.png new file mode 100644 index 0000000000..bbbc6ea1b8 Binary files /dev/null and b/.gitbook/assets/RC Settings.png differ diff --git a/.gitbook/assets/RC Support Page.png b/.gitbook/assets/RC Support Page.png new file mode 100644 index 0000000000..ebdd443696 Binary files /dev/null and b/.gitbook/assets/RC Support Page.png differ diff --git a/.gitbook/assets/RC contact.png b/.gitbook/assets/RC contact.png new file mode 100644 index 0000000000..e7192ed06b Binary files /dev/null and b/.gitbook/assets/RC contact.png differ diff --git a/.gitbook/assets/RC_SupportPlan_Matrix.png b/.gitbook/assets/RC_SupportPlan_Matrix.png new file mode 100644 index 0000000000..52f6291613 Binary files /dev/null and b/.gitbook/assets/RC_SupportPlan_Matrix.png differ diff --git a/.gitbook/assets/RC_SupportPlan_Matrix_Legacy.png b/.gitbook/assets/RC_SupportPlan_Matrix_Legacy.png new file mode 100644 index 0000000000..dd4e6eec35 Binary files /dev/null and b/.gitbook/assets/RC_SupportPlan_Matrix_Legacy.png differ diff --git a/.gitbook/assets/RC_SupportPlan_Matrix_New.png b/.gitbook/assets/RC_SupportPlan_Matrix_New.png new file mode 100644 index 0000000000..52f95ff805 Binary files /dev/null and b/.gitbook/assets/RC_SupportPlan_Matrix_New.png differ diff --git a/.gitbook/assets/RasaAppSettings .png b/.gitbook/assets/RasaAppSettings .png new file mode 100644 index 0000000000..b767663d19 Binary files /dev/null and b/.gitbook/assets/RasaAppSettings .png differ diff --git a/.gitbook/assets/rectangle-11.png b/.gitbook/assets/Rectangle 11.png similarity index 100% rename from .gitbook/assets/rectangle-11.png rename to .gitbook/assets/Rectangle 11.png diff --git a/.gitbook/assets/Register Self-Managed.png b/.gitbook/assets/Register Self-Managed.png new file mode 100644 index 0000000000..fbd7b85698 Binary files /dev/null and b/.gitbook/assets/Register Self-Managed.png differ diff --git a/.gitbook/assets/Registration_Disabled_10062022.png b/.gitbook/assets/Registration_Disabled_10062022.png new file mode 100644 index 0000000000..6289a937ea Binary files /dev/null and b/.gitbook/assets/Registration_Disabled_10062022.png differ diff --git a/.gitbook/assets/Registration_Public_10062022.png b/.gitbook/assets/Registration_Public_10062022.png new file mode 100644 index 0000000000..3679c63063 Binary files /dev/null and b/.gitbook/assets/Registration_Public_10062022.png differ diff --git a/.gitbook/assets/Registration_Secret_10062022.png b/.gitbook/assets/Registration_Secret_10062022.png new file mode 100644 index 0000000000..a90fed4619 Binary files /dev/null and b/.gitbook/assets/Registration_Secret_10062022.png differ diff --git a/.gitbook/assets/Rocket Chat AWS EKS (1).pdf b/.gitbook/assets/Rocket Chat AWS EKS (1).pdf new file mode 100644 index 0000000000..4cb3f119d2 Binary files /dev/null and b/.gitbook/assets/Rocket Chat AWS EKS (1).pdf differ diff --git a/.gitbook/assets/Rocket Chat AWS EKS (1).svg b/.gitbook/assets/Rocket Chat AWS EKS (1).svg new file mode 100644 index 0000000000..8b2e9bdc4d --- /dev/null +++ b/.gitbook/assets/Rocket Chat AWS EKS (1).svg @@ -0,0 +1,3 @@ + + +
AWS Cloud - region
AWS Cloud - region
chatInstance1 - Virtual Private Cloud
chatInstance1 - Virtual Private Cloud
Auto Scaling group
Auto Scaling group
Availability Zoneregion-az
EKS
EKS
Elastic Load Balancer
Elas...
Traefik
Traef...
Cloud
Watch
Cloud...
Cloud
Formation
Cloud...
Availability Zoneregion-azAvailability Zoneregion-az
S3
S3
chatInstance'n' - Virtual Private Cloud
chatInstance'n' - Virtual Private Cloud
Auto Scaling group
Auto Scaling group
Availability Zoneregion-az
EKS
EKS
Elastic Load Balancer
Elas...
Traefik
Traef...
Availability Zoneregion-azAvailability Zoneregion-az
SES
SES
Atlas PaaS Virtual Private Cloud
Atlas PaaS Virtual Private Cloud
Auto Scaling group
Auto Scaling group
Availability Zoneregion-azAvailability Zoneregion-azAvailability Zoneregion-az
Elastic Load Balancer
Elas...

Design Notes

Apps 

  • Mobile: React Native
  • Desktop/Laptop: Electron and Web.

EKS 

  • AWS Elastic Kubernetes Service (fully managed platform)
eksctl
  • Command line tool to configure EKS.

Traefik

  • Kubernetes Load Balancing
  • TLS Termination

Helm
  • Package Manager used to install Rocket Chat on Kubernetes
Docker Hub
  • Container Image for Rocket Chat app. 
CloudFormation
  • Controls EKS Infrastructure

CloudWatch
  • Infrastructure Monitoring
SES
  • AWS Simple Email Service (for sending notifications etc.
S3
  • AWS Simple Storage Service (for resilient low cost storage of uploads and avatars)
GoDaddy
  • Domain Name Service
Rocket.Chat Cloud
  • Mobile push notifications service

mongoDB Atlas
  • Fully managed, resilient and backed up document database as a service. All chat information (config and data) are stored here.
mongoDB Charts
  • Fully managed data analytics and visualisation service for mongoDB
Design Notes...
Rocket Chat Platform
v1 - August 2020
Rocket Chat Platform...
chatInstance1
chatInstance'n'
chatInstance1...
Backup
Backup
VPC Peering
VPC Peering
VPC Peering
VPC Peering
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/.gitbook/assets/Rocket Chat AWS EKS.pdf b/.gitbook/assets/Rocket Chat AWS EKS.pdf new file mode 100644 index 0000000000..4cb3f119d2 Binary files /dev/null and b/.gitbook/assets/Rocket Chat AWS EKS.pdf differ diff --git a/.gitbook/assets/rocket-chat-aws-eks (1).svg b/.gitbook/assets/Rocket Chat AWS EKS.svg similarity index 100% rename from .gitbook/assets/rocket-chat-aws-eks (1).svg rename to .gitbook/assets/Rocket Chat AWS EKS.svg diff --git a/.gitbook/assets/rocket.chat-experimental.png b/.gitbook/assets/Rocket.Chat Experimental.png similarity index 100% rename from .gitbook/assets/rocket.chat-experimental.png rename to .gitbook/assets/Rocket.Chat Experimental.png diff --git a/.gitbook/assets/Rocket.Chat Google Drive setting b/.gitbook/assets/Rocket.Chat Google Drive setting new file mode 100644 index 0000000000..18aca3080a Binary files /dev/null and b/.gitbook/assets/Rocket.Chat Google Drive setting differ diff --git a/.gitbook/assets/rocket.chat-official-logo.png b/.gitbook/assets/Rocket.Chat Official logo.png similarity index 100% rename from .gitbook/assets/rocket.chat-official-logo.png rename to .gitbook/assets/Rocket.Chat Official logo.png diff --git a/.gitbook/assets/rocket.chat-official.png b/.gitbook/assets/Rocket.Chat Official.png similarity index 100% rename from .gitbook/assets/rocket.chat-official.png rename to .gitbook/assets/Rocket.Chat Official.png diff --git a/.gitbook/assets/Rocket.Chat Pexip call ringing.png b/.gitbook/assets/Rocket.Chat Pexip call ringing.png new file mode 100644 index 0000000000..7e1210e0e8 Binary files /dev/null and b/.gitbook/assets/Rocket.Chat Pexip call ringing.png differ diff --git a/.gitbook/assets/Rocket.Chat SMS Setting b/.gitbook/assets/Rocket.Chat SMS Setting new file mode 100644 index 0000000000..734f16db72 Binary files /dev/null and b/.gitbook/assets/Rocket.Chat SMS Setting differ diff --git a/.gitbook/assets/Rocket.Chat SMS communication successful b/.gitbook/assets/Rocket.Chat SMS communication successful new file mode 100644 index 0000000000..cd17f3417a Binary files /dev/null and b/.gitbook/assets/Rocket.Chat SMS communication successful differ diff --git a/.gitbook/assets/rocket.chat-technical-implementation-guide-v.20180316.pdf b/.gitbook/assets/Rocket.Chat Technical Implementation Guide v.20180316.pdf similarity index 100% rename from .gitbook/assets/rocket.chat-technical-implementation-guide-v.20180316.pdf rename to .gitbook/assets/Rocket.Chat Technical Implementation Guide v.20180316.pdf diff --git a/.gitbook/assets/Rocket.Chat X Telegram.png b/.gitbook/assets/Rocket.Chat X Telegram.png new file mode 100644 index 0000000000..9dee875bd0 Binary files /dev/null and b/.gitbook/assets/Rocket.Chat X Telegram.png differ diff --git a/.gitbook/assets/Rocket.Chat configured with Asterisk (1).png b/.gitbook/assets/Rocket.Chat configured with Asterisk (1).png new file mode 100644 index 0000000000..21c2270cd3 Binary files /dev/null and b/.gitbook/assets/Rocket.Chat configured with Asterisk (1).png differ diff --git a/.gitbook/assets/Rocket.Chat configured with Asterisk.png b/.gitbook/assets/Rocket.Chat configured with Asterisk.png new file mode 100644 index 0000000000..b73e0e1096 Binary files /dev/null and b/.gitbook/assets/Rocket.Chat configured with Asterisk.png differ diff --git "a/.gitbook/assets/Rocket.Chat connected to the Asterisk\342\200\231s AMI.png" "b/.gitbook/assets/Rocket.Chat connected to the Asterisk\342\200\231s AMI.png" new file mode 100644 index 0000000000..28ea8d87cc Binary files /dev/null and "b/.gitbook/assets/Rocket.Chat connected to the Asterisk\342\200\231s AMI.png" differ diff --git a/.gitbook/assets/RocketChat Cloud Change Plan.png b/.gitbook/assets/RocketChat Cloud Change Plan.png new file mode 100644 index 0000000000..f583a8d73a Binary files /dev/null and b/.gitbook/assets/RocketChat Cloud Change Plan.png differ diff --git a/.gitbook/assets/RocketChat X WhatsApp Chat Screen.png b/.gitbook/assets/RocketChat X WhatsApp Chat Screen.png new file mode 100644 index 0000000000..3bdb1292ab Binary files /dev/null and b/.gitbook/assets/RocketChat X WhatsApp Chat Screen.png differ diff --git a/.gitbook/assets/RocketChat X WhatsApp-Chat-Screen.png b/.gitbook/assets/RocketChat X WhatsApp-Chat-Screen.png new file mode 100644 index 0000000000..7846c7b9e4 Binary files /dev/null and b/.gitbook/assets/RocketChat X WhatsApp-Chat-Screen.png differ diff --git a/.gitbook/assets/RocketChat cloud portal get license.png b/.gitbook/assets/RocketChat cloud portal get license.png new file mode 100644 index 0000000000..a2838c36bc Binary files /dev/null and b/.gitbook/assets/RocketChat cloud portal get license.png differ diff --git a/.gitbook/assets/RocketChat cloud register self manage.png b/.gitbook/assets/RocketChat cloud register self manage.png new file mode 100644 index 0000000000..65ccbad037 Binary files /dev/null and b/.gitbook/assets/RocketChat cloud register self manage.png differ diff --git a/.gitbook/assets/RocketChat-Pexip.png b/.gitbook/assets/RocketChat-Pexip.png new file mode 100644 index 0000000000..9d18390845 Binary files /dev/null and b/.gitbook/assets/RocketChat-Pexip.png differ diff --git a/.gitbook/assets/RocketChatSettings.png b/.gitbook/assets/RocketChatSettings.png new file mode 100644 index 0000000000..1be8bbf224 Binary files /dev/null and b/.gitbook/assets/RocketChatSettings.png differ diff --git a/.gitbook/assets/RocketScience creates Magic.png b/.gitbook/assets/RocketScience creates Magic.png new file mode 100644 index 0000000000..b2079924a4 Binary files /dev/null and b/.gitbook/assets/RocketScience creates Magic.png differ diff --git a/.gitbook/assets/RunDeck.png b/.gitbook/assets/RunDeck.png new file mode 100644 index 0000000000..94a325e826 Binary files /dev/null and b/.gitbook/assets/RunDeck.png differ diff --git a/.gitbook/assets/RunMatrixBridgeFederationSetup.png b/.gitbook/assets/RunMatrixBridgeFederationSetup.png new file mode 100644 index 0000000000..34856f5fc0 Binary files /dev/null and b/.gitbook/assets/RunMatrixBridgeFederationSetup.png differ diff --git a/.gitbook/assets/SIP Extension.png b/.gitbook/assets/SIP Extension.png new file mode 100644 index 0000000000..fcc15fd300 Binary files /dev/null and b/.gitbook/assets/SIP Extension.png differ diff --git a/.gitbook/assets/SIP settings PBX.png b/.gitbook/assets/SIP settings PBX.png new file mode 100644 index 0000000000..13b974b2fd Binary files /dev/null and b/.gitbook/assets/SIP settings PBX.png differ diff --git a/.gitbook/assets/SIP transports.png b/.gitbook/assets/SIP transports.png new file mode 100644 index 0000000000..695fea19d9 Binary files /dev/null and b/.gitbook/assets/SIP transports.png differ diff --git a/.gitbook/assets/SMTP (1).png b/.gitbook/assets/SMTP (1).png new file mode 100644 index 0000000000..d6102c950c Binary files /dev/null and b/.gitbook/assets/SMTP (1).png differ diff --git a/.gitbook/assets/SMTP.png b/.gitbook/assets/SMTP.png new file mode 100644 index 0000000000..d6102c950c Binary files /dev/null and b/.gitbook/assets/SMTP.png differ diff --git a/.gitbook/assets/SSOConfiguration.png b/.gitbook/assets/SSOConfiguration.png new file mode 100644 index 0000000000..004e08e1bd Binary files /dev/null and b/.gitbook/assets/SSOConfiguration.png differ diff --git a/.gitbook/assets/SalesforceCRMAppSettings .png b/.gitbook/assets/SalesforceCRMAppSettings .png new file mode 100644 index 0000000000..b767663d19 Binary files /dev/null and b/.gitbook/assets/SalesforceCRMAppSettings .png differ diff --git a/.gitbook/assets/SampleXMLConfiguration.png b/.gitbook/assets/SampleXMLConfiguration.png new file mode 100644 index 0000000000..632f8108bc Binary files /dev/null and b/.gitbook/assets/SampleXMLConfiguration.png differ diff --git a/.gitbook/assets/screen-shot-2020-10-05-at-16.39.33.png b/.gitbook/assets/Screen Shot 2020-10-05 at 16.39.33.png similarity index 100% rename from .gitbook/assets/screen-shot-2020-10-05-at-16.39.33.png rename to .gitbook/assets/Screen Shot 2020-10-05 at 16.39.33.png diff --git a/.gitbook/assets/screen-shot-2020-10-05-at-16.39.48.png b/.gitbook/assets/Screen Shot 2020-10-05 at 16.39.48.png similarity index 100% rename from .gitbook/assets/screen-shot-2020-10-05-at-16.39.48.png rename to .gitbook/assets/Screen Shot 2020-10-05 at 16.39.48.png diff --git a/.gitbook/assets/screen-shot-2020-10-05-at-16.39.58.png b/.gitbook/assets/Screen Shot 2020-10-05 at 16.39.58.png similarity index 100% rename from .gitbook/assets/screen-shot-2020-10-05-at-16.39.58.png rename to .gitbook/assets/Screen Shot 2020-10-05 at 16.39.58.png diff --git a/.gitbook/assets/screen-shot-2020-10-05-at-16.42.41.png b/.gitbook/assets/Screen Shot 2020-10-05 at 16.42.41.png similarity index 100% rename from .gitbook/assets/screen-shot-2020-10-05-at-16.42.41.png rename to .gitbook/assets/Screen Shot 2020-10-05 at 16.42.41.png diff --git a/.gitbook/assets/screen-shot-2020-10-05-at-16.42.50.png b/.gitbook/assets/Screen Shot 2020-10-05 at 16.42.50.png similarity index 100% rename from .gitbook/assets/screen-shot-2020-10-05-at-16.42.50.png rename to .gitbook/assets/Screen Shot 2020-10-05 at 16.42.50.png diff --git a/.gitbook/assets/screen-shot-2020-10-05-at-16.42.59.png b/.gitbook/assets/Screen Shot 2020-10-05 at 16.42.59.png similarity index 100% rename from .gitbook/assets/screen-shot-2020-10-05-at-16.42.59.png rename to .gitbook/assets/Screen Shot 2020-10-05 at 16.42.59.png diff --git a/.gitbook/assets/Screen Shot 2022-08-02 at 11.38.19.png b/.gitbook/assets/Screen Shot 2022-08-02 at 11.38.19.png new file mode 100644 index 0000000000..058076a9a0 Binary files /dev/null and b/.gitbook/assets/Screen Shot 2022-08-02 at 11.38.19.png differ diff --git a/.gitbook/assets/Screen Shot 2022-08-02 at 13.44.33 (1).png b/.gitbook/assets/Screen Shot 2022-08-02 at 13.44.33 (1).png new file mode 100644 index 0000000000..f7fe82fe7b Binary files /dev/null and b/.gitbook/assets/Screen Shot 2022-08-02 at 13.44.33 (1).png differ diff --git a/.gitbook/assets/screenshot-2020-07-28-at-00.16.30.png b/.gitbook/assets/Screenshot 2020-07-28 at 00.16.30.png similarity index 100% rename from .gitbook/assets/screenshot-2020-07-28-at-00.16.30.png rename to .gitbook/assets/Screenshot 2020-07-28 at 00.16.30.png diff --git a/.gitbook/assets/Screenshot 2020-07-28 at 00.23.19.png b/.gitbook/assets/Screenshot 2020-07-28 at 00.23.19.png new file mode 100644 index 0000000000..fd470dbc94 Binary files /dev/null and b/.gitbook/assets/Screenshot 2020-07-28 at 00.23.19.png differ diff --git a/.gitbook/assets/screenshot-2020-07-28-at-00.49.53.png b/.gitbook/assets/Screenshot 2020-07-28 at 00.49.53.png similarity index 100% rename from .gitbook/assets/screenshot-2020-07-28-at-00.49.53.png rename to .gitbook/assets/Screenshot 2020-07-28 at 00.49.53.png diff --git a/.gitbook/assets/screenshot-2020-07-28-at-11.38.55.png b/.gitbook/assets/Screenshot 2020-07-28 at 11.38.55.png similarity index 100% rename from .gitbook/assets/screenshot-2020-07-28-at-11.38.55.png rename to .gitbook/assets/Screenshot 2020-07-28 at 11.38.55.png diff --git a/.gitbook/assets/screenshot-2020-07-28-at-11.42.27.png b/.gitbook/assets/Screenshot 2020-07-28 at 11.42.27.png similarity index 100% rename from .gitbook/assets/screenshot-2020-07-28-at-11.42.27.png rename to .gitbook/assets/Screenshot 2020-07-28 at 11.42.27.png diff --git a/.gitbook/assets/screenshot-2020-07-28-at-11.43.49.png b/.gitbook/assets/Screenshot 2020-07-28 at 11.43.49.png similarity index 100% rename from .gitbook/assets/screenshot-2020-07-28-at-11.43.49.png rename to .gitbook/assets/Screenshot 2020-07-28 at 11.43.49.png diff --git a/.gitbook/assets/screenshot-2020-07-28-at-11.44.05.png b/.gitbook/assets/Screenshot 2020-07-28 at 11.44.05.png similarity index 100% rename from .gitbook/assets/screenshot-2020-07-28-at-11.44.05.png rename to .gitbook/assets/Screenshot 2020-07-28 at 11.44.05.png diff --git a/.gitbook/assets/screenshot-2020-07-28-at-11.54.00.png b/.gitbook/assets/Screenshot 2020-07-28 at 11.54.00.png similarity index 100% rename from .gitbook/assets/screenshot-2020-07-28-at-11.54.00.png rename to .gitbook/assets/Screenshot 2020-07-28 at 11.54.00.png diff --git a/.gitbook/assets/screenshot-2020-07-28-at-12.08.17.png b/.gitbook/assets/Screenshot 2020-07-28 at 12.08.17.png similarity index 100% rename from .gitbook/assets/screenshot-2020-07-28-at-12.08.17.png rename to .gitbook/assets/Screenshot 2020-07-28 at 12.08.17.png diff --git a/.gitbook/assets/Screenshot 2022-12-07 091018.png b/.gitbook/assets/Screenshot 2022-12-07 091018.png new file mode 100644 index 0000000000..1de0f57016 Binary files /dev/null and b/.gitbook/assets/Screenshot 2022-12-07 091018.png differ diff --git a/.gitbook/assets/Screenshot 2022-12-07 124356.png b/.gitbook/assets/Screenshot 2022-12-07 124356.png new file mode 100644 index 0000000000..4003a79ae1 Binary files /dev/null and b/.gitbook/assets/Screenshot 2022-12-07 124356.png differ diff --git a/.gitbook/assets/Screenshot_20220524-134837_RocketChat.jpg b/.gitbook/assets/Screenshot_20220524-134837_RocketChat.jpg new file mode 100644 index 0000000000..2a11ec138b Binary files /dev/null and b/.gitbook/assets/Screenshot_20220524-134837_RocketChat.jpg differ diff --git a/.gitbook/assets/Screenshot_20220524-134900_RocketChat.jpg b/.gitbook/assets/Screenshot_20220524-134900_RocketChat.jpg new file mode 100644 index 0000000000..36b6df1cc6 Binary files /dev/null and b/.gitbook/assets/Screenshot_20220524-134900_RocketChat.jpg differ diff --git a/.gitbook/assets/Screenshot_20220524-134910_RocketChat.jpg b/.gitbook/assets/Screenshot_20220524-134910_RocketChat.jpg new file mode 100644 index 0000000000..a2c71df967 Binary files /dev/null and b/.gitbook/assets/Screenshot_20220524-134910_RocketChat.jpg differ diff --git a/.gitbook/assets/Screenshot_20220524-153531_RocketChat (1).jpg b/.gitbook/assets/Screenshot_20220524-153531_RocketChat (1).jpg new file mode 100644 index 0000000000..fb9b12683d Binary files /dev/null and b/.gitbook/assets/Screenshot_20220524-153531_RocketChat (1).jpg differ diff --git a/.gitbook/assets/Screenshot_20220524-153531_RocketChat (2).jpg b/.gitbook/assets/Screenshot_20220524-153531_RocketChat (2).jpg new file mode 100644 index 0000000000..fb9b12683d Binary files /dev/null and b/.gitbook/assets/Screenshot_20220524-153531_RocketChat (2).jpg differ diff --git a/.gitbook/assets/Screenshot_20220524-153531_RocketChat (3).jpg b/.gitbook/assets/Screenshot_20220524-153531_RocketChat (3).jpg new file mode 100644 index 0000000000..840e6ef4d5 Binary files /dev/null and b/.gitbook/assets/Screenshot_20220524-153531_RocketChat (3).jpg differ diff --git a/.gitbook/assets/Screenshot_20220524-153531_RocketChat (4).jpg b/.gitbook/assets/Screenshot_20220524-153531_RocketChat (4).jpg new file mode 100644 index 0000000000..02760c3372 Binary files /dev/null and b/.gitbook/assets/Screenshot_20220524-153531_RocketChat (4).jpg differ diff --git a/.gitbook/assets/Screenshot_20220524-153531_RocketChat (5) (1) (1) (1).jpg b/.gitbook/assets/Screenshot_20220524-153531_RocketChat (5) (1) (1) (1).jpg new file mode 100644 index 0000000000..6155729d47 Binary files /dev/null and b/.gitbook/assets/Screenshot_20220524-153531_RocketChat (5) (1) (1) (1).jpg differ diff --git a/.gitbook/assets/Screenshot_20220524-153531_RocketChat (5) (1) (1).jpg b/.gitbook/assets/Screenshot_20220524-153531_RocketChat (5) (1) (1).jpg new file mode 100644 index 0000000000..6155729d47 Binary files /dev/null and b/.gitbook/assets/Screenshot_20220524-153531_RocketChat (5) (1) (1).jpg differ diff --git a/.gitbook/assets/Screenshot_20220524-153531_RocketChat (5) (1).jpg b/.gitbook/assets/Screenshot_20220524-153531_RocketChat (5) (1).jpg new file mode 100644 index 0000000000..6155729d47 Binary files /dev/null and b/.gitbook/assets/Screenshot_20220524-153531_RocketChat (5) (1).jpg differ diff --git a/.gitbook/assets/Screenshot_20220524-153531_RocketChat (6).jpg b/.gitbook/assets/Screenshot_20220524-153531_RocketChat (6).jpg new file mode 100644 index 0000000000..10713d9af8 Binary files /dev/null and b/.gitbook/assets/Screenshot_20220524-153531_RocketChat (6).jpg differ diff --git a/.gitbook/assets/Screenshot_20220524-153531_RocketChat (7).jpg b/.gitbook/assets/Screenshot_20220524-153531_RocketChat (7).jpg new file mode 100644 index 0000000000..10713d9af8 Binary files /dev/null and b/.gitbook/assets/Screenshot_20220524-153531_RocketChat (7).jpg differ diff --git a/.gitbook/assets/Screenshot_20220524-153531_RocketChat (8) (1).jpg b/.gitbook/assets/Screenshot_20220524-153531_RocketChat (8) (1).jpg new file mode 100644 index 0000000000..6155729d47 Binary files /dev/null and b/.gitbook/assets/Screenshot_20220524-153531_RocketChat (8) (1).jpg differ diff --git a/.gitbook/assets/Screenshot_20220524-153531_RocketChat.jpg b/.gitbook/assets/Screenshot_20220524-153531_RocketChat.jpg new file mode 100644 index 0000000000..6155729d47 Binary files /dev/null and b/.gitbook/assets/Screenshot_20220524-153531_RocketChat.jpg differ diff --git a/.gitbook/assets/Screenshot_20220524-Browser (1) (1) (1).jpg b/.gitbook/assets/Screenshot_20220524-Browser (1) (1) (1).jpg new file mode 100644 index 0000000000..4be6b8ee81 Binary files /dev/null and b/.gitbook/assets/Screenshot_20220524-Browser (1) (1) (1).jpg differ diff --git a/.gitbook/assets/Screenshot_20220524-Browser (1) (1).jpg b/.gitbook/assets/Screenshot_20220524-Browser (1) (1).jpg new file mode 100644 index 0000000000..4be6b8ee81 Binary files /dev/null and b/.gitbook/assets/Screenshot_20220524-Browser (1) (1).jpg differ diff --git a/.gitbook/assets/Screenshot_20220524-Browser (1).jpg b/.gitbook/assets/Screenshot_20220524-Browser (1).jpg new file mode 100644 index 0000000000..4be6b8ee81 Binary files /dev/null and b/.gitbook/assets/Screenshot_20220524-Browser (1).jpg differ diff --git a/.gitbook/assets/Screenshot_20220524-Default Browser.jpg b/.gitbook/assets/Screenshot_20220524-Default Browser.jpg new file mode 100644 index 0000000000..02760c3372 Binary files /dev/null and b/.gitbook/assets/Screenshot_20220524-Default Browser.jpg differ diff --git a/.gitbook/assets/Screenshot_20220524-InApp.jpg b/.gitbook/assets/Screenshot_20220524-InApp.jpg new file mode 100644 index 0000000000..ba6543e011 Binary files /dev/null and b/.gitbook/assets/Screenshot_20220524-InApp.jpg differ diff --git a/.gitbook/assets/Search Omnichannel contact with custom field.png b/.gitbook/assets/Search Omnichannel contact with custom field.png new file mode 100644 index 0000000000..550268798f Binary files /dev/null and b/.gitbook/assets/Search Omnichannel contact with custom field.png differ diff --git a/.gitbook/assets/Selection_049.png b/.gitbook/assets/Selection_049.png new file mode 100644 index 0000000000..d72cd6edc2 Binary files /dev/null and b/.gitbook/assets/Selection_049.png differ diff --git a/.gitbook/assets/Selection_072.png b/.gitbook/assets/Selection_072.png new file mode 100644 index 0000000000..066434320a Binary files /dev/null and b/.gitbook/assets/Selection_072.png differ diff --git a/.gitbook/assets/Sensitive message sent.png b/.gitbook/assets/Sensitive message sent.png new file mode 100644 index 0000000000..a5f87971fd Binary files /dev/null and b/.gitbook/assets/Sensitive message sent.png differ diff --git a/.gitbook/assets/Set Facebook app callback URL.png b/.gitbook/assets/Set Facebook app callback URL.png new file mode 100644 index 0000000000..51a3a1d11c Binary files /dev/null and b/.gitbook/assets/Set Facebook app callback URL.png differ diff --git a/.gitbook/assets/Set Omnichannel contact manager b/.gitbook/assets/Set Omnichannel contact manager new file mode 100644 index 0000000000..d81d4f5e39 Binary files /dev/null and b/.gitbook/assets/Set Omnichannel contact manager differ diff --git a/.gitbook/assets/Set email field optional on Live Chat widget.png b/.gitbook/assets/Set email field optional on Live Chat widget.png new file mode 100644 index 0000000000..b825551e92 Binary files /dev/null and b/.gitbook/assets/Set email field optional on Live Chat widget.png differ diff --git a/.gitbook/assets/Setting redirect URI on Google Cloud b/.gitbook/assets/Setting redirect URI on Google Cloud new file mode 100644 index 0000000000..ff75beac4c Binary files /dev/null and b/.gitbook/assets/Setting redirect URI on Google Cloud differ diff --git a/.gitbook/assets/Start Call in RocketChat room.png b/.gitbook/assets/Start Call in RocketChat room.png new file mode 100644 index 0000000000..693f04506a Binary files /dev/null and b/.gitbook/assets/Start Call in RocketChat room.png differ diff --git a/.gitbook/assets/Subprocessors-list-10-23-20.pdf b/.gitbook/assets/Subprocessors-list-10-23-20.pdf new file mode 100644 index 0000000000..0a4bee610d Binary files /dev/null and b/.gitbook/assets/Subprocessors-list-10-23-20.pdf differ diff --git a/.gitbook/assets/Subscribe to Messages webhook Facebook app.png b/.gitbook/assets/Subscribe to Messages webhook Facebook app.png new file mode 100644 index 0000000000..dc5037638c Binary files /dev/null and b/.gitbook/assets/Subscribe to Messages webhook Facebook app.png differ diff --git a/.gitbook/assets/Telegram bot webhook with Rocket.Chat.png b/.gitbook/assets/Telegram bot webhook with Rocket.Chat.png new file mode 100644 index 0000000000..a9384a7510 Binary files /dev/null and b/.gitbook/assets/Telegram bot webhook with Rocket.Chat.png differ diff --git a/.gitbook/assets/Trello-Integration.png b/.gitbook/assets/Trello-Integration.png new file mode 100644 index 0000000000..47034b672c Binary files /dev/null and b/.gitbook/assets/Trello-Integration.png differ diff --git a/.gitbook/assets/Twilio Active numbers page b/.gitbook/assets/Twilio Active numbers page new file mode 100644 index 0000000000..cdac47a840 Binary files /dev/null and b/.gitbook/assets/Twilio Active numbers page differ diff --git a/.gitbook/assets/Twilio Messaging Service name b/.gitbook/assets/Twilio Messaging Service name new file mode 100644 index 0000000000..9e6911ae3b Binary files /dev/null and b/.gitbook/assets/Twilio Messaging Service name differ diff --git a/.gitbook/assets/Twilio Phone Number webhook configuration b/.gitbook/assets/Twilio Phone Number webhook configuration new file mode 100644 index 0000000000..ed68317907 Binary files /dev/null and b/.gitbook/assets/Twilio Phone Number webhook configuration differ diff --git a/.gitbook/assets/Twilio Programming Message Setup (1).png b/.gitbook/assets/Twilio Programming Message Setup (1).png new file mode 100644 index 0000000000..2492a50786 Binary files /dev/null and b/.gitbook/assets/Twilio Programming Message Setup (1).png differ diff --git a/.gitbook/assets/Twilio Programming Message Setup.png b/.gitbook/assets/Twilio Programming Message Setup.png new file mode 100644 index 0000000000..2492a50786 Binary files /dev/null and b/.gitbook/assets/Twilio Programming Message Setup.png differ diff --git a/.gitbook/assets/Twilio Send WhatsApp message interface.png b/.gitbook/assets/Twilio Send WhatsApp message interface.png new file mode 100644 index 0000000000..650fd3722f Binary files /dev/null and b/.gitbook/assets/Twilio Send WhatsApp message interface.png differ diff --git a/.gitbook/assets/Twilio WhatsApp sandbox setting.png b/.gitbook/assets/Twilio WhatsApp sandbox setting.png new file mode 100644 index 0000000000..5eb1525e89 Binary files /dev/null and b/.gitbook/assets/Twilio WhatsApp sandbox setting.png differ diff --git a/.gitbook/assets/Twilio provisioned number b/.gitbook/assets/Twilio provisioned number new file mode 100644 index 0000000000..077642fc9c Binary files /dev/null and b/.gitbook/assets/Twilio provisioned number differ diff --git a/.gitbook/assets/Untitled.png b/.gitbook/assets/Untitled.png new file mode 100644 index 0000000000..db8c2e7116 Binary files /dev/null and b/.gitbook/assets/Untitled.png differ diff --git a/.gitbook/assets/UptimeRobot.png b/.gitbook/assets/UptimeRobot.png new file mode 100644 index 0000000000..7b583b4a7d Binary files /dev/null and b/.gitbook/assets/UptimeRobot.png differ diff --git a/.gitbook/assets/Using Pexip slashcommand.png b/.gitbook/assets/Using Pexip slashcommand.png new file mode 100644 index 0000000000..4a7d70215b Binary files /dev/null and b/.gitbook/assets/Using Pexip slashcommand.png differ diff --git a/.gitbook/assets/VideoConferenceAdminSettingsBBB.png b/.gitbook/assets/VideoConferenceAdminSettingsBBB.png new file mode 100644 index 0000000000..ad53ff2045 Binary files /dev/null and b/.gitbook/assets/VideoConferenceAdminSettingsBBB.png differ diff --git a/.gitbook/assets/VideoConferenceAdminSettingsForJitsi.png b/.gitbook/assets/VideoConferenceAdminSettingsForJitsi.png new file mode 100644 index 0000000000..fcf3c48abd Binary files /dev/null and b/.gitbook/assets/VideoConferenceAdminSettingsForJitsi.png differ diff --git a/.gitbook/assets/VideoConferenceAdminSettingsForPexip.png b/.gitbook/assets/VideoConferenceAdminSettingsForPexip.png new file mode 100644 index 0000000000..798e5a24e9 Binary files /dev/null and b/.gitbook/assets/VideoConferenceAdminSettingsForPexip.png differ diff --git a/.gitbook/assets/View ContactInfo (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/View ContactInfo (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..603cc1de2b Binary files /dev/null and b/.gitbook/assets/View ContactInfo (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/View ContactInfo (1) (1) (1) (1) (1) (2).png b/.gitbook/assets/View ContactInfo (1) (1) (1) (1) (1) (2).png new file mode 100644 index 0000000000..603cc1de2b Binary files /dev/null and b/.gitbook/assets/View ContactInfo (1) (1) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/View ContactInfo (1) (1) (1) (1) (1) (3).png b/.gitbook/assets/View ContactInfo (1) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..603cc1de2b Binary files /dev/null and b/.gitbook/assets/View ContactInfo (1) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/View ContactInfo (1) (1) (1) (1) (1).png b/.gitbook/assets/View ContactInfo (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..603cc1de2b Binary files /dev/null and b/.gitbook/assets/View ContactInfo (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/View ContactInfo (1).png b/.gitbook/assets/View ContactInfo (1).png new file mode 100644 index 0000000000..603cc1de2b Binary files /dev/null and b/.gitbook/assets/View ContactInfo (1).png differ diff --git a/.gitbook/assets/View ContactInfo (2) (1).png b/.gitbook/assets/View ContactInfo (2) (1).png new file mode 100644 index 0000000000..603cc1de2b Binary files /dev/null and b/.gitbook/assets/View ContactInfo (2) (1).png differ diff --git a/.gitbook/assets/View ContactInfo (2).png b/.gitbook/assets/View ContactInfo (2).png new file mode 100644 index 0000000000..603cc1de2b Binary files /dev/null and b/.gitbook/assets/View ContactInfo (2).png differ diff --git a/.gitbook/assets/View ContactInfo.png b/.gitbook/assets/View ContactInfo.png new file mode 100644 index 0000000000..603cc1de2b Binary files /dev/null and b/.gitbook/assets/View ContactInfo.png differ diff --git a/.gitbook/assets/View Deals.png b/.gitbook/assets/View Deals.png new file mode 100644 index 0000000000..343448b5e6 Binary files /dev/null and b/.gitbook/assets/View Deals.png differ diff --git a/.gitbook/assets/View Tickets.png b/.gitbook/assets/View Tickets.png new file mode 100644 index 0000000000..7055692809 Binary files /dev/null and b/.gitbook/assets/View Tickets.png differ diff --git a/.gitbook/assets/VoIP Enabled.png b/.gitbook/assets/VoIP Enabled.png new file mode 100644 index 0000000000..134061f856 Binary files /dev/null and b/.gitbook/assets/VoIP Enabled.png differ diff --git a/.gitbook/assets/Websocket connection.png b/.gitbook/assets/Websocket connection.png new file mode 100644 index 0000000000..0d4f1b20fe Binary files /dev/null and b/.gitbook/assets/Websocket connection.png differ diff --git a/.gitbook/assets/WhatsApp Cloud App welcome message.png b/.gitbook/assets/WhatsApp Cloud App welcome message.png new file mode 100644 index 0000000000..35438dec97 Binary files /dev/null and b/.gitbook/assets/WhatsApp Cloud App welcome message.png differ diff --git a/.gitbook/assets/WhatsApp Cloud app permissions.png b/.gitbook/assets/WhatsApp Cloud app permissions.png new file mode 100644 index 0000000000..aa18b6e831 Binary files /dev/null and b/.gitbook/assets/WhatsApp Cloud app permissions.png differ diff --git a/.gitbook/assets/WhatsApp Sandbox_Chat (1).png b/.gitbook/assets/WhatsApp Sandbox_Chat (1).png new file mode 100644 index 0000000000..650cffe9f3 Binary files /dev/null and b/.gitbook/assets/WhatsApp Sandbox_Chat (1).png differ diff --git a/.gitbook/assets/WhatsApp Sandbox_Chat.png b/.gitbook/assets/WhatsApp Sandbox_Chat.png new file mode 100644 index 0000000000..94a237bb77 Binary files /dev/null and b/.gitbook/assets/WhatsApp Sandbox_Chat.png differ diff --git a/.gitbook/assets/WhatsappSanboxInstall (1).png b/.gitbook/assets/WhatsappSanboxInstall (1).png new file mode 100644 index 0000000000..b0a3935ff1 Binary files /dev/null and b/.gitbook/assets/WhatsappSanboxInstall (1).png differ diff --git a/.gitbook/assets/WhatsappSanboxInstall.png b/.gitbook/assets/WhatsappSanboxInstall.png new file mode 100644 index 0000000000..b0a3935ff1 Binary files /dev/null and b/.gitbook/assets/WhatsappSanboxInstall.png differ diff --git a/.gitbook/assets/WorkspacePage.png b/.gitbook/assets/WorkspacePage.png new file mode 100644 index 0000000000..233eacbc2b Binary files /dev/null and b/.gitbook/assets/WorkspacePage.png differ diff --git a/.gitbook/assets/Xray.png b/.gitbook/assets/Xray.png new file mode 100644 index 0000000000..220b73d279 Binary files /dev/null and b/.gitbook/assets/Xray.png differ diff --git a/.gitbook/assets/accounts-admin.png b/.gitbook/assets/accounts-admin.png new file mode 100644 index 0000000000..d69da795f4 Binary files /dev/null and b/.gitbook/assets/accounts-admin.png differ diff --git a/.gitbook/assets/admininfo (1).png b/.gitbook/assets/admininfo (1).png new file mode 100644 index 0000000000..1366b0ed12 Binary files /dev/null and b/.gitbook/assets/admininfo (1).png differ diff --git a/.gitbook/assets/admininfo.png b/.gitbook/assets/admininfo.png new file mode 100644 index 0000000000..1366b0ed12 Binary files /dev/null and b/.gitbook/assets/admininfo.png differ diff --git a/.gitbook/assets/administration b/.gitbook/assets/administration new file mode 100644 index 0000000000..e09d3281eb Binary files /dev/null and b/.gitbook/assets/administration differ diff --git a/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1).png b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (1) (1) (1) (3) (1).png similarity index 100% rename from .gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1).png rename to .gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (1) (1) (1) (3) (1).png diff --git a/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (2).png b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (1) (1) (1) (3) (2).png similarity index 100% rename from .gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (2).png rename to .gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (1) (1) (1) (3) (2).png diff --git a/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (1) (1) (1) (3) (3).png b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (1) (1) (1) (3) (3).png new file mode 100644 index 0000000000..8f0f610f29 Binary files /dev/null and b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (1) (1) (1) (3) (3).png differ diff --git a/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (1) (1) (1) (3) (4).png b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..8f0f610f29 Binary files /dev/null and b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (1) (1) (1) (3).png b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..8f0f610f29 Binary files /dev/null and b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (1) (1) (2).png b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..8f0f610f29 Binary files /dev/null and b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (1) (1) (3).png b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..8f0f610f29 Binary files /dev/null and b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (3).png b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (3).png new file mode 100644 index 0000000000..8f0f610f29 Binary files /dev/null and b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (3).png differ diff --git a/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (4).png b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (4).png new file mode 100644 index 0000000000..8f0f610f29 Binary files /dev/null and b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1) (4).png differ diff --git a/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1).png b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1).png new file mode 100644 index 0000000000..8f0f610f29 Binary files /dev/null and b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (2) (1).png differ diff --git a/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (4) (1).png b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (4) (1).png new file mode 100644 index 0000000000..8f0f610f29 Binary files /dev/null and b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (4) (1).png differ diff --git a/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (4) (2).png b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (4) (2).png new file mode 100644 index 0000000000..8f0f610f29 Binary files /dev/null and b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (4) (2).png differ diff --git a/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (4) (3).png b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (4) (3).png new file mode 100644 index 0000000000..8f0f610f29 Binary files /dev/null and b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (4) (3).png differ diff --git a/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (4) (4).png b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (4) (4).png new file mode 100644 index 0000000000..8f0f610f29 Binary files /dev/null and b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1).png b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1).png new file mode 100644 index 0000000000..8f0f610f29 Binary files /dev/null and b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (1).png differ diff --git a/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (2).png b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (2).png new file mode 100644 index 0000000000..8f0f610f29 Binary files /dev/null and b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (2).png differ diff --git a/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (3).png b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (3).png new file mode 100644 index 0000000000..8f0f610f29 Binary files /dev/null and b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1) (3).png differ diff --git a/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1).png b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1).png new file mode 100644 index 0000000000..8f0f610f29 Binary files /dev/null and b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (1).png differ diff --git a/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (2).png b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (2).png new file mode 100644 index 0000000000..8f0f610f29 Binary files /dev/null and b/.gitbook/assets/administrator-ui (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (4) (4) (4) (4) (1) (2).png differ diff --git a/.gitbook/assets/alert_triggered.png b/.gitbook/assets/alert_triggered.png new file mode 100644 index 0000000000..2d0392ae98 Binary files /dev/null and b/.gitbook/assets/alert_triggered.png differ diff --git a/.gitbook/assets/all wrap-up.png b/.gitbook/assets/all wrap-up.png new file mode 100644 index 0000000000..78cc5bed74 Binary files /dev/null and b/.gitbook/assets/all wrap-up.png differ diff --git a/.gitbook/assets/allowedlist.png b/.gitbook/assets/allowedlist.png new file mode 100644 index 0000000000..b06b6e253e Binary files /dev/null and b/.gitbook/assets/allowedlist.png differ diff --git a/.gitbook/assets/allowedlistnew.png b/.gitbook/assets/allowedlistnew.png new file mode 100644 index 0000000000..49b3beccff Binary files /dev/null and b/.gitbook/assets/allowedlistnew.png differ diff --git a/.gitbook/assets/api key with key (1).png b/.gitbook/assets/api key with key (1).png new file mode 100644 index 0000000000..909b33d72d Binary files /dev/null and b/.gitbook/assets/api key with key (1).png differ diff --git a/.gitbook/assets/api key with key.png b/.gitbook/assets/api key with key.png new file mode 100644 index 0000000000..909b33d72d Binary files /dev/null and b/.gitbook/assets/api key with key.png differ diff --git a/.gitbook/assets/apprun.png b/.gitbook/assets/apprun.PNG similarity index 100% rename from .gitbook/assets/apprun.png rename to .gitbook/assets/apprun.PNG diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (1).png similarity index 100% rename from .gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1).png rename to .gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (1).png diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (2).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (10).png similarity index 100% rename from .gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (2).png rename to .gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (10).png diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (6).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (11).png similarity index 100% rename from .gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (6).png rename to .gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (11).png diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (12).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (12).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (12).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (2).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (2).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (2).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (3).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (3).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (3).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (4).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (4).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (4).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (5).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (5).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (5).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (6).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (6).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (6).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (7).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (7).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (7).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (8).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (8).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (8).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (9).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (9).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (9).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (3).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (4).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (5).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (6).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (6).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (7).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (7).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (8).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (8).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (9).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (9).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (10).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (10).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (10).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (11).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (11).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (11).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (2).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (2).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (3).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (3).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (4).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (4).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (5).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (5).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (6).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (6).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (7).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (7).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (8).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (8).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (9).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (9).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (11).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (11).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (11).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (12).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (12).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (12).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (2).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (2).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (2).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (3).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (3).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (3).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (4).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (4).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (4).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (5).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (5).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (5).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (6).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (6).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (6).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (7).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (7).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (7).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (8).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (8).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (8).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (9).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (9).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1) (9).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (1).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (1).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (1).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (1).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (10).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (10).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (10).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (11).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (11).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (11).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (2).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (2).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (2).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (3).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (3).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (3).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (4).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (4).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (4).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (5).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (5).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (5).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (6).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (6).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (6).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (7).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (7).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (7).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (8).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (8).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (8).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (9).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (9).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (3) (9).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (4).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (4).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (4).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (5).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (5).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (5).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (6).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (6).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (6).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (7).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (7).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (7).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (8).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (8).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (8).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (9).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (9).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10) (9).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (10).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (2).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (2).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (2).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (3).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (3).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (3).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (4).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (4).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (5).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (5).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (5).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (6).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (6).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (6).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (7).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (7).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (7).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (8).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (8).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (8).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (9).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (9).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4) (9).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (5).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (5).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (6).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (6).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (7).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (7).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (8).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (8).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (9).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (9).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (1).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (2).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (2).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (2).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (3).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (3).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (3).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (4).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (4).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (4).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (5).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (5).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (5).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (6).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (6).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (6).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (7).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (7).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (7).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (8).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (8).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (8).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (9).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (9).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1) (9).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (1).png differ diff --git a/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (2).png b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (2).png new file mode 100644 index 0000000000..b51f2ea297 Binary files /dev/null and b/.gitbook/assets/apps-list (2) (2) (2) (2) (2) (4) (3) (1) (2).png differ diff --git a/.gitbook/assets/attach-file.png b/.gitbook/assets/attach-file.png new file mode 100644 index 0000000000..381fa0a517 Binary files /dev/null and b/.gitbook/assets/attach-file.png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (1).png similarity index 100% rename from .gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1).png rename to .gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (1).png diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (2).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (10).png similarity index 100% rename from .gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (2).png rename to .gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (10).png diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (6).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (11).png similarity index 100% rename from .gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (6).png rename to .gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (11).png diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (12).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (12).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (12).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (2).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (2).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (2).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (3).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (3).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (3).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (4).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (4).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (4).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (5).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (5).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (5).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (6).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (6).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (6).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (7).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (7).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (7).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (8).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (8).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (8).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (9).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (9).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (9).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (3).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (4).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (5).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (6).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (6).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (7).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (7).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (8).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (8).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (9).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (9).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (10).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (10).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (10).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (11).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (11).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (11).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (2).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (2).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (3).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (3).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (4).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (4).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (5).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (5).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (6).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (6).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (7).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (7).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (8).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (8).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (9).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (9).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (11).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (11).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (11).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (12).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (12).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (12).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (2).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (2).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (2).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (3).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (3).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (3).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (4).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (4).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (4).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (5).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (5).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (5).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (6).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (6).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (6).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (7).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (7).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (7).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (8).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (8).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (8).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (9).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (9).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1) (9).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (1).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (1).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (1).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (1).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (10).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (10).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (10).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (11).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (11).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (11).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (2).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (2).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (2).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (3).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (3).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (3).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (4).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (4).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (4).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (5).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (5).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (5).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (6).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (6).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (6).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (7).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (7).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (7).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (8).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (8).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (8).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (9).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (9).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (11) (9).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (2).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (2).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (2).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (3).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (3).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (3).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (4).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (4).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (4).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (5).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (5).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (5).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (6).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (6).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (6).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (7).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (7).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (7).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (8).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (8).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (8).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (9).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (9).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10) (9).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (10).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (2).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (2).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (2).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (3).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (3).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (3).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (4).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (4).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (5).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (5).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (5).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (6).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (6).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (6).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (7).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (7).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (7).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (8).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (8).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (8).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (9).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (9).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4) (9).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (5).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (6).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (6).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (7).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (7).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (8).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (8).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (9).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (9).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (2).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (2).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (3).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (3).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (4).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (4).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (5).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (5).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (6).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (6).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (7).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (7).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (8).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (8).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (9).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (9).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (1).png differ diff --git a/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (2).png b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (2).png new file mode 100644 index 0000000000..475ec956b4 Binary files /dev/null and b/.gitbook/assets/audio-message-box (1) (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (5) (5) (5) (1) (1) (2).png differ diff --git a/.gitbook/assets/auditing-ui.png b/.gitbook/assets/auditing-UI.png similarity index 100% rename from .gitbook/assets/auditing-ui.png rename to .gitbook/assets/auditing-UI.png diff --git a/.gitbook/assets/auto-translate.png b/.gitbook/assets/auto-translate.png new file mode 100644 index 0000000000..7be2a3aaf2 Binary files /dev/null and b/.gitbook/assets/auto-translate.png differ diff --git a/.gitbook/assets/bell-icon.png b/.gitbook/assets/bell-icon.png new file mode 100644 index 0000000000..1dec8cdede Binary files /dev/null and b/.gitbook/assets/bell-icon.png differ diff --git a/.gitbook/assets/blockedlist.png b/.gitbook/assets/blockedlist.png new file mode 100644 index 0000000000..a0b5b6d463 Binary files /dev/null and b/.gitbook/assets/blockedlist.png differ diff --git a/.gitbook/assets/bot agent .png b/.gitbook/assets/bot agent .png new file mode 100644 index 0000000000..c705cfdf0b Binary files /dev/null and b/.gitbook/assets/bot agent .png differ diff --git a/.gitbook/assets/browser (1) (1).jpg b/.gitbook/assets/browser (1) (1).jpg new file mode 100644 index 0000000000..4be6b8ee81 Binary files /dev/null and b/.gitbook/assets/browser (1) (1).jpg differ diff --git a/.gitbook/assets/browser (2).jpg b/.gitbook/assets/browser (2).jpg new file mode 100644 index 0000000000..e1c2195989 Binary files /dev/null and b/.gitbook/assets/browser (2).jpg differ diff --git a/.gitbook/assets/browser.jpg b/.gitbook/assets/browser.jpg new file mode 100644 index 0000000000..4be6b8ee81 Binary files /dev/null and b/.gitbook/assets/browser.jpg differ diff --git a/.gitbook/assets/c_5 (1).png b/.gitbook/assets/c_5 (1).png index c7a226b82e..48d96c058d 100644 Binary files a/.gitbook/assets/c_5 (1).png and b/.gitbook/assets/c_5 (1).png differ diff --git a/.gitbook/assets/c_5.png b/.gitbook/assets/c_5.png index 48d96c058d..c7a226b82e 100644 Binary files a/.gitbook/assets/c_5.png and b/.gitbook/assets/c_5.png differ diff --git a/.gitbook/assets/change email.png b/.gitbook/assets/change email.png new file mode 100644 index 0000000000..6fb7d9e5d8 Binary files /dev/null and b/.gitbook/assets/change email.png differ diff --git a/.gitbook/assets/chats-off (1).png b/.gitbook/assets/chats-off (1).png new file mode 100644 index 0000000000..61e3be4e4a Binary files /dev/null and b/.gitbook/assets/chats-off (1).png differ diff --git a/.gitbook/assets/chats-off.png b/.gitbook/assets/chats-off.png new file mode 100644 index 0000000000..61e3be4e4a Binary files /dev/null and b/.gitbook/assets/chats-off.png differ diff --git a/.gitbook/assets/chats-on.png b/.gitbook/assets/chats-on.png new file mode 100644 index 0000000000..62137d9989 Binary files /dev/null and b/.gitbook/assets/chats-on.png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (1).png similarity index 100% rename from .gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1).png rename to .gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (1).png diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (2).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (10).png similarity index 100% rename from .gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (2).png rename to .gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (10).png diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (5).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (11).png similarity index 100% rename from .gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (5).png rename to .gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (11).png diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (12).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (12).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (12).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (2).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (2).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (2).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (3).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (3).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (3).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (4).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (4).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (4).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (5).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (5).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (5).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (6).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (6).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (6).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (7).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (7).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (7).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (8).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (8).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (8).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (9).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (9).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (9).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (3).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (4).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (5).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (6).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (6).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (7).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (7).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (8).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (8).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (9).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (9).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (10).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (10).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (10).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (11).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (11).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (11).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (2).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (2).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (3).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (3).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (4).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (4).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (5).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (5).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (6).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (6).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (7).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (7).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (8).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (8).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (9).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (9).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (11).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (11).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (11).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (12).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (12).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (12).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (2).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (2).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (2).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (3).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (3).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (3).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (4).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (4).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (4).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (5).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (5).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (5).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (6).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (6).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (6).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (7).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (7).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (7).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (8).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (8).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (8).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (9).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (9).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1) (9).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (1).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (1).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (1).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (1).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (10).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (10).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (10).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (11).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (11).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (11).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (2).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (2).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (2).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (3).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (3).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (3).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (4).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (4).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (4).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (5).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (5).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (5).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (6).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (6).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (6).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (7).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (7).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (7).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (8).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (8).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (8).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (9).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (9).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (3) (9).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (4).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (4).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (4).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (5).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (5).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (5).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (6).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (6).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (6).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (7).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (7).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (7).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (8).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (8).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (8).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (9).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (9).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10) (9).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (10).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (2).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (2).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (2).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (3).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (3).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (3).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (4).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (4).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (5).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (5).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (5).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (6).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (6).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (6).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (7).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (7).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (7).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (8).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (8).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (8).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (9).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (9).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (9).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (5).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (6).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (6).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (7).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (7).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (8).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (8).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (9).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (9).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (2).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (3).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (4).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (4).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (5).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (5).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (6).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (6).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (7).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (7).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (8).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (8).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (9).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (9).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (1).png differ diff --git a/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (2).png b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (2).png new file mode 100644 index 0000000000..e7b2981c8b Binary files /dev/null and b/.gitbook/assets/checked-dont-ask-me-again (1) (2) (2) (2) (2) (2) (2) (1) (1) (2).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (1).png similarity index 100% rename from .gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1).png rename to .gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (1).png diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (10).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (10).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (10).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (11).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (11).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (11).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (12).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (12).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (12).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (13).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (13).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (13).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (2).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (2).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (2).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (3).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (3).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (3).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (4).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (4).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (4).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (5).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (5).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (5).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (6).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (6).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (6).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (7).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (7).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (7).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (8).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (8).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (8).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (9).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (9).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (9).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (2).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (2).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (3).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (4).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (5).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (6).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (6).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (7).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (7).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (8).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (8).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (9).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (9).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (10).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (10).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (10).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (11).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (11).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (11).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (12).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (12).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (12).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (2).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (2).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (3).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (3).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (4).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (4).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (5).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (5).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (6).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (6).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (7).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (7).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (8).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (8).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (9).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (9).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (11).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (11).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (11).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (12).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (12).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (12).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (13).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (13).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (13).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (2).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (2).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (2).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (3).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (3).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (3).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (4).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (4).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (4).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (5).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (5).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (5).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (6).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (6).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (6).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (7).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (7).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (7).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (8).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (8).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (8).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (9).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (9).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1) (9).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (1).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (1).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (1).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (1).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (10).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (10).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (10).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (11).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (11).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (11).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (12).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (12).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (12).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (2).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (2).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (2).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (3).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (3).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (3).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (4).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (4).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (4).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (5).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (5).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (5).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (6).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (6).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (6).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (7).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (7).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (7).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (8).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (8).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (8).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (9).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (9).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (11) (9).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (12).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (12).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (12).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (2).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (2).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (2).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (3).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (3).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (3).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (4).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (4).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (4).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (5).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (5).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (5).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (6).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (6).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (6).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (7).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (7).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (7).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (8).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (8).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (8).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (9).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (9).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10) (9).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (10).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (11).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (11).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (11).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (2).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (2).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (2).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (3).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (3).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (3).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (4).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (5).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (5).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (5).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (6).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (6).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (6).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (7).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (7).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (7).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (8).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (8).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (8).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (9).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (9).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3) (9).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (4).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (5).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (6).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (6).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (7).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (7).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (8).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (8).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (9).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (9).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (10).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (10).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (10).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (2).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (3).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (4).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (4).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (5).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (5).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (6).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (6).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (7).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (7).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (8).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (8).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (9).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (9).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (1).png differ diff --git a/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (2).png b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (2).png new file mode 100644 index 0000000000..73764cb595 Binary files /dev/null and b/.gitbook/assets/clear-section-alert (2) (2) (2) (2) (2) (1) (1) (2).png differ diff --git a/.gitbook/assets/cloud screen 01.png b/.gitbook/assets/cloud screen 01.png new file mode 100644 index 0000000000..74e0177fc1 Binary files /dev/null and b/.gitbook/assets/cloud screen 01.png differ diff --git a/.gitbook/assets/cloud-portal.png b/.gitbook/assets/cloud-portal.png new file mode 100644 index 0000000000..eae0d74b1d Binary files /dev/null and b/.gitbook/assets/cloud-portal.png differ diff --git a/.gitbook/assets/contact-center.png b/.gitbook/assets/contact-center.png new file mode 100644 index 0000000000..1e0d0b3feb Binary files /dev/null and b/.gitbook/assets/contact-center.png differ diff --git a/.gitbook/assets/contact-history.png b/.gitbook/assets/contact-history.png new file mode 100644 index 0000000000..36b4d42a20 Binary files /dev/null and b/.gitbook/assets/contact-history.png differ diff --git a/.gitbook/assets/contact-info.png b/.gitbook/assets/contact-info.png new file mode 100644 index 0000000000..a6ae36cb68 Binary files /dev/null and b/.gitbook/assets/contact-info.png differ diff --git a/.gitbook/assets/create icon (1).png b/.gitbook/assets/create icon (1).png new file mode 100644 index 0000000000..d93b8b4eeb Binary files /dev/null and b/.gitbook/assets/create icon (1).png differ diff --git a/.gitbook/assets/create icon.png b/.gitbook/assets/create icon.png new file mode 100644 index 0000000000..d93b8b4eeb Binary files /dev/null and b/.gitbook/assets/create icon.png differ diff --git a/.gitbook/assets/create mapper.jpg b/.gitbook/assets/create mapper.jpg new file mode 100644 index 0000000000..f230107143 Binary files /dev/null and b/.gitbook/assets/create mapper.jpg differ diff --git a/.gitbook/assets/create_a_normal_room.png b/.gitbook/assets/create_a_normal_room.png new file mode 100644 index 0000000000..2b1d1f9cea Binary files /dev/null and b/.gitbook/assets/create_a_normal_room.png differ diff --git a/.gitbook/assets/default email footer.png b/.gitbook/assets/default email footer.png new file mode 100644 index 0000000000..f91cbad147 Binary files /dev/null and b/.gitbook/assets/default email footer.png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (1).png similarity index 100% rename from .gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1).png rename to .gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (1).png diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (2).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (10).png similarity index 100% rename from .gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (2).png rename to .gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (10).png diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (3).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (11).png similarity index 100% rename from .gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (3).png rename to .gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (11).png diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (2).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (2).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (2).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (3).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (3).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (3).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (4).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (4).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (4).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (5).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (5).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (5).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (6).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (6).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (6).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (7).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (7).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (7).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (8).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (8).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (8).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (9).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (9).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2) (9).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (4).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (5).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (6).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (6).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (7).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (7).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (8).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (8).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (9).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (9).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (10).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (10).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (10).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (2).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (3).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (4).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (4).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (5).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (5).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (6).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (6).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (7).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (7).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (8).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (8).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (9).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (9).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (11).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (11).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (11).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (2).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (2).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (2).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (3).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (3).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (3).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (4).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (4).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (4).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (5).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (5).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (5).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (6).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (6).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (6).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (7).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (7).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (7).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (8).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (8).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (8).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (9).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (9).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1) (9).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (1).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (1).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (1).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (1).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (10).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (10).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (10).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (2).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (2).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (2).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (3).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (3).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (3).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (4).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (4).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (4).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (5).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (5).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (5).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (6).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (6).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (6).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (7).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (7).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (7).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (8).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (8).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (8).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (9).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (9).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (4) (9).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (5).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (5).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (5).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (6).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (6).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (6).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (7).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (7).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (7).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (8).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (8).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (8).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (9).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (9).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2) (9).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (2).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (3).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (3).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (3).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (4).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (4).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (5).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (5).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (5).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (6).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (6).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (6).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (7).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (7).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (7).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (8).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (8).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (8).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (9).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (9).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4) (9).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (5).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (5).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (6).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (6).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (7).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (7).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (8).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (8).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (1).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (2).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (2).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (2).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (3).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (3).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (3).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (4).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (4).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (4).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (5).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (5).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (5).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (6).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (6).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (6).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (7).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (7).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (7).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (8).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (8).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1) (8).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (1).png differ diff --git a/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (2).png b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (2).png new file mode 100644 index 0000000000..dbb0a8cfba Binary files /dev/null and b/.gitbook/assets/delete-all-messages (2) (2) (2) (2) (2) (4) (4) (1) (2).png differ diff --git a/.gitbook/assets/device settings button.png b/.gitbook/assets/device settings button.png new file mode 100644 index 0000000000..58a45be051 Binary files /dev/null and b/.gitbook/assets/device settings button.png differ diff --git a/.gitbook/assets/device settings.png b/.gitbook/assets/device settings.png new file mode 100644 index 0000000000..149824ff13 Binary files /dev/null and b/.gitbook/assets/device settings.png differ diff --git a/.gitbook/assets/direct-message icon.png b/.gitbook/assets/direct-message icon.png new file mode 100644 index 0000000000..54087909fc Binary files /dev/null and b/.gitbook/assets/direct-message icon.png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (1).png similarity index 100% rename from .gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1).png rename to .gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (1).png diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (2).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (10).png similarity index 100% rename from .gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (2).png rename to .gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (10).png diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (6).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (11).png similarity index 100% rename from .gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (6).png rename to .gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (11).png diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (12).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (12).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (12).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (2).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (2).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (2).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (3).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (3).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (3).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (4).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (4).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (4).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (5).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (5).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (5).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (6).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (6).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (6).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (7).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (7).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (7).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (8).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (8).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (8).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (9).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (9).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11) (9).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (11).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (3).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (4).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (5).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (6).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (6).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (7).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (7).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (8).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (8).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (9).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (9).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (10).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (10).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (10).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (11).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (11).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (11).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (2).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (2).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (3).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (3).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (4).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (4).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (5).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (5).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (6).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (6).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (7).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (7).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (8).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (8).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (9).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (9).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (11).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (11).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (11).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (12).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (12).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (12).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (2).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (2).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (2).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (3).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (3).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (3).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (4).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (4).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (4).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (5).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (5).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (5).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (6).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (6).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (6).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (7).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (7).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (7).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (8).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (8).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (8).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (9).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (9).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1) (9).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (1).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (1).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (1).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (1).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (10).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (10).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (10).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (11).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (11).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (11).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (2).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (2).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (2).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (3).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (3).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (3).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (4).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (4).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (4).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (5).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (5).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (5).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (6).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (6).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (6).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (7).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (7).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (7).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (8).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (8).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (8).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (9).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (9).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (3) (9).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (4).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (4).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (4).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (5).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (5).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (5).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (6).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (6).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (6).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (7).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (7).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (7).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (8).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (8).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (8).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (9).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (9).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10) (9).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (10).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (2).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (2).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (2).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (3).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (3).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (3).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (4).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (4).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (5).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (5).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (5).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (6).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (6).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (6).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (7).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (7).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (7).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (8).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (8).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (8).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (9).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (9).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4) (9).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (5).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (5).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (6).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (6).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (7).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (7).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (8).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (8).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (9).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (9).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (1).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (2).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (2).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (2).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (3).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (3).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (3).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (4).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (4).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (4).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (5).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (5).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (5).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (6).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (6).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (6).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (7).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (7).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (7).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (8).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (8).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (8).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (9).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (9).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1) (9).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (1).png differ diff --git a/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (2).png b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (2).png new file mode 100644 index 0000000000..400e345548 Binary files /dev/null and b/.gitbook/assets/disabled-switch (2) (2) (2) (2) (2) (3) (3) (3) (3) (3) (3) (3) (4) (1) (2).png differ diff --git a/.gitbook/assets/disabledform.png b/.gitbook/assets/disabledform.png new file mode 100644 index 0000000000..fdca7f7005 Binary files /dev/null and b/.gitbook/assets/disabledform.png differ diff --git a/.gitbook/assets/discussion-icon.png b/.gitbook/assets/discussion-icon.png new file mode 100644 index 0000000000..31ae0ebad4 Binary files /dev/null and b/.gitbook/assets/discussion-icon.png differ diff --git a/.gitbook/assets/editing_dendrite_yaml (1).png b/.gitbook/assets/editing_dendrite_yaml (1).png new file mode 100644 index 0000000000..4b76e8cf45 Binary files /dev/null and b/.gitbook/assets/editing_dendrite_yaml (1).png differ diff --git a/.gitbook/assets/editing_dendrite_yaml (2).png b/.gitbook/assets/editing_dendrite_yaml (2).png new file mode 100644 index 0000000000..4b76e8cf45 Binary files /dev/null and b/.gitbook/assets/editing_dendrite_yaml (2).png differ diff --git a/.gitbook/assets/editing_dendrite_yaml.png b/.gitbook/assets/editing_dendrite_yaml.png new file mode 100644 index 0000000000..4dd56e0b19 Binary files /dev/null and b/.gitbook/assets/editing_dendrite_yaml.png differ diff --git a/.gitbook/assets/editing_rocketchat_registration_yaml (1).png b/.gitbook/assets/editing_rocketchat_registration_yaml (1).png new file mode 100644 index 0000000000..23ac23e77c Binary files /dev/null and b/.gitbook/assets/editing_rocketchat_registration_yaml (1).png differ diff --git a/.gitbook/assets/editing_rocketchat_registration_yaml.png b/.gitbook/assets/editing_rocketchat_registration_yaml.png new file mode 100644 index 0000000000..b3d7ad43b1 Binary files /dev/null and b/.gitbook/assets/editing_rocketchat_registration_yaml.png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (1).png similarity index 100% rename from .gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1).png rename to .gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (1).png diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (10).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (10).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (10).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (11).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (11).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (11).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (12).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (12).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (12).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (13).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (13).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (13).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (2).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (2).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (2).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (3).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (3).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (3).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (4).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (4).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (4).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (5).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (5).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (5).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (6).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (6).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (6).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (7).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (7).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (7).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (8).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (8).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (8).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (9).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (9).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (9).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (2).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (2).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (3).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (4).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (5).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (6).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (6).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (7).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (7).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (8).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (8).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (9).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (9).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (10).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (10).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (10).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (11).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (11).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (11).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (12).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (12).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (12).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (2).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (2).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (3).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (3).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (4).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (4).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (5).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (5).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (6).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (6).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (7).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (7).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (8).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (8).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (9).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (9).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (11).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (11).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (11).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (12).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (12).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (12).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (13).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (13).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (13).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (2).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (2).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (2).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (3).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (3).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (3).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (4).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (4).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (4).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (5).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (5).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (5).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (6).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (6).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (6).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (7).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (7).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (7).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (8).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (8).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (8).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (9).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (9).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1) (9).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (1).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (1).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (1).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (1).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (10).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (10).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (10).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (11).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (11).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (11).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (12).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (12).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (12).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (2).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (2).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (2).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (3).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (3).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (3).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (4).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (4).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (4).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (5).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (5).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (5).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (6).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (6).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (6).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (7).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (7).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (7).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (8).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (8).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (8).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (9).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (9).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (11) (9).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (12).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (12).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (12).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (2).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (2).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (2).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (3).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (3).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (3).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (4).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (4).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (4).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (5).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (5).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (5).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (6).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (6).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (6).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (7).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (7).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (7).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (8).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (8).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (8).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (9).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (9).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10) (9).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (10).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (11).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (11).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (11).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (2).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (2).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (2).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (3).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (3).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (3).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (4).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (5).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (5).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (5).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (6).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (6).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (6).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (7).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (7).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (7).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (8).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (8).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (8).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (9).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (9).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3) (9).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (4).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (5).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (6).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (6).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (7).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (7).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (8).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (8).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (9).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (9).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (10).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (10).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (10).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (2).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (2).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (3).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (3).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (4).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (4).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (5).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (5).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (6).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (6).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (7).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (7).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (8).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (8).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (9).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (9).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (1).png differ diff --git a/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (2).png b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (2).png new file mode 100644 index 0000000000..0970bc2d8a Binary files /dev/null and b/.gitbook/assets/email-error (2) (2) (2) (2) (2) (4) (1) (1) (2).png differ diff --git a/.gitbook/assets/email_smtpconfiguration (1).png b/.gitbook/assets/email_smtpconfiguration (1).png new file mode 100644 index 0000000000..ee7860ca5d Binary files /dev/null and b/.gitbook/assets/email_smtpconfiguration (1).png differ diff --git a/.gitbook/assets/email_smtpconfiguration.png b/.gitbook/assets/email_smtpconfiguration.png new file mode 100644 index 0000000000..ee7860ca5d Binary files /dev/null and b/.gitbook/assets/email_smtpconfiguration.png differ diff --git a/.gitbook/assets/end-conversation.png b/.gitbook/assets/end-conversation.png new file mode 100644 index 0000000000..940035181f Binary files /dev/null and b/.gitbook/assets/end-conversation.png differ diff --git a/.gitbook/assets/enter your password instead.png b/.gitbook/assets/enter your password instead.png new file mode 100644 index 0000000000..6df48ca3f5 Binary files /dev/null and b/.gitbook/assets/enter your password instead.png differ diff --git a/.gitbook/assets/enterprise blue.png b/.gitbook/assets/enterprise blue.png new file mode 100644 index 0000000000..d03c21dd40 Binary files /dev/null and b/.gitbook/assets/enterprise blue.png differ diff --git a/.gitbook/assets/federationslashcommand (1).png b/.gitbook/assets/federationslashcommand (1).png new file mode 100644 index 0000000000..df36e9e0cf Binary files /dev/null and b/.gitbook/assets/federationslashcommand (1).png differ diff --git a/.gitbook/assets/federationslashcommand (2) (1).png b/.gitbook/assets/federationslashcommand (2) (1).png new file mode 100644 index 0000000000..7691bd8beb Binary files /dev/null and b/.gitbook/assets/federationslashcommand (2) (1).png differ diff --git a/.gitbook/assets/federationslashcommand (2).png b/.gitbook/assets/federationslashcommand (2).png new file mode 100644 index 0000000000..df36e9e0cf Binary files /dev/null and b/.gitbook/assets/federationslashcommand (2).png differ diff --git a/.gitbook/assets/federationslashcommand.png b/.gitbook/assets/federationslashcommand.png new file mode 100644 index 0000000000..7691bd8beb Binary files /dev/null and b/.gitbook/assets/federationslashcommand.png differ diff --git a/.gitbook/assets/file.drawing.svg b/.gitbook/assets/file.drawing.svg new file mode 100644 index 0000000000..06fcdfbb99 --- /dev/null +++ b/.gitbook/assets/file.drawing.svg @@ -0,0 +1,16 @@ + + + eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nCWNMVx1MDAwZYMwXGZFd06B0lx1MDAxNYHUkbE9XHUwMDAyY9UhXHImtVxicZRcdTAwMThoi3L3JsHbf37fPqq6XHUwMDE2/HUg+lrAR0mDo5e7aDLfwFx1MDAwNySbVteSXHUwMDAzrV5cdTAwMTXzzexC33XSuVYjv4jmVtFy1sDAXHUwMDAylkNcdTAwMTJcdTAwMWbPQpI2sORcXD1STkR7XHUwMDFjXHUwMDA3/GViV2Oak25cYvtNqll7Wu14J0M+f7tMZUSSYrk3oYF8/ohV/Fx1MDAwM1xi0Dm9In0= + + + + \ No newline at end of file diff --git a/.gitbook/assets/forward-chat.png b/.gitbook/assets/forward-chat.png new file mode 100644 index 0000000000..b01231d0a3 Binary files /dev/null and b/.gitbook/assets/forward-chat.png differ diff --git a/.gitbook/assets/generate certificate PBX.png b/.gitbook/assets/generate certificate PBX.png new file mode 100644 index 0000000000..13e2745cc1 Binary files /dev/null and b/.gitbook/assets/generate certificate PBX.png differ diff --git a/.gitbook/assets/gitpodfinal.png b/.gitbook/assets/gitpodfinal.PNG similarity index 100% rename from .gitbook/assets/gitpodfinal.png rename to .gitbook/assets/gitpodfinal.PNG diff --git a/.gitbook/assets/gitpodmessage.png b/.gitbook/assets/gitpodmessage.PNG similarity index 100% rename from .gitbook/assets/gitpodmessage.png rename to .gitbook/assets/gitpodmessage.PNG diff --git a/.gitbook/assets/gitpodrunning.png b/.gitbook/assets/gitpodrunning.PNG similarity index 100% rename from .gitbook/assets/gitpodrunning.png rename to .gitbook/assets/gitpodrunning.PNG diff --git a/.gitbook/assets/gitpodstart.png b/.gitbook/assets/gitpodstart.PNG similarity index 100% rename from .gitbook/assets/gitpodstart.png rename to .gitbook/assets/gitpodstart.PNG diff --git a/.gitbook/assets/hashtag icon.png b/.gitbook/assets/hashtag icon.png new file mode 100644 index 0000000000..7a5c4ca2f2 Binary files /dev/null and b/.gitbook/assets/hashtag icon.png differ diff --git a/.gitbook/assets/hubspot_disableoption.png b/.gitbook/assets/hubspot_disableoption.png new file mode 100644 index 0000000000..085b4181be Binary files /dev/null and b/.gitbook/assets/hubspot_disableoption.png differ diff --git a/.gitbook/assets/hubspot_uninstalloption.png b/.gitbook/assets/hubspot_uninstalloption.png new file mode 100644 index 0000000000..0f3a888a4e Binary files /dev/null and b/.gitbook/assets/hubspot_uninstalloption.png differ diff --git a/.gitbook/assets/hubspotappInstallScreen.png b/.gitbook/assets/hubspotappInstallScreen.png new file mode 100644 index 0000000000..11b7445f3c Binary files /dev/null and b/.gitbook/assets/hubspotappInstallScreen.png differ diff --git a/.gitbook/assets/ic_launcher-web (1).png b/.gitbook/assets/ic_launcher-web (1).png index e443bd84fc..884888b212 100644 Binary files a/.gitbook/assets/ic_launcher-web (1).png and b/.gitbook/assets/ic_launcher-web (1).png differ diff --git a/.gitbook/assets/ic_launcher-web (2).png b/.gitbook/assets/ic_launcher-web (2).png index 469e3e31ed..e443bd84fc 100644 Binary files a/.gitbook/assets/ic_launcher-web (2).png and b/.gitbook/assets/ic_launcher-web (2).png differ diff --git a/.gitbook/assets/ic_launcher-web.png b/.gitbook/assets/ic_launcher-web.png index 884888b212..469e3e31ed 100644 Binary files a/.gitbook/assets/ic_launcher-web.png and b/.gitbook/assets/ic_launcher-web.png differ diff --git a/.gitbook/assets/icon move back to queue.png b/.gitbook/assets/icon move back to queue.png new file mode 100644 index 0000000000..be6a1c611d Binary files /dev/null and b/.gitbook/assets/icon move back to queue.png differ diff --git a/.gitbook/assets/icon queue.png b/.gitbook/assets/icon queue.png new file mode 100644 index 0000000000..d22ecd1635 Binary files /dev/null and b/.gitbook/assets/icon queue.png differ diff --git a/.gitbook/assets/iframesetting_07062022.png b/.gitbook/assets/iframesetting_07062022.png new file mode 100644 index 0000000000..e10017c2c2 Binary files /dev/null and b/.gitbook/assets/iframesetting_07062022.png differ diff --git a/.gitbook/assets/image (1) (1).png b/.gitbook/assets/image (1) (1).png new file mode 100644 index 0000000000..2bff76626e Binary files /dev/null and b/.gitbook/assets/image (1) (1).png differ diff --git a/.gitbook/assets/image (1) (2) (1) (1).png b/.gitbook/assets/image (1) (2) (1) (1).png new file mode 100644 index 0000000000..d3ac30529a Binary files /dev/null and b/.gitbook/assets/image (1) (2) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (2) (1).png b/.gitbook/assets/image (1) (2) (1).png new file mode 100644 index 0000000000..0c6624dc58 Binary files /dev/null and b/.gitbook/assets/image (1) (2) (1).png differ diff --git a/.gitbook/assets/image (1) (2) (2).png b/.gitbook/assets/image (1) (2) (2).png new file mode 100644 index 0000000000..0c6624dc58 Binary files /dev/null and b/.gitbook/assets/image (1) (2) (2).png differ diff --git a/.gitbook/assets/image (1) (2).png b/.gitbook/assets/image (1) (2).png new file mode 100644 index 0000000000..9947d6edea Binary files /dev/null and b/.gitbook/assets/image (1) (2).png differ diff --git a/.gitbook/assets/image (1) (3).png b/.gitbook/assets/image (1) (3).png new file mode 100644 index 0000000000..71e4fc431d Binary files /dev/null and b/.gitbook/assets/image (1) (3).png differ diff --git a/.gitbook/assets/image (1) (4).png b/.gitbook/assets/image (1) (4).png new file mode 100644 index 0000000000..1de0f57016 Binary files /dev/null and b/.gitbook/assets/image (1) (4).png differ diff --git a/.gitbook/assets/image (1).png b/.gitbook/assets/image (1).png index 73618ec801..e1319c727c 100644 Binary files a/.gitbook/assets/image (1).png and b/.gitbook/assets/image (1).png differ diff --git a/.gitbook/assets/image (10) (1).png b/.gitbook/assets/image (10) (1).png new file mode 100644 index 0000000000..5affb50c9f Binary files /dev/null and b/.gitbook/assets/image (10) (1).png differ diff --git a/.gitbook/assets/image (10).png b/.gitbook/assets/image (10).png index 58678e6801..cfc3943639 100644 Binary files a/.gitbook/assets/image (10).png and b/.gitbook/assets/image (10).png differ diff --git a/.gitbook/assets/image (100).png b/.gitbook/assets/image (100).png index b73719abad..5e9a715ef9 100644 Binary files a/.gitbook/assets/image (100).png and b/.gitbook/assets/image (100).png differ diff --git a/.gitbook/assets/image (101).png b/.gitbook/assets/image (101).png index 821cf47992..678b9a755b 100644 Binary files a/.gitbook/assets/image (101).png and b/.gitbook/assets/image (101).png differ diff --git a/.gitbook/assets/image (102).png b/.gitbook/assets/image (102).png index e40aa58704..a6eac77e1b 100644 Binary files a/.gitbook/assets/image (102).png and b/.gitbook/assets/image (102).png differ diff --git a/.gitbook/assets/image (103).png b/.gitbook/assets/image (103).png index 26a7583506..584a6a4582 100644 Binary files a/.gitbook/assets/image (103).png and b/.gitbook/assets/image (103).png differ diff --git a/.gitbook/assets/image (104).png b/.gitbook/assets/image (104).png index 759b3d5837..6034762828 100644 Binary files a/.gitbook/assets/image (104).png and b/.gitbook/assets/image (104).png differ diff --git a/.gitbook/assets/image (105).png b/.gitbook/assets/image (105).png index 678b9a755b..a22b613ebb 100644 Binary files a/.gitbook/assets/image (105).png and b/.gitbook/assets/image (105).png differ diff --git a/.gitbook/assets/image (106).png b/.gitbook/assets/image (106).png index 35566ff5c3..d5cf889e77 100644 Binary files a/.gitbook/assets/image (106).png and b/.gitbook/assets/image (106).png differ diff --git a/.gitbook/assets/image (108).png b/.gitbook/assets/image (108).png index 6034762828..0decde2714 100644 Binary files a/.gitbook/assets/image (108).png and b/.gitbook/assets/image (108).png differ diff --git a/.gitbook/assets/image (109) (2).png b/.gitbook/assets/image (109) (2).png new file mode 100644 index 0000000000..cf0132ef74 Binary files /dev/null and b/.gitbook/assets/image (109) (2).png differ diff --git a/.gitbook/assets/image (109).png b/.gitbook/assets/image (109).png index 5e9a715ef9..511013e1a1 100644 Binary files a/.gitbook/assets/image (109).png and b/.gitbook/assets/image (109).png differ diff --git a/.gitbook/assets/image (11) (1).png b/.gitbook/assets/image (11) (1).png new file mode 100644 index 0000000000..8b7ad6cbf7 Binary files /dev/null and b/.gitbook/assets/image (11) (1).png differ diff --git a/.gitbook/assets/image (11).png b/.gitbook/assets/image (11).png index be0f63c6a3..f1d430fd4b 100644 Binary files a/.gitbook/assets/image (11).png and b/.gitbook/assets/image (11).png differ diff --git a/.gitbook/assets/image (110).png b/.gitbook/assets/image (110).png index 17c16e358b..099b394cf9 100644 Binary files a/.gitbook/assets/image (110).png and b/.gitbook/assets/image (110).png differ diff --git a/.gitbook/assets/image (112).png b/.gitbook/assets/image (112).png index a6eac77e1b..9a4c3a330e 100644 Binary files a/.gitbook/assets/image (112).png and b/.gitbook/assets/image (112).png differ diff --git a/.gitbook/assets/image (113).png b/.gitbook/assets/image (113).png index de903c3568..38f5749a9d 100644 Binary files a/.gitbook/assets/image (113).png and b/.gitbook/assets/image (113).png differ diff --git a/.gitbook/assets/image (114).png b/.gitbook/assets/image (114).png index 584a6a4582..d57a0545c7 100644 Binary files a/.gitbook/assets/image (114).png and b/.gitbook/assets/image (114).png differ diff --git a/.gitbook/assets/image (115) (2) (2) (2) (2) (2) (2) (2) (1) (2) (1) (2).png b/.gitbook/assets/image (115) (2) (2) (2) (2) (2) (2) (2) (1) (2) (1) (1) (1) (1) (1) (1) (1).png similarity index 100% rename from .gitbook/assets/image (115) (2) (2) (2) (2) (2) (2) (2) (1) (2) (1) (2).png rename to .gitbook/assets/image (115) (2) (2) (2) (2) (2) (2) (2) (1) (2) (1) (1) (1) (1) (1) (1) (1).png diff --git a/.gitbook/assets/image (115) (2) (2) (2) (2) (2) (2) (2) (1) (2) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (115) (2) (2) (2) (2) (2) (2) (2) (1) (2) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..4c9e83b6f3 Binary files /dev/null and b/.gitbook/assets/image (115) (2) (2) (2) (2) (2) (2) (2) (1) (2) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (115) (2) (2) (2) (2) (2) (2) (2) (1) (2) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (115) (2) (2) (2) (2) (2) (2) (2) (1) (2) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..4c9e83b6f3 Binary files /dev/null and b/.gitbook/assets/image (115) (2) (2) (2) (2) (2) (2) (2) (1) (2) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (115) (2) (2) (2) (2) (2) (2) (2) (1) (2) (1) (1) (1) (2).png b/.gitbook/assets/image (115) (2) (2) (2) (2) (2) (2) (2) (1) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..4c9e83b6f3 Binary files /dev/null and b/.gitbook/assets/image (115) (2) (2) (2) (2) (2) (2) (2) (1) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/image (115).png b/.gitbook/assets/image (115).png index c570acc5ac..2d3ac4b76b 100644 Binary files a/.gitbook/assets/image (115).png and b/.gitbook/assets/image (115).png differ diff --git a/.gitbook/assets/image (116).png b/.gitbook/assets/image (116).png index 952a9879b3..10f25d344a 100644 Binary files a/.gitbook/assets/image (116).png and b/.gitbook/assets/image (116).png differ diff --git a/.gitbook/assets/image (117).png b/.gitbook/assets/image (117).png index 0decde2714..4ea0dd2ef8 100644 Binary files a/.gitbook/assets/image (117).png and b/.gitbook/assets/image (117).png differ diff --git a/.gitbook/assets/image (118).png b/.gitbook/assets/image (118).png index a22b613ebb..0a6df7e644 100644 Binary files a/.gitbook/assets/image (118).png and b/.gitbook/assets/image (118).png differ diff --git a/.gitbook/assets/image (119).png b/.gitbook/assets/image (119).png index d5cf889e77..06505a2fba 100644 Binary files a/.gitbook/assets/image (119).png and b/.gitbook/assets/image (119).png differ diff --git a/.gitbook/assets/image (12) (1).png b/.gitbook/assets/image (12) (1).png new file mode 100644 index 0000000000..d37f3a00d0 Binary files /dev/null and b/.gitbook/assets/image (12) (1).png differ diff --git a/.gitbook/assets/image (12) (2).png b/.gitbook/assets/image (12) (2).png new file mode 100644 index 0000000000..6ad52501b4 Binary files /dev/null and b/.gitbook/assets/image (12) (2).png differ diff --git a/.gitbook/assets/image (12).png b/.gitbook/assets/image (12).png index 10f1ba9437..96d2a63113 100644 Binary files a/.gitbook/assets/image (12).png and b/.gitbook/assets/image (12).png differ diff --git a/.gitbook/assets/image (120).png b/.gitbook/assets/image (120).png index 49382211e1..161a3f4181 100644 Binary files a/.gitbook/assets/image (120).png and b/.gitbook/assets/image (120).png differ diff --git a/.gitbook/assets/image (121).png b/.gitbook/assets/image (121).png index 0014acd6a1..634eab1fc6 100644 Binary files a/.gitbook/assets/image (121).png and b/.gitbook/assets/image (121).png differ diff --git a/.gitbook/assets/image (122).png b/.gitbook/assets/image (122).png index 9e94aede36..bb44a9aba8 100644 Binary files a/.gitbook/assets/image (122).png and b/.gitbook/assets/image (122).png differ diff --git a/.gitbook/assets/image (123).png b/.gitbook/assets/image (123).png index c427bc47ed..44463b15e0 100644 Binary files a/.gitbook/assets/image (123).png and b/.gitbook/assets/image (123).png differ diff --git a/.gitbook/assets/image (124).png b/.gitbook/assets/image (124).png index 66fdad6db2..9c4eb00658 100644 Binary files a/.gitbook/assets/image (124).png and b/.gitbook/assets/image (124).png differ diff --git a/.gitbook/assets/image (125).png b/.gitbook/assets/image (125).png index 099b394cf9..617d3fd3a1 100644 Binary files a/.gitbook/assets/image (125).png and b/.gitbook/assets/image (125).png differ diff --git a/.gitbook/assets/image (126).png b/.gitbook/assets/image (126).png index 9a4c3a330e..f5e16d83f1 100644 Binary files a/.gitbook/assets/image (126).png and b/.gitbook/assets/image (126).png differ diff --git a/.gitbook/assets/image (127).png b/.gitbook/assets/image (127).png index bb44a9aba8..46c0bff8c9 100644 Binary files a/.gitbook/assets/image (127).png and b/.gitbook/assets/image (127).png differ diff --git a/.gitbook/assets/image (128).png b/.gitbook/assets/image (128).png index f5e16d83f1..826a48d9d7 100644 Binary files a/.gitbook/assets/image (128).png and b/.gitbook/assets/image (128).png differ diff --git a/.gitbook/assets/image (129).png b/.gitbook/assets/image (129).png index 92a6c84020..71b0faa0d1 100644 Binary files a/.gitbook/assets/image (129).png and b/.gitbook/assets/image (129).png differ diff --git a/.gitbook/assets/image (13).png b/.gitbook/assets/image (13).png index 22c3d64da3..3491af64b0 100644 Binary files a/.gitbook/assets/image (13).png and b/.gitbook/assets/image (13).png differ diff --git a/.gitbook/assets/image (130).png b/.gitbook/assets/image (130).png index 0a6df7e644..68fbc24b47 100644 Binary files a/.gitbook/assets/image (130).png and b/.gitbook/assets/image (130).png differ diff --git a/.gitbook/assets/image (131).png b/.gitbook/assets/image (131).png index 634eab1fc6..b542f1b0a3 100644 Binary files a/.gitbook/assets/image (131).png and b/.gitbook/assets/image (131).png differ diff --git a/.gitbook/assets/image (132).png b/.gitbook/assets/image (132).png index 38f5749a9d..351ace7053 100644 Binary files a/.gitbook/assets/image (132).png and b/.gitbook/assets/image (132).png differ diff --git a/.gitbook/assets/image (133).png b/.gitbook/assets/image (133).png index 06505a2fba..475f02239b 100644 Binary files a/.gitbook/assets/image (133).png and b/.gitbook/assets/image (133).png differ diff --git a/.gitbook/assets/image (134).png b/.gitbook/assets/image (134).png index d57a0545c7..57b0138ae7 100644 Binary files a/.gitbook/assets/image (134).png and b/.gitbook/assets/image (134).png differ diff --git a/.gitbook/assets/image (135).png b/.gitbook/assets/image (135).png index 9c4eb00658..105eff0fe9 100644 Binary files a/.gitbook/assets/image (135).png and b/.gitbook/assets/image (135).png differ diff --git a/.gitbook/assets/image (136).png b/.gitbook/assets/image (136).png index 46c0bff8c9..73618ec801 100644 Binary files a/.gitbook/assets/image (136).png and b/.gitbook/assets/image (136).png differ diff --git a/.gitbook/assets/image (137).png b/.gitbook/assets/image (137).png index a1c740047e..df24dfebfa 100644 Binary files a/.gitbook/assets/image (137).png and b/.gitbook/assets/image (137).png differ diff --git a/.gitbook/assets/image (138).png b/.gitbook/assets/image (138).png index 617d3fd3a1..85fc4257dc 100644 Binary files a/.gitbook/assets/image (138).png and b/.gitbook/assets/image (138).png differ diff --git a/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1).png b/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1).png similarity index 100% rename from .gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1).png rename to .gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1).png diff --git a/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (2).png b/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (2).png similarity index 100% rename from .gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (2).png rename to .gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (2).png diff --git a/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (3).png b/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..797087d6e6 Binary files /dev/null and b/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..797087d6e6 Binary files /dev/null and b/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (1).png b/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (1).png new file mode 100644 index 0000000000..797087d6e6 Binary files /dev/null and b/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (2) (1) (2).png b/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (2) (1) (2).png new file mode 100644 index 0000000000..797087d6e6 Binary files /dev/null and b/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (2) (1) (2).png differ diff --git a/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (2) (1).png b/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (2) (1).png new file mode 100644 index 0000000000..797087d6e6 Binary files /dev/null and b/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (2) (1).png differ diff --git a/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (2) (2).png b/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (2) (2).png new file mode 100644 index 0000000000..797087d6e6 Binary files /dev/null and b/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1) (2) (2).png differ diff --git a/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1).png b/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1).png new file mode 100644 index 0000000000..797087d6e6 Binary files /dev/null and b/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (1).png differ diff --git a/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (2).png b/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (2).png new file mode 100644 index 0000000000..797087d6e6 Binary files /dev/null and b/.gitbook/assets/image (139) (1) (2) (2) (2) (2) (2) (2) (1) (2).png differ diff --git a/.gitbook/assets/image (139).png b/.gitbook/assets/image (139).png index a09c281077..8a8e4932d6 100644 Binary files a/.gitbook/assets/image (139).png and b/.gitbook/assets/image (139).png differ diff --git a/.gitbook/assets/image (14) (1).png b/.gitbook/assets/image (14) (1).png new file mode 100644 index 0000000000..fa88bc51b7 Binary files /dev/null and b/.gitbook/assets/image (14) (1).png differ diff --git a/.gitbook/assets/image (14) (2).png b/.gitbook/assets/image (14) (2).png new file mode 100644 index 0000000000..58678e6801 Binary files /dev/null and b/.gitbook/assets/image (14) (2).png differ diff --git a/.gitbook/assets/image (14).png b/.gitbook/assets/image (14).png index 96d2a63113..f1c08f4491 100644 Binary files a/.gitbook/assets/image (14).png and b/.gitbook/assets/image (14).png differ diff --git a/.gitbook/assets/image (140).png b/.gitbook/assets/image (140).png index 2d3ac4b76b..a1c740047e 100644 Binary files a/.gitbook/assets/image (140).png and b/.gitbook/assets/image (140).png differ diff --git a/.gitbook/assets/image (141).png b/.gitbook/assets/image (141).png index 826a48d9d7..aa2c77b1b1 100644 Binary files a/.gitbook/assets/image (141).png and b/.gitbook/assets/image (141).png differ diff --git a/.gitbook/assets/image (142).png b/.gitbook/assets/image (142).png index 44463b15e0..4f8b6ded65 100644 Binary files a/.gitbook/assets/image (142).png and b/.gitbook/assets/image (142).png differ diff --git a/.gitbook/assets/image (143).png b/.gitbook/assets/image (143).png index 161a3f4181..f3e18a5ecf 100644 Binary files a/.gitbook/assets/image (143).png and b/.gitbook/assets/image (143).png differ diff --git a/.gitbook/assets/image (144).png b/.gitbook/assets/image (144).png index 5fb2954086..66fdad6db2 100644 Binary files a/.gitbook/assets/image (144).png and b/.gitbook/assets/image (144).png differ diff --git a/.gitbook/assets/image (145).png b/.gitbook/assets/image (145).png index 10f25d344a..9e94aede36 100644 Binary files a/.gitbook/assets/image (145).png and b/.gitbook/assets/image (145).png differ diff --git a/.gitbook/assets/image (146).png b/.gitbook/assets/image (146).png index 4ea0dd2ef8..5fb2954086 100644 Binary files a/.gitbook/assets/image (146).png and b/.gitbook/assets/image (146).png differ diff --git a/.gitbook/assets/image (147).png b/.gitbook/assets/image (147).png index 71b0faa0d1..0014acd6a1 100644 Binary files a/.gitbook/assets/image (147).png and b/.gitbook/assets/image (147).png differ diff --git a/.gitbook/assets/image (148).png b/.gitbook/assets/image (148).png index b542f1b0a3..702e7cb590 100644 Binary files a/.gitbook/assets/image (148).png and b/.gitbook/assets/image (148).png differ diff --git a/.gitbook/assets/image (149).png b/.gitbook/assets/image (149).png index 68fbc24b47..af1258887f 100644 Binary files a/.gitbook/assets/image (149).png and b/.gitbook/assets/image (149).png differ diff --git a/.gitbook/assets/image (15) (1) (1).png b/.gitbook/assets/image (15) (1) (1).png new file mode 100644 index 0000000000..80f054595f Binary files /dev/null and b/.gitbook/assets/image (15) (1) (1).png differ diff --git a/.gitbook/assets/image (15) (1).png b/.gitbook/assets/image (15) (1).png new file mode 100644 index 0000000000..4e7904bf8e Binary files /dev/null and b/.gitbook/assets/image (15) (1).png differ diff --git a/.gitbook/assets/image (15).png b/.gitbook/assets/image (15).png index bbf2a1e7bc..e64df20b79 100644 Binary files a/.gitbook/assets/image (15).png and b/.gitbook/assets/image (15).png differ diff --git a/.gitbook/assets/image (150).png b/.gitbook/assets/image (150).png index 105eff0fe9..760973c789 100644 Binary files a/.gitbook/assets/image (150).png and b/.gitbook/assets/image (150).png differ diff --git a/.gitbook/assets/image (151).png b/.gitbook/assets/image (151).png index 57b0138ae7..d07cd3ed4b 100644 Binary files a/.gitbook/assets/image (151).png and b/.gitbook/assets/image (151).png differ diff --git a/.gitbook/assets/image (152).png b/.gitbook/assets/image (152).png index 475f02239b..6943ccd44a 100644 Binary files a/.gitbook/assets/image (152).png and b/.gitbook/assets/image (152).png differ diff --git a/.gitbook/assets/image (153).png b/.gitbook/assets/image (153).png index 351ace7053..ca2aae7e24 100644 Binary files a/.gitbook/assets/image (153).png and b/.gitbook/assets/image (153).png differ diff --git a/.gitbook/assets/image (154).png b/.gitbook/assets/image (154).png index af1258887f..99f45a66ab 100644 Binary files a/.gitbook/assets/image (154).png and b/.gitbook/assets/image (154).png differ diff --git a/.gitbook/assets/image (155).png b/.gitbook/assets/image (155).png index 760973c789..19cc6e328e 100644 Binary files a/.gitbook/assets/image (155).png and b/.gitbook/assets/image (155).png differ diff --git a/.gitbook/assets/image (156).png b/.gitbook/assets/image (156).png index 19cc6e328e..3d263b8491 100644 Binary files a/.gitbook/assets/image (156).png and b/.gitbook/assets/image (156).png differ diff --git a/.gitbook/assets/image (157).png b/.gitbook/assets/image (157).png index 3d263b8491..ac693c9c63 100644 Binary files a/.gitbook/assets/image (157).png and b/.gitbook/assets/image (157).png differ diff --git a/.gitbook/assets/image (158).png b/.gitbook/assets/image (158).png index ac693c9c63..a5299c5d4d 100644 Binary files a/.gitbook/assets/image (158).png and b/.gitbook/assets/image (158).png differ diff --git a/.gitbook/assets/image (159).png b/.gitbook/assets/image (159).png index 157a9281a0..93bca7a392 100644 Binary files a/.gitbook/assets/image (159).png and b/.gitbook/assets/image (159).png differ diff --git a/.gitbook/assets/image (16) (1).png b/.gitbook/assets/image (16) (1).png new file mode 100644 index 0000000000..5b624f266a Binary files /dev/null and b/.gitbook/assets/image (16) (1).png differ diff --git a/.gitbook/assets/image (16).png b/.gitbook/assets/image (16).png index 2228b85fb8..b628e4433e 100644 Binary files a/.gitbook/assets/image (16).png and b/.gitbook/assets/image (16).png differ diff --git a/.gitbook/assets/image (160).png b/.gitbook/assets/image (160).png index ca2aae7e24..ea684123f3 100644 Binary files a/.gitbook/assets/image (160).png and b/.gitbook/assets/image (160).png differ diff --git a/.gitbook/assets/image (161).png b/.gitbook/assets/image (161).png index a5299c5d4d..157a9281a0 100644 Binary files a/.gitbook/assets/image (161).png and b/.gitbook/assets/image (161).png differ diff --git a/.gitbook/assets/image (162).png b/.gitbook/assets/image (162).png index 99f45a66ab..753ae1251d 100644 Binary files a/.gitbook/assets/image (162).png and b/.gitbook/assets/image (162).png differ diff --git a/.gitbook/assets/image (163).png b/.gitbook/assets/image (163).png index 6943ccd44a..bba887e0bf 100644 Binary files a/.gitbook/assets/image (163).png and b/.gitbook/assets/image (163).png differ diff --git a/.gitbook/assets/image (164).png b/.gitbook/assets/image (164).png index ea684123f3..934a576ef0 100644 Binary files a/.gitbook/assets/image (164).png and b/.gitbook/assets/image (164).png differ diff --git a/.gitbook/assets/image (165).png b/.gitbook/assets/image (165).png index d07cd3ed4b..78800063ca 100644 Binary files a/.gitbook/assets/image (165).png and b/.gitbook/assets/image (165).png differ diff --git a/.gitbook/assets/image (166).png b/.gitbook/assets/image (166).png index 93bca7a392..6cfc4208e2 100644 Binary files a/.gitbook/assets/image (166).png and b/.gitbook/assets/image (166).png differ diff --git a/.gitbook/assets/image (167).png b/.gitbook/assets/image (167).png index 753ae1251d..ef09127104 100644 Binary files a/.gitbook/assets/image (167).png and b/.gitbook/assets/image (167).png differ diff --git a/.gitbook/assets/image (168).png b/.gitbook/assets/image (168).png index 934a576ef0..4513d1dbb8 100644 Binary files a/.gitbook/assets/image (168).png and b/.gitbook/assets/image (168).png differ diff --git a/.gitbook/assets/image (169).png b/.gitbook/assets/image (169).png index ef09127104..8a0039b272 100644 Binary files a/.gitbook/assets/image (169).png and b/.gitbook/assets/image (169).png differ diff --git a/.gitbook/assets/image (17).png b/.gitbook/assets/image (17).png index b628e4433e..7bd929925d 100644 Binary files a/.gitbook/assets/image (17).png and b/.gitbook/assets/image (17).png differ diff --git a/.gitbook/assets/image (170).png b/.gitbook/assets/image (170).png index bba887e0bf..a0f3afe635 100644 Binary files a/.gitbook/assets/image (170).png and b/.gitbook/assets/image (170).png differ diff --git a/.gitbook/assets/image (171).png b/.gitbook/assets/image (171).png index 78800063ca..d14afe6ac3 100644 Binary files a/.gitbook/assets/image (171).png and b/.gitbook/assets/image (171).png differ diff --git a/.gitbook/assets/image (172).png b/.gitbook/assets/image (172).png index 4513d1dbb8..90dc5304ed 100644 Binary files a/.gitbook/assets/image (172).png and b/.gitbook/assets/image (172).png differ diff --git a/.gitbook/assets/image (173).png b/.gitbook/assets/image (173).png index 6cfc4208e2..81615d149a 100644 Binary files a/.gitbook/assets/image (173).png and b/.gitbook/assets/image (173).png differ diff --git a/.gitbook/assets/image (174).png b/.gitbook/assets/image (174).png index 81615d149a..e5912fb1bf 100644 Binary files a/.gitbook/assets/image (174).png and b/.gitbook/assets/image (174).png differ diff --git a/.gitbook/assets/image (175).png b/.gitbook/assets/image (175).png index 8a0039b272..c570acc5ac 100644 Binary files a/.gitbook/assets/image (175).png and b/.gitbook/assets/image (175).png differ diff --git a/.gitbook/assets/image (176).png b/.gitbook/assets/image (176).png index a23324d0d2..92a6c84020 100644 Binary files a/.gitbook/assets/image (176).png and b/.gitbook/assets/image (176).png differ diff --git a/.gitbook/assets/image (177).png b/.gitbook/assets/image (177).png index d14afe6ac3..a09c281077 100644 Binary files a/.gitbook/assets/image (177).png and b/.gitbook/assets/image (177).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png similarity index 100% rename from .gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1).png rename to .gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (2).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png similarity index 100% rename from .gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (2).png rename to .gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (1).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (2).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (3).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (4).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (4).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (3).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (3).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (3).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (4).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (4).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (4).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (5).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (5).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1) (5).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (2) (1).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (3) (1).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (3) (1).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (3) (1).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (3) (2).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (3) (2).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (3) (2).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (3) (3).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (3) (3).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (3) (3).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (3) (4).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (3) (4).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (3) (4).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (3) (5).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (3) (5).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (3) (5).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (4).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (4).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (5).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (5).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4) (5).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (2).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (2).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (2).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (3).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (3).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (3).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (4).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (4).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1) (4).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (1).png differ diff --git a/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (2).png b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (2).png new file mode 100644 index 0000000000..1f254e3aac Binary files /dev/null and b/.gitbook/assets/image (178) (3) (3) (3) (3) (3) (2) (1) (2).png differ diff --git a/.gitbook/assets/image (178).png b/.gitbook/assets/image (178).png index 67d0de8c4f..3eb7153577 100644 Binary files a/.gitbook/assets/image (178).png and b/.gitbook/assets/image (178).png differ diff --git a/.gitbook/assets/image (179).png b/.gitbook/assets/image (179).png index a0f3afe635..a23324d0d2 100644 Binary files a/.gitbook/assets/image (179).png and b/.gitbook/assets/image (179).png differ diff --git a/.gitbook/assets/image (18) (1).png b/.gitbook/assets/image (18) (1).png new file mode 100644 index 0000000000..581e6acb3f Binary files /dev/null and b/.gitbook/assets/image (18) (1).png differ diff --git a/.gitbook/assets/image (18).png b/.gitbook/assets/image (18).png index e64df20b79..d212ec12e2 100644 Binary files a/.gitbook/assets/image (18).png and b/.gitbook/assets/image (18).png differ diff --git a/.gitbook/assets/image (180).png b/.gitbook/assets/image (180).png index 90dc5304ed..b08ed11c93 100644 Binary files a/.gitbook/assets/image (180).png and b/.gitbook/assets/image (180).png differ diff --git a/.gitbook/assets/image (181).png b/.gitbook/assets/image (181).png index b047e3b4c6..aeb3a86eb3 100644 Binary files a/.gitbook/assets/image (181).png and b/.gitbook/assets/image (181).png differ diff --git a/.gitbook/assets/image (182).png b/.gitbook/assets/image (182).png index b9e00f5bcf..9382106610 100644 Binary files a/.gitbook/assets/image (182).png and b/.gitbook/assets/image (182).png differ diff --git a/.gitbook/assets/image (183).png b/.gitbook/assets/image (183).png index 9382106610..395e8c479d 100644 Binary files a/.gitbook/assets/image (183).png and b/.gitbook/assets/image (183).png differ diff --git a/.gitbook/assets/image (184).png b/.gitbook/assets/image (184).png index aeb3a86eb3..fc04d2621f 100644 Binary files a/.gitbook/assets/image (184).png and b/.gitbook/assets/image (184).png differ diff --git a/.gitbook/assets/image (185) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2).png b/.gitbook/assets/image (185) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1).png similarity index 100% rename from .gitbook/assets/image (185) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2).png rename to .gitbook/assets/image (185) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1).png diff --git a/.gitbook/assets/image (185) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (185) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..32a85e3d3e Binary files /dev/null and b/.gitbook/assets/image (185) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (185) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1).png b/.gitbook/assets/image (185) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..32a85e3d3e Binary files /dev/null and b/.gitbook/assets/image (185) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (185) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (2).png b/.gitbook/assets/image (185) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (2).png new file mode 100644 index 0000000000..32a85e3d3e Binary files /dev/null and b/.gitbook/assets/image (185) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (2).png differ diff --git a/.gitbook/assets/image (185).png b/.gitbook/assets/image (185).png index 1f8c54a5e7..8c7960a13c 100644 Binary files a/.gitbook/assets/image (185).png and b/.gitbook/assets/image (185).png differ diff --git a/.gitbook/assets/image (186) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (2).png b/.gitbook/assets/image (186) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1).png similarity index 100% rename from .gitbook/assets/image (186) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (2).png rename to .gitbook/assets/image (186) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1).png diff --git a/.gitbook/assets/image (186) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (186) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..1d499973b7 Binary files /dev/null and b/.gitbook/assets/image (186) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (186) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (186) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..1d499973b7 Binary files /dev/null and b/.gitbook/assets/image (186) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (186) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (2).png b/.gitbook/assets/image (186) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..1d499973b7 Binary files /dev/null and b/.gitbook/assets/image (186) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/image (186).png b/.gitbook/assets/image (186).png index a80e76b866..6e6c71d340 100644 Binary files a/.gitbook/assets/image (186).png and b/.gitbook/assets/image (186).png differ diff --git a/.gitbook/assets/image (187).png b/.gitbook/assets/image (187).png index 395e8c479d..c6683df99b 100644 Binary files a/.gitbook/assets/image (187).png and b/.gitbook/assets/image (187).png differ diff --git a/.gitbook/assets/image (188).png b/.gitbook/assets/image (188).png index fc04d2621f..c83fe6152f 100644 Binary files a/.gitbook/assets/image (188).png and b/.gitbook/assets/image (188).png differ diff --git a/.gitbook/assets/image (189).png b/.gitbook/assets/image (189).png index c6683df99b..38bc635751 100644 Binary files a/.gitbook/assets/image (189).png and b/.gitbook/assets/image (189).png differ diff --git a/.gitbook/assets/image (19) (2) (2) (2) (1) (2).png b/.gitbook/assets/image (19) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1).png similarity index 100% rename from .gitbook/assets/image (19) (2) (2) (2) (1) (2).png rename to .gitbook/assets/image (19) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1).png diff --git a/.gitbook/assets/image (19) (2) (2) (2) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (19) (2) (2) (2) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..1d7104523c Binary files /dev/null and b/.gitbook/assets/image (19) (2) (2) (2) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (19) (2) (2) (2) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (19) (2) (2) (2) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..1d7104523c Binary files /dev/null and b/.gitbook/assets/image (19) (2) (2) (2) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (19) (2) (2) (2) (1) (1) (1) (2).png b/.gitbook/assets/image (19) (2) (2) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..1d7104523c Binary files /dev/null and b/.gitbook/assets/image (19) (2) (2) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/image (19).png b/.gitbook/assets/image (19).png index ec421d59a1..8a2968e90a 100644 Binary files a/.gitbook/assets/image (19).png and b/.gitbook/assets/image (19).png differ diff --git a/.gitbook/assets/image (190).png b/.gitbook/assets/image (190).png index 29ea4d7ba1..3db0007c04 100644 Binary files a/.gitbook/assets/image (190).png and b/.gitbook/assets/image (190).png differ diff --git a/.gitbook/assets/image (191).png b/.gitbook/assets/image (191).png index 38bc635751..f1a1cf6c56 100644 Binary files a/.gitbook/assets/image (191).png and b/.gitbook/assets/image (191).png differ diff --git a/.gitbook/assets/image (192) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2).png b/.gitbook/assets/image (192) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1).png similarity index 100% rename from .gitbook/assets/image (192) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2).png rename to .gitbook/assets/image (192) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1).png diff --git a/.gitbook/assets/image (192) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (192) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..4069de570e Binary files /dev/null and b/.gitbook/assets/image (192) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (192) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1).png b/.gitbook/assets/image (192) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..4069de570e Binary files /dev/null and b/.gitbook/assets/image (192) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (192) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (2).png b/.gitbook/assets/image (192) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (2).png new file mode 100644 index 0000000000..4069de570e Binary files /dev/null and b/.gitbook/assets/image (192) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (2).png differ diff --git a/.gitbook/assets/image (192).png b/.gitbook/assets/image (192).png index a2702945f9..c9360fc756 100644 Binary files a/.gitbook/assets/image (192).png and b/.gitbook/assets/image (192).png differ diff --git a/.gitbook/assets/image (193).png b/.gitbook/assets/image (193).png index c83fe6152f..28af672fbd 100644 Binary files a/.gitbook/assets/image (193).png and b/.gitbook/assets/image (193).png differ diff --git a/.gitbook/assets/image (194).png b/.gitbook/assets/image (194).png index 3db0007c04..6ca4ddb994 100644 Binary files a/.gitbook/assets/image (194).png and b/.gitbook/assets/image (194).png differ diff --git a/.gitbook/assets/image (195).png b/.gitbook/assets/image (195).png index 8c7960a13c..3c50931f8e 100644 Binary files a/.gitbook/assets/image (195).png and b/.gitbook/assets/image (195).png differ diff --git a/.gitbook/assets/image (196).png b/.gitbook/assets/image (196).png index 6e6c71d340..8b30fe0695 100644 Binary files a/.gitbook/assets/image (196).png and b/.gitbook/assets/image (196).png differ diff --git a/.gitbook/assets/image (197).png b/.gitbook/assets/image (197).png index c9360fc756..c0785b3d17 100644 Binary files a/.gitbook/assets/image (197).png and b/.gitbook/assets/image (197).png differ diff --git a/.gitbook/assets/image (198).png b/.gitbook/assets/image (198).png index f1a1cf6c56..20aecf88f0 100644 Binary files a/.gitbook/assets/image (198).png and b/.gitbook/assets/image (198).png differ diff --git a/.gitbook/assets/image (199).png b/.gitbook/assets/image (199).png index 28af672fbd..f60f5ff97d 100644 Binary files a/.gitbook/assets/image (199).png and b/.gitbook/assets/image (199).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..ec1be0b5de Binary files /dev/null and b/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..ec1be0b5de Binary files /dev/null and b/.gitbook/assets/image (2) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (1) (1).png b/.gitbook/assets/image (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..ec1be0b5de Binary files /dev/null and b/.gitbook/assets/image (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (2) (1) (1) (2).png b/.gitbook/assets/image (2) (1) (1) (2).png new file mode 100644 index 0000000000..ec1be0b5de Binary files /dev/null and b/.gitbook/assets/image (2) (1) (1) (2).png differ diff --git a/.gitbook/assets/image (2) (1) (2).png b/.gitbook/assets/image (2) (1) (2).png new file mode 100644 index 0000000000..ec1be0b5de Binary files /dev/null and b/.gitbook/assets/image (2) (1) (2).png differ diff --git a/.gitbook/assets/image (2) (1).png b/.gitbook/assets/image (2) (1).png index ec1be0b5de..60a852cca6 100644 Binary files a/.gitbook/assets/image (2) (1).png and b/.gitbook/assets/image (2) (1).png differ diff --git a/.gitbook/assets/image (2) (2) (1).png b/.gitbook/assets/image (2) (2) (1).png new file mode 100644 index 0000000000..1b28e6fb5e Binary files /dev/null and b/.gitbook/assets/image (2) (2) (1).png differ diff --git a/.gitbook/assets/image (2) (3).png b/.gitbook/assets/image (2) (3).png new file mode 100644 index 0000000000..81d82e95f6 Binary files /dev/null and b/.gitbook/assets/image (2) (3).png differ diff --git a/.gitbook/assets/image (2).png b/.gitbook/assets/image (2).png index ec1be0b5de..9fde2c6f25 100644 Binary files a/.gitbook/assets/image (2).png and b/.gitbook/assets/image (2).png differ diff --git a/.gitbook/assets/image (20) (1).png b/.gitbook/assets/image (20) (1).png new file mode 100644 index 0000000000..7422bebca5 Binary files /dev/null and b/.gitbook/assets/image (20) (1).png differ diff --git a/.gitbook/assets/image (20).png b/.gitbook/assets/image (20).png index 7bd929925d..fdc8a77701 100644 Binary files a/.gitbook/assets/image (20).png and b/.gitbook/assets/image (20).png differ diff --git a/.gitbook/assets/image (200).png b/.gitbook/assets/image (200).png index c0785b3d17..ca069e9c41 100644 Binary files a/.gitbook/assets/image (200).png and b/.gitbook/assets/image (200).png differ diff --git a/.gitbook/assets/image (201).png b/.gitbook/assets/image (201).png index 20aecf88f0..5145e6db94 100644 Binary files a/.gitbook/assets/image (201).png and b/.gitbook/assets/image (201).png differ diff --git a/.gitbook/assets/image (202).png b/.gitbook/assets/image (202).png index ca069e9c41..a5fb4b96f7 100644 Binary files a/.gitbook/assets/image (202).png and b/.gitbook/assets/image (202).png differ diff --git a/.gitbook/assets/image (203).png b/.gitbook/assets/image (203).png index 6ca4ddb994..26d7d2d155 100644 Binary files a/.gitbook/assets/image (203).png and b/.gitbook/assets/image (203).png differ diff --git a/.gitbook/assets/image (204).png b/.gitbook/assets/image (204).png index f60f5ff97d..b4553a384a 100644 Binary files a/.gitbook/assets/image (204).png and b/.gitbook/assets/image (204).png differ diff --git a/.gitbook/assets/image (205).png b/.gitbook/assets/image (205).png index 3c50931f8e..c3bf3d0150 100644 Binary files a/.gitbook/assets/image (205).png and b/.gitbook/assets/image (205).png differ diff --git a/.gitbook/assets/image (206).png b/.gitbook/assets/image (206).png index 8b30fe0695..7727552e6c 100644 Binary files a/.gitbook/assets/image (206).png and b/.gitbook/assets/image (206).png differ diff --git a/.gitbook/assets/image (207).png b/.gitbook/assets/image (207).png index 26d7d2d155..809bdb0dfb 100644 Binary files a/.gitbook/assets/image (207).png and b/.gitbook/assets/image (207).png differ diff --git a/.gitbook/assets/image (208).png b/.gitbook/assets/image (208).png index a5fb4b96f7..6fec712897 100644 Binary files a/.gitbook/assets/image (208).png and b/.gitbook/assets/image (208).png differ diff --git a/.gitbook/assets/image (209).png b/.gitbook/assets/image (209).png index b4553a384a..b047e3b4c6 100644 Binary files a/.gitbook/assets/image (209).png and b/.gitbook/assets/image (209).png differ diff --git a/.gitbook/assets/image (21) (1).png b/.gitbook/assets/image (21) (1).png new file mode 100644 index 0000000000..c584143c99 Binary files /dev/null and b/.gitbook/assets/image (21) (1).png differ diff --git a/.gitbook/assets/image (21).png b/.gitbook/assets/image (21).png index 85fc4257dc..e5bb2d632d 100644 Binary files a/.gitbook/assets/image (21).png and b/.gitbook/assets/image (21).png differ diff --git a/.gitbook/assets/image (210).png b/.gitbook/assets/image (210).png index 5145e6db94..89d7995194 100644 Binary files a/.gitbook/assets/image (210).png and b/.gitbook/assets/image (210).png differ diff --git a/.gitbook/assets/image (211).png b/.gitbook/assets/image (211).png index 7727552e6c..da02d88694 100644 Binary files a/.gitbook/assets/image (211).png and b/.gitbook/assets/image (211).png differ diff --git a/.gitbook/assets/image (212).png b/.gitbook/assets/image (212).png index 6fec712897..fc1aa34f52 100644 Binary files a/.gitbook/assets/image (212).png and b/.gitbook/assets/image (212).png differ diff --git a/.gitbook/assets/image (213).png b/.gitbook/assets/image (213).png index 89d7995194..003516259c 100644 Binary files a/.gitbook/assets/image (213).png and b/.gitbook/assets/image (213).png differ diff --git a/.gitbook/assets/image (214).png b/.gitbook/assets/image (214).png index 809bdb0dfb..b9e00f5bcf 100644 Binary files a/.gitbook/assets/image (214).png and b/.gitbook/assets/image (214).png differ diff --git a/.gitbook/assets/image (215).png b/.gitbook/assets/image (215).png index 69372c3220..76a6473440 100644 Binary files a/.gitbook/assets/image (215).png and b/.gitbook/assets/image (215).png differ diff --git a/.gitbook/assets/image (216).png b/.gitbook/assets/image (216).png index 003516259c..e81d0bb4b7 100644 Binary files a/.gitbook/assets/image (216).png and b/.gitbook/assets/image (216).png differ diff --git a/.gitbook/assets/image (217).png b/.gitbook/assets/image (217).png index e81d0bb4b7..3347956e53 100644 Binary files a/.gitbook/assets/image (217).png and b/.gitbook/assets/image (217).png differ diff --git a/.gitbook/assets/image (218).png b/.gitbook/assets/image (218).png index 76a6473440..051522845c 100644 Binary files a/.gitbook/assets/image (218).png and b/.gitbook/assets/image (218).png differ diff --git a/.gitbook/assets/image (219).png b/.gitbook/assets/image (219).png index c3bf3d0150..23398938b6 100644 Binary files a/.gitbook/assets/image (219).png and b/.gitbook/assets/image (219).png differ diff --git a/.gitbook/assets/image (22) (1).png b/.gitbook/assets/image (22) (1).png new file mode 100644 index 0000000000..8ad62390ea Binary files /dev/null and b/.gitbook/assets/image (22) (1).png differ diff --git a/.gitbook/assets/image (22).png b/.gitbook/assets/image (22).png index 581e6acb3f..b3ef2364ed 100644 Binary files a/.gitbook/assets/image (22).png and b/.gitbook/assets/image (22).png differ diff --git a/.gitbook/assets/image (220).png b/.gitbook/assets/image (220).png index fc1aa34f52..0f6bc97a51 100644 Binary files a/.gitbook/assets/image (220).png and b/.gitbook/assets/image (220).png differ diff --git a/.gitbook/assets/image (221).png b/.gitbook/assets/image (221).png index da02d88694..1931b43707 100644 Binary files a/.gitbook/assets/image (221).png and b/.gitbook/assets/image (221).png differ diff --git a/.gitbook/assets/image (222).png b/.gitbook/assets/image (222).png index 3347956e53..f323aefb7e 100644 Binary files a/.gitbook/assets/image (222).png and b/.gitbook/assets/image (222).png differ diff --git a/.gitbook/assets/image (223).png b/.gitbook/assets/image (223).png index 051522845c..821802c2fd 100644 Binary files a/.gitbook/assets/image (223).png and b/.gitbook/assets/image (223).png differ diff --git a/.gitbook/assets/image (224).png b/.gitbook/assets/image (224).png index 1931b43707..9741bc66ee 100644 Binary files a/.gitbook/assets/image (224).png and b/.gitbook/assets/image (224).png differ diff --git a/.gitbook/assets/image (225).png b/.gitbook/assets/image (225).png index f323aefb7e..9b92e60c04 100644 Binary files a/.gitbook/assets/image (225).png and b/.gitbook/assets/image (225).png differ diff --git a/.gitbook/assets/image (226).png b/.gitbook/assets/image (226).png index 0f6bc97a51..f894eda1b7 100644 Binary files a/.gitbook/assets/image (226).png and b/.gitbook/assets/image (226).png differ diff --git a/.gitbook/assets/image (227).png b/.gitbook/assets/image (227).png index 23398938b6..eebf714942 100644 Binary files a/.gitbook/assets/image (227).png and b/.gitbook/assets/image (227).png differ diff --git a/.gitbook/assets/image (228).png b/.gitbook/assets/image (228).png index eebf714942..5b99dcd0c9 100644 Binary files a/.gitbook/assets/image (228).png and b/.gitbook/assets/image (228).png differ diff --git a/.gitbook/assets/image (229).png b/.gitbook/assets/image (229).png index 9741bc66ee..b98a147c2b 100644 Binary files a/.gitbook/assets/image (229).png and b/.gitbook/assets/image (229).png differ diff --git a/.gitbook/assets/image (23) (1).png b/.gitbook/assets/image (23) (1).png new file mode 100644 index 0000000000..972cf08fbe Binary files /dev/null and b/.gitbook/assets/image (23) (1).png differ diff --git a/.gitbook/assets/image (23).png b/.gitbook/assets/image (23).png index 8a2968e90a..948d725b99 100644 Binary files a/.gitbook/assets/image (23).png and b/.gitbook/assets/image (23).png differ diff --git a/.gitbook/assets/image (230).png b/.gitbook/assets/image (230).png index 5b99dcd0c9..66216188ce 100644 Binary files a/.gitbook/assets/image (230).png and b/.gitbook/assets/image (230).png differ diff --git a/.gitbook/assets/image (231).png b/.gitbook/assets/image (231).png index 70726726e3..900e45a6dd 100644 Binary files a/.gitbook/assets/image (231).png and b/.gitbook/assets/image (231).png differ diff --git a/.gitbook/assets/image (232).png b/.gitbook/assets/image (232).png index b98a147c2b..4bbe513b5f 100644 Binary files a/.gitbook/assets/image (232).png and b/.gitbook/assets/image (232).png differ diff --git a/.gitbook/assets/image (233).png b/.gitbook/assets/image (233).png index 821802c2fd..a1fcb966c6 100644 Binary files a/.gitbook/assets/image (233).png and b/.gitbook/assets/image (233).png differ diff --git a/.gitbook/assets/image (234).png b/.gitbook/assets/image (234).png index f894eda1b7..0acf460474 100644 Binary files a/.gitbook/assets/image (234).png and b/.gitbook/assets/image (234).png differ diff --git a/.gitbook/assets/image (235).png b/.gitbook/assets/image (235).png index 9b92e60c04..e065e536f7 100644 Binary files a/.gitbook/assets/image (235).png and b/.gitbook/assets/image (235).png differ diff --git a/.gitbook/assets/image (236) (2).png b/.gitbook/assets/image (236) (2).png new file mode 100644 index 0000000000..df3ad0d609 Binary files /dev/null and b/.gitbook/assets/image (236) (2).png differ diff --git a/.gitbook/assets/image (236).png b/.gitbook/assets/image (236).png index 66216188ce..c887aa9ac5 100644 Binary files a/.gitbook/assets/image (236).png and b/.gitbook/assets/image (236).png differ diff --git a/.gitbook/assets/image (237).png b/.gitbook/assets/image (237).png index 06b481f448..bf0d4bdfaa 100644 Binary files a/.gitbook/assets/image (237).png and b/.gitbook/assets/image (237).png differ diff --git a/.gitbook/assets/image (238).png b/.gitbook/assets/image (238).png index a1fcb966c6..400f6b68bc 100644 Binary files a/.gitbook/assets/image (238).png and b/.gitbook/assets/image (238).png differ diff --git a/.gitbook/assets/image (239).png b/.gitbook/assets/image (239).png index f607a7d3e4..148b4b7721 100644 Binary files a/.gitbook/assets/image (239).png and b/.gitbook/assets/image (239).png differ diff --git a/.gitbook/assets/image (24) (1).png b/.gitbook/assets/image (24) (1).png new file mode 100644 index 0000000000..10a24efc5b Binary files /dev/null and b/.gitbook/assets/image (24) (1).png differ diff --git a/.gitbook/assets/image (24).png b/.gitbook/assets/image (24).png index b3ef2364ed..aab6548ad2 100644 Binary files a/.gitbook/assets/image (24).png and b/.gitbook/assets/image (24).png differ diff --git a/.gitbook/assets/image (240).png b/.gitbook/assets/image (240).png index 0acf460474..2cf954322c 100644 Binary files a/.gitbook/assets/image (240).png and b/.gitbook/assets/image (240).png differ diff --git a/.gitbook/assets/image (241).png b/.gitbook/assets/image (241).png index 900e45a6dd..8846b16d02 100644 Binary files a/.gitbook/assets/image (241).png and b/.gitbook/assets/image (241).png differ diff --git a/.gitbook/assets/image (242).png b/.gitbook/assets/image (242).png index 4bbe513b5f..c6bf6be6ff 100644 Binary files a/.gitbook/assets/image (242).png and b/.gitbook/assets/image (242).png differ diff --git a/.gitbook/assets/image (243).png b/.gitbook/assets/image (243).png index 400f6b68bc..e0ecc7a3a1 100644 Binary files a/.gitbook/assets/image (243).png and b/.gitbook/assets/image (243).png differ diff --git a/.gitbook/assets/image (244).png b/.gitbook/assets/image (244).png index bf0d4bdfaa..8ca60d1a93 100644 Binary files a/.gitbook/assets/image (244).png and b/.gitbook/assets/image (244).png differ diff --git a/.gitbook/assets/image (245).png b/.gitbook/assets/image (245).png index e065e536f7..3679ea477e 100644 Binary files a/.gitbook/assets/image (245).png and b/.gitbook/assets/image (245).png differ diff --git a/.gitbook/assets/image (246).png b/.gitbook/assets/image (246).png index 148b4b7721..a259c03b9c 100644 Binary files a/.gitbook/assets/image (246).png and b/.gitbook/assets/image (246).png differ diff --git a/.gitbook/assets/image (247).png b/.gitbook/assets/image (247).png index e0ecc7a3a1..436c4d5484 100644 Binary files a/.gitbook/assets/image (247).png and b/.gitbook/assets/image (247).png differ diff --git a/.gitbook/assets/image (248).png b/.gitbook/assets/image (248).png index 8846b16d02..29ea4d7ba1 100644 Binary files a/.gitbook/assets/image (248).png and b/.gitbook/assets/image (248).png differ diff --git a/.gitbook/assets/image (249).png b/.gitbook/assets/image (249).png index c6bf6be6ff..69372c3220 100644 Binary files a/.gitbook/assets/image (249).png and b/.gitbook/assets/image (249).png differ diff --git a/.gitbook/assets/image (25).png b/.gitbook/assets/image (25).png index 7422bebca5..8e93cef96c 100644 Binary files a/.gitbook/assets/image (25).png and b/.gitbook/assets/image (25).png differ diff --git a/.gitbook/assets/image (250).png b/.gitbook/assets/image (250).png index 2cf954322c..06b481f448 100644 Binary files a/.gitbook/assets/image (250).png and b/.gitbook/assets/image (250).png differ diff --git a/.gitbook/assets/image (251).png b/.gitbook/assets/image (251).png index 8ca60d1a93..70726726e3 100644 Binary files a/.gitbook/assets/image (251).png and b/.gitbook/assets/image (251).png differ diff --git a/.gitbook/assets/image (252).png b/.gitbook/assets/image (252).png index 3679ea477e..dbd770cf0e 100644 Binary files a/.gitbook/assets/image (252).png and b/.gitbook/assets/image (252).png differ diff --git a/.gitbook/assets/image (253) (1) (1).png b/.gitbook/assets/image (253) (1) (1).png new file mode 100644 index 0000000000..f607a7d3e4 Binary files /dev/null and b/.gitbook/assets/image (253) (1) (1).png differ diff --git a/.gitbook/assets/image (253) (1) (2).png b/.gitbook/assets/image (253) (1) (2).png new file mode 100644 index 0000000000..520e9b31a2 Binary files /dev/null and b/.gitbook/assets/image (253) (1) (2).png differ diff --git a/.gitbook/assets/image (253) (1).png b/.gitbook/assets/image (253) (1).png new file mode 100644 index 0000000000..4edeecfaf4 Binary files /dev/null and b/.gitbook/assets/image (253) (1).png differ diff --git a/.gitbook/assets/image (253).png b/.gitbook/assets/image (253).png index dbd770cf0e..00f94854d0 100644 Binary files a/.gitbook/assets/image (253).png and b/.gitbook/assets/image (253).png differ diff --git a/.gitbook/assets/image (254).png b/.gitbook/assets/image (254).png index 55dd1c47cd..c7af8f65f0 100644 Binary files a/.gitbook/assets/image (254).png and b/.gitbook/assets/image (254).png differ diff --git a/.gitbook/assets/image (255).png b/.gitbook/assets/image (255).png index a259c03b9c..90c80a4016 100644 Binary files a/.gitbook/assets/image (255).png and b/.gitbook/assets/image (255).png differ diff --git a/.gitbook/assets/image (256).png b/.gitbook/assets/image (256).png index 436c4d5484..d0a2a34cc2 100644 Binary files a/.gitbook/assets/image (256).png and b/.gitbook/assets/image (256).png differ diff --git a/.gitbook/assets/image (257).png b/.gitbook/assets/image (257).png index c7af8f65f0..972e683269 100644 Binary files a/.gitbook/assets/image (257).png and b/.gitbook/assets/image (257).png differ diff --git a/.gitbook/assets/image (259).png b/.gitbook/assets/image (259).png index 90c80a4016..5aea88c590 100644 Binary files a/.gitbook/assets/image (259).png and b/.gitbook/assets/image (259).png differ diff --git a/.gitbook/assets/image (26).png b/.gitbook/assets/image (26).png index e5bb2d632d..3fb4f42f3c 100644 Binary files a/.gitbook/assets/image (26).png and b/.gitbook/assets/image (26).png differ diff --git a/.gitbook/assets/image (261).png b/.gitbook/assets/image (261).png index 5aea88c590..932dadc2b6 100644 Binary files a/.gitbook/assets/image (261).png and b/.gitbook/assets/image (261).png differ diff --git a/.gitbook/assets/image (262).png b/.gitbook/assets/image (262).png index 03c9674ba7..df5e04a133 100644 Binary files a/.gitbook/assets/image (262).png and b/.gitbook/assets/image (262).png differ diff --git a/.gitbook/assets/image (263).png b/.gitbook/assets/image (263).png index df5e04a133..03c9674ba7 100644 Binary files a/.gitbook/assets/image (263).png and b/.gitbook/assets/image (263).png differ diff --git a/.gitbook/assets/image (264).png b/.gitbook/assets/image (264).png index 822aaf5d97..14fe397a7a 100644 Binary files a/.gitbook/assets/image (264).png and b/.gitbook/assets/image (264).png differ diff --git a/.gitbook/assets/image (265).png b/.gitbook/assets/image (265).png index 14fe397a7a..d3a4e72164 100644 Binary files a/.gitbook/assets/image (265).png and b/.gitbook/assets/image (265).png differ diff --git a/.gitbook/assets/image (266).png b/.gitbook/assets/image (266).png index 932dadc2b6..55dd1c47cd 100644 Binary files a/.gitbook/assets/image (266).png and b/.gitbook/assets/image (266).png differ diff --git a/.gitbook/assets/image (267).png b/.gitbook/assets/image (267).png index d0a2a34cc2..8be900a7c6 100644 Binary files a/.gitbook/assets/image (267).png and b/.gitbook/assets/image (267).png differ diff --git a/.gitbook/assets/image (268).png b/.gitbook/assets/image (268).png index 972e683269..822aaf5d97 100644 Binary files a/.gitbook/assets/image (268).png and b/.gitbook/assets/image (268).png differ diff --git a/.gitbook/assets/image (27) (1).png b/.gitbook/assets/image (27) (1).png new file mode 100644 index 0000000000..4deec1df4f Binary files /dev/null and b/.gitbook/assets/image (27) (1).png differ diff --git a/.gitbook/assets/image (27) (2).png b/.gitbook/assets/image (27) (2).png new file mode 100644 index 0000000000..0f0f6b892a Binary files /dev/null and b/.gitbook/assets/image (27) (2).png differ diff --git a/.gitbook/assets/image (27).png b/.gitbook/assets/image (27).png index 948d725b99..7c5ae13f96 100644 Binary files a/.gitbook/assets/image (27).png and b/.gitbook/assets/image (27).png differ diff --git a/.gitbook/assets/image (270).png b/.gitbook/assets/image (270).png index 18e691f0b6..23141a8cd0 100644 Binary files a/.gitbook/assets/image (270).png and b/.gitbook/assets/image (270).png differ diff --git a/.gitbook/assets/image (271).png b/.gitbook/assets/image (271).png index 8be900a7c6..18e691f0b6 100644 Binary files a/.gitbook/assets/image (271).png and b/.gitbook/assets/image (271).png differ diff --git a/.gitbook/assets/image (272).png b/.gitbook/assets/image (272).png index d3a4e72164..41346d2eb8 100644 Binary files a/.gitbook/assets/image (272).png and b/.gitbook/assets/image (272).png differ diff --git a/.gitbook/assets/image (273).png b/.gitbook/assets/image (273).png index 865ae07e01..f7783b2f9d 100644 Binary files a/.gitbook/assets/image (273).png and b/.gitbook/assets/image (273).png differ diff --git a/.gitbook/assets/image (274).png b/.gitbook/assets/image (274).png index 23141a8cd0..865ae07e01 100644 Binary files a/.gitbook/assets/image (274).png and b/.gitbook/assets/image (274).png differ diff --git a/.gitbook/assets/image (275).png b/.gitbook/assets/image (275).png index 41346d2eb8..601e749857 100644 Binary files a/.gitbook/assets/image (275).png and b/.gitbook/assets/image (275).png differ diff --git a/.gitbook/assets/image (276).png b/.gitbook/assets/image (276).png index 601e749857..2263c1fded 100644 Binary files a/.gitbook/assets/image (276).png and b/.gitbook/assets/image (276).png differ diff --git a/.gitbook/assets/image (278).png b/.gitbook/assets/image (278).png index f7783b2f9d..ace5f50f14 100644 Binary files a/.gitbook/assets/image (278).png and b/.gitbook/assets/image (278).png differ diff --git a/.gitbook/assets/image (279).png b/.gitbook/assets/image (279).png index 2263c1fded..613d6527e9 100644 Binary files a/.gitbook/assets/image (279).png and b/.gitbook/assets/image (279).png differ diff --git a/.gitbook/assets/image (28) (1).png b/.gitbook/assets/image (28) (1).png new file mode 100644 index 0000000000..e88f03c79c Binary files /dev/null and b/.gitbook/assets/image (28) (1).png differ diff --git a/.gitbook/assets/image (28).png b/.gitbook/assets/image (28).png index aab6548ad2..5ad1aab34f 100644 Binary files a/.gitbook/assets/image (28).png and b/.gitbook/assets/image (28).png differ diff --git a/.gitbook/assets/image (280).png b/.gitbook/assets/image (280).png index ace5f50f14..b2aeb9f843 100644 Binary files a/.gitbook/assets/image (280).png and b/.gitbook/assets/image (280).png differ diff --git a/.gitbook/assets/image (281).png b/.gitbook/assets/image (281).png index c6884b0487..f021e402ad 100644 Binary files a/.gitbook/assets/image (281).png and b/.gitbook/assets/image (281).png differ diff --git a/.gitbook/assets/image (282).png b/.gitbook/assets/image (282).png index f021e402ad..d545461ea7 100644 Binary files a/.gitbook/assets/image (282).png and b/.gitbook/assets/image (282).png differ diff --git a/.gitbook/assets/image (283).png b/.gitbook/assets/image (283).png index 5acdc74254..0c3eb502a6 100644 Binary files a/.gitbook/assets/image (283).png and b/.gitbook/assets/image (283).png differ diff --git a/.gitbook/assets/image (285).png b/.gitbook/assets/image (285).png index 613d6527e9..5acdc74254 100644 Binary files a/.gitbook/assets/image (285).png and b/.gitbook/assets/image (285).png differ diff --git a/.gitbook/assets/image (286).png b/.gitbook/assets/image (286).png index b2aeb9f843..67d0de8c4f 100644 Binary files a/.gitbook/assets/image (286).png and b/.gitbook/assets/image (286).png differ diff --git a/.gitbook/assets/image (287).png b/.gitbook/assets/image (287).png index d545461ea7..26a9d60056 100644 Binary files a/.gitbook/assets/image (287).png and b/.gitbook/assets/image (287).png differ diff --git a/.gitbook/assets/image (288).png b/.gitbook/assets/image (288).png index 0c3eb502a6..a06b138231 100644 Binary files a/.gitbook/assets/image (288).png and b/.gitbook/assets/image (288).png differ diff --git a/.gitbook/assets/image (289).png b/.gitbook/assets/image (289).png index 51c7ec0d60..c6884b0487 100644 Binary files a/.gitbook/assets/image (289).png and b/.gitbook/assets/image (289).png differ diff --git a/.gitbook/assets/image (29).png b/.gitbook/assets/image (29).png index 3fb4f42f3c..02d5ab4512 100644 Binary files a/.gitbook/assets/image (29).png and b/.gitbook/assets/image (29).png differ diff --git a/.gitbook/assets/image (290).png b/.gitbook/assets/image (290).png index 26a9d60056..3c9942874c 100644 Binary files a/.gitbook/assets/image (290).png and b/.gitbook/assets/image (290).png differ diff --git a/.gitbook/assets/image (291).png b/.gitbook/assets/image (291).png index a06b138231..51c7ec0d60 100644 Binary files a/.gitbook/assets/image (291).png and b/.gitbook/assets/image (291).png differ diff --git a/.gitbook/assets/image (292).png b/.gitbook/assets/image (292).png index 3c9942874c..4ecc1e7b61 100644 Binary files a/.gitbook/assets/image (292).png and b/.gitbook/assets/image (292).png differ diff --git a/.gitbook/assets/image (293).png b/.gitbook/assets/image (293).png index 93a95ada86..b26d6dd10f 100644 Binary files a/.gitbook/assets/image (293).png and b/.gitbook/assets/image (293).png differ diff --git a/.gitbook/assets/image (294).png b/.gitbook/assets/image (294).png index 31f37b56ae..7ff1abef3d 100644 Binary files a/.gitbook/assets/image (294).png and b/.gitbook/assets/image (294).png differ diff --git a/.gitbook/assets/image (295).png b/.gitbook/assets/image (295).png index 4ecc1e7b61..57a423f982 100644 Binary files a/.gitbook/assets/image (295).png and b/.gitbook/assets/image (295).png differ diff --git a/.gitbook/assets/image (298).png b/.gitbook/assets/image (298).png index f264d8537f..93a95ada86 100644 Binary files a/.gitbook/assets/image (298).png and b/.gitbook/assets/image (298).png differ diff --git a/.gitbook/assets/image (299).png b/.gitbook/assets/image (299).png index 57a423f982..5e75b18e2f 100644 Binary files a/.gitbook/assets/image (299).png and b/.gitbook/assets/image (299).png differ diff --git a/.gitbook/assets/image (3) (1) (1).png b/.gitbook/assets/image (3) (1) (1).png new file mode 100644 index 0000000000..83d2738ab4 Binary files /dev/null and b/.gitbook/assets/image (3) (1) (1).png differ diff --git a/.gitbook/assets/image (3) (1).png b/.gitbook/assets/image (3) (1).png new file mode 100644 index 0000000000..59072dffff Binary files /dev/null and b/.gitbook/assets/image (3) (1).png differ diff --git a/.gitbook/assets/image (3) (2) (1).png b/.gitbook/assets/image (3) (2) (1).png new file mode 100644 index 0000000000..3a20303bdd Binary files /dev/null and b/.gitbook/assets/image (3) (2) (1).png differ diff --git a/.gitbook/assets/image (3) (2).png b/.gitbook/assets/image (3) (2).png new file mode 100644 index 0000000000..d3f285d058 Binary files /dev/null and b/.gitbook/assets/image (3) (2).png differ diff --git a/.gitbook/assets/image (3) (3) (1).png b/.gitbook/assets/image (3) (3) (1).png new file mode 100644 index 0000000000..fe501ee4f4 Binary files /dev/null and b/.gitbook/assets/image (3) (3) (1).png differ diff --git a/.gitbook/assets/image (3) (3).png b/.gitbook/assets/image (3) (3).png new file mode 100644 index 0000000000..fe501ee4f4 Binary files /dev/null and b/.gitbook/assets/image (3) (3).png differ diff --git a/.gitbook/assets/image (3) (4).png b/.gitbook/assets/image (3) (4).png new file mode 100644 index 0000000000..7b6d952642 Binary files /dev/null and b/.gitbook/assets/image (3) (4).png differ diff --git a/.gitbook/assets/image (3).png b/.gitbook/assets/image (3).png index 2bff76626e..dd1b470784 100644 Binary files a/.gitbook/assets/image (3).png and b/.gitbook/assets/image (3).png differ diff --git a/.gitbook/assets/image (30).png b/.gitbook/assets/image (30).png index 4deec1df4f..e26587a2bf 100644 Binary files a/.gitbook/assets/image (30).png and b/.gitbook/assets/image (30).png differ diff --git a/.gitbook/assets/image (300) (2).png b/.gitbook/assets/image (300) (2).png new file mode 100644 index 0000000000..d8a5749f94 Binary files /dev/null and b/.gitbook/assets/image (300) (2).png differ diff --git a/.gitbook/assets/image (300).png b/.gitbook/assets/image (300).png index d8a5749f94..5bc75dc722 100644 Binary files a/.gitbook/assets/image (300).png and b/.gitbook/assets/image (300).png differ diff --git a/.gitbook/assets/image (301).png b/.gitbook/assets/image (301).png index b26d6dd10f..51fe2693f0 100644 Binary files a/.gitbook/assets/image (301).png and b/.gitbook/assets/image (301).png differ diff --git a/.gitbook/assets/image (302).png b/.gitbook/assets/image (302).png index 7ff1abef3d..cf8f53956a 100644 Binary files a/.gitbook/assets/image (302).png and b/.gitbook/assets/image (302).png differ diff --git a/.gitbook/assets/image (303) (2) (2) (2) (2) (2) (2) (2) (2).png b/.gitbook/assets/image (303) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1).png similarity index 100% rename from .gitbook/assets/image (303) (2) (2) (2) (2) (2) (2) (2) (2).png rename to .gitbook/assets/image (303) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1).png diff --git a/.gitbook/assets/image (303) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (303) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..fd66f05a02 Binary files /dev/null and b/.gitbook/assets/image (303) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (303) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1).png b/.gitbook/assets/image (303) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..fd66f05a02 Binary files /dev/null and b/.gitbook/assets/image (303) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (303) (2) (2) (2) (2) (2) (2) (2) (1) (1) (2).png b/.gitbook/assets/image (303) (2) (2) (2) (2) (2) (2) (2) (1) (1) (2).png new file mode 100644 index 0000000000..fd66f05a02 Binary files /dev/null and b/.gitbook/assets/image (303) (2) (2) (2) (2) (2) (2) (2) (1) (1) (2).png differ diff --git a/.gitbook/assets/image (303).png b/.gitbook/assets/image (303).png index 7677f4adef..f264d8537f 100644 Binary files a/.gitbook/assets/image (303).png and b/.gitbook/assets/image (303).png differ diff --git a/.gitbook/assets/image (304).png b/.gitbook/assets/image (304).png index 5bc75dc722..1f8c54a5e7 100644 Binary files a/.gitbook/assets/image (304).png and b/.gitbook/assets/image (304).png differ diff --git a/.gitbook/assets/image (305).png b/.gitbook/assets/image (305).png index 51fe2693f0..7677f4adef 100644 Binary files a/.gitbook/assets/image (305).png and b/.gitbook/assets/image (305).png differ diff --git a/.gitbook/assets/image (306).png b/.gitbook/assets/image (306).png index 5e75b18e2f..a80e76b866 100644 Binary files a/.gitbook/assets/image (306).png and b/.gitbook/assets/image (306).png differ diff --git a/.gitbook/assets/image (307).png b/.gitbook/assets/image (307).png index cf8f53956a..ec421d59a1 100644 Binary files a/.gitbook/assets/image (307).png and b/.gitbook/assets/image (307).png differ diff --git a/.gitbook/assets/image (308) (2) (2) (2).png b/.gitbook/assets/image (308) (2) (2) (1) (1) (1) (1) (1) (1) (3) (1).png similarity index 100% rename from .gitbook/assets/image (308) (2) (2) (2).png rename to .gitbook/assets/image (308) (2) (2) (1) (1) (1) (1) (1) (1) (3) (1).png diff --git a/.gitbook/assets/image (308) (2) (2).png b/.gitbook/assets/image (308) (2) (2) (1) (1) (1) (1) (1) (1) (3) (2).png similarity index 100% rename from .gitbook/assets/image (308) (2) (2).png rename to .gitbook/assets/image (308) (2) (2) (1) (1) (1) (1) (1) (1) (3) (2).png diff --git a/.gitbook/assets/image (308) (2) (2) (1) (1) (1) (1) (1) (1) (3) (3).png b/.gitbook/assets/image (308) (2) (2) (1) (1) (1) (1) (1) (1) (3) (3).png new file mode 100644 index 0000000000..05b16e9f3a Binary files /dev/null and b/.gitbook/assets/image (308) (2) (2) (1) (1) (1) (1) (1) (1) (3) (3).png differ diff --git a/.gitbook/assets/image (308) (2) (2) (1) (1) (1) (1) (1) (1) (3) (4).png b/.gitbook/assets/image (308) (2) (2) (1) (1) (1) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..05b16e9f3a Binary files /dev/null and b/.gitbook/assets/image (308) (2) (2) (1) (1) (1) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/image (308) (2) (2) (1) (1) (1) (1) (1) (1) (3).png b/.gitbook/assets/image (308) (2) (2) (1) (1) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..05b16e9f3a Binary files /dev/null and b/.gitbook/assets/image (308) (2) (2) (1) (1) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/image (308) (2) (2) (1) (1) (1) (1) (1) (2).png b/.gitbook/assets/image (308) (2) (2) (1) (1) (1) (1) (1) (2).png new file mode 100644 index 0000000000..05b16e9f3a Binary files /dev/null and b/.gitbook/assets/image (308) (2) (2) (1) (1) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/image (308) (2) (2) (1) (1) (1) (1) (1) (3).png b/.gitbook/assets/image (308) (2) (2) (1) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..05b16e9f3a Binary files /dev/null and b/.gitbook/assets/image (308) (2) (2) (1) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/image (308) (2) (2) (1) (1) (1).png b/.gitbook/assets/image (308) (2) (2) (1) (1) (1).png new file mode 100644 index 0000000000..05b16e9f3a Binary files /dev/null and b/.gitbook/assets/image (308) (2) (2) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (308) (2) (2) (1) (1) (2) (1) (2) (1).png b/.gitbook/assets/image (308) (2) (2) (1) (1) (2) (1) (2) (1).png new file mode 100644 index 0000000000..05b16e9f3a Binary files /dev/null and b/.gitbook/assets/image (308) (2) (2) (1) (1) (2) (1) (2) (1).png differ diff --git a/.gitbook/assets/image (308) (2) (2) (1) (1) (2) (1) (2) (2).png b/.gitbook/assets/image (308) (2) (2) (1) (1) (2) (1) (2) (2).png new file mode 100644 index 0000000000..05b16e9f3a Binary files /dev/null and b/.gitbook/assets/image (308) (2) (2) (1) (1) (2) (1) (2) (2).png differ diff --git a/.gitbook/assets/image (308) (2) (2) (1) (1) (2) (1) (2) (3).png b/.gitbook/assets/image (308) (2) (2) (1) (1) (2) (1) (2) (3).png new file mode 100644 index 0000000000..05b16e9f3a Binary files /dev/null and b/.gitbook/assets/image (308) (2) (2) (1) (1) (2) (1) (2) (3).png differ diff --git a/.gitbook/assets/image (308) (2) (2) (1) (1) (2) (1) (2).png b/.gitbook/assets/image (308) (2) (2) (1) (1) (2) (1) (2).png new file mode 100644 index 0000000000..05b16e9f3a Binary files /dev/null and b/.gitbook/assets/image (308) (2) (2) (1) (1) (2) (1) (2).png differ diff --git a/.gitbook/assets/image (308) (2) (2) (1) (1) (2) (1).png b/.gitbook/assets/image (308) (2) (2) (1) (1) (2) (1).png new file mode 100644 index 0000000000..05b16e9f3a Binary files /dev/null and b/.gitbook/assets/image (308) (2) (2) (1) (1) (2) (1).png differ diff --git a/.gitbook/assets/image (308) (2) (2) (1) (1) (2) (2).png b/.gitbook/assets/image (308) (2) (2) (1) (1) (2) (2).png new file mode 100644 index 0000000000..05b16e9f3a Binary files /dev/null and b/.gitbook/assets/image (308) (2) (2) (1) (1) (2) (2).png differ diff --git a/.gitbook/assets/image (308) (2) (2) (1) (1) (2).png b/.gitbook/assets/image (308) (2) (2) (1) (1) (2).png new file mode 100644 index 0000000000..05b16e9f3a Binary files /dev/null and b/.gitbook/assets/image (308) (2) (2) (1) (1) (2).png differ diff --git a/.gitbook/assets/image (308) (2) (2) (1) (1).png b/.gitbook/assets/image (308) (2) (2) (1) (1).png new file mode 100644 index 0000000000..05b16e9f3a Binary files /dev/null and b/.gitbook/assets/image (308) (2) (2) (1) (1).png differ diff --git a/.gitbook/assets/image (308).png b/.gitbook/assets/image (308).png index 105f67bcbb..a2702945f9 100644 Binary files a/.gitbook/assets/image (308).png and b/.gitbook/assets/image (308).png differ diff --git a/.gitbook/assets/image (309).png b/.gitbook/assets/image (309).png index b5ed488e5e..31f37b56ae 100644 Binary files a/.gitbook/assets/image (309).png and b/.gitbook/assets/image (309).png differ diff --git a/.gitbook/assets/image (31).png b/.gitbook/assets/image (31).png index 8e93cef96c..90b6f8d9ed 100644 Binary files a/.gitbook/assets/image (31).png and b/.gitbook/assets/image (31).png differ diff --git a/.gitbook/assets/image (310).png b/.gitbook/assets/image (310).png index b338dd3a15..105f67bcbb 100644 Binary files a/.gitbook/assets/image (310).png and b/.gitbook/assets/image (310).png differ diff --git a/.gitbook/assets/image (311).png b/.gitbook/assets/image (311).png index 3b50f83a27..8308e537c1 100644 Binary files a/.gitbook/assets/image (311).png and b/.gitbook/assets/image (311).png differ diff --git a/.gitbook/assets/image (313).png b/.gitbook/assets/image (313).png index 8308e537c1..b338dd3a15 100644 Binary files a/.gitbook/assets/image (313).png and b/.gitbook/assets/image (313).png differ diff --git a/.gitbook/assets/image (314).png b/.gitbook/assets/image (314).png index 1c8f1ffd44..3b50f83a27 100644 Binary files a/.gitbook/assets/image (314).png and b/.gitbook/assets/image (314).png differ diff --git a/.gitbook/assets/image (315).png b/.gitbook/assets/image (315).png index df8a2f7b69..b5ed488e5e 100644 Binary files a/.gitbook/assets/image (315).png and b/.gitbook/assets/image (315).png differ diff --git a/.gitbook/assets/image (316).png b/.gitbook/assets/image (316).png index a01f2d7571..16aa294f94 100644 Binary files a/.gitbook/assets/image (316).png and b/.gitbook/assets/image (316).png differ diff --git a/.gitbook/assets/image (317).png b/.gitbook/assets/image (317).png index 7c52f4680c..a0ec745699 100644 Binary files a/.gitbook/assets/image (317).png and b/.gitbook/assets/image (317).png differ diff --git a/.gitbook/assets/image (318).png b/.gitbook/assets/image (318).png index 16aa294f94..be398801fe 100644 Binary files a/.gitbook/assets/image (318).png and b/.gitbook/assets/image (318).png differ diff --git a/.gitbook/assets/image (319).png b/.gitbook/assets/image (319).png index da8d8498c1..1c8f1ffd44 100644 Binary files a/.gitbook/assets/image (319).png and b/.gitbook/assets/image (319).png differ diff --git a/.gitbook/assets/image (32).png b/.gitbook/assets/image (32).png index 5ad1aab34f..28e48ca76b 100644 Binary files a/.gitbook/assets/image (32).png and b/.gitbook/assets/image (32).png differ diff --git a/.gitbook/assets/image (320).png b/.gitbook/assets/image (320).png index be398801fe..a01f2d7571 100644 Binary files a/.gitbook/assets/image (320).png and b/.gitbook/assets/image (320).png differ diff --git a/.gitbook/assets/image (321).png b/.gitbook/assets/image (321).png index a0ec745699..7c52f4680c 100644 Binary files a/.gitbook/assets/image (321).png and b/.gitbook/assets/image (321).png differ diff --git a/.gitbook/assets/image (322).png b/.gitbook/assets/image (322).png index 1b2a743bb1..df8a2f7b69 100644 Binary files a/.gitbook/assets/image (322).png and b/.gitbook/assets/image (322).png differ diff --git a/.gitbook/assets/image (323).png b/.gitbook/assets/image (323).png index ba75b18174..da8d8498c1 100644 Binary files a/.gitbook/assets/image (323).png and b/.gitbook/assets/image (323).png differ diff --git a/.gitbook/assets/image (324).png b/.gitbook/assets/image (324).png index 4085f462a5..9b7ba4e006 100644 Binary files a/.gitbook/assets/image (324).png and b/.gitbook/assets/image (324).png differ diff --git a/.gitbook/assets/image (325).png b/.gitbook/assets/image (325).png index 7cd42c0326..58ad352ecd 100644 Binary files a/.gitbook/assets/image (325).png and b/.gitbook/assets/image (325).png differ diff --git a/.gitbook/assets/image (326).png b/.gitbook/assets/image (326).png index 3c5ec99cb0..7cd42c0326 100644 Binary files a/.gitbook/assets/image (326).png and b/.gitbook/assets/image (326).png differ diff --git a/.gitbook/assets/image (327).png b/.gitbook/assets/image (327).png index 58ad352ecd..728d0a1170 100644 Binary files a/.gitbook/assets/image (327).png and b/.gitbook/assets/image (327).png differ diff --git a/.gitbook/assets/image (328).png b/.gitbook/assets/image (328).png index 6e03c6e8a8..ba75b18174 100644 Binary files a/.gitbook/assets/image (328).png and b/.gitbook/assets/image (328).png differ diff --git a/.gitbook/assets/image (329).png b/.gitbook/assets/image (329).png index 9b7ba4e006..4085f462a5 100644 Binary files a/.gitbook/assets/image (329).png and b/.gitbook/assets/image (329).png differ diff --git a/.gitbook/assets/image (33).png b/.gitbook/assets/image (33).png index 58d186cc31..582a579c4a 100644 Binary files a/.gitbook/assets/image (33).png and b/.gitbook/assets/image (33).png differ diff --git a/.gitbook/assets/image (330).png b/.gitbook/assets/image (330).png index 5d57be570f..7f45a3e56f 100644 Binary files a/.gitbook/assets/image (330).png and b/.gitbook/assets/image (330).png differ diff --git a/.gitbook/assets/image (331).png b/.gitbook/assets/image (331).png index d29e231310..6e03c6e8a8 100644 Binary files a/.gitbook/assets/image (331).png and b/.gitbook/assets/image (331).png differ diff --git a/.gitbook/assets/image (332).png b/.gitbook/assets/image (332).png index 7f45a3e56f..1b2a743bb1 100644 Binary files a/.gitbook/assets/image (332).png and b/.gitbook/assets/image (332).png differ diff --git a/.gitbook/assets/image (333).png b/.gitbook/assets/image (333).png index c6b0436b18..5d57be570f 100644 Binary files a/.gitbook/assets/image (333).png and b/.gitbook/assets/image (333).png differ diff --git a/.gitbook/assets/image (334).png b/.gitbook/assets/image (334).png index 56932b676a..77a3cf687b 100644 Binary files a/.gitbook/assets/image (334).png and b/.gitbook/assets/image (334).png differ diff --git a/.gitbook/assets/image (335).png b/.gitbook/assets/image (335).png index 728d0a1170..56932b676a 100644 Binary files a/.gitbook/assets/image (335).png and b/.gitbook/assets/image (335).png differ diff --git a/.gitbook/assets/image (336).png b/.gitbook/assets/image (336).png index 77a3cf687b..d29e231310 100644 Binary files a/.gitbook/assets/image (336).png and b/.gitbook/assets/image (336).png differ diff --git a/.gitbook/assets/image (337).png b/.gitbook/assets/image (337).png index f76b995391..c6b0436b18 100644 Binary files a/.gitbook/assets/image (337).png and b/.gitbook/assets/image (337).png differ diff --git a/.gitbook/assets/image (338).png b/.gitbook/assets/image (338).png index db1337cafe..3c5ec99cb0 100644 Binary files a/.gitbook/assets/image (338).png and b/.gitbook/assets/image (338).png differ diff --git a/.gitbook/assets/image (339).png b/.gitbook/assets/image (339).png index 86c90af5e2..f76b995391 100644 Binary files a/.gitbook/assets/image (339).png and b/.gitbook/assets/image (339).png differ diff --git a/.gitbook/assets/image (34) (2) (1).png b/.gitbook/assets/image (34) (2) (1).png new file mode 100644 index 0000000000..2b5dc24812 Binary files /dev/null and b/.gitbook/assets/image (34) (2) (1).png differ diff --git a/.gitbook/assets/image (34) (2).png b/.gitbook/assets/image (34) (2).png new file mode 100644 index 0000000000..06b7f26258 Binary files /dev/null and b/.gitbook/assets/image (34) (2).png differ diff --git a/.gitbook/assets/image (34).png b/.gitbook/assets/image (34).png index 28e48ca76b..f602457456 100644 Binary files a/.gitbook/assets/image (34).png and b/.gitbook/assets/image (34).png differ diff --git a/.gitbook/assets/image (340).png b/.gitbook/assets/image (340).png index 3180460e6c..db1337cafe 100644 Binary files a/.gitbook/assets/image (340).png and b/.gitbook/assets/image (340).png differ diff --git a/.gitbook/assets/image (341).png b/.gitbook/assets/image (341).png index 3616b3ed36..86c90af5e2 100644 Binary files a/.gitbook/assets/image (341).png and b/.gitbook/assets/image (341).png differ diff --git a/.gitbook/assets/image (342).png b/.gitbook/assets/image (342).png index b0dcf74472..c96a419997 100644 Binary files a/.gitbook/assets/image (342).png and b/.gitbook/assets/image (342).png differ diff --git a/.gitbook/assets/image (343).png b/.gitbook/assets/image (343).png index d0d307ecf6..b4b3fbb8d6 100644 Binary files a/.gitbook/assets/image (343).png and b/.gitbook/assets/image (343).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png similarity index 100% rename from .gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1).png rename to .gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (2).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png similarity index 100% rename from .gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (2).png rename to .gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (4).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png similarity index 100% rename from .gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (4).png rename to .gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (1).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (2).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (3).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (4).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (4).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (3).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (3).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (3).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (4).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (4).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (4).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (5).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (5).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1) (5).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (2) (1).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (3) (1).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (3) (1).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (3) (1).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (3) (2).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (3) (2).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (3) (2).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (3) (3).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (3) (3).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (3) (3).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (3) (4).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (3) (4).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (3) (4).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (3) (5).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (3) (5).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (3) (5).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (4).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (4).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (5).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (5).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4) (5).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (2).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (3).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (4).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (4).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (2).png b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (2).png new file mode 100644 index 0000000000..b0dae528d8 Binary files /dev/null and b/.gitbook/assets/image (344) (2) (3) (3) (3) (3) (2) (1) (1) (2).png differ diff --git a/.gitbook/assets/image (344) (2).png b/.gitbook/assets/image (344) (2).png new file mode 100644 index 0000000000..c90c469aa4 Binary files /dev/null and b/.gitbook/assets/image (344) (2).png differ diff --git a/.gitbook/assets/image (344).png b/.gitbook/assets/image (344).png index c90c469aa4..2aa49e9767 100644 Binary files a/.gitbook/assets/image (344).png and b/.gitbook/assets/image (344).png differ diff --git a/.gitbook/assets/image (345).png b/.gitbook/assets/image (345).png index 533b7547f4..3616b3ed36 100644 Binary files a/.gitbook/assets/image (345).png and b/.gitbook/assets/image (345).png differ diff --git a/.gitbook/assets/image (346).png b/.gitbook/assets/image (346).png index fa7f45e6d9..0e0f85f582 100644 Binary files a/.gitbook/assets/image (346).png and b/.gitbook/assets/image (346).png differ diff --git a/.gitbook/assets/image (347).png b/.gitbook/assets/image (347).png index 0e0f85f582..dad35820ef 100644 Binary files a/.gitbook/assets/image (347).png and b/.gitbook/assets/image (347).png differ diff --git a/.gitbook/assets/image (348).png b/.gitbook/assets/image (348).png index 3b1334606e..a9891bfd3f 100644 Binary files a/.gitbook/assets/image (348).png and b/.gitbook/assets/image (348).png differ diff --git a/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1).png b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (1) (1) (1) (3) (1).png similarity index 100% rename from .gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1).png rename to .gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (1) (1) (1) (3) (1).png diff --git a/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (2).png b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (1) (1) (1) (3) (2).png similarity index 100% rename from .gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (2).png rename to .gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (1) (1) (1) (3) (2).png diff --git a/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (3).png b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (1) (1) (1) (3) (3).png similarity index 100% rename from .gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (3).png rename to .gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (1) (1) (1) (3) (3).png diff --git a/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (1) (1) (1) (3) (4).png b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..a2b650cbfa Binary files /dev/null and b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (1) (1) (1) (3).png b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..a2b650cbfa Binary files /dev/null and b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (1) (1) (2).png b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..a2b650cbfa Binary files /dev/null and b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (1) (1) (3).png b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..a2b650cbfa Binary files /dev/null and b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (3).png b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (3).png new file mode 100644 index 0000000000..a2b650cbfa Binary files /dev/null and b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (3).png differ diff --git a/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (4).png b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (4).png new file mode 100644 index 0000000000..a2b650cbfa Binary files /dev/null and b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1) (4).png differ diff --git a/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1).png b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1).png new file mode 100644 index 0000000000..a2b650cbfa Binary files /dev/null and b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (2) (1).png differ diff --git a/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (1).png b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (1).png new file mode 100644 index 0000000000..a2b650cbfa Binary files /dev/null and b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (1).png differ diff --git a/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (2).png b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (2).png new file mode 100644 index 0000000000..a2b650cbfa Binary files /dev/null and b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (2).png differ diff --git a/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (3).png b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (3).png new file mode 100644 index 0000000000..a2b650cbfa Binary files /dev/null and b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (3).png differ diff --git a/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (4).png b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (4).png new file mode 100644 index 0000000000..a2b650cbfa Binary files /dev/null and b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1).png b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..a2b650cbfa Binary files /dev/null and b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (2).png b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..a2b650cbfa Binary files /dev/null and b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (3).png b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..a2b650cbfa Binary files /dev/null and b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1).png b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1).png new file mode 100644 index 0000000000..a2b650cbfa Binary files /dev/null and b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (2).png b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (2).png new file mode 100644 index 0000000000..a2b650cbfa Binary files /dev/null and b/.gitbook/assets/image (349) (1) (1) (1) (1) (2) (2) (2) (2) (2) (1) (1) (2).png differ diff --git a/.gitbook/assets/image (349).png b/.gitbook/assets/image (349).png index d93db44f58..05896eeaf8 100644 Binary files a/.gitbook/assets/image (349).png and b/.gitbook/assets/image (349).png differ diff --git a/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1).png b/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1).png similarity index 100% rename from .gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1).png rename to .gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1).png diff --git a/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (2).png b/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (2).png similarity index 100% rename from .gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (2).png rename to .gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (2).png diff --git a/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (3).png b/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..9f10205939 Binary files /dev/null and b/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..9f10205939 Binary files /dev/null and b/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (1).png b/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (1).png new file mode 100644 index 0000000000..9f10205939 Binary files /dev/null and b/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (2) (1) (2).png b/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (2) (1) (2).png new file mode 100644 index 0000000000..9f10205939 Binary files /dev/null and b/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (2) (1) (2).png differ diff --git a/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (2) (1).png b/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (2) (1).png new file mode 100644 index 0000000000..9f10205939 Binary files /dev/null and b/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (2) (1).png differ diff --git a/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (2) (2).png b/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (2) (2).png new file mode 100644 index 0000000000..9f10205939 Binary files /dev/null and b/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1) (2) (2).png differ diff --git a/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1).png b/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1).png new file mode 100644 index 0000000000..9f10205939 Binary files /dev/null and b/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (1).png differ diff --git a/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (2).png b/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (2).png new file mode 100644 index 0000000000..9f10205939 Binary files /dev/null and b/.gitbook/assets/image (35) (1) (3) (3) (3) (3) (2) (1) (2).png differ diff --git a/.gitbook/assets/image (35).png b/.gitbook/assets/image (35).png index 3eb7153577..482b6cc7a6 100644 Binary files a/.gitbook/assets/image (35).png and b/.gitbook/assets/image (35).png differ diff --git a/.gitbook/assets/image (350).png b/.gitbook/assets/image (350).png index b7abce7004..c789cedf9d 100644 Binary files a/.gitbook/assets/image (350).png and b/.gitbook/assets/image (350).png differ diff --git a/.gitbook/assets/image (351).png b/.gitbook/assets/image (351).png index 0e80bf3e2e..2aa8199597 100644 Binary files a/.gitbook/assets/image (351).png and b/.gitbook/assets/image (351).png differ diff --git a/.gitbook/assets/image (352).png b/.gitbook/assets/image (352).png index 5ed7496454..c968e18922 100644 Binary files a/.gitbook/assets/image (352).png and b/.gitbook/assets/image (352).png differ diff --git a/.gitbook/assets/image (353).png b/.gitbook/assets/image (353).png index c789cedf9d..533b7547f4 100644 Binary files a/.gitbook/assets/image (353).png and b/.gitbook/assets/image (353).png differ diff --git a/.gitbook/assets/image (354).png b/.gitbook/assets/image (354).png index b4b3fbb8d6..5c6bbeb893 100644 Binary files a/.gitbook/assets/image (354).png and b/.gitbook/assets/image (354).png differ diff --git a/.gitbook/assets/image (355).png b/.gitbook/assets/image (355).png index 9df1bd8771..726c45fa44 100644 Binary files a/.gitbook/assets/image (355).png and b/.gitbook/assets/image (355).png differ diff --git a/.gitbook/assets/image (356).png b/.gitbook/assets/image (356).png index c96a419997..87043882d1 100644 Binary files a/.gitbook/assets/image (356).png and b/.gitbook/assets/image (356).png differ diff --git a/.gitbook/assets/image (357).png b/.gitbook/assets/image (357).png index 726c45fa44..478da90fe0 100644 Binary files a/.gitbook/assets/image (357).png and b/.gitbook/assets/image (357).png differ diff --git a/.gitbook/assets/image (358).png b/.gitbook/assets/image (358).png index 5c6bbeb893..3b1334606e 100644 Binary files a/.gitbook/assets/image (358).png and b/.gitbook/assets/image (358).png differ diff --git a/.gitbook/assets/image (359).png b/.gitbook/assets/image (359).png index 023dfa7291..7b4dc9a383 100644 Binary files a/.gitbook/assets/image (359).png and b/.gitbook/assets/image (359).png differ diff --git a/.gitbook/assets/image (36).png b/.gitbook/assets/image (36).png index 90b6f8d9ed..895e2a2763 100644 Binary files a/.gitbook/assets/image (36).png and b/.gitbook/assets/image (36).png differ diff --git a/.gitbook/assets/image (360).png b/.gitbook/assets/image (360).png index 05896eeaf8..5ed7496454 100644 Binary files a/.gitbook/assets/image (360).png and b/.gitbook/assets/image (360).png differ diff --git a/.gitbook/assets/image (361).png b/.gitbook/assets/image (361).png index 6781527035..023dfa7291 100644 Binary files a/.gitbook/assets/image (361).png and b/.gitbook/assets/image (361).png differ diff --git a/.gitbook/assets/image (362).png b/.gitbook/assets/image (362).png index a9891bfd3f..4632fb411a 100644 Binary files a/.gitbook/assets/image (362).png and b/.gitbook/assets/image (362).png differ diff --git a/.gitbook/assets/image (363).png b/.gitbook/assets/image (363).png index 05213b2d4b..fa7f45e6d9 100644 Binary files a/.gitbook/assets/image (363).png and b/.gitbook/assets/image (363).png differ diff --git a/.gitbook/assets/image (364).png b/.gitbook/assets/image (364).png index 2aa49e9767..af7087fea0 100644 Binary files a/.gitbook/assets/image (364).png and b/.gitbook/assets/image (364).png differ diff --git a/.gitbook/assets/image (365).png b/.gitbook/assets/image (365).png index 478da90fe0..05213b2d4b 100644 Binary files a/.gitbook/assets/image (365).png and b/.gitbook/assets/image (365).png differ diff --git a/.gitbook/assets/image (366).png b/.gitbook/assets/image (366).png index 1b8b469d51..50dcccce17 100644 Binary files a/.gitbook/assets/image (366).png and b/.gitbook/assets/image (366).png differ diff --git a/.gitbook/assets/image (367).png b/.gitbook/assets/image (367).png index 4632fb411a..b0dcf74472 100644 Binary files a/.gitbook/assets/image (367).png and b/.gitbook/assets/image (367).png differ diff --git a/.gitbook/assets/image (368).png b/.gitbook/assets/image (368).png index 2aa8199597..6781527035 100644 Binary files a/.gitbook/assets/image (368).png and b/.gitbook/assets/image (368).png differ diff --git a/.gitbook/assets/image (369).png b/.gitbook/assets/image (369).png index 50dcccce17..b7abce7004 100644 Binary files a/.gitbook/assets/image (369).png and b/.gitbook/assets/image (369).png differ diff --git a/.gitbook/assets/image (37) (1) (1).png b/.gitbook/assets/image (37) (1) (1).png new file mode 100644 index 0000000000..92b12fd7c5 Binary files /dev/null and b/.gitbook/assets/image (37) (1) (1).png differ diff --git a/.gitbook/assets/image (37) (1).png b/.gitbook/assets/image (37) (1).png new file mode 100644 index 0000000000..5ebecd45c5 Binary files /dev/null and b/.gitbook/assets/image (37) (1).png differ diff --git a/.gitbook/assets/image (37) (2).png b/.gitbook/assets/image (37) (2).png new file mode 100644 index 0000000000..eda6d436e0 Binary files /dev/null and b/.gitbook/assets/image (37) (2).png differ diff --git a/.gitbook/assets/image (37).png b/.gitbook/assets/image (37).png index 582a579c4a..3e0c8b6d9a 100644 Binary files a/.gitbook/assets/image (37).png and b/.gitbook/assets/image (37).png differ diff --git a/.gitbook/assets/image (370).png b/.gitbook/assets/image (370).png index 87043882d1..0e80bf3e2e 100644 Binary files a/.gitbook/assets/image (370).png and b/.gitbook/assets/image (370).png differ diff --git a/.gitbook/assets/image (371).png b/.gitbook/assets/image (371).png index 7b4dc9a383..1b8b469d51 100644 Binary files a/.gitbook/assets/image (371).png and b/.gitbook/assets/image (371).png differ diff --git a/.gitbook/assets/image (372).png b/.gitbook/assets/image (372).png index af7087fea0..c17b788db3 100644 Binary files a/.gitbook/assets/image (372).png and b/.gitbook/assets/image (372).png differ diff --git a/.gitbook/assets/image (373).png b/.gitbook/assets/image (373).png index dad35820ef..3c45dad72d 100644 Binary files a/.gitbook/assets/image (373).png and b/.gitbook/assets/image (373).png differ diff --git a/.gitbook/assets/image (374).png b/.gitbook/assets/image (374).png index c968e18922..8a8473699b 100644 Binary files a/.gitbook/assets/image (374).png and b/.gitbook/assets/image (374).png differ diff --git a/.gitbook/assets/image (375).png b/.gitbook/assets/image (375).png index 027b0669bd..7c92086372 100644 Binary files a/.gitbook/assets/image (375).png and b/.gitbook/assets/image (375).png differ diff --git a/.gitbook/assets/image (377).png b/.gitbook/assets/image (377).png index c17b788db3..3180460e6c 100644 Binary files a/.gitbook/assets/image (377).png and b/.gitbook/assets/image (377).png differ diff --git a/.gitbook/assets/image (378).png b/.gitbook/assets/image (378).png index 8ec8297c51..6f1b99fc02 100644 Binary files a/.gitbook/assets/image (378).png and b/.gitbook/assets/image (378).png differ diff --git a/.gitbook/assets/image (379).png b/.gitbook/assets/image (379).png index e9e94cabf4..9df1bd8771 100644 Binary files a/.gitbook/assets/image (379).png and b/.gitbook/assets/image (379).png differ diff --git a/.gitbook/assets/image (38) (1).png b/.gitbook/assets/image (38) (1).png new file mode 100644 index 0000000000..58d186cc31 Binary files /dev/null and b/.gitbook/assets/image (38) (1).png differ diff --git a/.gitbook/assets/image (38).png b/.gitbook/assets/image (38).png index 02d5ab4512..2f49aaca5c 100644 Binary files a/.gitbook/assets/image (38).png and b/.gitbook/assets/image (38).png differ diff --git a/.gitbook/assets/image (380).png b/.gitbook/assets/image (380).png index 3c45dad72d..e9e94cabf4 100644 Binary files a/.gitbook/assets/image (380).png and b/.gitbook/assets/image (380).png differ diff --git a/.gitbook/assets/image (381).png b/.gitbook/assets/image (381).png index 6f1b99fc02..8ec8297c51 100644 Binary files a/.gitbook/assets/image (381).png and b/.gitbook/assets/image (381).png differ diff --git a/.gitbook/assets/image (382).png b/.gitbook/assets/image (382).png index 8a8473699b..606720664f 100644 Binary files a/.gitbook/assets/image (382).png and b/.gitbook/assets/image (382).png differ diff --git a/.gitbook/assets/image (383).png b/.gitbook/assets/image (383).png index 606720664f..ffd9200dc9 100644 Binary files a/.gitbook/assets/image (383).png and b/.gitbook/assets/image (383).png differ diff --git a/.gitbook/assets/image (384).png b/.gitbook/assets/image (384).png index 7c92086372..027b0669bd 100644 Binary files a/.gitbook/assets/image (384).png and b/.gitbook/assets/image (384).png differ diff --git a/.gitbook/assets/image (385).png b/.gitbook/assets/image (385).png index 4d11bbf744..d0d307ecf6 100644 Binary files a/.gitbook/assets/image (385).png and b/.gitbook/assets/image (385).png differ diff --git a/.gitbook/assets/image (386).png b/.gitbook/assets/image (386).png index 684cfd84c2..a9c00b9b1d 100644 Binary files a/.gitbook/assets/image (386).png and b/.gitbook/assets/image (386).png differ diff --git a/.gitbook/assets/image (387).png b/.gitbook/assets/image (387).png index 335fee35dc..72a307fa38 100644 Binary files a/.gitbook/assets/image (387).png and b/.gitbook/assets/image (387).png differ diff --git a/.gitbook/assets/image (388).png b/.gitbook/assets/image (388).png index 7627d68dbf..684cfd84c2 100644 Binary files a/.gitbook/assets/image (388).png and b/.gitbook/assets/image (388).png differ diff --git a/.gitbook/assets/image (389).png b/.gitbook/assets/image (389).png index 9d0c524747..9c6a9c025f 100644 Binary files a/.gitbook/assets/image (389).png and b/.gitbook/assets/image (389).png differ diff --git a/.gitbook/assets/image (39) (1).png b/.gitbook/assets/image (39) (1).png new file mode 100644 index 0000000000..fe501ee4f4 Binary files /dev/null and b/.gitbook/assets/image (39) (1).png differ diff --git a/.gitbook/assets/image (39).png b/.gitbook/assets/image (39).png index 482b6cc7a6..5db3e96d2e 100644 Binary files a/.gitbook/assets/image (39).png and b/.gitbook/assets/image (39).png differ diff --git a/.gitbook/assets/image (390).png b/.gitbook/assets/image (390).png index ffd9200dc9..335fee35dc 100644 Binary files a/.gitbook/assets/image (390).png and b/.gitbook/assets/image (390).png differ diff --git a/.gitbook/assets/image (391).png b/.gitbook/assets/image (391).png index 0e59af0b6e..7627d68dbf 100644 Binary files a/.gitbook/assets/image (391).png and b/.gitbook/assets/image (391).png differ diff --git a/.gitbook/assets/image (392) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (392) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..da8cd33336 Binary files /dev/null and b/.gitbook/assets/image (392) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (392) (1) (1) (1) (1).png b/.gitbook/assets/image (392) (1) (1) (1) (1).png new file mode 100644 index 0000000000..da8cd33336 Binary files /dev/null and b/.gitbook/assets/image (392) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (392) (1) (1) (1).png b/.gitbook/assets/image (392) (1) (1) (1).png new file mode 100644 index 0000000000..da8cd33336 Binary files /dev/null and b/.gitbook/assets/image (392) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (392) (1) (1).png b/.gitbook/assets/image (392) (1) (1).png new file mode 100644 index 0000000000..da8cd33336 Binary files /dev/null and b/.gitbook/assets/image (392) (1) (1).png differ diff --git a/.gitbook/assets/image (392).png b/.gitbook/assets/image (392).png deleted file mode 100644 index ef872017b2..0000000000 Binary files a/.gitbook/assets/image (392).png and /dev/null differ diff --git a/.gitbook/assets/image (393).png b/.gitbook/assets/image (393).png index 7f21bdbf00..d93db44f58 100644 Binary files a/.gitbook/assets/image (393).png and b/.gitbook/assets/image (393).png differ diff --git a/.gitbook/assets/image (394).png b/.gitbook/assets/image (394).png index a8acbbe67c..4d11bbf744 100644 Binary files a/.gitbook/assets/image (394).png and b/.gitbook/assets/image (394).png differ diff --git a/.gitbook/assets/image (395).png b/.gitbook/assets/image (395).png index 9c6a9c025f..9d0c524747 100644 Binary files a/.gitbook/assets/image (395).png and b/.gitbook/assets/image (395).png differ diff --git a/.gitbook/assets/image (396).png b/.gitbook/assets/image (396).png index a9c00b9b1d..9f43875683 100644 Binary files a/.gitbook/assets/image (396).png and b/.gitbook/assets/image (396).png differ diff --git a/.gitbook/assets/image (397).png b/.gitbook/assets/image (397).png index 486191f2b7..4288ee9f89 100644 Binary files a/.gitbook/assets/image (397).png and b/.gitbook/assets/image (397).png differ diff --git a/.gitbook/assets/image (398).png b/.gitbook/assets/image (398).png index 8e51bcd0df..486191f2b7 100644 Binary files a/.gitbook/assets/image (398).png and b/.gitbook/assets/image (398).png differ diff --git a/.gitbook/assets/image (399).png b/.gitbook/assets/image (399).png index bc6e8d50c6..e5680298cf 100644 Binary files a/.gitbook/assets/image (399).png and b/.gitbook/assets/image (399).png differ diff --git a/.gitbook/assets/image (4) (1).png b/.gitbook/assets/image (4) (1).png new file mode 100644 index 0000000000..2228b85fb8 Binary files /dev/null and b/.gitbook/assets/image (4) (1).png differ diff --git a/.gitbook/assets/image (4) (2).png b/.gitbook/assets/image (4) (2).png new file mode 100644 index 0000000000..a75f0bd309 Binary files /dev/null and b/.gitbook/assets/image (4) (2).png differ diff --git a/.gitbook/assets/image (4) (3).png b/.gitbook/assets/image (4) (3).png new file mode 100644 index 0000000000..fdc7cd5066 Binary files /dev/null and b/.gitbook/assets/image (4) (3).png differ diff --git a/.gitbook/assets/image (4).png b/.gitbook/assets/image (4).png index 81d82e95f6..31cef91198 100644 Binary files a/.gitbook/assets/image (4).png and b/.gitbook/assets/image (4).png differ diff --git a/.gitbook/assets/image (40) (1).png b/.gitbook/assets/image (40) (1).png new file mode 100644 index 0000000000..71e4fc431d Binary files /dev/null and b/.gitbook/assets/image (40) (1).png differ diff --git a/.gitbook/assets/image (40).png b/.gitbook/assets/image (40).png index df24dfebfa..67e71b11cb 100644 Binary files a/.gitbook/assets/image (40).png and b/.gitbook/assets/image (40).png differ diff --git a/.gitbook/assets/image (400).png b/.gitbook/assets/image (400).png index c93a26b42c..b8975425c5 100644 Binary files a/.gitbook/assets/image (400).png and b/.gitbook/assets/image (400).png differ diff --git a/.gitbook/assets/image (401).png b/.gitbook/assets/image (401).png index 5a2b1096c4..c93a26b42c 100644 Binary files a/.gitbook/assets/image (401).png and b/.gitbook/assets/image (401).png differ diff --git a/.gitbook/assets/image (402).png b/.gitbook/assets/image (402).png index 4288ee9f89..bc6e8d50c6 100644 Binary files a/.gitbook/assets/image (402).png and b/.gitbook/assets/image (402).png differ diff --git a/.gitbook/assets/image (403).png b/.gitbook/assets/image (403).png index 9f43875683..0e59af0b6e 100644 Binary files a/.gitbook/assets/image (403).png and b/.gitbook/assets/image (403).png differ diff --git a/.gitbook/assets/image (404).png b/.gitbook/assets/image (404).png index 72a307fa38..a8acbbe67c 100644 Binary files a/.gitbook/assets/image (404).png and b/.gitbook/assets/image (404).png differ diff --git a/.gitbook/assets/image (405).png b/.gitbook/assets/image (405).png index e5680298cf..7f21bdbf00 100644 Binary files a/.gitbook/assets/image (405).png and b/.gitbook/assets/image (405).png differ diff --git a/.gitbook/assets/image (408).png b/.gitbook/assets/image (408).png index da8cd33336..ccf357207b 100644 Binary files a/.gitbook/assets/image (408).png and b/.gitbook/assets/image (408).png differ diff --git a/.gitbook/assets/image (409).png b/.gitbook/assets/image (409).png index b8975425c5..ef872017b2 100644 Binary files a/.gitbook/assets/image (409).png and b/.gitbook/assets/image (409).png differ diff --git a/.gitbook/assets/image (41).png b/.gitbook/assets/image (41).png index 8a8e4932d6..8172d9fc79 100644 Binary files a/.gitbook/assets/image (41).png and b/.gitbook/assets/image (41).png differ diff --git a/.gitbook/assets/image (413).png b/.gitbook/assets/image (413).png index 6d1383b80d..8e51bcd0df 100644 Binary files a/.gitbook/assets/image (413).png and b/.gitbook/assets/image (413).png differ diff --git a/.gitbook/assets/image (416).png b/.gitbook/assets/image (416).png index 391e30125b..6d1383b80d 100644 Binary files a/.gitbook/assets/image (416).png and b/.gitbook/assets/image (416).png differ diff --git a/.gitbook/assets/image (417).png b/.gitbook/assets/image (417).png index 88d27d0223..b34f3bffc7 100644 Binary files a/.gitbook/assets/image (417).png and b/.gitbook/assets/image (417).png differ diff --git a/.gitbook/assets/image (418).png b/.gitbook/assets/image (418).png index b34f3bffc7..88d27d0223 100644 Binary files a/.gitbook/assets/image (418).png and b/.gitbook/assets/image (418).png differ diff --git a/.gitbook/assets/image (419).png b/.gitbook/assets/image (419).png index 383732d675..391e30125b 100644 Binary files a/.gitbook/assets/image (419).png and b/.gitbook/assets/image (419).png differ diff --git a/.gitbook/assets/image (42).png b/.gitbook/assets/image (42).png index 5ebecd45c5..fd6f7f13f3 100644 Binary files a/.gitbook/assets/image (42).png and b/.gitbook/assets/image (42).png differ diff --git a/.gitbook/assets/image (420).png b/.gitbook/assets/image (420).png index 6fadae912e..10121f6b77 100644 Binary files a/.gitbook/assets/image (420).png and b/.gitbook/assets/image (420).png differ diff --git a/.gitbook/assets/image (421).png b/.gitbook/assets/image (421).png index 10121f6b77..383732d675 100644 Binary files a/.gitbook/assets/image (421).png and b/.gitbook/assets/image (421).png differ diff --git a/.gitbook/assets/image (425).png b/.gitbook/assets/image (425).png index edf48e69dc..1c04075231 100644 Binary files a/.gitbook/assets/image (425).png and b/.gitbook/assets/image (425).png differ diff --git a/.gitbook/assets/image (426).png b/.gitbook/assets/image (426).png index 1c04075231..1b8fe82bb8 100644 Binary files a/.gitbook/assets/image (426).png and b/.gitbook/assets/image (426).png differ diff --git a/.gitbook/assets/image (427).png b/.gitbook/assets/image (427).png index 1b8fe82bb8..edf48e69dc 100644 Binary files a/.gitbook/assets/image (427).png and b/.gitbook/assets/image (427).png differ diff --git a/.gitbook/assets/image (428).png b/.gitbook/assets/image (428).png index d54d928c43..6fadae912e 100644 Binary files a/.gitbook/assets/image (428).png and b/.gitbook/assets/image (428).png differ diff --git a/.gitbook/assets/image (429).png b/.gitbook/assets/image (429).png index 97f68ce7e7..5a2b1096c4 100644 Binary files a/.gitbook/assets/image (429).png and b/.gitbook/assets/image (429).png differ diff --git a/.gitbook/assets/image (48) (1).png b/.gitbook/assets/image (43) (1) (1) (1) (1) (1).png similarity index 100% rename from .gitbook/assets/image (48) (1).png rename to .gitbook/assets/image (43) (1) (1) (1) (1) (1).png diff --git a/.gitbook/assets/image (43) (1) (1) (1) (1).png b/.gitbook/assets/image (43) (1) (1) (1) (1).png new file mode 100644 index 0000000000..d38f7dbdb3 Binary files /dev/null and b/.gitbook/assets/image (43) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (43) (1) (1) (1).png b/.gitbook/assets/image (43) (1) (1) (1).png new file mode 100644 index 0000000000..d38f7dbdb3 Binary files /dev/null and b/.gitbook/assets/image (43) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (43) (1) (2).png b/.gitbook/assets/image (43) (1) (2).png new file mode 100644 index 0000000000..d38f7dbdb3 Binary files /dev/null and b/.gitbook/assets/image (43) (1) (2).png differ diff --git a/.gitbook/assets/image (43).png b/.gitbook/assets/image (43).png index e26587a2bf..fa575b5ca1 100644 Binary files a/.gitbook/assets/image (43).png and b/.gitbook/assets/image (43).png differ diff --git a/.gitbook/assets/image (430).png b/.gitbook/assets/image (430).png index c3ed26c257..2cef90e03f 100644 Binary files a/.gitbook/assets/image (430).png and b/.gitbook/assets/image (430).png differ diff --git a/.gitbook/assets/image (431).png b/.gitbook/assets/image (431).png index 0061c2e2a6..c3ed26c257 100644 Binary files a/.gitbook/assets/image (431).png and b/.gitbook/assets/image (431).png differ diff --git a/.gitbook/assets/image (432).png b/.gitbook/assets/image (432).png index 8faf10e6a3..9de4a58572 100644 Binary files a/.gitbook/assets/image (432).png and b/.gitbook/assets/image (432).png differ diff --git a/.gitbook/assets/image (433).png b/.gitbook/assets/image (433).png index 2cef90e03f..8faf10e6a3 100644 Binary files a/.gitbook/assets/image (433).png and b/.gitbook/assets/image (433).png differ diff --git a/.gitbook/assets/image (434).png b/.gitbook/assets/image (434).png index 9de4a58572..ac4e8a2d55 100644 Binary files a/.gitbook/assets/image (434).png and b/.gitbook/assets/image (434).png differ diff --git a/.gitbook/assets/image (435).png b/.gitbook/assets/image (435).png index 8eb6af77f4..ebe925a375 100644 Binary files a/.gitbook/assets/image (435).png and b/.gitbook/assets/image (435).png differ diff --git a/.gitbook/assets/image (436).png b/.gitbook/assets/image (436).png index 0e8b1d5858..2421ad9915 100644 Binary files a/.gitbook/assets/image (436).png and b/.gitbook/assets/image (436).png differ diff --git a/.gitbook/assets/image (437).png b/.gitbook/assets/image (437).png index ebe925a375..d54d928c43 100644 Binary files a/.gitbook/assets/image (437).png and b/.gitbook/assets/image (437).png differ diff --git a/.gitbook/assets/image (438).png b/.gitbook/assets/image (438).png index ac4e8a2d55..2840684df9 100644 Binary files a/.gitbook/assets/image (438).png and b/.gitbook/assets/image (438).png differ diff --git a/.gitbook/assets/image (439).png b/.gitbook/assets/image (439).png index 2421ad9915..97f68ce7e7 100644 Binary files a/.gitbook/assets/image (439).png and b/.gitbook/assets/image (439).png differ diff --git a/.gitbook/assets/image (44).png b/.gitbook/assets/image (44).png index 895e2a2763..7a7c1fae76 100644 Binary files a/.gitbook/assets/image (44).png and b/.gitbook/assets/image (44).png differ diff --git a/.gitbook/assets/image (440).png b/.gitbook/assets/image (440).png index 2840684df9..0061c2e2a6 100644 Binary files a/.gitbook/assets/image (440).png and b/.gitbook/assets/image (440).png differ diff --git a/.gitbook/assets/image (441).png b/.gitbook/assets/image (441).png index e018ee9a22..8eb6af77f4 100644 Binary files a/.gitbook/assets/image (441).png and b/.gitbook/assets/image (441).png differ diff --git a/.gitbook/assets/image (442).png b/.gitbook/assets/image (442).png index 8290233492..0e8b1d5858 100644 Binary files a/.gitbook/assets/image (442).png and b/.gitbook/assets/image (442).png differ diff --git a/.gitbook/assets/image (444).png b/.gitbook/assets/image (444).png index c5b2140cb7..a48eccd1a5 100644 Binary files a/.gitbook/assets/image (444).png and b/.gitbook/assets/image (444).png differ diff --git a/.gitbook/assets/image (446).png b/.gitbook/assets/image (446).png index b073498eb5..be4681a8f0 100644 Binary files a/.gitbook/assets/image (446).png and b/.gitbook/assets/image (446).png differ diff --git a/.gitbook/assets/image (447).png b/.gitbook/assets/image (447).png index 06ef7628cf..edf0e02b84 100644 Binary files a/.gitbook/assets/image (447).png and b/.gitbook/assets/image (447).png differ diff --git a/.gitbook/assets/image (448).png b/.gitbook/assets/image (448).png index 6eaebbea73..1b2d933a3e 100644 Binary files a/.gitbook/assets/image (448).png and b/.gitbook/assets/image (448).png differ diff --git a/.gitbook/assets/image (449).png b/.gitbook/assets/image (449).png index ec5fe9de1b..c2c30111ab 100644 Binary files a/.gitbook/assets/image (449).png and b/.gitbook/assets/image (449).png differ diff --git a/.gitbook/assets/image (45).png b/.gitbook/assets/image (45).png index 5db3e96d2e..5bff1a3634 100644 Binary files a/.gitbook/assets/image (45).png and b/.gitbook/assets/image (45).png differ diff --git a/.gitbook/assets/image (450).png b/.gitbook/assets/image (450).png index ba40c92812..d7ba57bff4 100644 Binary files a/.gitbook/assets/image (450).png and b/.gitbook/assets/image (450).png differ diff --git a/.gitbook/assets/image (451).png b/.gitbook/assets/image (451).png index ab00542385..9debd0a77f 100644 Binary files a/.gitbook/assets/image (451).png and b/.gitbook/assets/image (451).png differ diff --git a/.gitbook/assets/image (452).png b/.gitbook/assets/image (452).png index ccc09e8dfb..8290233492 100644 Binary files a/.gitbook/assets/image (452).png and b/.gitbook/assets/image (452).png differ diff --git a/.gitbook/assets/image (453).png b/.gitbook/assets/image (453).png index 5e6dc86f50..e018ee9a22 100644 Binary files a/.gitbook/assets/image (453).png and b/.gitbook/assets/image (453).png differ diff --git a/.gitbook/assets/image (454).png b/.gitbook/assets/image (454).png index d7ba57bff4..5ff44dd015 100644 Binary files a/.gitbook/assets/image (454).png and b/.gitbook/assets/image (454).png differ diff --git a/.gitbook/assets/image (455) (2).png b/.gitbook/assets/image (455) (2).png new file mode 100644 index 0000000000..41f676df53 Binary files /dev/null and b/.gitbook/assets/image (455) (2).png differ diff --git a/.gitbook/assets/image (455) (3).png b/.gitbook/assets/image (455) (3).png new file mode 100644 index 0000000000..ebf38fc7a2 Binary files /dev/null and b/.gitbook/assets/image (455) (3).png differ diff --git a/.gitbook/assets/image (455).png b/.gitbook/assets/image (455).png index 1b2d933a3e..8b70c00b1a 100644 Binary files a/.gitbook/assets/image (455).png and b/.gitbook/assets/image (455).png differ diff --git a/.gitbook/assets/image (456).png b/.gitbook/assets/image (456).png index edf0e02b84..ed389897b0 100644 Binary files a/.gitbook/assets/image (456).png and b/.gitbook/assets/image (456).png differ diff --git a/.gitbook/assets/image (457).png b/.gitbook/assets/image (457).png index ed389897b0..ec5fe9de1b 100644 Binary files a/.gitbook/assets/image (457).png and b/.gitbook/assets/image (457).png differ diff --git a/.gitbook/assets/image (458).png b/.gitbook/assets/image (458).png index a48eccd1a5..6eaebbea73 100644 Binary files a/.gitbook/assets/image (458).png and b/.gitbook/assets/image (458).png differ diff --git a/.gitbook/assets/image (459).png b/.gitbook/assets/image (459).png index 5ff44dd015..06ef7628cf 100644 Binary files a/.gitbook/assets/image (459).png and b/.gitbook/assets/image (459).png differ diff --git a/.gitbook/assets/image (46).png b/.gitbook/assets/image (46).png index 702e7cb590..2cfc473cc3 100644 Binary files a/.gitbook/assets/image (46).png and b/.gitbook/assets/image (46).png differ diff --git a/.gitbook/assets/image (460).png b/.gitbook/assets/image (460).png index 48d0658bad..c5b2140cb7 100644 Binary files a/.gitbook/assets/image (460).png and b/.gitbook/assets/image (460).png differ diff --git a/.gitbook/assets/image (461).png b/.gitbook/assets/image (461).png index 34b0a3ac11..ab00542385 100644 Binary files a/.gitbook/assets/image (461).png and b/.gitbook/assets/image (461).png differ diff --git a/.gitbook/assets/image (462).png b/.gitbook/assets/image (462).png index 9ddfe54f4d..ba40c92812 100644 Binary files a/.gitbook/assets/image (462).png and b/.gitbook/assets/image (462).png differ diff --git a/.gitbook/assets/image (463).png b/.gitbook/assets/image (463).png index 78e741d435..5e6dc86f50 100644 Binary files a/.gitbook/assets/image (463).png and b/.gitbook/assets/image (463).png differ diff --git a/.gitbook/assets/image (464).png b/.gitbook/assets/image (464).png index 00bcf97f22..ccc09e8dfb 100644 Binary files a/.gitbook/assets/image (464).png and b/.gitbook/assets/image (464).png differ diff --git a/.gitbook/assets/image (465).png b/.gitbook/assets/image (465).png index 9debd0a77f..f282b72b3c 100644 Binary files a/.gitbook/assets/image (465).png and b/.gitbook/assets/image (465).png differ diff --git a/.gitbook/assets/image (466).png b/.gitbook/assets/image (466).png index 482a5fb10f..3ae1653118 100644 Binary files a/.gitbook/assets/image (466).png and b/.gitbook/assets/image (466).png differ diff --git a/.gitbook/assets/image (468).png b/.gitbook/assets/image (468).png index f282b72b3c..48d0658bad 100644 Binary files a/.gitbook/assets/image (468).png and b/.gitbook/assets/image (468).png differ diff --git a/.gitbook/assets/image (469).png b/.gitbook/assets/image (469).png index 3ae1653118..78e741d435 100644 Binary files a/.gitbook/assets/image (469).png and b/.gitbook/assets/image (469).png differ diff --git a/.gitbook/assets/image (47).png b/.gitbook/assets/image (47).png index b08ed11c93..5732934227 100644 Binary files a/.gitbook/assets/image (47).png and b/.gitbook/assets/image (47).png differ diff --git a/.gitbook/assets/image (470).png b/.gitbook/assets/image (470).png index 957d681744..00bcf97f22 100644 Binary files a/.gitbook/assets/image (470).png and b/.gitbook/assets/image (470).png differ diff --git a/.gitbook/assets/image (471).png b/.gitbook/assets/image (471).png index be4681a8f0..482a5fb10f 100644 Binary files a/.gitbook/assets/image (471).png and b/.gitbook/assets/image (471).png differ diff --git a/.gitbook/assets/image (472).png b/.gitbook/assets/image (472).png index c2c30111ab..9ddfe54f4d 100644 Binary files a/.gitbook/assets/image (472).png and b/.gitbook/assets/image (472).png differ diff --git a/.gitbook/assets/image (474).png b/.gitbook/assets/image (474).png index 3f4e8e945c..843977bdd1 100644 Binary files a/.gitbook/assets/image (474).png and b/.gitbook/assets/image (474).png differ diff --git a/.gitbook/assets/image (475).png b/.gitbook/assets/image (475).png index 55ee5b67d9..2cbc986543 100644 Binary files a/.gitbook/assets/image (475).png and b/.gitbook/assets/image (475).png differ diff --git a/.gitbook/assets/image (476).png b/.gitbook/assets/image (476).png index 17ef94d2ea..0c3bc43702 100644 Binary files a/.gitbook/assets/image (476).png and b/.gitbook/assets/image (476).png differ diff --git a/.gitbook/assets/image (477).png b/.gitbook/assets/image (477).png index 0c3bc43702..17ef94d2ea 100644 Binary files a/.gitbook/assets/image (477).png and b/.gitbook/assets/image (477).png differ diff --git a/.gitbook/assets/image (478).png b/.gitbook/assets/image (478).png index 2cbc986543..3f4e8e945c 100644 Binary files a/.gitbook/assets/image (478).png and b/.gitbook/assets/image (478).png differ diff --git a/.gitbook/assets/image (479).png b/.gitbook/assets/image (479).png index bf56f1738d..1dbccd42a7 100644 Binary files a/.gitbook/assets/image (479).png and b/.gitbook/assets/image (479).png differ diff --git a/.gitbook/assets/image (48) (2).png b/.gitbook/assets/image (48) (2).png new file mode 100644 index 0000000000..5cd41d6261 Binary files /dev/null and b/.gitbook/assets/image (48) (2).png differ diff --git a/.gitbook/assets/image (48).png b/.gitbook/assets/image (48).png index d38f7dbdb3..15ab3a5bf7 100644 Binary files a/.gitbook/assets/image (48).png and b/.gitbook/assets/image (48).png differ diff --git a/.gitbook/assets/image (480).png b/.gitbook/assets/image (480).png index 291bc478f0..b073498eb5 100644 Binary files a/.gitbook/assets/image (480).png and b/.gitbook/assets/image (480).png differ diff --git a/.gitbook/assets/image (481).png b/.gitbook/assets/image (481).png index d3e76b90e8..55ee5b67d9 100644 Binary files a/.gitbook/assets/image (481).png and b/.gitbook/assets/image (481).png differ diff --git a/.gitbook/assets/image (482).png b/.gitbook/assets/image (482).png index 843977bdd1..957d681744 100644 Binary files a/.gitbook/assets/image (482).png and b/.gitbook/assets/image (482).png differ diff --git a/.gitbook/assets/image (483).png b/.gitbook/assets/image (483).png index 1dbccd42a7..d3e76b90e8 100644 Binary files a/.gitbook/assets/image (483).png and b/.gitbook/assets/image (483).png differ diff --git a/.gitbook/assets/image (484).png b/.gitbook/assets/image (484).png index 7556d48a8e..291bc478f0 100644 Binary files a/.gitbook/assets/image (484).png and b/.gitbook/assets/image (484).png differ diff --git a/.gitbook/assets/image (485).png b/.gitbook/assets/image (485).png index 2426fab5c6..bf56f1738d 100644 Binary files a/.gitbook/assets/image (485).png and b/.gitbook/assets/image (485).png differ diff --git a/.gitbook/assets/image (487).png b/.gitbook/assets/image (487).png index 78704d3411..7556d48a8e 100644 Binary files a/.gitbook/assets/image (487).png and b/.gitbook/assets/image (487).png differ diff --git a/.gitbook/assets/image (488).png b/.gitbook/assets/image (488).png index a9fb4520a8..2426fab5c6 100644 Binary files a/.gitbook/assets/image (488).png and b/.gitbook/assets/image (488).png differ diff --git a/.gitbook/assets/image (489).png b/.gitbook/assets/image (489).png index fb12e29844..78704d3411 100644 Binary files a/.gitbook/assets/image (489).png and b/.gitbook/assets/image (489).png differ diff --git a/.gitbook/assets/image (49).png b/.gitbook/assets/image (49).png index fd6f7f13f3..6f6610955e 100644 Binary files a/.gitbook/assets/image (49).png and b/.gitbook/assets/image (49).png differ diff --git a/.gitbook/assets/image (490).png b/.gitbook/assets/image (490).png index 3d7dce304d..34b0a3ac11 100644 Binary files a/.gitbook/assets/image (490).png and b/.gitbook/assets/image (490).png differ diff --git a/.gitbook/assets/image (491).png b/.gitbook/assets/image (491).png index c9bfc64bba..a9fb4520a8 100644 Binary files a/.gitbook/assets/image (491).png and b/.gitbook/assets/image (491).png differ diff --git a/.gitbook/assets/image (492).png b/.gitbook/assets/image (492).png index e11370acbb..fb12e29844 100644 Binary files a/.gitbook/assets/image (492).png and b/.gitbook/assets/image (492).png differ diff --git a/.gitbook/assets/image (493).png b/.gitbook/assets/image (493).png index 624d04a253..ba176d4892 100644 Binary files a/.gitbook/assets/image (493).png and b/.gitbook/assets/image (493).png differ diff --git a/.gitbook/assets/image (494).png b/.gitbook/assets/image (494).png index e583e602e9..4294f2e38a 100644 Binary files a/.gitbook/assets/image (494).png and b/.gitbook/assets/image (494).png differ diff --git a/.gitbook/assets/image (495).png b/.gitbook/assets/image (495).png index a044375660..19df2369b5 100644 Binary files a/.gitbook/assets/image (495).png and b/.gitbook/assets/image (495).png differ diff --git a/.gitbook/assets/image (496).png b/.gitbook/assets/image (496).png index 979717fb27..ea4348f48f 100644 Binary files a/.gitbook/assets/image (496).png and b/.gitbook/assets/image (496).png differ diff --git a/.gitbook/assets/image (497).png b/.gitbook/assets/image (497).png index 6d84f0a735..979717fb27 100644 Binary files a/.gitbook/assets/image (497).png and b/.gitbook/assets/image (497).png differ diff --git a/.gitbook/assets/image (498).png b/.gitbook/assets/image (498).png index 24566b8540..14e1a80e8e 100644 Binary files a/.gitbook/assets/image (498).png and b/.gitbook/assets/image (498).png differ diff --git a/.gitbook/assets/image (499).png b/.gitbook/assets/image (499).png new file mode 100644 index 0000000000..e5079aae21 Binary files /dev/null and b/.gitbook/assets/image (499).png differ diff --git a/.gitbook/assets/image (5) (1).png b/.gitbook/assets/image (5) (1).png new file mode 100644 index 0000000000..22c3d64da3 Binary files /dev/null and b/.gitbook/assets/image (5) (1).png differ diff --git a/.gitbook/assets/image (5) (2).png b/.gitbook/assets/image (5) (2).png new file mode 100644 index 0000000000..5d37c002ad Binary files /dev/null and b/.gitbook/assets/image (5) (2).png differ diff --git a/.gitbook/assets/image (5).png b/.gitbook/assets/image (5).png index 83d2738ab4..9fa6dacc08 100644 Binary files a/.gitbook/assets/image (5).png and b/.gitbook/assets/image (5).png differ diff --git a/.gitbook/assets/image (50).png b/.gitbook/assets/image (50).png index 8172d9fc79..67dbd0a5bb 100644 Binary files a/.gitbook/assets/image (50).png and b/.gitbook/assets/image (50).png differ diff --git a/.gitbook/assets/image (500).png b/.gitbook/assets/image (500).png index 65d84cf664..c957402324 100644 Binary files a/.gitbook/assets/image (500).png and b/.gitbook/assets/image (500).png differ diff --git a/.gitbook/assets/image (501).png b/.gitbook/assets/image (501).png index 43cd254057..624d04a253 100644 Binary files a/.gitbook/assets/image (501).png and b/.gitbook/assets/image (501).png differ diff --git a/.gitbook/assets/image (502).png b/.gitbook/assets/image (502).png new file mode 100644 index 0000000000..bc09c28d1e Binary files /dev/null and b/.gitbook/assets/image (502).png differ diff --git a/.gitbook/assets/image (503).png b/.gitbook/assets/image (503).png index 77b6efe6c0..9e03dea189 100644 Binary files a/.gitbook/assets/image (503).png and b/.gitbook/assets/image (503).png differ diff --git a/.gitbook/assets/image (504).png b/.gitbook/assets/image (504).png index bc09c28d1e..979a3315ea 100644 Binary files a/.gitbook/assets/image (504).png and b/.gitbook/assets/image (504).png differ diff --git a/.gitbook/assets/image (505).png b/.gitbook/assets/image (505).png index fb46bc5759..24566b8540 100644 Binary files a/.gitbook/assets/image (505).png and b/.gitbook/assets/image (505).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (1) (3) (1).png similarity index 100% rename from .gitbook/assets/image (506) (2) (2) (1).png rename to .gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (1) (3) (1).png diff --git a/.gitbook/assets/image (506) (2) (2) (2).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (1) (3) (2).png similarity index 100% rename from .gitbook/assets/image (506) (2) (2) (2).png rename to .gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (1) (3) (2).png diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (1) (3) (3).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (1) (3) (3).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (1) (3) (3).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (1) (3) (4).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (1) (3) (5).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (1) (3) (5).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (1) (3) (5).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (1) (3).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (1).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (2).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (3).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (4).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (4).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (3).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (3).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (3).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (4).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (4).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (4).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (5).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (5).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1) (5).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (2) (1).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (3) (1).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (3) (1).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (3) (1).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (3) (2).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (3) (2).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (3) (2).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (3) (3).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (3) (3).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (3) (3).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (3) (4).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (3) (5).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (3) (5).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (3) (5).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (4).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (4).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (5).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (5).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (1).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (1).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (2).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (2).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (2).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (3) (1).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (3) (1).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (3) (1).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1) (3).png b/.gitbook/assets/image (506) (2) (2) (1) (1) (3).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1) (3).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (1).png b/.gitbook/assets/image (506) (2) (2) (1) (1).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (1).png differ diff --git a/.gitbook/assets/image (506) (2) (2) (1) (2).png b/.gitbook/assets/image (506) (2) (2) (1) (2).png new file mode 100644 index 0000000000..fe5b4885de Binary files /dev/null and b/.gitbook/assets/image (506) (2) (2) (1) (2).png differ diff --git a/.gitbook/assets/image (506).png b/.gitbook/assets/image (506).png new file mode 100644 index 0000000000..5d8bb43f2c Binary files /dev/null and b/.gitbook/assets/image (506).png differ diff --git a/.gitbook/assets/image (507).png b/.gitbook/assets/image (507).png index cc4cb643ab..bc5462369b 100644 Binary files a/.gitbook/assets/image (507).png and b/.gitbook/assets/image (507).png differ diff --git a/.gitbook/assets/image (508).png b/.gitbook/assets/image (508).png index ba176d4892..43b28f2bc3 100644 Binary files a/.gitbook/assets/image (508).png and b/.gitbook/assets/image (508).png differ diff --git a/.gitbook/assets/image (509).png b/.gitbook/assets/image (509).png index f877c9116e..764ef75ac5 100644 Binary files a/.gitbook/assets/image (509).png and b/.gitbook/assets/image (509).png differ diff --git a/.gitbook/assets/image (51).png b/.gitbook/assets/image (51).png index f3e18a5ecf..67bfaba711 100644 Binary files a/.gitbook/assets/image (51).png and b/.gitbook/assets/image (51).png differ diff --git a/.gitbook/assets/image (510).png b/.gitbook/assets/image (510).png index 07a5df83f6..6eea92713a 100644 Binary files a/.gitbook/assets/image (510).png and b/.gitbook/assets/image (510).png differ diff --git a/.gitbook/assets/image (511).png b/.gitbook/assets/image (511).png index 43b28f2bc3..21443dac73 100644 Binary files a/.gitbook/assets/image (511).png and b/.gitbook/assets/image (511).png differ diff --git a/.gitbook/assets/image (512).png b/.gitbook/assets/image (512).png index f68744b473..cf2d58d8ea 100644 Binary files a/.gitbook/assets/image (512).png and b/.gitbook/assets/image (512).png differ diff --git a/.gitbook/assets/image (513).png b/.gitbook/assets/image (513).png index 5874d5c815..a0972e5702 100644 Binary files a/.gitbook/assets/image (513).png and b/.gitbook/assets/image (513).png differ diff --git a/.gitbook/assets/image (514).png b/.gitbook/assets/image (514).png index 81ddedea07..9792ef7917 100644 Binary files a/.gitbook/assets/image (514).png and b/.gitbook/assets/image (514).png differ diff --git a/.gitbook/assets/image (515).png b/.gitbook/assets/image (515).png new file mode 100644 index 0000000000..367badcc6c Binary files /dev/null and b/.gitbook/assets/image (515).png differ diff --git a/.gitbook/assets/image (516).png b/.gitbook/assets/image (516).png index 9792ef7917..65d84cf664 100644 Binary files a/.gitbook/assets/image (516).png and b/.gitbook/assets/image (516).png differ diff --git a/.gitbook/assets/image (517).png b/.gitbook/assets/image (517).png index 21443dac73..cc4cb643ab 100644 Binary files a/.gitbook/assets/image (517).png and b/.gitbook/assets/image (517).png differ diff --git a/.gitbook/assets/image (518).png b/.gitbook/assets/image (518).png index 6eea92713a..43cd254057 100644 Binary files a/.gitbook/assets/image (518).png and b/.gitbook/assets/image (518).png differ diff --git a/.gitbook/assets/image (519).png b/.gitbook/assets/image (519).png index f81427a177..a044375660 100644 Binary files a/.gitbook/assets/image (519).png and b/.gitbook/assets/image (519).png differ diff --git a/.gitbook/assets/image (52).png b/.gitbook/assets/image (52).png index 7a7c1fae76..b5e3d33848 100644 Binary files a/.gitbook/assets/image (52).png and b/.gitbook/assets/image (52).png differ diff --git a/.gitbook/assets/image (520).png b/.gitbook/assets/image (520).png index 2b84545b8c..43eb3ca748 100644 Binary files a/.gitbook/assets/image (520).png and b/.gitbook/assets/image (520).png differ diff --git a/.gitbook/assets/image (521).png b/.gitbook/assets/image (521).png index 155d7222b3..37bd53c7bb 100644 Binary files a/.gitbook/assets/image (521).png and b/.gitbook/assets/image (521).png differ diff --git a/.gitbook/assets/image (522).png b/.gitbook/assets/image (522).png index 19df2369b5..a26701f980 100644 Binary files a/.gitbook/assets/image (522).png and b/.gitbook/assets/image (522).png differ diff --git a/.gitbook/assets/image (523).png b/.gitbook/assets/image (523).png index 1ffb4fcb9f..f877c9116e 100644 Binary files a/.gitbook/assets/image (523).png and b/.gitbook/assets/image (523).png differ diff --git a/.gitbook/assets/image (524).png b/.gitbook/assets/image (524).png index dd5321edef..e583e602e9 100644 Binary files a/.gitbook/assets/image (524).png and b/.gitbook/assets/image (524).png differ diff --git a/.gitbook/assets/image (525).png b/.gitbook/assets/image (525).png index aaea22ded5..3e73bfbc02 100644 Binary files a/.gitbook/assets/image (525).png and b/.gitbook/assets/image (525).png differ diff --git a/.gitbook/assets/image (526).png b/.gitbook/assets/image (526).png index 14e1a80e8e..9d3f3c3585 100644 Binary files a/.gitbook/assets/image (526).png and b/.gitbook/assets/image (526).png differ diff --git a/.gitbook/assets/image (527).png b/.gitbook/assets/image (527).png index e5079aae21..155d7222b3 100644 Binary files a/.gitbook/assets/image (527).png and b/.gitbook/assets/image (527).png differ diff --git a/.gitbook/assets/image (528).png b/.gitbook/assets/image (528).png index 37bd53c7bb..3d7dce304d 100644 Binary files a/.gitbook/assets/image (528).png and b/.gitbook/assets/image (528).png differ diff --git a/.gitbook/assets/image (529).png b/.gitbook/assets/image (529).png index 3311782699..71a8dd7563 100644 Binary files a/.gitbook/assets/image (529).png and b/.gitbook/assets/image (529).png differ diff --git a/.gitbook/assets/image (53).png b/.gitbook/assets/image (53).png index 67e71b11cb..7d7b31955b 100644 Binary files a/.gitbook/assets/image (53).png and b/.gitbook/assets/image (53).png differ diff --git a/.gitbook/assets/image (530).png b/.gitbook/assets/image (530).png index 5d8bb43f2c..47d4b69db7 100644 Binary files a/.gitbook/assets/image (530).png and b/.gitbook/assets/image (530).png differ diff --git a/.gitbook/assets/image (531).png b/.gitbook/assets/image (531).png index 43eb3ca748..f81427a177 100644 Binary files a/.gitbook/assets/image (531).png and b/.gitbook/assets/image (531).png differ diff --git a/.gitbook/assets/image (532).png b/.gitbook/assets/image (532).png index 764ef75ac5..fb46bc5759 100644 Binary files a/.gitbook/assets/image (532).png and b/.gitbook/assets/image (532).png differ diff --git a/.gitbook/assets/image (533).png b/.gitbook/assets/image (533).png index a26701f980..dd5321edef 100644 Binary files a/.gitbook/assets/image (533).png and b/.gitbook/assets/image (533).png differ diff --git a/.gitbook/assets/image (534).png b/.gitbook/assets/image (534).png index 6e3219b35e..6d84f0a735 100644 Binary files a/.gitbook/assets/image (534).png and b/.gitbook/assets/image (534).png differ diff --git a/.gitbook/assets/image (535).png b/.gitbook/assets/image (535).png index 4294f2e38a..7baee99274 100644 Binary files a/.gitbook/assets/image (535).png and b/.gitbook/assets/image (535).png differ diff --git a/.gitbook/assets/image (536).png b/.gitbook/assets/image (536).png index 12ea470d09..77b6efe6c0 100644 Binary files a/.gitbook/assets/image (536).png and b/.gitbook/assets/image (536).png differ diff --git a/.gitbook/assets/image (538).png b/.gitbook/assets/image (538).png index 979a3315ea..3311782699 100644 Binary files a/.gitbook/assets/image (538).png and b/.gitbook/assets/image (538).png differ diff --git a/.gitbook/assets/image (54).png b/.gitbook/assets/image (54).png index 2cfc473cc3..a3e8a2c46d 100644 Binary files a/.gitbook/assets/image (54).png and b/.gitbook/assets/image (54).png differ diff --git a/.gitbook/assets/image (540).png b/.gitbook/assets/image (540).png index 3c17d99218..f68744b473 100644 Binary files a/.gitbook/assets/image (540).png and b/.gitbook/assets/image (540).png differ diff --git a/.gitbook/assets/image (541).png b/.gitbook/assets/image (541).png index c7c106229c..81ddedea07 100644 Binary files a/.gitbook/assets/image (541).png and b/.gitbook/assets/image (541).png differ diff --git a/.gitbook/assets/image (542).png b/.gitbook/assets/image (542).png index 47d4b69db7..5874d5c815 100644 Binary files a/.gitbook/assets/image (542).png and b/.gitbook/assets/image (542).png differ diff --git a/.gitbook/assets/image (543).png b/.gitbook/assets/image (543).png index 34a0501462..e11370acbb 100644 Binary files a/.gitbook/assets/image (543).png and b/.gitbook/assets/image (543).png differ diff --git a/.gitbook/assets/image (544).png b/.gitbook/assets/image (544).png index 7baee99274..aaea22ded5 100644 Binary files a/.gitbook/assets/image (544).png and b/.gitbook/assets/image (544).png differ diff --git a/.gitbook/assets/image (545).png b/.gitbook/assets/image (545).png index c957402324..961eed9e41 100644 Binary files a/.gitbook/assets/image (545).png and b/.gitbook/assets/image (545).png differ diff --git a/.gitbook/assets/image (546).png b/.gitbook/assets/image (546).png new file mode 100644 index 0000000000..12ea470d09 Binary files /dev/null and b/.gitbook/assets/image (546).png differ diff --git a/.gitbook/assets/image (547).png b/.gitbook/assets/image (547).png index 3e73bfbc02..eb940b1ac8 100644 Binary files a/.gitbook/assets/image (547).png and b/.gitbook/assets/image (547).png differ diff --git a/.gitbook/assets/image (548).png b/.gitbook/assets/image (548).png index 9e03dea189..3c17d99218 100644 Binary files a/.gitbook/assets/image (548).png and b/.gitbook/assets/image (548).png differ diff --git a/.gitbook/assets/image (549).png b/.gitbook/assets/image (549).png index 367badcc6c..6e3219b35e 100644 Binary files a/.gitbook/assets/image (549).png and b/.gitbook/assets/image (549).png differ diff --git a/.gitbook/assets/image (55).png b/.gitbook/assets/image (55).png index 5bff1a3634..01b5d689fe 100644 Binary files a/.gitbook/assets/image (55).png and b/.gitbook/assets/image (55).png differ diff --git a/.gitbook/assets/image (550).png b/.gitbook/assets/image (550).png index cf2d58d8ea..34a0501462 100644 Binary files a/.gitbook/assets/image (550).png and b/.gitbook/assets/image (550).png differ diff --git a/.gitbook/assets/image (551).png b/.gitbook/assets/image (551).png index a0972e5702..c9bfc64bba 100644 Binary files a/.gitbook/assets/image (551).png and b/.gitbook/assets/image (551).png differ diff --git a/.gitbook/assets/image (552).png b/.gitbook/assets/image (552).png index eb940b1ac8..b1e9e63125 100644 Binary files a/.gitbook/assets/image (552).png and b/.gitbook/assets/image (552).png differ diff --git a/.gitbook/assets/image (553).png b/.gitbook/assets/image (553).png index ea4348f48f..07a5df83f6 100644 Binary files a/.gitbook/assets/image (553).png and b/.gitbook/assets/image (553).png differ diff --git a/.gitbook/assets/image (554).png b/.gitbook/assets/image (554).png index 961eed9e41..52105ade58 100644 Binary files a/.gitbook/assets/image (554).png and b/.gitbook/assets/image (554).png differ diff --git a/.gitbook/assets/image (555).png b/.gitbook/assets/image (555).png index bc5462369b..1ffb4fcb9f 100644 Binary files a/.gitbook/assets/image (555).png and b/.gitbook/assets/image (555).png differ diff --git a/.gitbook/assets/image (556).png b/.gitbook/assets/image (556).png index b1e9e63125..2b84545b8c 100644 Binary files a/.gitbook/assets/image (556).png and b/.gitbook/assets/image (556).png differ diff --git a/.gitbook/assets/image (557).png b/.gitbook/assets/image (557).png index 9d3f3c3585..088d0a7513 100644 Binary files a/.gitbook/assets/image (557).png and b/.gitbook/assets/image (557).png differ diff --git a/.gitbook/assets/image (558).png b/.gitbook/assets/image (558).png index 71a8dd7563..c7c106229c 100644 Binary files a/.gitbook/assets/image (558).png and b/.gitbook/assets/image (558).png differ diff --git a/.gitbook/assets/image (559).png b/.gitbook/assets/image (559).png new file mode 100644 index 0000000000..eb50060cf4 Binary files /dev/null and b/.gitbook/assets/image (559).png differ diff --git a/.gitbook/assets/image (56).png b/.gitbook/assets/image (56).png index 5732934227..035ffd61da 100644 Binary files a/.gitbook/assets/image (56).png and b/.gitbook/assets/image (56).png differ diff --git a/.gitbook/assets/image (560).png b/.gitbook/assets/image (560).png index 52105ade58..331eb2cb73 100644 Binary files a/.gitbook/assets/image (560).png and b/.gitbook/assets/image (560).png differ diff --git a/.gitbook/assets/image (561).png b/.gitbook/assets/image (561).png new file mode 100644 index 0000000000..aae8aa4df7 Binary files /dev/null and b/.gitbook/assets/image (561).png differ diff --git a/.gitbook/assets/image (562).png b/.gitbook/assets/image (562).png index 088d0a7513..6bf5f97234 100644 Binary files a/.gitbook/assets/image (562).png and b/.gitbook/assets/image (562).png differ diff --git a/.gitbook/assets/image (563).png b/.gitbook/assets/image (563).png index 6bf5f97234..0b967e3ac6 100644 Binary files a/.gitbook/assets/image (563).png and b/.gitbook/assets/image (563).png differ diff --git a/.gitbook/assets/image (564).png b/.gitbook/assets/image (564).png index eb50060cf4..bfcd310dbb 100644 Binary files a/.gitbook/assets/image (564).png and b/.gitbook/assets/image (564).png differ diff --git a/.gitbook/assets/image (565).png b/.gitbook/assets/image (565).png index aae8aa4df7..55c8a97f0f 100644 Binary files a/.gitbook/assets/image (565).png and b/.gitbook/assets/image (565).png differ diff --git a/.gitbook/assets/image (566).png b/.gitbook/assets/image (566).png index 0b967e3ac6..1ec65e9e8b 100644 Binary files a/.gitbook/assets/image (566).png and b/.gitbook/assets/image (566).png differ diff --git a/.gitbook/assets/image (567).png b/.gitbook/assets/image (567).png index 331eb2cb73..e9b6289ed8 100644 Binary files a/.gitbook/assets/image (567).png and b/.gitbook/assets/image (567).png differ diff --git a/.gitbook/assets/image (568).png b/.gitbook/assets/image (568).png index 55c8a97f0f..47d362e978 100644 Binary files a/.gitbook/assets/image (568).png and b/.gitbook/assets/image (568).png differ diff --git a/.gitbook/assets/image (569).png b/.gitbook/assets/image (569).png index bfcd310dbb..d27449dfee 100644 Binary files a/.gitbook/assets/image (569).png and b/.gitbook/assets/image (569).png differ diff --git a/.gitbook/assets/image (57).png b/.gitbook/assets/image (57).png index 6f6610955e..aba3a62d06 100644 Binary files a/.gitbook/assets/image (57).png and b/.gitbook/assets/image (57).png differ diff --git a/.gitbook/assets/image (570).png b/.gitbook/assets/image (570).png index 1ec65e9e8b..0aa70b5636 100644 Binary files a/.gitbook/assets/image (570).png and b/.gitbook/assets/image (570).png differ diff --git a/.gitbook/assets/image (571).png b/.gitbook/assets/image (571).png new file mode 100644 index 0000000000..ea9fea0955 Binary files /dev/null and b/.gitbook/assets/image (571).png differ diff --git a/.gitbook/assets/image (572).png b/.gitbook/assets/image (572).png index e9b6289ed8..14d9867dad 100644 Binary files a/.gitbook/assets/image (572).png and b/.gitbook/assets/image (572).png differ diff --git a/.gitbook/assets/image (575).png b/.gitbook/assets/image (575).png index 0aa70b5636..47e091da2e 100644 Binary files a/.gitbook/assets/image (575).png and b/.gitbook/assets/image (575).png differ diff --git a/.gitbook/assets/image (577).png b/.gitbook/assets/image (577).png index 47e091da2e..3328027194 100644 Binary files a/.gitbook/assets/image (577).png and b/.gitbook/assets/image (577).png differ diff --git a/.gitbook/assets/image (578).png b/.gitbook/assets/image (578).png index ea9fea0955..6143898629 100644 Binary files a/.gitbook/assets/image (578).png and b/.gitbook/assets/image (578).png differ diff --git a/.gitbook/assets/image (579).png b/.gitbook/assets/image (579).png new file mode 100644 index 0000000000..66f100bdeb Binary files /dev/null and b/.gitbook/assets/image (579).png differ diff --git a/.gitbook/assets/image (58).png b/.gitbook/assets/image (58).png index 67dbd0a5bb..44c1ad9004 100644 Binary files a/.gitbook/assets/image (58).png and b/.gitbook/assets/image (58).png differ diff --git a/.gitbook/assets/image (580).png b/.gitbook/assets/image (580).png index d27449dfee..38c34b2023 100644 Binary files a/.gitbook/assets/image (580).png and b/.gitbook/assets/image (580).png differ diff --git a/.gitbook/assets/image (581).png b/.gitbook/assets/image (581).png index 14d9867dad..ef84526321 100644 Binary files a/.gitbook/assets/image (581).png and b/.gitbook/assets/image (581).png differ diff --git a/.gitbook/assets/image (582).png b/.gitbook/assets/image (582).png index 3328027194..6fa3eaa66a 100644 Binary files a/.gitbook/assets/image (582).png and b/.gitbook/assets/image (582).png differ diff --git a/.gitbook/assets/image (583).png b/.gitbook/assets/image (583).png index 66f100bdeb..3ff7ee893c 100644 Binary files a/.gitbook/assets/image (583).png and b/.gitbook/assets/image (583).png differ diff --git a/.gitbook/assets/image (584).png b/.gitbook/assets/image (584).png index 47d362e978..c1f3aef70a 100644 Binary files a/.gitbook/assets/image (584).png and b/.gitbook/assets/image (584).png differ diff --git a/.gitbook/assets/image (585).png b/.gitbook/assets/image (585).png new file mode 100644 index 0000000000..a9fa85e5e8 Binary files /dev/null and b/.gitbook/assets/image (585).png differ diff --git a/.gitbook/assets/image (586).png b/.gitbook/assets/image (586).png index 6143898629..09a2ed0bec 100644 Binary files a/.gitbook/assets/image (586).png and b/.gitbook/assets/image (586).png differ diff --git a/.gitbook/assets/image (587).png b/.gitbook/assets/image (587).png index 38c34b2023..5a68b0c0c1 100644 Binary files a/.gitbook/assets/image (587).png and b/.gitbook/assets/image (587).png differ diff --git a/.gitbook/assets/image (588) (2) (1).png b/.gitbook/assets/image (588) (2) (1).png new file mode 100644 index 0000000000..b0710453a8 Binary files /dev/null and b/.gitbook/assets/image (588) (2) (1).png differ diff --git a/.gitbook/assets/image (588) (2).png b/.gitbook/assets/image (588) (2).png new file mode 100644 index 0000000000..609fe19a2c Binary files /dev/null and b/.gitbook/assets/image (588) (2).png differ diff --git a/.gitbook/assets/image (588).png b/.gitbook/assets/image (588).png index a9fa85e5e8..2b3bc8bde6 100644 Binary files a/.gitbook/assets/image (588).png and b/.gitbook/assets/image (588).png differ diff --git a/.gitbook/assets/image (589).png b/.gitbook/assets/image (589).png index c1f3aef70a..eb16ba285b 100644 Binary files a/.gitbook/assets/image (589).png and b/.gitbook/assets/image (589).png differ diff --git a/.gitbook/assets/image (59).png b/.gitbook/assets/image (59).png index 035ffd61da..0268e41f68 100644 Binary files a/.gitbook/assets/image (59).png and b/.gitbook/assets/image (59).png differ diff --git a/.gitbook/assets/image (590).png b/.gitbook/assets/image (590).png index 3ff7ee893c..79dda2c27d 100644 Binary files a/.gitbook/assets/image (590).png and b/.gitbook/assets/image (590).png differ diff --git a/.gitbook/assets/image (591).png b/.gitbook/assets/image (591).png new file mode 100644 index 0000000000..57f62cabef Binary files /dev/null and b/.gitbook/assets/image (591).png differ diff --git a/.gitbook/assets/image (592).png b/.gitbook/assets/image (592).png index 6fa3eaa66a..d833e4827c 100644 Binary files a/.gitbook/assets/image (592).png and b/.gitbook/assets/image (592).png differ diff --git a/.gitbook/assets/image (593) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (593) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..46cf45f5d9 Binary files /dev/null and b/.gitbook/assets/image (593) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (593) (1) (1) (1) (1).png b/.gitbook/assets/image (593) (1) (1) (1) (1).png new file mode 100644 index 0000000000..46cf45f5d9 Binary files /dev/null and b/.gitbook/assets/image (593) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (593) (1) (1) (1).png b/.gitbook/assets/image (593) (1) (1) (1).png new file mode 100644 index 0000000000..46cf45f5d9 Binary files /dev/null and b/.gitbook/assets/image (593) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (593) (1) (2).png b/.gitbook/assets/image (593) (1) (2).png new file mode 100644 index 0000000000..46cf45f5d9 Binary files /dev/null and b/.gitbook/assets/image (593) (1) (2).png differ diff --git a/.gitbook/assets/image (593).png b/.gitbook/assets/image (593).png index ef84526321..46cf45f5d9 100644 Binary files a/.gitbook/assets/image (593).png and b/.gitbook/assets/image (593).png differ diff --git a/.gitbook/assets/image (594).png b/.gitbook/assets/image (594).png deleted file mode 100644 index 09a2ed0bec..0000000000 Binary files a/.gitbook/assets/image (594).png and /dev/null differ diff --git a/.gitbook/assets/image (595) (1) (1).png b/.gitbook/assets/image (595) (1) (1).png new file mode 100644 index 0000000000..15ba390a9e Binary files /dev/null and b/.gitbook/assets/image (595) (1) (1).png differ diff --git a/.gitbook/assets/image (595) (1).png b/.gitbook/assets/image (595) (1).png new file mode 100644 index 0000000000..244f44e1f8 Binary files /dev/null and b/.gitbook/assets/image (595) (1).png differ diff --git a/.gitbook/assets/image (595) (2).png b/.gitbook/assets/image (595) (2).png new file mode 100644 index 0000000000..06a46e8934 Binary files /dev/null and b/.gitbook/assets/image (595) (2).png differ diff --git a/.gitbook/assets/image (595).png b/.gitbook/assets/image (595).png new file mode 100644 index 0000000000..ccbeb08905 Binary files /dev/null and b/.gitbook/assets/image (595).png differ diff --git a/.gitbook/assets/image (596).png b/.gitbook/assets/image (596).png new file mode 100644 index 0000000000..a011a6a42f Binary files /dev/null and b/.gitbook/assets/image (596).png differ diff --git a/.gitbook/assets/image (597).png b/.gitbook/assets/image (597).png index 5a68b0c0c1..53cd52084a 100644 Binary files a/.gitbook/assets/image (597).png and b/.gitbook/assets/image (597).png differ diff --git a/.gitbook/assets/image (598) (2) (2) (1).png b/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1).png similarity index 100% rename from .gitbook/assets/image (598) (2) (2) (1).png rename to .gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1).png diff --git a/.gitbook/assets/image (598) (2) (2) (2).png b/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (2).png similarity index 100% rename from .gitbook/assets/image (598) (2) (2) (2).png rename to .gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (2).png diff --git a/.gitbook/assets/image (598) (2) (2).png b/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (3).png similarity index 100% rename from .gitbook/assets/image (598) (2) (2).png rename to .gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (3).png diff --git a/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..c22ea0dedc Binary files /dev/null and b/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1).png b/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1).png new file mode 100644 index 0000000000..c22ea0dedc Binary files /dev/null and b/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (2) (1) (2).png b/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (2) (1) (2).png new file mode 100644 index 0000000000..c22ea0dedc Binary files /dev/null and b/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (2) (1) (2).png differ diff --git a/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (2) (1).png b/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (2) (1).png new file mode 100644 index 0000000000..c22ea0dedc Binary files /dev/null and b/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (2) (1).png differ diff --git a/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (2) (2).png b/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (2) (2).png new file mode 100644 index 0000000000..c22ea0dedc Binary files /dev/null and b/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (2) (2).png differ diff --git a/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1).png b/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1).png new file mode 100644 index 0000000000..c22ea0dedc Binary files /dev/null and b/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1).png differ diff --git a/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1).png b/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1).png new file mode 100644 index 0000000000..c22ea0dedc Binary files /dev/null and b/.gitbook/assets/image (598) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1).png differ diff --git a/.gitbook/assets/image (598).png b/.gitbook/assets/image (598).png new file mode 100644 index 0000000000..0a812dd2aa Binary files /dev/null and b/.gitbook/assets/image (598).png differ diff --git a/.gitbook/assets/image (599).png b/.gitbook/assets/image (599).png new file mode 100644 index 0000000000..d43b982fa3 Binary files /dev/null and b/.gitbook/assets/image (599).png differ diff --git a/.gitbook/assets/image (6) (1).png b/.gitbook/assets/image (6) (1).png new file mode 100644 index 0000000000..be0f63c6a3 Binary files /dev/null and b/.gitbook/assets/image (6) (1).png differ diff --git a/.gitbook/assets/image (6).png b/.gitbook/assets/image (6).png index 4bbeadff74..9fa6dacc08 100644 Binary files a/.gitbook/assets/image (6).png and b/.gitbook/assets/image (6).png differ diff --git a/.gitbook/assets/image (60).png b/.gitbook/assets/image (60).png index aa2c77b1b1..4d08232eba 100644 Binary files a/.gitbook/assets/image (60).png and b/.gitbook/assets/image (60).png differ diff --git a/.gitbook/assets/image (600).png b/.gitbook/assets/image (600).png new file mode 100644 index 0000000000..e87b88b209 Binary files /dev/null and b/.gitbook/assets/image (600).png differ diff --git a/.gitbook/assets/image (601).png b/.gitbook/assets/image (601).png new file mode 100644 index 0000000000..a62060d65d Binary files /dev/null and b/.gitbook/assets/image (601).png differ diff --git a/.gitbook/assets/image (602).png b/.gitbook/assets/image (602).png new file mode 100644 index 0000000000..a5979d9a56 Binary files /dev/null and b/.gitbook/assets/image (602).png differ diff --git a/.gitbook/assets/image (603).png b/.gitbook/assets/image (603).png new file mode 100644 index 0000000000..76cc6061c1 Binary files /dev/null and b/.gitbook/assets/image (603).png differ diff --git a/.gitbook/assets/image (604).png b/.gitbook/assets/image (604).png new file mode 100644 index 0000000000..4bb008ed05 Binary files /dev/null and b/.gitbook/assets/image (604).png differ diff --git a/.gitbook/assets/image (605).png b/.gitbook/assets/image (605).png new file mode 100644 index 0000000000..3cd0dd95c8 Binary files /dev/null and b/.gitbook/assets/image (605).png differ diff --git a/.gitbook/assets/image (606).png b/.gitbook/assets/image (606).png new file mode 100644 index 0000000000..2ef5c8e8a0 Binary files /dev/null and b/.gitbook/assets/image (606).png differ diff --git a/.gitbook/assets/image (607).png b/.gitbook/assets/image (607).png new file mode 100644 index 0000000000..18941cd161 Binary files /dev/null and b/.gitbook/assets/image (607).png differ diff --git a/.gitbook/assets/image (608).png b/.gitbook/assets/image (608).png new file mode 100644 index 0000000000..0a812dd2aa Binary files /dev/null and b/.gitbook/assets/image (608).png differ diff --git a/.gitbook/assets/image (609).png b/.gitbook/assets/image (609).png new file mode 100644 index 0000000000..d43b982fa3 Binary files /dev/null and b/.gitbook/assets/image (609).png differ diff --git a/.gitbook/assets/image (610).png b/.gitbook/assets/image (610).png new file mode 100644 index 0000000000..e87b88b209 Binary files /dev/null and b/.gitbook/assets/image (610).png differ diff --git a/.gitbook/assets/image (611).png b/.gitbook/assets/image (611).png new file mode 100644 index 0000000000..b3cbc458ad Binary files /dev/null and b/.gitbook/assets/image (611).png differ diff --git a/.gitbook/assets/image (612).png b/.gitbook/assets/image (612).png new file mode 100644 index 0000000000..ddac037b69 Binary files /dev/null and b/.gitbook/assets/image (612).png differ diff --git a/.gitbook/assets/image (613).png b/.gitbook/assets/image (613).png new file mode 100644 index 0000000000..0b34186555 Binary files /dev/null and b/.gitbook/assets/image (613).png differ diff --git a/.gitbook/assets/image (614).png b/.gitbook/assets/image (614).png new file mode 100644 index 0000000000..940332ee72 Binary files /dev/null and b/.gitbook/assets/image (614).png differ diff --git a/.gitbook/assets/image (615).png b/.gitbook/assets/image (615).png new file mode 100644 index 0000000000..752d8dc5be Binary files /dev/null and b/.gitbook/assets/image (615).png differ diff --git a/.gitbook/assets/image (616).png b/.gitbook/assets/image (616).png new file mode 100644 index 0000000000..7302ba54e8 Binary files /dev/null and b/.gitbook/assets/image (616).png differ diff --git a/.gitbook/assets/image (617).png b/.gitbook/assets/image (617).png new file mode 100644 index 0000000000..f94ac92537 Binary files /dev/null and b/.gitbook/assets/image (617).png differ diff --git a/.gitbook/assets/image (618).png b/.gitbook/assets/image (618).png new file mode 100644 index 0000000000..466b94625d Binary files /dev/null and b/.gitbook/assets/image (618).png differ diff --git a/.gitbook/assets/image (619).png b/.gitbook/assets/image (619).png new file mode 100644 index 0000000000..e33ee7a1ba Binary files /dev/null and b/.gitbook/assets/image (619).png differ diff --git a/.gitbook/assets/image (62).png b/.gitbook/assets/image (62).png index b5e3d33848..e2e310dc15 100644 Binary files a/.gitbook/assets/image (62).png and b/.gitbook/assets/image (62).png differ diff --git a/.gitbook/assets/image (620).png b/.gitbook/assets/image (620).png new file mode 100644 index 0000000000..912e3f3a8d Binary files /dev/null and b/.gitbook/assets/image (620).png differ diff --git a/.gitbook/assets/image (621) (1) (1) (2) (1) (1) (1) (1) (3) (1).png b/.gitbook/assets/image (621) (1) (1) (2) (1) (1) (1) (1) (3) (1).png new file mode 100644 index 0000000000..dbc35c4184 Binary files /dev/null and b/.gitbook/assets/image (621) (1) (1) (2) (1) (1) (1) (1) (3) (1).png differ diff --git a/.gitbook/assets/image (621) (1) (1) (2) (1) (1) (1) (1) (3) (2).png b/.gitbook/assets/image (621) (1) (1) (2) (1) (1) (1) (1) (3) (2).png new file mode 100644 index 0000000000..dbc35c4184 Binary files /dev/null and b/.gitbook/assets/image (621) (1) (1) (2) (1) (1) (1) (1) (3) (2).png differ diff --git a/.gitbook/assets/image (621) (1) (1) (2) (1) (1) (1) (1) (3) (3).png b/.gitbook/assets/image (621) (1) (1) (2) (1) (1) (1) (1) (3) (3).png new file mode 100644 index 0000000000..dbc35c4184 Binary files /dev/null and b/.gitbook/assets/image (621) (1) (1) (2) (1) (1) (1) (1) (3) (3).png differ diff --git a/.gitbook/assets/image (621) (1) (1) (2) (1) (1) (1) (1) (3) (4).png b/.gitbook/assets/image (621) (1) (1) (2) (1) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..dbc35c4184 Binary files /dev/null and b/.gitbook/assets/image (621) (1) (1) (2) (1) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/image (621) (1) (1) (2) (1) (1) (1) (1) (3).png b/.gitbook/assets/image (621) (1) (1) (2) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..dbc35c4184 Binary files /dev/null and b/.gitbook/assets/image (621) (1) (1) (2) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/image (621) (1) (1) (2) (1) (1) (1) (2).png b/.gitbook/assets/image (621) (1) (1) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..dbc35c4184 Binary files /dev/null and b/.gitbook/assets/image (621) (1) (1) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/image (621) (1) (1) (2) (1) (1) (1) (3).png b/.gitbook/assets/image (621) (1) (1) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..dbc35c4184 Binary files /dev/null and b/.gitbook/assets/image (621) (1) (1) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/image (621) (1) (1) (2) (1) (3).png b/.gitbook/assets/image (621) (1) (1) (2) (1) (3).png new file mode 100644 index 0000000000..dbc35c4184 Binary files /dev/null and b/.gitbook/assets/image (621) (1) (1) (2) (1) (3).png differ diff --git a/.gitbook/assets/image (621) (1) (1) (2) (1) (4).png b/.gitbook/assets/image (621) (1) (1) (2) (1) (4).png new file mode 100644 index 0000000000..dbc35c4184 Binary files /dev/null and b/.gitbook/assets/image (621) (1) (1) (2) (1) (4).png differ diff --git a/.gitbook/assets/image (621) (1) (1) (2) (1).png b/.gitbook/assets/image (621) (1) (1) (2) (1).png new file mode 100644 index 0000000000..dbc35c4184 Binary files /dev/null and b/.gitbook/assets/image (621) (1) (1) (2) (1).png differ diff --git a/.gitbook/assets/image (621) (1) (1) (4) (1).png b/.gitbook/assets/image (621) (1) (1) (4) (1).png new file mode 100644 index 0000000000..dbc35c4184 Binary files /dev/null and b/.gitbook/assets/image (621) (1) (1) (4) (1).png differ diff --git a/.gitbook/assets/image (621) (1) (1) (4) (2).png b/.gitbook/assets/image (621) (1) (1) (4) (2).png new file mode 100644 index 0000000000..dbc35c4184 Binary files /dev/null and b/.gitbook/assets/image (621) (1) (1) (4) (2).png differ diff --git a/.gitbook/assets/image (621) (1) (1) (4) (3).png b/.gitbook/assets/image (621) (1) (1) (4) (3).png new file mode 100644 index 0000000000..dbc35c4184 Binary files /dev/null and b/.gitbook/assets/image (621) (1) (1) (4) (3).png differ diff --git a/.gitbook/assets/image (621) (1) (1) (4) (4).png b/.gitbook/assets/image (621) (1) (1) (4) (4).png new file mode 100644 index 0000000000..dbc35c4184 Binary files /dev/null and b/.gitbook/assets/image (621) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/image (621) (1) (1).png b/.gitbook/assets/image (621) (1) (1).png new file mode 100644 index 0000000000..dbc35c4184 Binary files /dev/null and b/.gitbook/assets/image (621) (1) (1).png differ diff --git a/.gitbook/assets/image (621) (1) (2).png b/.gitbook/assets/image (621) (1) (2).png new file mode 100644 index 0000000000..dbc35c4184 Binary files /dev/null and b/.gitbook/assets/image (621) (1) (2).png differ diff --git a/.gitbook/assets/image (621) (1) (3).png b/.gitbook/assets/image (621) (1) (3).png new file mode 100644 index 0000000000..dbc35c4184 Binary files /dev/null and b/.gitbook/assets/image (621) (1) (3).png differ diff --git a/.gitbook/assets/image (621) (1).png b/.gitbook/assets/image (621) (1).png new file mode 100644 index 0000000000..dbc35c4184 Binary files /dev/null and b/.gitbook/assets/image (621) (1).png differ diff --git a/.gitbook/assets/image (621) (2).png b/.gitbook/assets/image (621) (2).png new file mode 100644 index 0000000000..dbc35c4184 Binary files /dev/null and b/.gitbook/assets/image (621) (2).png differ diff --git a/.gitbook/assets/image (623).png b/.gitbook/assets/image (623).png new file mode 100644 index 0000000000..244f44e1f8 Binary files /dev/null and b/.gitbook/assets/image (623).png differ diff --git a/.gitbook/assets/image (624).png b/.gitbook/assets/image (624).png new file mode 100644 index 0000000000..d75d8d8c2d Binary files /dev/null and b/.gitbook/assets/image (624).png differ diff --git a/.gitbook/assets/image (625).png b/.gitbook/assets/image (625).png new file mode 100644 index 0000000000..d41e8d4f7b Binary files /dev/null and b/.gitbook/assets/image (625).png differ diff --git a/.gitbook/assets/image (626).png b/.gitbook/assets/image (626).png new file mode 100644 index 0000000000..d088bb4c54 Binary files /dev/null and b/.gitbook/assets/image (626).png differ diff --git a/.gitbook/assets/image (627).png b/.gitbook/assets/image (627).png new file mode 100644 index 0000000000..7fa2ca510e Binary files /dev/null and b/.gitbook/assets/image (627).png differ diff --git a/.gitbook/assets/image (628).png b/.gitbook/assets/image (628).png new file mode 100644 index 0000000000..753ea1c077 Binary files /dev/null and b/.gitbook/assets/image (628).png differ diff --git a/.gitbook/assets/image (629).png b/.gitbook/assets/image (629).png new file mode 100644 index 0000000000..1b6877f527 Binary files /dev/null and b/.gitbook/assets/image (629).png differ diff --git a/.gitbook/assets/image (63).png b/.gitbook/assets/image (63).png index a3e8a2c46d..df917f8ff3 100644 Binary files a/.gitbook/assets/image (63).png and b/.gitbook/assets/image (63).png differ diff --git a/.gitbook/assets/image (630).png b/.gitbook/assets/image (630).png new file mode 100644 index 0000000000..3a2dd384ba Binary files /dev/null and b/.gitbook/assets/image (630).png differ diff --git a/.gitbook/assets/image (631).png b/.gitbook/assets/image (631).png new file mode 100644 index 0000000000..fcd6ce7d85 Binary files /dev/null and b/.gitbook/assets/image (631).png differ diff --git a/.gitbook/assets/image (632).png b/.gitbook/assets/image (632).png new file mode 100644 index 0000000000..e22daffec0 Binary files /dev/null and b/.gitbook/assets/image (632).png differ diff --git a/.gitbook/assets/image (633) (1).png b/.gitbook/assets/image (633) (1).png new file mode 100644 index 0000000000..859905e9ad Binary files /dev/null and b/.gitbook/assets/image (633) (1).png differ diff --git a/.gitbook/assets/image (633).png b/.gitbook/assets/image (633).png new file mode 100644 index 0000000000..f1d69c5d5d Binary files /dev/null and b/.gitbook/assets/image (633).png differ diff --git a/.gitbook/assets/image (634) (1) (1) (1).png b/.gitbook/assets/image (634) (1) (1) (1).png new file mode 100644 index 0000000000..93bdc938b7 Binary files /dev/null and b/.gitbook/assets/image (634) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (634) (1) (1).png b/.gitbook/assets/image (634) (1) (1).png new file mode 100644 index 0000000000..7b74154eea Binary files /dev/null and b/.gitbook/assets/image (634) (1) (1).png differ diff --git a/.gitbook/assets/image (634) (1).png b/.gitbook/assets/image (634) (1).png new file mode 100644 index 0000000000..9610a0e8fc Binary files /dev/null and b/.gitbook/assets/image (634) (1).png differ diff --git a/.gitbook/assets/image (634).png b/.gitbook/assets/image (634).png new file mode 100644 index 0000000000..6ef01f8eb3 Binary files /dev/null and b/.gitbook/assets/image (634).png differ diff --git a/.gitbook/assets/image (635) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (635) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..f2240bb242 Binary files /dev/null and b/.gitbook/assets/image (635) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (635) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (635) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..f2240bb242 Binary files /dev/null and b/.gitbook/assets/image (635) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (635) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (635) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..f2240bb242 Binary files /dev/null and b/.gitbook/assets/image (635) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (635) (1) (1) (1) (2).png b/.gitbook/assets/image (635) (1) (1) (1) (2).png new file mode 100644 index 0000000000..f2240bb242 Binary files /dev/null and b/.gitbook/assets/image (635) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/image (635) (1) (1).png b/.gitbook/assets/image (635) (1) (1).png new file mode 100644 index 0000000000..f2240bb242 Binary files /dev/null and b/.gitbook/assets/image (635) (1) (1).png differ diff --git a/.gitbook/assets/image (635) (1).png b/.gitbook/assets/image (635) (1).png new file mode 100644 index 0000000000..e47786b72b Binary files /dev/null and b/.gitbook/assets/image (635) (1).png differ diff --git a/.gitbook/assets/image (635).png b/.gitbook/assets/image (635).png new file mode 100644 index 0000000000..bd0498b92a Binary files /dev/null and b/.gitbook/assets/image (635).png differ diff --git a/.gitbook/assets/image (636) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (636) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..09a28a8552 Binary files /dev/null and b/.gitbook/assets/image (636) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (636) (1) (1) (1) (1).png b/.gitbook/assets/image (636) (1) (1) (1) (1).png new file mode 100644 index 0000000000..6d676e7ac4 Binary files /dev/null and b/.gitbook/assets/image (636) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (636) (1) (1) (1).png b/.gitbook/assets/image (636) (1) (1) (1).png new file mode 100644 index 0000000000..5c3755b182 Binary files /dev/null and b/.gitbook/assets/image (636) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (636) (1) (1).png b/.gitbook/assets/image (636) (1) (1).png new file mode 100644 index 0000000000..746a961303 Binary files /dev/null and b/.gitbook/assets/image (636) (1) (1).png differ diff --git a/.gitbook/assets/image (636) (1).png b/.gitbook/assets/image (636) (1).png new file mode 100644 index 0000000000..b9173b8bb9 Binary files /dev/null and b/.gitbook/assets/image (636) (1).png differ diff --git a/.gitbook/assets/image (636).png b/.gitbook/assets/image (636).png new file mode 100644 index 0000000000..3323e9071b Binary files /dev/null and b/.gitbook/assets/image (636).png differ diff --git a/.gitbook/assets/image (637) (1) (1) (1) (1).png b/.gitbook/assets/image (637) (1) (1) (1) (1).png new file mode 100644 index 0000000000..e80f21829a Binary files /dev/null and b/.gitbook/assets/image (637) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (637) (1) (1) (1).png b/.gitbook/assets/image (637) (1) (1) (1).png new file mode 100644 index 0000000000..0afa395ef2 Binary files /dev/null and b/.gitbook/assets/image (637) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (637) (1) (1).png b/.gitbook/assets/image (637) (1) (1).png new file mode 100644 index 0000000000..82d31bf080 Binary files /dev/null and b/.gitbook/assets/image (637) (1) (1).png differ diff --git a/.gitbook/assets/image (637) (1).png b/.gitbook/assets/image (637) (1).png new file mode 100644 index 0000000000..aad6905d3e Binary files /dev/null and b/.gitbook/assets/image (637) (1).png differ diff --git a/.gitbook/assets/image (637).png b/.gitbook/assets/image (637).png new file mode 100644 index 0000000000..baef2f5ccb Binary files /dev/null and b/.gitbook/assets/image (637).png differ diff --git a/.gitbook/assets/image (638) (1) (1) (1) (1).png b/.gitbook/assets/image (638) (1) (1) (1) (1).png new file mode 100644 index 0000000000..74744aab70 Binary files /dev/null and b/.gitbook/assets/image (638) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (638) (1) (1) (1).png b/.gitbook/assets/image (638) (1) (1) (1).png new file mode 100644 index 0000000000..4981dd1353 Binary files /dev/null and b/.gitbook/assets/image (638) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (638) (1) (1).png b/.gitbook/assets/image (638) (1) (1).png new file mode 100644 index 0000000000..7b21f138c7 Binary files /dev/null and b/.gitbook/assets/image (638) (1) (1).png differ diff --git a/.gitbook/assets/image (638) (1).png b/.gitbook/assets/image (638) (1).png new file mode 100644 index 0000000000..c62e5800b3 Binary files /dev/null and b/.gitbook/assets/image (638) (1).png differ diff --git a/.gitbook/assets/image (638).png b/.gitbook/assets/image (638).png new file mode 100644 index 0000000000..b9a4763a50 Binary files /dev/null and b/.gitbook/assets/image (638).png differ diff --git a/.gitbook/assets/image (639) (1) (1) (1) (1).png b/.gitbook/assets/image (639) (1) (1) (1) (1).png new file mode 100644 index 0000000000..09ab3ff0ba Binary files /dev/null and b/.gitbook/assets/image (639) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (639) (1) (1) (1).png b/.gitbook/assets/image (639) (1) (1) (1).png new file mode 100644 index 0000000000..221d85d3eb Binary files /dev/null and b/.gitbook/assets/image (639) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (639) (1) (1).png b/.gitbook/assets/image (639) (1) (1).png new file mode 100644 index 0000000000..b114f3890b Binary files /dev/null and b/.gitbook/assets/image (639) (1) (1).png differ diff --git a/.gitbook/assets/image (639) (1).png b/.gitbook/assets/image (639) (1).png new file mode 100644 index 0000000000..68e9a362c2 Binary files /dev/null and b/.gitbook/assets/image (639) (1).png differ diff --git a/.gitbook/assets/image (639).png b/.gitbook/assets/image (639).png new file mode 100644 index 0000000000..e5a8bcfc9a Binary files /dev/null and b/.gitbook/assets/image (639).png differ diff --git a/.gitbook/assets/image (64).png b/.gitbook/assets/image (64).png index 7d7b31955b..b12be555d1 100644 Binary files a/.gitbook/assets/image (64).png and b/.gitbook/assets/image (64).png differ diff --git a/.gitbook/assets/image (640) (1) (1) (1).png b/.gitbook/assets/image (640) (1) (1) (1).png new file mode 100644 index 0000000000..33f308804d Binary files /dev/null and b/.gitbook/assets/image (640) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (640) (1) (1).png b/.gitbook/assets/image (640) (1) (1).png new file mode 100644 index 0000000000..fb3f22a964 Binary files /dev/null and b/.gitbook/assets/image (640) (1) (1).png differ diff --git a/.gitbook/assets/image (640) (1).png b/.gitbook/assets/image (640) (1).png new file mode 100644 index 0000000000..d41d71b17c Binary files /dev/null and b/.gitbook/assets/image (640) (1).png differ diff --git a/.gitbook/assets/image (640).png b/.gitbook/assets/image (640).png new file mode 100644 index 0000000000..d5d59389eb Binary files /dev/null and b/.gitbook/assets/image (640).png differ diff --git a/.gitbook/assets/image (641) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (641) (1) (1) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..10e00570be Binary files /dev/null and b/.gitbook/assets/image (641) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (641) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (641) (1) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..d587ec21de Binary files /dev/null and b/.gitbook/assets/image (641) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (641) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (641) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..4c3450d0f0 Binary files /dev/null and b/.gitbook/assets/image (641) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (641) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (641) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..317fffcba5 Binary files /dev/null and b/.gitbook/assets/image (641) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (641) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (641) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..29f1cb6753 Binary files /dev/null and b/.gitbook/assets/image (641) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (641) (1) (1) (1) (1).png b/.gitbook/assets/image (641) (1) (1) (1) (1).png new file mode 100644 index 0000000000..3b17f361cd Binary files /dev/null and b/.gitbook/assets/image (641) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (641) (1) (1) (1).png b/.gitbook/assets/image (641) (1) (1) (1).png new file mode 100644 index 0000000000..57c78f6e65 Binary files /dev/null and b/.gitbook/assets/image (641) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (641) (1) (1).png b/.gitbook/assets/image (641) (1) (1).png new file mode 100644 index 0000000000..706a85e7b6 Binary files /dev/null and b/.gitbook/assets/image (641) (1) (1).png differ diff --git a/.gitbook/assets/image (641) (1).png b/.gitbook/assets/image (641) (1).png new file mode 100644 index 0000000000..ef1d417aea Binary files /dev/null and b/.gitbook/assets/image (641) (1).png differ diff --git a/.gitbook/assets/image (641).png b/.gitbook/assets/image (641).png new file mode 100644 index 0000000000..6f6fce83df Binary files /dev/null and b/.gitbook/assets/image (641).png differ diff --git a/.gitbook/assets/image (642) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (642) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..f2240bb242 Binary files /dev/null and b/.gitbook/assets/image (642) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (642) (1) (1) (1) (1).png b/.gitbook/assets/image (642) (1) (1) (1) (1).png new file mode 100644 index 0000000000..8d9fd5c38c Binary files /dev/null and b/.gitbook/assets/image (642) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (642) (1) (1) (1).png b/.gitbook/assets/image (642) (1) (1) (1).png new file mode 100644 index 0000000000..6612fe15da Binary files /dev/null and b/.gitbook/assets/image (642) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (642) (1) (1).png b/.gitbook/assets/image (642) (1) (1).png new file mode 100644 index 0000000000..d9e49df730 Binary files /dev/null and b/.gitbook/assets/image (642) (1) (1).png differ diff --git a/.gitbook/assets/image (642) (1).png b/.gitbook/assets/image (642) (1).png new file mode 100644 index 0000000000..ed016b7833 Binary files /dev/null and b/.gitbook/assets/image (642) (1).png differ diff --git a/.gitbook/assets/image (642).png b/.gitbook/assets/image (642).png new file mode 100644 index 0000000000..b48fb5d488 Binary files /dev/null and b/.gitbook/assets/image (642).png differ diff --git a/.gitbook/assets/image (643) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (643) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..74cbcf9c5e Binary files /dev/null and b/.gitbook/assets/image (643) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (643) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (643) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..1188e22357 Binary files /dev/null and b/.gitbook/assets/image (643) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (643) (1) (1) (1) (1).png b/.gitbook/assets/image (643) (1) (1) (1) (1).png new file mode 100644 index 0000000000..742717ecce Binary files /dev/null and b/.gitbook/assets/image (643) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (643) (1) (1) (1).png b/.gitbook/assets/image (643) (1) (1) (1).png new file mode 100644 index 0000000000..599f2479ea Binary files /dev/null and b/.gitbook/assets/image (643) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (643) (1) (1).png b/.gitbook/assets/image (643) (1) (1).png new file mode 100644 index 0000000000..1fa3ffde57 Binary files /dev/null and b/.gitbook/assets/image (643) (1) (1).png differ diff --git a/.gitbook/assets/image (643) (1).png b/.gitbook/assets/image (643) (1).png new file mode 100644 index 0000000000..d5ae5cb31b Binary files /dev/null and b/.gitbook/assets/image (643) (1).png differ diff --git a/.gitbook/assets/image (643).png b/.gitbook/assets/image (643).png new file mode 100644 index 0000000000..e076551fd1 Binary files /dev/null and b/.gitbook/assets/image (643).png differ diff --git a/.gitbook/assets/image (644) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (644) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..a4f019ed9c Binary files /dev/null and b/.gitbook/assets/image (644) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (644) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (644) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..1771a03de8 Binary files /dev/null and b/.gitbook/assets/image (644) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (644) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (644) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..de936051b2 Binary files /dev/null and b/.gitbook/assets/image (644) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (644) (1) (1) (1) (1).png b/.gitbook/assets/image (644) (1) (1) (1) (1).png new file mode 100644 index 0000000000..9ef53881b2 Binary files /dev/null and b/.gitbook/assets/image (644) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (644) (1) (1) (1).png b/.gitbook/assets/image (644) (1) (1) (1).png new file mode 100644 index 0000000000..23066ab003 Binary files /dev/null and b/.gitbook/assets/image (644) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (644) (1) (1).png b/.gitbook/assets/image (644) (1) (1).png new file mode 100644 index 0000000000..21571f9fc7 Binary files /dev/null and b/.gitbook/assets/image (644) (1) (1).png differ diff --git a/.gitbook/assets/image (644) (1).png b/.gitbook/assets/image (644) (1).png new file mode 100644 index 0000000000..5e0f5be12c Binary files /dev/null and b/.gitbook/assets/image (644) (1).png differ diff --git a/.gitbook/assets/image (644) (2).png b/.gitbook/assets/image (644) (2).png new file mode 100644 index 0000000000..89a6adb83a Binary files /dev/null and b/.gitbook/assets/image (644) (2).png differ diff --git a/.gitbook/assets/image (644).png b/.gitbook/assets/image (644).png new file mode 100644 index 0000000000..8f0151be4b Binary files /dev/null and b/.gitbook/assets/image (644).png differ diff --git a/.gitbook/assets/image (645) (1) (1) (1) (1).png b/.gitbook/assets/image (645) (1) (1) (1) (1).png new file mode 100644 index 0000000000..be0b2cfb02 Binary files /dev/null and b/.gitbook/assets/image (645) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (645) (1) (1) (1).png b/.gitbook/assets/image (645) (1) (1) (1).png new file mode 100644 index 0000000000..141ec9f7e6 Binary files /dev/null and b/.gitbook/assets/image (645) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (645) (1) (1).png b/.gitbook/assets/image (645) (1) (1).png new file mode 100644 index 0000000000..6cd654cc9e Binary files /dev/null and b/.gitbook/assets/image (645) (1) (1).png differ diff --git a/.gitbook/assets/image (645) (1).png b/.gitbook/assets/image (645) (1).png new file mode 100644 index 0000000000..86565fe685 Binary files /dev/null and b/.gitbook/assets/image (645) (1).png differ diff --git a/.gitbook/assets/image (645) (2).png b/.gitbook/assets/image (645) (2).png new file mode 100644 index 0000000000..3fa5b1411b Binary files /dev/null and b/.gitbook/assets/image (645) (2).png differ diff --git a/.gitbook/assets/image (645).png b/.gitbook/assets/image (645).png new file mode 100644 index 0000000000..36a8cbe3d1 Binary files /dev/null and b/.gitbook/assets/image (645).png differ diff --git a/.gitbook/assets/image (646) (1) (1) (1) (1).png b/.gitbook/assets/image (646) (1) (1) (1) (1).png new file mode 100644 index 0000000000..fcd6ce7d85 Binary files /dev/null and b/.gitbook/assets/image (646) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (646) (1) (1) (1).png b/.gitbook/assets/image (646) (1) (1) (1).png new file mode 100644 index 0000000000..32db47be8b Binary files /dev/null and b/.gitbook/assets/image (646) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (646) (1) (1).png b/.gitbook/assets/image (646) (1) (1).png new file mode 100644 index 0000000000..414b8ae28a Binary files /dev/null and b/.gitbook/assets/image (646) (1) (1).png differ diff --git a/.gitbook/assets/image (646) (1).png b/.gitbook/assets/image (646) (1).png new file mode 100644 index 0000000000..b56d350943 Binary files /dev/null and b/.gitbook/assets/image (646) (1).png differ diff --git a/.gitbook/assets/image (646) (2).png b/.gitbook/assets/image (646) (2).png new file mode 100644 index 0000000000..450edd8ff4 Binary files /dev/null and b/.gitbook/assets/image (646) (2).png differ diff --git a/.gitbook/assets/image (646).png b/.gitbook/assets/image (646).png new file mode 100644 index 0000000000..2b5dc24812 Binary files /dev/null and b/.gitbook/assets/image (646).png differ diff --git a/.gitbook/assets/image (647) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (647) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..cb3c0dda15 Binary files /dev/null and b/.gitbook/assets/image (647) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (647) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (647) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..6c50f9452f Binary files /dev/null and b/.gitbook/assets/image (647) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (647) (1) (1) (1) (1).png b/.gitbook/assets/image (647) (1) (1) (1) (1).png new file mode 100644 index 0000000000..4f288ed8af Binary files /dev/null and b/.gitbook/assets/image (647) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (647) (1) (1) (1).png b/.gitbook/assets/image (647) (1) (1) (1).png new file mode 100644 index 0000000000..364675d0c3 Binary files /dev/null and b/.gitbook/assets/image (647) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (647) (1) (1).png b/.gitbook/assets/image (647) (1) (1).png new file mode 100644 index 0000000000..3a8de4b505 Binary files /dev/null and b/.gitbook/assets/image (647) (1) (1).png differ diff --git a/.gitbook/assets/image (647) (1) (2).png b/.gitbook/assets/image (647) (1) (2).png new file mode 100644 index 0000000000..12f3af9e6a Binary files /dev/null and b/.gitbook/assets/image (647) (1) (2).png differ diff --git a/.gitbook/assets/image (647) (1).png b/.gitbook/assets/image (647) (1).png new file mode 100644 index 0000000000..be2813f538 Binary files /dev/null and b/.gitbook/assets/image (647) (1).png differ diff --git a/.gitbook/assets/image (647) (2).png b/.gitbook/assets/image (647) (2).png new file mode 100644 index 0000000000..c5d71a8d68 Binary files /dev/null and b/.gitbook/assets/image (647) (2).png differ diff --git a/.gitbook/assets/image (647).png b/.gitbook/assets/image (647).png new file mode 100644 index 0000000000..5cd41d6261 Binary files /dev/null and b/.gitbook/assets/image (647).png differ diff --git a/.gitbook/assets/image (648) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (648) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..5caadb7b27 Binary files /dev/null and b/.gitbook/assets/image (648) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (648) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (648) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..10488c0e70 Binary files /dev/null and b/.gitbook/assets/image (648) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (648) (1) (1) (1) (1).png b/.gitbook/assets/image (648) (1) (1) (1) (1).png new file mode 100644 index 0000000000..237c5965b7 Binary files /dev/null and b/.gitbook/assets/image (648) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (648) (1) (1) (1).png b/.gitbook/assets/image (648) (1) (1) (1).png new file mode 100644 index 0000000000..4c1633b59e Binary files /dev/null and b/.gitbook/assets/image (648) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (648) (1) (1).png b/.gitbook/assets/image (648) (1) (1).png new file mode 100644 index 0000000000..f7ae8e644b Binary files /dev/null and b/.gitbook/assets/image (648) (1) (1).png differ diff --git a/.gitbook/assets/image (648) (1).png b/.gitbook/assets/image (648) (1).png new file mode 100644 index 0000000000..d4c9b84c0e Binary files /dev/null and b/.gitbook/assets/image (648) (1).png differ diff --git a/.gitbook/assets/image (648).png b/.gitbook/assets/image (648).png new file mode 100644 index 0000000000..ac36a6e187 Binary files /dev/null and b/.gitbook/assets/image (648).png differ diff --git a/.gitbook/assets/image (649) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (649) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..40a81e9191 Binary files /dev/null and b/.gitbook/assets/image (649) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (649) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (649) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..4b31167d9f Binary files /dev/null and b/.gitbook/assets/image (649) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (649) (1) (1) (1) (1).png b/.gitbook/assets/image (649) (1) (1) (1) (1).png new file mode 100644 index 0000000000..88b89dcebd Binary files /dev/null and b/.gitbook/assets/image (649) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (649) (1) (1) (1).png b/.gitbook/assets/image (649) (1) (1) (1).png new file mode 100644 index 0000000000..71c81943f6 Binary files /dev/null and b/.gitbook/assets/image (649) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (649) (1) (1).png b/.gitbook/assets/image (649) (1) (1).png new file mode 100644 index 0000000000..98e4ba7274 Binary files /dev/null and b/.gitbook/assets/image (649) (1) (1).png differ diff --git a/.gitbook/assets/image (649) (1).png b/.gitbook/assets/image (649) (1).png new file mode 100644 index 0000000000..b8140d53f0 Binary files /dev/null and b/.gitbook/assets/image (649) (1).png differ diff --git a/.gitbook/assets/image (649).png b/.gitbook/assets/image (649).png new file mode 100644 index 0000000000..223f1fb209 Binary files /dev/null and b/.gitbook/assets/image (649).png differ diff --git a/.gitbook/assets/image (65).png b/.gitbook/assets/image (65).png index 01b5d689fe..3c803ce97a 100644 Binary files a/.gitbook/assets/image (65).png and b/.gitbook/assets/image (65).png differ diff --git a/.gitbook/assets/image (650) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (650) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..53a67792e6 Binary files /dev/null and b/.gitbook/assets/image (650) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (650) (1) (1) (1) (1).png b/.gitbook/assets/image (650) (1) (1) (1) (1).png new file mode 100644 index 0000000000..1e2693bfe8 Binary files /dev/null and b/.gitbook/assets/image (650) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (650) (1) (1) (1).png b/.gitbook/assets/image (650) (1) (1) (1).png new file mode 100644 index 0000000000..9092dafd8d Binary files /dev/null and b/.gitbook/assets/image (650) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (650) (1) (1).png b/.gitbook/assets/image (650) (1) (1).png new file mode 100644 index 0000000000..dd6d885a4e Binary files /dev/null and b/.gitbook/assets/image (650) (1) (1).png differ diff --git a/.gitbook/assets/image (650) (1).png b/.gitbook/assets/image (650) (1).png new file mode 100644 index 0000000000..d5754ae3f3 Binary files /dev/null and b/.gitbook/assets/image (650) (1).png differ diff --git a/.gitbook/assets/image (650).png b/.gitbook/assets/image (650).png new file mode 100644 index 0000000000..f0cebc6d19 Binary files /dev/null and b/.gitbook/assets/image (650).png differ diff --git a/.gitbook/assets/image (651) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (651) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..f05008f70a Binary files /dev/null and b/.gitbook/assets/image (651) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (651) (1) (1) (1) (1).png b/.gitbook/assets/image (651) (1) (1) (1) (1).png new file mode 100644 index 0000000000..96597be0a8 Binary files /dev/null and b/.gitbook/assets/image (651) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (651) (1) (1) (1).png b/.gitbook/assets/image (651) (1) (1) (1).png new file mode 100644 index 0000000000..a32f395a6b Binary files /dev/null and b/.gitbook/assets/image (651) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (651) (1) (1).png b/.gitbook/assets/image (651) (1) (1).png new file mode 100644 index 0000000000..d89636bb38 Binary files /dev/null and b/.gitbook/assets/image (651) (1) (1).png differ diff --git a/.gitbook/assets/image (651) (1).png b/.gitbook/assets/image (651) (1).png new file mode 100644 index 0000000000..e60a9f9957 Binary files /dev/null and b/.gitbook/assets/image (651) (1).png differ diff --git a/.gitbook/assets/image (651).png b/.gitbook/assets/image (651).png new file mode 100644 index 0000000000..193da4e106 Binary files /dev/null and b/.gitbook/assets/image (651).png differ diff --git a/.gitbook/assets/image (652) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (652) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..05a5b93e32 Binary files /dev/null and b/.gitbook/assets/image (652) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (652) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (652) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..da5aa6442b Binary files /dev/null and b/.gitbook/assets/image (652) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (652) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (652) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..d1387f1656 Binary files /dev/null and b/.gitbook/assets/image (652) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (652) (1) (1) (1) (1).png b/.gitbook/assets/image (652) (1) (1) (1) (1).png new file mode 100644 index 0000000000..7b1d80dcb1 Binary files /dev/null and b/.gitbook/assets/image (652) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (652) (1) (1) (1).png b/.gitbook/assets/image (652) (1) (1) (1).png new file mode 100644 index 0000000000..cb6471d58e Binary files /dev/null and b/.gitbook/assets/image (652) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (652) (1) (1).png b/.gitbook/assets/image (652) (1) (1).png new file mode 100644 index 0000000000..5ded1a564a Binary files /dev/null and b/.gitbook/assets/image (652) (1) (1).png differ diff --git a/.gitbook/assets/image (652) (1).png b/.gitbook/assets/image (652) (1).png new file mode 100644 index 0000000000..db109aef23 Binary files /dev/null and b/.gitbook/assets/image (652) (1).png differ diff --git a/.gitbook/assets/image (652).png b/.gitbook/assets/image (652).png new file mode 100644 index 0000000000..7d205c6e01 Binary files /dev/null and b/.gitbook/assets/image (652).png differ diff --git a/.gitbook/assets/image (653) (1) (1) (1) (1).png b/.gitbook/assets/image (653) (1) (1) (1) (1).png new file mode 100644 index 0000000000..670dbe6ad2 Binary files /dev/null and b/.gitbook/assets/image (653) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (653) (1) (1) (1).png b/.gitbook/assets/image (653) (1) (1) (1).png new file mode 100644 index 0000000000..296c26e942 Binary files /dev/null and b/.gitbook/assets/image (653) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (653) (1) (1).png b/.gitbook/assets/image (653) (1) (1).png new file mode 100644 index 0000000000..15997a5411 Binary files /dev/null and b/.gitbook/assets/image (653) (1) (1).png differ diff --git a/.gitbook/assets/image (653) (1).png b/.gitbook/assets/image (653) (1).png new file mode 100644 index 0000000000..f779b26685 Binary files /dev/null and b/.gitbook/assets/image (653) (1).png differ diff --git a/.gitbook/assets/image (653).png b/.gitbook/assets/image (653).png new file mode 100644 index 0000000000..6bcf7fcb81 Binary files /dev/null and b/.gitbook/assets/image (653).png differ diff --git a/.gitbook/assets/image (654) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (654) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..b96a3babe7 Binary files /dev/null and b/.gitbook/assets/image (654) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (654) (1) (1) (1) (1).png b/.gitbook/assets/image (654) (1) (1) (1) (1).png new file mode 100644 index 0000000000..b8a3edb278 Binary files /dev/null and b/.gitbook/assets/image (654) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (654) (1) (1) (1).png b/.gitbook/assets/image (654) (1) (1) (1).png new file mode 100644 index 0000000000..ea6b2e2f6c Binary files /dev/null and b/.gitbook/assets/image (654) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (654) (1) (1).png b/.gitbook/assets/image (654) (1) (1).png new file mode 100644 index 0000000000..f03721249c Binary files /dev/null and b/.gitbook/assets/image (654) (1) (1).png differ diff --git a/.gitbook/assets/image (654) (1) (2).png b/.gitbook/assets/image (654) (1) (2).png new file mode 100644 index 0000000000..8e54b86c34 Binary files /dev/null and b/.gitbook/assets/image (654) (1) (2).png differ diff --git a/.gitbook/assets/image (654) (1).png b/.gitbook/assets/image (654) (1).png new file mode 100644 index 0000000000..ac6cfa851e Binary files /dev/null and b/.gitbook/assets/image (654) (1).png differ diff --git a/.gitbook/assets/image (654) (2).png b/.gitbook/assets/image (654) (2).png new file mode 100644 index 0000000000..bcf02452d2 Binary files /dev/null and b/.gitbook/assets/image (654) (2).png differ diff --git a/.gitbook/assets/image (654).png b/.gitbook/assets/image (654).png new file mode 100644 index 0000000000..fedd136194 Binary files /dev/null and b/.gitbook/assets/image (654).png differ diff --git a/.gitbook/assets/image (655) (1) (1) (1).png b/.gitbook/assets/image (655) (1) (1) (1).png new file mode 100644 index 0000000000..f607a7d3e4 Binary files /dev/null and b/.gitbook/assets/image (655) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (655) (1) (1).png b/.gitbook/assets/image (655) (1) (1).png new file mode 100644 index 0000000000..ba90265734 Binary files /dev/null and b/.gitbook/assets/image (655) (1) (1).png differ diff --git a/.gitbook/assets/image (655) (1) (2).png b/.gitbook/assets/image (655) (1) (2).png new file mode 100644 index 0000000000..768cf8992a Binary files /dev/null and b/.gitbook/assets/image (655) (1) (2).png differ diff --git a/.gitbook/assets/image (655) (1).png b/.gitbook/assets/image (655) (1).png new file mode 100644 index 0000000000..df2b4641e2 Binary files /dev/null and b/.gitbook/assets/image (655) (1).png differ diff --git a/.gitbook/assets/image (655) (2) (1).png b/.gitbook/assets/image (655) (2) (1).png new file mode 100644 index 0000000000..ea1d763b0d Binary files /dev/null and b/.gitbook/assets/image (655) (2) (1).png differ diff --git a/.gitbook/assets/image (655) (2).png b/.gitbook/assets/image (655) (2).png new file mode 100644 index 0000000000..7195da14a5 Binary files /dev/null and b/.gitbook/assets/image (655) (2).png differ diff --git a/.gitbook/assets/image (655).png b/.gitbook/assets/image (655).png new file mode 100644 index 0000000000..0d6fdc5b6f Binary files /dev/null and b/.gitbook/assets/image (655).png differ diff --git a/.gitbook/assets/image (656) (1) (1).png b/.gitbook/assets/image (656) (1) (1).png new file mode 100644 index 0000000000..fc2d12ecbc Binary files /dev/null and b/.gitbook/assets/image (656) (1) (1).png differ diff --git a/.gitbook/assets/image (656) (1).png b/.gitbook/assets/image (656) (1).png new file mode 100644 index 0000000000..897b2893f7 Binary files /dev/null and b/.gitbook/assets/image (656) (1).png differ diff --git a/.gitbook/assets/image (656) (2).png b/.gitbook/assets/image (656) (2).png new file mode 100644 index 0000000000..349b60b33c Binary files /dev/null and b/.gitbook/assets/image (656) (2).png differ diff --git a/.gitbook/assets/image (656).png b/.gitbook/assets/image (656).png new file mode 100644 index 0000000000..1e624a5f64 Binary files /dev/null and b/.gitbook/assets/image (656).png differ diff --git a/.gitbook/assets/image (657) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (657) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..1ccf73776e Binary files /dev/null and b/.gitbook/assets/image (657) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (657) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (657) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..15b12947fa Binary files /dev/null and b/.gitbook/assets/image (657) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (657) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (657) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..386e789c37 Binary files /dev/null and b/.gitbook/assets/image (657) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (657) (1) (1) (1) (1).png b/.gitbook/assets/image (657) (1) (1) (1) (1).png new file mode 100644 index 0000000000..0c638252a8 Binary files /dev/null and b/.gitbook/assets/image (657) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (657) (1) (1) (1).png b/.gitbook/assets/image (657) (1) (1) (1).png new file mode 100644 index 0000000000..ca9eeee187 Binary files /dev/null and b/.gitbook/assets/image (657) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (657) (1) (1).png b/.gitbook/assets/image (657) (1) (1).png new file mode 100644 index 0000000000..15a59629c2 Binary files /dev/null and b/.gitbook/assets/image (657) (1) (1).png differ diff --git a/.gitbook/assets/image (657) (1).png b/.gitbook/assets/image (657) (1).png new file mode 100644 index 0000000000..02971df124 Binary files /dev/null and b/.gitbook/assets/image (657) (1).png differ diff --git a/.gitbook/assets/image (657).png b/.gitbook/assets/image (657).png new file mode 100644 index 0000000000..c227acf871 Binary files /dev/null and b/.gitbook/assets/image (657).png differ diff --git a/.gitbook/assets/image (658) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (658) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..d8e4b050f1 Binary files /dev/null and b/.gitbook/assets/image (658) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (658) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (658) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..a0962304cb Binary files /dev/null and b/.gitbook/assets/image (658) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (658) (1) (1) (1) (1).png b/.gitbook/assets/image (658) (1) (1) (1) (1).png new file mode 100644 index 0000000000..64ad66c6f0 Binary files /dev/null and b/.gitbook/assets/image (658) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (658) (1) (1) (1).png b/.gitbook/assets/image (658) (1) (1) (1).png new file mode 100644 index 0000000000..e7944740cd Binary files /dev/null and b/.gitbook/assets/image (658) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (658) (1) (1).png b/.gitbook/assets/image (658) (1) (1).png new file mode 100644 index 0000000000..a750c91b25 Binary files /dev/null and b/.gitbook/assets/image (658) (1) (1).png differ diff --git a/.gitbook/assets/image (658) (1).png b/.gitbook/assets/image (658) (1).png new file mode 100644 index 0000000000..5d6141c94b Binary files /dev/null and b/.gitbook/assets/image (658) (1).png differ diff --git a/.gitbook/assets/image (658).png b/.gitbook/assets/image (658).png new file mode 100644 index 0000000000..3da35e5e57 Binary files /dev/null and b/.gitbook/assets/image (658).png differ diff --git a/.gitbook/assets/image (659) (1) (1).png b/.gitbook/assets/image (659) (1) (1).png new file mode 100644 index 0000000000..56e0258f08 Binary files /dev/null and b/.gitbook/assets/image (659) (1) (1).png differ diff --git a/.gitbook/assets/image (659) (1).png b/.gitbook/assets/image (659) (1).png new file mode 100644 index 0000000000..f45ea4743d Binary files /dev/null and b/.gitbook/assets/image (659) (1).png differ diff --git a/.gitbook/assets/image (659).png b/.gitbook/assets/image (659).png new file mode 100644 index 0000000000..cf0132ef74 Binary files /dev/null and b/.gitbook/assets/image (659).png differ diff --git a/.gitbook/assets/image (66).png b/.gitbook/assets/image (66).png index 67bfaba711..9a6f098ae6 100644 Binary files a/.gitbook/assets/image (66).png and b/.gitbook/assets/image (66).png differ diff --git a/.gitbook/assets/image (660) (1) (1) (1).png b/.gitbook/assets/image (660) (1) (1) (1).png new file mode 100644 index 0000000000..8d57c04b68 Binary files /dev/null and b/.gitbook/assets/image (660) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (660) (1) (1).png b/.gitbook/assets/image (660) (1) (1).png new file mode 100644 index 0000000000..ab53f74933 Binary files /dev/null and b/.gitbook/assets/image (660) (1) (1).png differ diff --git a/.gitbook/assets/image (660) (1).png b/.gitbook/assets/image (660) (1).png new file mode 100644 index 0000000000..b830acaf91 Binary files /dev/null and b/.gitbook/assets/image (660) (1).png differ diff --git a/.gitbook/assets/image (660).png b/.gitbook/assets/image (660).png new file mode 100644 index 0000000000..df3ad0d609 Binary files /dev/null and b/.gitbook/assets/image (660).png differ diff --git a/.gitbook/assets/image (661) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (661) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..e22daffec0 Binary files /dev/null and b/.gitbook/assets/image (661) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (661) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (661) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..d587ec21de Binary files /dev/null and b/.gitbook/assets/image (661) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (661) (1) (1) (1) (1).png b/.gitbook/assets/image (661) (1) (1) (1) (1).png new file mode 100644 index 0000000000..c7794cfa99 Binary files /dev/null and b/.gitbook/assets/image (661) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (661) (1) (1) (1).png b/.gitbook/assets/image (661) (1) (1) (1).png new file mode 100644 index 0000000000..b114f3890b Binary files /dev/null and b/.gitbook/assets/image (661) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (661) (1) (1).png b/.gitbook/assets/image (661) (1) (1).png new file mode 100644 index 0000000000..1b50c35d13 Binary files /dev/null and b/.gitbook/assets/image (661) (1) (1).png differ diff --git a/.gitbook/assets/image (661) (1).png b/.gitbook/assets/image (661) (1).png new file mode 100644 index 0000000000..cff95dc0db Binary files /dev/null and b/.gitbook/assets/image (661) (1).png differ diff --git a/.gitbook/assets/image (661).png b/.gitbook/assets/image (661).png new file mode 100644 index 0000000000..5c4eb96fed Binary files /dev/null and b/.gitbook/assets/image (661).png differ diff --git a/.gitbook/assets/image (662) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (662) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..53a67792e6 Binary files /dev/null and b/.gitbook/assets/image (662) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (662) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (662) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..0742cb1f9f Binary files /dev/null and b/.gitbook/assets/image (662) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (662) (1) (1) (1) (1).png b/.gitbook/assets/image (662) (1) (1) (1) (1).png new file mode 100644 index 0000000000..c892075346 Binary files /dev/null and b/.gitbook/assets/image (662) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (662) (1) (1) (1).png b/.gitbook/assets/image (662) (1) (1) (1).png new file mode 100644 index 0000000000..d8f16256f9 Binary files /dev/null and b/.gitbook/assets/image (662) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (662) (1) (1).png b/.gitbook/assets/image (662) (1) (1).png new file mode 100644 index 0000000000..c99793462d Binary files /dev/null and b/.gitbook/assets/image (662) (1) (1).png differ diff --git a/.gitbook/assets/image (662) (1).png b/.gitbook/assets/image (662) (1).png new file mode 100644 index 0000000000..1a613f0018 Binary files /dev/null and b/.gitbook/assets/image (662) (1).png differ diff --git a/.gitbook/assets/image (662).png b/.gitbook/assets/image (662).png new file mode 100644 index 0000000000..2906b6f64c Binary files /dev/null and b/.gitbook/assets/image (662).png differ diff --git a/.gitbook/assets/image (663) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (663) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..267f2d3123 Binary files /dev/null and b/.gitbook/assets/image (663) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (663) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (663) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..7d45d8f686 Binary files /dev/null and b/.gitbook/assets/image (663) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (663) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (663) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..f07512d347 Binary files /dev/null and b/.gitbook/assets/image (663) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (663) (1) (1) (1) (1).png b/.gitbook/assets/image (663) (1) (1) (1) (1).png new file mode 100644 index 0000000000..d5a0400666 Binary files /dev/null and b/.gitbook/assets/image (663) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (663) (1) (1) (1).png b/.gitbook/assets/image (663) (1) (1) (1).png new file mode 100644 index 0000000000..626ddf934f Binary files /dev/null and b/.gitbook/assets/image (663) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (663) (1) (1).png b/.gitbook/assets/image (663) (1) (1).png new file mode 100644 index 0000000000..6cb87cc11e Binary files /dev/null and b/.gitbook/assets/image (663) (1) (1).png differ diff --git a/.gitbook/assets/image (663) (1).png b/.gitbook/assets/image (663) (1).png new file mode 100644 index 0000000000..bd0498b92a Binary files /dev/null and b/.gitbook/assets/image (663) (1).png differ diff --git a/.gitbook/assets/image (663).png b/.gitbook/assets/image (663).png new file mode 100644 index 0000000000..48fa5e5a01 Binary files /dev/null and b/.gitbook/assets/image (663).png differ diff --git a/.gitbook/assets/image (664) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (664) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..d8e4b050f1 Binary files /dev/null and b/.gitbook/assets/image (664) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (664) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (664) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..929a0db01b Binary files /dev/null and b/.gitbook/assets/image (664) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (664) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (664) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..efa4c6e4b0 Binary files /dev/null and b/.gitbook/assets/image (664) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (664) (1) (1) (1) (1).png b/.gitbook/assets/image (664) (1) (1) (1) (1).png new file mode 100644 index 0000000000..1bb3b427af Binary files /dev/null and b/.gitbook/assets/image (664) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (664) (1) (1) (1).png b/.gitbook/assets/image (664) (1) (1) (1).png new file mode 100644 index 0000000000..0d66e0d08f Binary files /dev/null and b/.gitbook/assets/image (664) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (664) (1) (1).png b/.gitbook/assets/image (664) (1) (1).png new file mode 100644 index 0000000000..6401c79b14 Binary files /dev/null and b/.gitbook/assets/image (664) (1) (1).png differ diff --git a/.gitbook/assets/image (664) (1).png b/.gitbook/assets/image (664) (1).png new file mode 100644 index 0000000000..8cb982bf98 Binary files /dev/null and b/.gitbook/assets/image (664) (1).png differ diff --git a/.gitbook/assets/image (664).png b/.gitbook/assets/image (664).png new file mode 100644 index 0000000000..b5cf6d5ca3 Binary files /dev/null and b/.gitbook/assets/image (664).png differ diff --git a/.gitbook/assets/image (665) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (665) (1) (1) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..263e664604 Binary files /dev/null and b/.gitbook/assets/image (665) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (665) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (665) (1) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..6c313ba2f2 Binary files /dev/null and b/.gitbook/assets/image (665) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (665) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (665) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..45f5399d0c Binary files /dev/null and b/.gitbook/assets/image (665) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (665) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (665) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..29106e2fe7 Binary files /dev/null and b/.gitbook/assets/image (665) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (665) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (665) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..417277168d Binary files /dev/null and b/.gitbook/assets/image (665) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (665) (1) (1) (1) (1).png b/.gitbook/assets/image (665) (1) (1) (1) (1).png new file mode 100644 index 0000000000..852095af9d Binary files /dev/null and b/.gitbook/assets/image (665) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (665) (1) (1) (1).png b/.gitbook/assets/image (665) (1) (1) (1).png new file mode 100644 index 0000000000..d292609e71 Binary files /dev/null and b/.gitbook/assets/image (665) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (665) (1) (1).png b/.gitbook/assets/image (665) (1) (1).png new file mode 100644 index 0000000000..ef1d417aea Binary files /dev/null and b/.gitbook/assets/image (665) (1) (1).png differ diff --git a/.gitbook/assets/image (665) (1).png b/.gitbook/assets/image (665) (1).png new file mode 100644 index 0000000000..b29715689f Binary files /dev/null and b/.gitbook/assets/image (665) (1).png differ diff --git a/.gitbook/assets/image (665) (2).png b/.gitbook/assets/image (665) (2).png new file mode 100644 index 0000000000..ba796fade5 Binary files /dev/null and b/.gitbook/assets/image (665) (2).png differ diff --git a/.gitbook/assets/image (665).png b/.gitbook/assets/image (665).png new file mode 100644 index 0000000000..3e9cc3ab90 Binary files /dev/null and b/.gitbook/assets/image (665).png differ diff --git a/.gitbook/assets/image (666) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (666) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..05a5b93e32 Binary files /dev/null and b/.gitbook/assets/image (666) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (666) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (666) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..4b31167d9f Binary files /dev/null and b/.gitbook/assets/image (666) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (666) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (666) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..b3a554e643 Binary files /dev/null and b/.gitbook/assets/image (666) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (666) (1) (1) (1) (1).png b/.gitbook/assets/image (666) (1) (1) (1) (1).png new file mode 100644 index 0000000000..64ad66c6f0 Binary files /dev/null and b/.gitbook/assets/image (666) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (666) (1) (1) (1).png b/.gitbook/assets/image (666) (1) (1) (1).png new file mode 100644 index 0000000000..5d1c10ede5 Binary files /dev/null and b/.gitbook/assets/image (666) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (666) (1) (1).png b/.gitbook/assets/image (666) (1) (1).png new file mode 100644 index 0000000000..51eaa5ffdd Binary files /dev/null and b/.gitbook/assets/image (666) (1) (1).png differ diff --git a/.gitbook/assets/image (666) (1).png b/.gitbook/assets/image (666) (1).png new file mode 100644 index 0000000000..1bae88e1d5 Binary files /dev/null and b/.gitbook/assets/image (666) (1).png differ diff --git a/.gitbook/assets/image (666).png b/.gitbook/assets/image (666).png new file mode 100644 index 0000000000..4c78fbd52c Binary files /dev/null and b/.gitbook/assets/image (666).png differ diff --git a/.gitbook/assets/image (667) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (667) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..10e00570be Binary files /dev/null and b/.gitbook/assets/image (667) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (667) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (667) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..aec42aaf12 Binary files /dev/null and b/.gitbook/assets/image (667) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (667) (1) (1) (1) (1).png b/.gitbook/assets/image (667) (1) (1) (1) (1).png new file mode 100644 index 0000000000..306d239142 Binary files /dev/null and b/.gitbook/assets/image (667) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (667) (1) (1) (1).png b/.gitbook/assets/image (667) (1) (1) (1).png new file mode 100644 index 0000000000..de9c50f7c7 Binary files /dev/null and b/.gitbook/assets/image (667) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (667) (1) (1).png b/.gitbook/assets/image (667) (1) (1).png new file mode 100644 index 0000000000..6b9749c5f1 Binary files /dev/null and b/.gitbook/assets/image (667) (1) (1).png differ diff --git a/.gitbook/assets/image (667) (1).png b/.gitbook/assets/image (667) (1).png new file mode 100644 index 0000000000..bb97a8a77b Binary files /dev/null and b/.gitbook/assets/image (667) (1).png differ diff --git a/.gitbook/assets/image (667).png b/.gitbook/assets/image (667).png new file mode 100644 index 0000000000..7ed1dbb35f Binary files /dev/null and b/.gitbook/assets/image (667).png differ diff --git a/.gitbook/assets/image (668) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (668) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..cc33462bf0 Binary files /dev/null and b/.gitbook/assets/image (668) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (668) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (668) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..c9106ec75e Binary files /dev/null and b/.gitbook/assets/image (668) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (668) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (668) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..9f6043be15 Binary files /dev/null and b/.gitbook/assets/image (668) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (668) (1) (1) (1) (1).png b/.gitbook/assets/image (668) (1) (1) (1) (1).png new file mode 100644 index 0000000000..48ab0befcf Binary files /dev/null and b/.gitbook/assets/image (668) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (668) (1) (1) (1).png b/.gitbook/assets/image (668) (1) (1) (1).png new file mode 100644 index 0000000000..07ca844e6a Binary files /dev/null and b/.gitbook/assets/image (668) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (668) (1) (1).png b/.gitbook/assets/image (668) (1) (1).png new file mode 100644 index 0000000000..64e350f199 Binary files /dev/null and b/.gitbook/assets/image (668) (1) (1).png differ diff --git a/.gitbook/assets/image (668) (1).png b/.gitbook/assets/image (668) (1).png new file mode 100644 index 0000000000..ad3682cbbf Binary files /dev/null and b/.gitbook/assets/image (668) (1).png differ diff --git a/.gitbook/assets/image (668) (2).png b/.gitbook/assets/image (668) (2).png new file mode 100644 index 0000000000..2db8ffd0a0 Binary files /dev/null and b/.gitbook/assets/image (668) (2).png differ diff --git a/.gitbook/assets/image (668).png b/.gitbook/assets/image (668).png new file mode 100644 index 0000000000..4adff40398 Binary files /dev/null and b/.gitbook/assets/image (668).png differ diff --git a/.gitbook/assets/image (669) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (669) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..4861e9ff28 Binary files /dev/null and b/.gitbook/assets/image (669) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (669) (1) (1) (1) (1).png b/.gitbook/assets/image (669) (1) (1) (1) (1).png new file mode 100644 index 0000000000..5079b6a65a Binary files /dev/null and b/.gitbook/assets/image (669) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (669) (1) (1) (1).png b/.gitbook/assets/image (669) (1) (1) (1).png new file mode 100644 index 0000000000..94fc840067 Binary files /dev/null and b/.gitbook/assets/image (669) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (669) (1) (1).png b/.gitbook/assets/image (669) (1) (1).png new file mode 100644 index 0000000000..8189609587 Binary files /dev/null and b/.gitbook/assets/image (669) (1) (1).png differ diff --git a/.gitbook/assets/image (669) (1).png b/.gitbook/assets/image (669) (1).png new file mode 100644 index 0000000000..6a2f9724e8 Binary files /dev/null and b/.gitbook/assets/image (669) (1).png differ diff --git a/.gitbook/assets/image (669).png b/.gitbook/assets/image (669).png new file mode 100644 index 0000000000..b52d9740b7 Binary files /dev/null and b/.gitbook/assets/image (669).png differ diff --git a/.gitbook/assets/image (67).png b/.gitbook/assets/image (67).png index aba3a62d06..a9823ce4c4 100644 Binary files a/.gitbook/assets/image (67).png and b/.gitbook/assets/image (67).png differ diff --git a/.gitbook/assets/image (670) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (670) (1) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..3fc16c1218 Binary files /dev/null and b/.gitbook/assets/image (670) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (670) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (670) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..b6980e888e Binary files /dev/null and b/.gitbook/assets/image (670) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (670) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (670) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..22f98d0d95 Binary files /dev/null and b/.gitbook/assets/image (670) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (670) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (670) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..464bcda8a4 Binary files /dev/null and b/.gitbook/assets/image (670) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (670) (1) (1) (1) (1).png b/.gitbook/assets/image (670) (1) (1) (1) (1).png new file mode 100644 index 0000000000..1bb3b427af Binary files /dev/null and b/.gitbook/assets/image (670) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (670) (1) (1) (1).png b/.gitbook/assets/image (670) (1) (1) (1).png new file mode 100644 index 0000000000..72e6f5c011 Binary files /dev/null and b/.gitbook/assets/image (670) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (670) (1) (1).png b/.gitbook/assets/image (670) (1) (1).png new file mode 100644 index 0000000000..bf44691ce0 Binary files /dev/null and b/.gitbook/assets/image (670) (1) (1).png differ diff --git a/.gitbook/assets/image (670) (1).png b/.gitbook/assets/image (670) (1).png new file mode 100644 index 0000000000..0761abcdfe Binary files /dev/null and b/.gitbook/assets/image (670) (1).png differ diff --git a/.gitbook/assets/image (670) (2).png b/.gitbook/assets/image (670) (2).png new file mode 100644 index 0000000000..72418c0933 Binary files /dev/null and b/.gitbook/assets/image (670) (2).png differ diff --git a/.gitbook/assets/image (670).png b/.gitbook/assets/image (670).png new file mode 100644 index 0000000000..56f3a2d4bb Binary files /dev/null and b/.gitbook/assets/image (670).png differ diff --git a/.gitbook/assets/image (671) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (671) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..965a00cbf3 Binary files /dev/null and b/.gitbook/assets/image (671) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (671) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (671) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..c5392be7a5 Binary files /dev/null and b/.gitbook/assets/image (671) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (671) (1) (1) (1) (1).png b/.gitbook/assets/image (671) (1) (1) (1) (1).png new file mode 100644 index 0000000000..d977358b21 Binary files /dev/null and b/.gitbook/assets/image (671) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (671) (1) (1) (1).png b/.gitbook/assets/image (671) (1) (1) (1).png new file mode 100644 index 0000000000..6abc4436ae Binary files /dev/null and b/.gitbook/assets/image (671) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (671) (1) (1).png b/.gitbook/assets/image (671) (1) (1).png new file mode 100644 index 0000000000..335e5fff95 Binary files /dev/null and b/.gitbook/assets/image (671) (1) (1).png differ diff --git a/.gitbook/assets/image (671) (1).png b/.gitbook/assets/image (671) (1).png new file mode 100644 index 0000000000..81c1ff2c5e Binary files /dev/null and b/.gitbook/assets/image (671) (1).png differ diff --git a/.gitbook/assets/image (671).png b/.gitbook/assets/image (671).png new file mode 100644 index 0000000000..854ee49503 Binary files /dev/null and b/.gitbook/assets/image (671).png differ diff --git a/.gitbook/assets/image (672) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (672) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..f1ca72f901 Binary files /dev/null and b/.gitbook/assets/image (672) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (672) (1) (1) (1) (1).png b/.gitbook/assets/image (672) (1) (1) (1) (1).png new file mode 100644 index 0000000000..750be28048 Binary files /dev/null and b/.gitbook/assets/image (672) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (672) (1) (1) (1).png b/.gitbook/assets/image (672) (1) (1) (1).png new file mode 100644 index 0000000000..d15254186a Binary files /dev/null and b/.gitbook/assets/image (672) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (672) (1) (1).png b/.gitbook/assets/image (672) (1) (1).png new file mode 100644 index 0000000000..2ceff5edcf Binary files /dev/null and b/.gitbook/assets/image (672) (1) (1).png differ diff --git a/.gitbook/assets/image (672) (1) (2).png b/.gitbook/assets/image (672) (1) (2).png new file mode 100644 index 0000000000..f0816d789c Binary files /dev/null and b/.gitbook/assets/image (672) (1) (2).png differ diff --git a/.gitbook/assets/image (672) (1).png b/.gitbook/assets/image (672) (1).png new file mode 100644 index 0000000000..cb503a0d04 Binary files /dev/null and b/.gitbook/assets/image (672) (1).png differ diff --git a/.gitbook/assets/image (672) (2).png b/.gitbook/assets/image (672) (2).png new file mode 100644 index 0000000000..58659db4d5 Binary files /dev/null and b/.gitbook/assets/image (672) (2).png differ diff --git a/.gitbook/assets/image (672).png b/.gitbook/assets/image (672).png new file mode 100644 index 0000000000..72b47b10c8 Binary files /dev/null and b/.gitbook/assets/image (672).png differ diff --git a/.gitbook/assets/image (673) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (673) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..c9d2af4a30 Binary files /dev/null and b/.gitbook/assets/image (673) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (673) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (673) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..f5799083f4 Binary files /dev/null and b/.gitbook/assets/image (673) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (673) (1) (1) (1) (1).png b/.gitbook/assets/image (673) (1) (1) (1) (1).png new file mode 100644 index 0000000000..c96755ce4a Binary files /dev/null and b/.gitbook/assets/image (673) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (673) (1) (1) (1).png b/.gitbook/assets/image (673) (1) (1) (1).png new file mode 100644 index 0000000000..bd9f65090f Binary files /dev/null and b/.gitbook/assets/image (673) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (673) (1) (1).png b/.gitbook/assets/image (673) (1) (1).png new file mode 100644 index 0000000000..1809f82a7a Binary files /dev/null and b/.gitbook/assets/image (673) (1) (1).png differ diff --git a/.gitbook/assets/image (673) (1).png b/.gitbook/assets/image (673) (1).png new file mode 100644 index 0000000000..45d4156d69 Binary files /dev/null and b/.gitbook/assets/image (673) (1).png differ diff --git a/.gitbook/assets/image (673) (2).png b/.gitbook/assets/image (673) (2).png new file mode 100644 index 0000000000..9e6173b69b Binary files /dev/null and b/.gitbook/assets/image (673) (2).png differ diff --git a/.gitbook/assets/image (673).png b/.gitbook/assets/image (673).png new file mode 100644 index 0000000000..dcce42b4ce Binary files /dev/null and b/.gitbook/assets/image (673).png differ diff --git a/.gitbook/assets/image (674) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (674) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..09ab3ff0ba Binary files /dev/null and b/.gitbook/assets/image (674) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (674) (1) (1) (1) (1).png b/.gitbook/assets/image (674) (1) (1) (1) (1).png new file mode 100644 index 0000000000..290a2aa64b Binary files /dev/null and b/.gitbook/assets/image (674) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (674) (1) (1) (1).png b/.gitbook/assets/image (674) (1) (1) (1).png new file mode 100644 index 0000000000..2048349097 Binary files /dev/null and b/.gitbook/assets/image (674) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (674) (1) (1).png b/.gitbook/assets/image (674) (1) (1).png new file mode 100644 index 0000000000..7504768dd4 Binary files /dev/null and b/.gitbook/assets/image (674) (1) (1).png differ diff --git a/.gitbook/assets/image (674) (1).png b/.gitbook/assets/image (674) (1).png new file mode 100644 index 0000000000..18b97fa7b8 Binary files /dev/null and b/.gitbook/assets/image (674) (1).png differ diff --git a/.gitbook/assets/image (674) (2).png b/.gitbook/assets/image (674) (2).png new file mode 100644 index 0000000000..6090cfba29 Binary files /dev/null and b/.gitbook/assets/image (674) (2).png differ diff --git a/.gitbook/assets/image (674).png b/.gitbook/assets/image (674).png new file mode 100644 index 0000000000..5a04e81f97 Binary files /dev/null and b/.gitbook/assets/image (674).png differ diff --git a/.gitbook/assets/image (675) (1) (1) (1).png b/.gitbook/assets/image (675) (1) (1) (1).png new file mode 100644 index 0000000000..f53aa80fb6 Binary files /dev/null and b/.gitbook/assets/image (675) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (675) (1) (1).png b/.gitbook/assets/image (675) (1) (1).png new file mode 100644 index 0000000000..d4c9b84c0e Binary files /dev/null and b/.gitbook/assets/image (675) (1) (1).png differ diff --git a/.gitbook/assets/image (675) (1).png b/.gitbook/assets/image (675) (1).png new file mode 100644 index 0000000000..2bd7432b25 Binary files /dev/null and b/.gitbook/assets/image (675) (1).png differ diff --git a/.gitbook/assets/image (675) (2).png b/.gitbook/assets/image (675) (2).png new file mode 100644 index 0000000000..46517e4a55 Binary files /dev/null and b/.gitbook/assets/image (675) (2).png differ diff --git a/.gitbook/assets/image (675).png b/.gitbook/assets/image (675).png new file mode 100644 index 0000000000..125dcd6988 Binary files /dev/null and b/.gitbook/assets/image (675).png differ diff --git a/.gitbook/assets/image (676) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (676) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..367a9f6157 Binary files /dev/null and b/.gitbook/assets/image (676) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (676) (1) (1) (1) (1).png b/.gitbook/assets/image (676) (1) (1) (1) (1).png new file mode 100644 index 0000000000..2d1791402b Binary files /dev/null and b/.gitbook/assets/image (676) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (676) (1) (1) (1).png b/.gitbook/assets/image (676) (1) (1) (1).png new file mode 100644 index 0000000000..c57b868af6 Binary files /dev/null and b/.gitbook/assets/image (676) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (676) (1) (1).png b/.gitbook/assets/image (676) (1) (1).png new file mode 100644 index 0000000000..55ab7f7ffd Binary files /dev/null and b/.gitbook/assets/image (676) (1) (1).png differ diff --git a/.gitbook/assets/image (676) (1).png b/.gitbook/assets/image (676) (1).png new file mode 100644 index 0000000000..6868c6a9ff Binary files /dev/null and b/.gitbook/assets/image (676) (1).png differ diff --git a/.gitbook/assets/image (676) (2).png b/.gitbook/assets/image (676) (2).png new file mode 100644 index 0000000000..fcb17b7c71 Binary files /dev/null and b/.gitbook/assets/image (676) (2).png differ diff --git a/.gitbook/assets/image (676).png b/.gitbook/assets/image (676).png new file mode 100644 index 0000000000..b38faeaa83 Binary files /dev/null and b/.gitbook/assets/image (676).png differ diff --git a/.gitbook/assets/image (677) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (677) (1) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..15b12947fa Binary files /dev/null and b/.gitbook/assets/image (677) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (677) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (677) (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..768cf8992a Binary files /dev/null and b/.gitbook/assets/image (677) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (677) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (677) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..3198452e84 Binary files /dev/null and b/.gitbook/assets/image (677) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (677) (1) (1) (1) (1).png b/.gitbook/assets/image (677) (1) (1) (1) (1).png new file mode 100644 index 0000000000..0930ba3e93 Binary files /dev/null and b/.gitbook/assets/image (677) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (677) (1) (1) (1).png b/.gitbook/assets/image (677) (1) (1) (1).png new file mode 100644 index 0000000000..1a797fba82 Binary files /dev/null and b/.gitbook/assets/image (677) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (677) (1) (1).png b/.gitbook/assets/image (677) (1) (1).png new file mode 100644 index 0000000000..675685b6e0 Binary files /dev/null and b/.gitbook/assets/image (677) (1) (1).png differ diff --git a/.gitbook/assets/image (677) (1).png b/.gitbook/assets/image (677) (1).png new file mode 100644 index 0000000000..96691f57b1 Binary files /dev/null and b/.gitbook/assets/image (677) (1).png differ diff --git a/.gitbook/assets/image (677) (2).png b/.gitbook/assets/image (677) (2).png new file mode 100644 index 0000000000..fcb2da58d6 Binary files /dev/null and b/.gitbook/assets/image (677) (2).png differ diff --git a/.gitbook/assets/image (677).png b/.gitbook/assets/image (677).png new file mode 100644 index 0000000000..ccf357207b Binary files /dev/null and b/.gitbook/assets/image (677).png differ diff --git a/.gitbook/assets/image (678) (1) (1) (1) (1).png b/.gitbook/assets/image (678) (1) (1) (1) (1).png new file mode 100644 index 0000000000..76f1a17d9f Binary files /dev/null and b/.gitbook/assets/image (678) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (678) (1) (1) (1).png b/.gitbook/assets/image (678) (1) (1) (1).png new file mode 100644 index 0000000000..2748297e2c Binary files /dev/null and b/.gitbook/assets/image (678) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (678) (1) (1).png b/.gitbook/assets/image (678) (1) (1).png new file mode 100644 index 0000000000..897b2893f7 Binary files /dev/null and b/.gitbook/assets/image (678) (1) (1).png differ diff --git a/.gitbook/assets/image (678) (1).png b/.gitbook/assets/image (678) (1).png new file mode 100644 index 0000000000..97a2a1e68d Binary files /dev/null and b/.gitbook/assets/image (678) (1).png differ diff --git a/.gitbook/assets/image (678) (2).png b/.gitbook/assets/image (678) (2).png new file mode 100644 index 0000000000..1695b4a7c5 Binary files /dev/null and b/.gitbook/assets/image (678) (2).png differ diff --git a/.gitbook/assets/image (678).png b/.gitbook/assets/image (678).png new file mode 100644 index 0000000000..f501a0bd41 Binary files /dev/null and b/.gitbook/assets/image (678).png differ diff --git a/.gitbook/assets/image (679) (1) (1) (1) (1).png b/.gitbook/assets/image (679) (1) (1) (1) (1).png new file mode 100644 index 0000000000..758216bec1 Binary files /dev/null and b/.gitbook/assets/image (679) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (679) (1) (1) (1).png b/.gitbook/assets/image (679) (1) (1) (1).png new file mode 100644 index 0000000000..21571f9fc7 Binary files /dev/null and b/.gitbook/assets/image (679) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (679) (1) (1).png b/.gitbook/assets/image (679) (1) (1).png new file mode 100644 index 0000000000..7975644cfd Binary files /dev/null and b/.gitbook/assets/image (679) (1) (1).png differ diff --git a/.gitbook/assets/image (679) (1).png b/.gitbook/assets/image (679) (1).png new file mode 100644 index 0000000000..ee8eab8ab7 Binary files /dev/null and b/.gitbook/assets/image (679) (1).png differ diff --git a/.gitbook/assets/image (679) (2).png b/.gitbook/assets/image (679) (2).png new file mode 100644 index 0000000000..7fc4b799c5 Binary files /dev/null and b/.gitbook/assets/image (679) (2).png differ diff --git a/.gitbook/assets/image (679).png b/.gitbook/assets/image (679).png new file mode 100644 index 0000000000..b2f7891bb9 Binary files /dev/null and b/.gitbook/assets/image (679).png differ diff --git a/.gitbook/assets/image (68).png b/.gitbook/assets/image (68).png index 44c1ad9004..e1d21f9656 100644 Binary files a/.gitbook/assets/image (68).png and b/.gitbook/assets/image (68).png differ diff --git a/.gitbook/assets/image (680) (1) (1) (1) (1).png b/.gitbook/assets/image (680) (1) (1) (1) (1).png new file mode 100644 index 0000000000..82031a1bc0 Binary files /dev/null and b/.gitbook/assets/image (680) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (680) (1) (1) (1).png b/.gitbook/assets/image (680) (1) (1) (1).png new file mode 100644 index 0000000000..0699b1c73b Binary files /dev/null and b/.gitbook/assets/image (680) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (680) (1) (1).png b/.gitbook/assets/image (680) (1) (1).png new file mode 100644 index 0000000000..a301497897 Binary files /dev/null and b/.gitbook/assets/image (680) (1) (1).png differ diff --git a/.gitbook/assets/image (680) (1).png b/.gitbook/assets/image (680) (1).png new file mode 100644 index 0000000000..c28e89108a Binary files /dev/null and b/.gitbook/assets/image (680) (1).png differ diff --git a/.gitbook/assets/image (680).png b/.gitbook/assets/image (680).png new file mode 100644 index 0000000000..fedd136194 Binary files /dev/null and b/.gitbook/assets/image (680).png differ diff --git a/.gitbook/assets/image (681) (1) (1) (1) (1).png b/.gitbook/assets/image (681) (1) (1) (1) (1).png new file mode 100644 index 0000000000..96e4292612 Binary files /dev/null and b/.gitbook/assets/image (681) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (681) (1) (1) (1).png b/.gitbook/assets/image (681) (1) (1) (1).png new file mode 100644 index 0000000000..9f6d7dcf34 Binary files /dev/null and b/.gitbook/assets/image (681) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (681) (1) (1).png b/.gitbook/assets/image (681) (1) (1).png new file mode 100644 index 0000000000..eacb8edbc3 Binary files /dev/null and b/.gitbook/assets/image (681) (1) (1).png differ diff --git a/.gitbook/assets/image (681) (1).png b/.gitbook/assets/image (681) (1).png new file mode 100644 index 0000000000..ce55f794f7 Binary files /dev/null and b/.gitbook/assets/image (681) (1).png differ diff --git a/.gitbook/assets/image (681).png b/.gitbook/assets/image (681).png new file mode 100644 index 0000000000..f74f400bc2 Binary files /dev/null and b/.gitbook/assets/image (681).png differ diff --git a/.gitbook/assets/image (682) (1) (1) (1) (1).png b/.gitbook/assets/image (682) (1) (1) (1) (1).png new file mode 100644 index 0000000000..3f243df6b7 Binary files /dev/null and b/.gitbook/assets/image (682) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (682) (1) (1) (1).png b/.gitbook/assets/image (682) (1) (1) (1).png new file mode 100644 index 0000000000..ea2522c82e Binary files /dev/null and b/.gitbook/assets/image (682) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (682) (1) (1).png b/.gitbook/assets/image (682) (1) (1).png new file mode 100644 index 0000000000..b32e9082e5 Binary files /dev/null and b/.gitbook/assets/image (682) (1) (1).png differ diff --git a/.gitbook/assets/image (682) (1).png b/.gitbook/assets/image (682) (1).png new file mode 100644 index 0000000000..082af05df9 Binary files /dev/null and b/.gitbook/assets/image (682) (1).png differ diff --git a/.gitbook/assets/image (682).png b/.gitbook/assets/image (682).png new file mode 100644 index 0000000000..41f676df53 Binary files /dev/null and b/.gitbook/assets/image (682).png differ diff --git a/.gitbook/assets/image (683) (1) (1) (1).png b/.gitbook/assets/image (683) (1) (1) (1).png new file mode 100644 index 0000000000..906004a84d Binary files /dev/null and b/.gitbook/assets/image (683) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (683) (1) (1).png b/.gitbook/assets/image (683) (1) (1).png new file mode 100644 index 0000000000..a7c4f2136c Binary files /dev/null and b/.gitbook/assets/image (683) (1) (1).png differ diff --git a/.gitbook/assets/image (683) (1).png b/.gitbook/assets/image (683) (1).png new file mode 100644 index 0000000000..df4a5b8d69 Binary files /dev/null and b/.gitbook/assets/image (683) (1).png differ diff --git a/.gitbook/assets/image (683).png b/.gitbook/assets/image (683).png new file mode 100644 index 0000000000..64f110319e Binary files /dev/null and b/.gitbook/assets/image (683).png differ diff --git a/.gitbook/assets/image (684) (1) (1) (1).png b/.gitbook/assets/image (684) (1) (1) (1).png new file mode 100644 index 0000000000..fa3e85b28e Binary files /dev/null and b/.gitbook/assets/image (684) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (684) (1) (1).png b/.gitbook/assets/image (684) (1) (1).png new file mode 100644 index 0000000000..a28ca9ff40 Binary files /dev/null and b/.gitbook/assets/image (684) (1) (1).png differ diff --git a/.gitbook/assets/image (684) (1).png b/.gitbook/assets/image (684) (1).png new file mode 100644 index 0000000000..33ee863c61 Binary files /dev/null and b/.gitbook/assets/image (684) (1).png differ diff --git a/.gitbook/assets/image (684).png b/.gitbook/assets/image (684).png new file mode 100644 index 0000000000..b5cf6d5ca3 Binary files /dev/null and b/.gitbook/assets/image (684).png differ diff --git a/.gitbook/assets/image (685) (1) (1).png b/.gitbook/assets/image (685) (1) (1).png new file mode 100644 index 0000000000..c8b4bdd587 Binary files /dev/null and b/.gitbook/assets/image (685) (1) (1).png differ diff --git a/.gitbook/assets/image (685) (1).png b/.gitbook/assets/image (685) (1).png new file mode 100644 index 0000000000..219d543071 Binary files /dev/null and b/.gitbook/assets/image (685) (1).png differ diff --git a/.gitbook/assets/image (685).png b/.gitbook/assets/image (685).png new file mode 100644 index 0000000000..481acc2df4 Binary files /dev/null and b/.gitbook/assets/image (685).png differ diff --git a/.gitbook/assets/image (686) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (686) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..b722532a93 Binary files /dev/null and b/.gitbook/assets/image (686) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (686) (1) (1) (1) (1).png b/.gitbook/assets/image (686) (1) (1) (1) (1).png new file mode 100644 index 0000000000..f03da7d2d6 Binary files /dev/null and b/.gitbook/assets/image (686) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (686) (1) (1) (1).png b/.gitbook/assets/image (686) (1) (1) (1).png new file mode 100644 index 0000000000..a28ca9ff40 Binary files /dev/null and b/.gitbook/assets/image (686) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (686) (1) (1).png b/.gitbook/assets/image (686) (1) (1).png new file mode 100644 index 0000000000..5ded1a564a Binary files /dev/null and b/.gitbook/assets/image (686) (1) (1).png differ diff --git a/.gitbook/assets/image (686) (1).png b/.gitbook/assets/image (686) (1).png new file mode 100644 index 0000000000..e134be2bcf Binary files /dev/null and b/.gitbook/assets/image (686) (1).png differ diff --git a/.gitbook/assets/image (686).png b/.gitbook/assets/image (686).png new file mode 100644 index 0000000000..ce15ca24d9 Binary files /dev/null and b/.gitbook/assets/image (686).png differ diff --git a/.gitbook/assets/image (687) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (687) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..24fbc29aad Binary files /dev/null and b/.gitbook/assets/image (687) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (687) (1) (1) (1) (1).png b/.gitbook/assets/image (687) (1) (1) (1) (1).png new file mode 100644 index 0000000000..d75c6719a6 Binary files /dev/null and b/.gitbook/assets/image (687) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (687) (1) (1) (1).png b/.gitbook/assets/image (687) (1) (1) (1).png new file mode 100644 index 0000000000..9fe97a10b3 Binary files /dev/null and b/.gitbook/assets/image (687) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (687) (1) (1).png b/.gitbook/assets/image (687) (1) (1).png new file mode 100644 index 0000000000..306d239142 Binary files /dev/null and b/.gitbook/assets/image (687) (1) (1).png differ diff --git a/.gitbook/assets/image (687) (1).png b/.gitbook/assets/image (687) (1).png new file mode 100644 index 0000000000..c926f3b32e Binary files /dev/null and b/.gitbook/assets/image (687) (1).png differ diff --git a/.gitbook/assets/image (687).png b/.gitbook/assets/image (687).png new file mode 100644 index 0000000000..effd53d710 Binary files /dev/null and b/.gitbook/assets/image (687).png differ diff --git a/.gitbook/assets/image (688) (1) (1) (1).png b/.gitbook/assets/image (688) (1) (1) (1).png new file mode 100644 index 0000000000..822a41390c Binary files /dev/null and b/.gitbook/assets/image (688) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (688) (1) (1).png b/.gitbook/assets/image (688) (1) (1).png new file mode 100644 index 0000000000..dcba6833d0 Binary files /dev/null and b/.gitbook/assets/image (688) (1) (1).png differ diff --git a/.gitbook/assets/image (688) (1).png b/.gitbook/assets/image (688) (1).png new file mode 100644 index 0000000000..effd53d710 Binary files /dev/null and b/.gitbook/assets/image (688) (1).png differ diff --git a/.gitbook/assets/image (688) (2).png b/.gitbook/assets/image (688) (2).png new file mode 100644 index 0000000000..b56433e855 Binary files /dev/null and b/.gitbook/assets/image (688) (2).png differ diff --git a/.gitbook/assets/image (688).png b/.gitbook/assets/image (688).png new file mode 100644 index 0000000000..d1da841b02 Binary files /dev/null and b/.gitbook/assets/image (688).png differ diff --git a/.gitbook/assets/image (689) (1) (1).png b/.gitbook/assets/image (689) (1) (1).png new file mode 100644 index 0000000000..8b757f3108 Binary files /dev/null and b/.gitbook/assets/image (689) (1) (1).png differ diff --git a/.gitbook/assets/image (689) (1).png b/.gitbook/assets/image (689) (1).png new file mode 100644 index 0000000000..01af728dbb Binary files /dev/null and b/.gitbook/assets/image (689) (1).png differ diff --git a/.gitbook/assets/image (689).png b/.gitbook/assets/image (689).png new file mode 100644 index 0000000000..22564baf23 Binary files /dev/null and b/.gitbook/assets/image (689).png differ diff --git a/.gitbook/assets/image (69).png b/.gitbook/assets/image (69).png index 4d08232eba..af0c633467 100644 Binary files a/.gitbook/assets/image (69).png and b/.gitbook/assets/image (69).png differ diff --git a/.gitbook/assets/image (690) (1) (1).png b/.gitbook/assets/image (690) (1) (1).png new file mode 100644 index 0000000000..f8b2fe716a Binary files /dev/null and b/.gitbook/assets/image (690) (1) (1).png differ diff --git a/.gitbook/assets/image (690) (1).png b/.gitbook/assets/image (690) (1).png new file mode 100644 index 0000000000..ef324bafec Binary files /dev/null and b/.gitbook/assets/image (690) (1).png differ diff --git a/.gitbook/assets/image (690) (2).png b/.gitbook/assets/image (690) (2).png new file mode 100644 index 0000000000..3790bddd3e Binary files /dev/null and b/.gitbook/assets/image (690) (2).png differ diff --git a/.gitbook/assets/image (690).png b/.gitbook/assets/image (690).png new file mode 100644 index 0000000000..ca3aab7553 Binary files /dev/null and b/.gitbook/assets/image (690).png differ diff --git a/.gitbook/assets/image (691) (1) (1).png b/.gitbook/assets/image (691) (1) (1).png new file mode 100644 index 0000000000..8b757f3108 Binary files /dev/null and b/.gitbook/assets/image (691) (1) (1).png differ diff --git a/.gitbook/assets/image (691) (1).png b/.gitbook/assets/image (691) (1).png new file mode 100644 index 0000000000..e1b8b989f0 Binary files /dev/null and b/.gitbook/assets/image (691) (1).png differ diff --git a/.gitbook/assets/image (691).png b/.gitbook/assets/image (691).png new file mode 100644 index 0000000000..0a803fcb96 Binary files /dev/null and b/.gitbook/assets/image (691).png differ diff --git a/.gitbook/assets/image (692) (1) (1).png b/.gitbook/assets/image (692) (1) (1).png new file mode 100644 index 0000000000..32c95a57e3 Binary files /dev/null and b/.gitbook/assets/image (692) (1) (1).png differ diff --git a/.gitbook/assets/image (692) (1).png b/.gitbook/assets/image (692) (1).png new file mode 100644 index 0000000000..4b4f93729f Binary files /dev/null and b/.gitbook/assets/image (692) (1).png differ diff --git a/.gitbook/assets/image (692) (2).png b/.gitbook/assets/image (692) (2).png new file mode 100644 index 0000000000..59622a86b6 Binary files /dev/null and b/.gitbook/assets/image (692) (2).png differ diff --git a/.gitbook/assets/image (692).png b/.gitbook/assets/image (692).png new file mode 100644 index 0000000000..daf7a9b699 Binary files /dev/null and b/.gitbook/assets/image (692).png differ diff --git a/.gitbook/assets/image (693) (1) (1).png b/.gitbook/assets/image (693) (1) (1).png new file mode 100644 index 0000000000..706a85e7b6 Binary files /dev/null and b/.gitbook/assets/image (693) (1) (1).png differ diff --git a/.gitbook/assets/image (693) (1).png b/.gitbook/assets/image (693) (1).png new file mode 100644 index 0000000000..44d109c5f3 Binary files /dev/null and b/.gitbook/assets/image (693) (1).png differ diff --git a/.gitbook/assets/image (693).png b/.gitbook/assets/image (693).png new file mode 100644 index 0000000000..5f2e0ea211 Binary files /dev/null and b/.gitbook/assets/image (693).png differ diff --git a/.gitbook/assets/image (694) (1).png b/.gitbook/assets/image (694) (1).png new file mode 100644 index 0000000000..fcb2da58d6 Binary files /dev/null and b/.gitbook/assets/image (694) (1).png differ diff --git a/.gitbook/assets/image (694).png b/.gitbook/assets/image (694).png new file mode 100644 index 0000000000..72b4fe8c9b Binary files /dev/null and b/.gitbook/assets/image (694).png differ diff --git a/.gitbook/assets/image (695) (1) (1).png b/.gitbook/assets/image (695) (1) (1).png new file mode 100644 index 0000000000..ff13ce8136 Binary files /dev/null and b/.gitbook/assets/image (695) (1) (1).png differ diff --git a/.gitbook/assets/image (695) (1).png b/.gitbook/assets/image (695) (1).png new file mode 100644 index 0000000000..8c2017b4e6 Binary files /dev/null and b/.gitbook/assets/image (695) (1).png differ diff --git a/.gitbook/assets/image (695).png b/.gitbook/assets/image (695).png new file mode 100644 index 0000000000..114bc8dcd4 Binary files /dev/null and b/.gitbook/assets/image (695).png differ diff --git a/.gitbook/assets/image (696) (1) (1).png b/.gitbook/assets/image (696) (1) (1).png new file mode 100644 index 0000000000..3a3beaa464 Binary files /dev/null and b/.gitbook/assets/image (696) (1) (1).png differ diff --git a/.gitbook/assets/image (696) (1).png b/.gitbook/assets/image (696) (1).png new file mode 100644 index 0000000000..6c6adc8e3a Binary files /dev/null and b/.gitbook/assets/image (696) (1).png differ diff --git a/.gitbook/assets/image (696).png b/.gitbook/assets/image (696).png new file mode 100644 index 0000000000..a9cf0a2d56 Binary files /dev/null and b/.gitbook/assets/image (696).png differ diff --git a/.gitbook/assets/image (697).png b/.gitbook/assets/image (697).png new file mode 100644 index 0000000000..06a46e8934 Binary files /dev/null and b/.gitbook/assets/image (697).png differ diff --git a/.gitbook/assets/image (7) (1).png b/.gitbook/assets/image (7) (1).png new file mode 100644 index 0000000000..4bbeadff74 Binary files /dev/null and b/.gitbook/assets/image (7) (1).png differ diff --git a/.gitbook/assets/image (7) (2).png b/.gitbook/assets/image (7) (2).png new file mode 100644 index 0000000000..8558f0eb84 Binary files /dev/null and b/.gitbook/assets/image (7) (2).png differ diff --git a/.gitbook/assets/image (7).png b/.gitbook/assets/image (7).png index 5affb50c9f..74a086dcd8 100644 Binary files a/.gitbook/assets/image (7).png and b/.gitbook/assets/image (7).png differ diff --git a/.gitbook/assets/image (70).png b/.gitbook/assets/image (70).png index 0268e41f68..036a8d0746 100644 Binary files a/.gitbook/assets/image (70).png and b/.gitbook/assets/image (70).png differ diff --git a/.gitbook/assets/image (71).png b/.gitbook/assets/image (71).png index e2e310dc15..7dd0824545 100644 Binary files a/.gitbook/assets/image (71).png and b/.gitbook/assets/image (71).png differ diff --git a/.gitbook/assets/image (72).png b/.gitbook/assets/image (72).png index df917f8ff3..54e8eae1ef 100644 Binary files a/.gitbook/assets/image (72).png and b/.gitbook/assets/image (72).png differ diff --git a/.gitbook/assets/image (73).png b/.gitbook/assets/image (73).png index b12be555d1..aac7ddf415 100644 Binary files a/.gitbook/assets/image (73).png and b/.gitbook/assets/image (73).png differ diff --git a/.gitbook/assets/image (74).png b/.gitbook/assets/image (74).png index 036a8d0746..d37e5d9cde 100644 Binary files a/.gitbook/assets/image (74).png and b/.gitbook/assets/image (74).png differ diff --git a/.gitbook/assets/image (75).png b/.gitbook/assets/image (75).png index e1d21f9656..27acf64ae0 100644 Binary files a/.gitbook/assets/image (75).png and b/.gitbook/assets/image (75).png differ diff --git a/.gitbook/assets/image (76).png b/.gitbook/assets/image (76).png index 61565bf8c4..191ba8ee4a 100644 Binary files a/.gitbook/assets/image (76).png and b/.gitbook/assets/image (76).png differ diff --git a/.gitbook/assets/image (77).png b/.gitbook/assets/image (77).png index 3c803ce97a..07179fc95a 100644 Binary files a/.gitbook/assets/image (77).png and b/.gitbook/assets/image (77).png differ diff --git a/.gitbook/assets/image (78).png b/.gitbook/assets/image (78).png index 2ac353410e..c43fc6ed27 100644 Binary files a/.gitbook/assets/image (78).png and b/.gitbook/assets/image (78).png differ diff --git a/.gitbook/assets/image (79).png b/.gitbook/assets/image (79).png index aac7ddf415..61565bf8c4 100644 Binary files a/.gitbook/assets/image (79).png and b/.gitbook/assets/image (79).png differ diff --git a/.gitbook/assets/image (8).png b/.gitbook/assets/image (8).png index f1d430fd4b..10f1ba9437 100644 Binary files a/.gitbook/assets/image (8).png and b/.gitbook/assets/image (8).png differ diff --git a/.gitbook/assets/image (80).png b/.gitbook/assets/image (80).png index af0c633467..5a1f9f6c19 100644 Binary files a/.gitbook/assets/image (80).png and b/.gitbook/assets/image (80).png differ diff --git a/.gitbook/assets/image (81).png b/.gitbook/assets/image (81).png index 9a6f098ae6..2ac353410e 100644 Binary files a/.gitbook/assets/image (81).png and b/.gitbook/assets/image (81).png differ diff --git a/.gitbook/assets/image (82).png b/.gitbook/assets/image (82).png index 191ba8ee4a..d82d1ebbb3 100644 Binary files a/.gitbook/assets/image (82).png and b/.gitbook/assets/image (82).png differ diff --git a/.gitbook/assets/image (83).png b/.gitbook/assets/image (83).png index 07179fc95a..6dfa243335 100644 Binary files a/.gitbook/assets/image (83).png and b/.gitbook/assets/image (83).png differ diff --git a/.gitbook/assets/image (84).png b/.gitbook/assets/image (84).png index 7dd0824545..3ccef77cca 100644 Binary files a/.gitbook/assets/image (84).png and b/.gitbook/assets/image (84).png differ diff --git a/.gitbook/assets/image (85).png b/.gitbook/assets/image (85).png index 27acf64ae0..d7daf5ffcf 100644 Binary files a/.gitbook/assets/image (85).png and b/.gitbook/assets/image (85).png differ diff --git a/.gitbook/assets/image (86).png b/.gitbook/assets/image (86).png index a9823ce4c4..b73719abad 100644 Binary files a/.gitbook/assets/image (86).png and b/.gitbook/assets/image (86).png differ diff --git a/.gitbook/assets/image (87).png b/.gitbook/assets/image (87).png index 54e8eae1ef..26a7583506 100644 Binary files a/.gitbook/assets/image (87).png and b/.gitbook/assets/image (87).png differ diff --git a/.gitbook/assets/image (88).png b/.gitbook/assets/image (88).png index 5a1f9f6c19..cf665b384a 100644 Binary files a/.gitbook/assets/image (88).png and b/.gitbook/assets/image (88).png differ diff --git a/.gitbook/assets/image (89).png b/.gitbook/assets/image (89).png index d37e5d9cde..759b3d5837 100644 Binary files a/.gitbook/assets/image (89).png and b/.gitbook/assets/image (89).png differ diff --git a/.gitbook/assets/image (9) (1).png b/.gitbook/assets/image (9) (1).png new file mode 100644 index 0000000000..bbf2a1e7bc Binary files /dev/null and b/.gitbook/assets/image (9) (1).png differ diff --git a/.gitbook/assets/image (9).png b/.gitbook/assets/image (9).png index 3491af64b0..211d7e7427 100644 Binary files a/.gitbook/assets/image (9).png and b/.gitbook/assets/image (9).png differ diff --git a/.gitbook/assets/image (90).png b/.gitbook/assets/image (90).png index d82d1ebbb3..821cf47992 100644 Binary files a/.gitbook/assets/image (90).png and b/.gitbook/assets/image (90).png differ diff --git a/.gitbook/assets/image (91).png b/.gitbook/assets/image (91).png index 4f8b6ded65..e40aa58704 100644 Binary files a/.gitbook/assets/image (91).png and b/.gitbook/assets/image (91).png differ diff --git a/.gitbook/assets/image (92).png b/.gitbook/assets/image (92).png index 6dfa243335..867f8cd242 100644 Binary files a/.gitbook/assets/image (92).png and b/.gitbook/assets/image (92).png differ diff --git a/.gitbook/assets/image (93).png b/.gitbook/assets/image (93).png index c43fc6ed27..2604bd2412 100644 Binary files a/.gitbook/assets/image (93).png and b/.gitbook/assets/image (93).png differ diff --git a/.gitbook/assets/image (94).png b/.gitbook/assets/image (94).png index 3ccef77cca..c427bc47ed 100644 Binary files a/.gitbook/assets/image (94).png and b/.gitbook/assets/image (94).png differ diff --git a/.gitbook/assets/image (95).png b/.gitbook/assets/image (95).png index e5912fb1bf..35566ff5c3 100644 Binary files a/.gitbook/assets/image (95).png and b/.gitbook/assets/image (95).png differ diff --git a/.gitbook/assets/image (96).png b/.gitbook/assets/image (96).png index d7daf5ffcf..49382211e1 100644 Binary files a/.gitbook/assets/image (96).png and b/.gitbook/assets/image (96).png differ diff --git a/.gitbook/assets/image (97).png b/.gitbook/assets/image (97).png index 2604bd2412..de903c3568 100644 Binary files a/.gitbook/assets/image (97).png and b/.gitbook/assets/image (97).png differ diff --git a/.gitbook/assets/image (98).png b/.gitbook/assets/image (98).png index 867f8cd242..17c16e358b 100644 Binary files a/.gitbook/assets/image (98).png and b/.gitbook/assets/image (98).png differ diff --git a/.gitbook/assets/image (99).png b/.gitbook/assets/image (99).png index cf665b384a..952a9879b3 100644 Binary files a/.gitbook/assets/image (99).png and b/.gitbook/assets/image (99).png differ diff --git a/.gitbook/assets/image.png b/.gitbook/assets/image.png index 1b28e6fb5e..70bfcaaab2 100644 Binary files a/.gitbook/assets/image.png and b/.gitbook/assets/image.png differ diff --git a/.gitbook/assets/image3 (1).png b/.gitbook/assets/image3 (1).png index 70c2a9fb1d..c5538e1eb0 100644 Binary files a/.gitbook/assets/image3 (1).png and b/.gitbook/assets/image3 (1).png differ diff --git a/.gitbook/assets/image3.png b/.gitbook/assets/image3.png index c5538e1eb0..70c2a9fb1d 100644 Binary files a/.gitbook/assets/image3.png and b/.gitbook/assets/image3.png differ diff --git a/.gitbook/assets/imagePoll1.png b/.gitbook/assets/imagePoll1.png new file mode 100644 index 0000000000..a24ab34843 Binary files /dev/null and b/.gitbook/assets/imagePoll1.png differ diff --git a/.gitbook/assets/imagePoll2.png b/.gitbook/assets/imagePoll2.png new file mode 100644 index 0000000000..6d39238ec6 Binary files /dev/null and b/.gitbook/assets/imagePoll2.png differ diff --git a/.gitbook/assets/imagePoll3.png b/.gitbook/assets/imagePoll3.png new file mode 100644 index 0000000000..f9bc21dfe8 Binary files /dev/null and b/.gitbook/assets/imagePoll3.png differ diff --git a/.gitbook/assets/imagePoll4.png b/.gitbook/assets/imagePoll4.png new file mode 100644 index 0000000000..e75281508a Binary files /dev/null and b/.gitbook/assets/imagePoll4.png differ diff --git a/.gitbook/assets/imagePoll5.png b/.gitbook/assets/imagePoll5.png new file mode 100644 index 0000000000..cb977f6117 Binary files /dev/null and b/.gitbook/assets/imagePoll5.png differ diff --git a/.gitbook/assets/imagee.png b/.gitbook/assets/imagee.png new file mode 100644 index 0000000000..c1b0ccea20 Binary files /dev/null and b/.gitbook/assets/imagee.png differ diff --git a/.gitbook/assets/in app (1).jpg b/.gitbook/assets/in app (1).jpg new file mode 100644 index 0000000000..b2e08cc794 Binary files /dev/null and b/.gitbook/assets/in app (1).jpg differ diff --git a/.gitbook/assets/in app.jpg b/.gitbook/assets/in app.jpg new file mode 100644 index 0000000000..ba6543e011 Binary files /dev/null and b/.gitbook/assets/in app.jpg differ diff --git a/.gitbook/assets/info.png b/.gitbook/assets/info.png new file mode 100644 index 0000000000..cc28faaa4e Binary files /dev/null and b/.gitbook/assets/info.png differ diff --git a/.gitbook/assets/keycloak_CompositeRoles_31052022 (1).jpg b/.gitbook/assets/keycloak_CompositeRoles_31052022 (1).jpg new file mode 100644 index 0000000000..849634444c Binary files /dev/null and b/.gitbook/assets/keycloak_CompositeRoles_31052022 (1).jpg differ diff --git a/.gitbook/assets/keycloak_CompositeRoles_31052022.jpg b/.gitbook/assets/keycloak_CompositeRoles_31052022.jpg new file mode 100644 index 0000000000..849634444c Binary files /dev/null and b/.gitbook/assets/keycloak_CompositeRoles_31052022.jpg differ diff --git a/.gitbook/assets/loginlinkinmailbox.png b/.gitbook/assets/loginlinkinmailbox.png new file mode 100644 index 0000000000..98b8c5f79c Binary files /dev/null and b/.gitbook/assets/loginlinkinmailbox.png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (1).png similarity index 100% rename from .gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1).png rename to .gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (1).png diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (10).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (10).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (10).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (11).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (11).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (11).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (12).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (12).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (12).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (13).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (13).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (13).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (2).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (2).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (2).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (3).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (3).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (3).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (4).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (4).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (4).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (5).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (5).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (5).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (6).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (6).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (6).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (7).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (7).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (7).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (8).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (8).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (8).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (9).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (9).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11) (9).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (11).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (2).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (2).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (3).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (4).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (5).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (6).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (6).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (7).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (7).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (8).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (8).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (9).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (9).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (10).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (10).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (10).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (11).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (11).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (11).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (12).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (12).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (12).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (2).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (2).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (3).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (3).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (4).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (4).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (5).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (5).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (6).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (6).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (7).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (7).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (8).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (8).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (9).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (9).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (11).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (11).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (11).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (12).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (12).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (12).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (13).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (13).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (13).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (2).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (2).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (2).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (3).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (3).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (3).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (4).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (4).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (4).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (5).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (5).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (5).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (6).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (6).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (6).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (7).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (7).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (7).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (8).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (8).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (8).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (9).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (9).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1) (9).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (1).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (1).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (1).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (1).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (10).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (10).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (10).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (11).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (11).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (11).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (12).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (12).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (12).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (2).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (2).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (2).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (3).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (3).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (3).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (4).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (4).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (4).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (5).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (5).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (5).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (6).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (6).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (6).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (7).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (7).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (7).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (8).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (8).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (8).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (9).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (9).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (11) (9).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (12).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (12).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (12).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (2).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (2).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (2).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (3).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (3).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (3).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (4).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (4).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (4).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (5).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (5).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (5).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (6).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (6).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (6).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (7).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (7).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (7).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (8).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (8).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (8).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (9).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (9).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10) (9).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (10).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (11).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (11).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (11).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (2).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (2).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (2).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (3).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (3).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (3).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (4).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (4).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (4).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (5).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (5).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (5).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (6).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (6).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (6).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (7).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (7).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (7).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (8).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (8).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (8).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (9).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (9).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3) (9).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (4).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (4).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (5).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (6).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (6).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (7).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (7).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (8).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (8).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (9).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (9).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (10).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (10).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (10).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (2).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (2).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (3).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (3).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (4).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (4).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (5).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (5).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (6).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (6).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (6).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (7).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (7).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (7).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (8).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (8).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (8).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (9).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (9).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1) (9).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (1).png differ diff --git a/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (2).png b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (2).png new file mode 100644 index 0000000000..5614588057 Binary files /dev/null and b/.gitbook/assets/mail-messages-blue-div (1) (2) (2) (2) (2) (2) (4) (4) (4) (1) (1) (2).png differ diff --git a/.gitbook/assets/mappersrc.jpg b/.gitbook/assets/mappersrc.jpg new file mode 100644 index 0000000000..1111d1c501 Binary files /dev/null and b/.gitbook/assets/mappersrc.jpg differ diff --git a/.gitbook/assets/matrixbridge settings (1).png b/.gitbook/assets/matrixbridge settings (1).png new file mode 100644 index 0000000000..13dbb4794e Binary files /dev/null and b/.gitbook/assets/matrixbridge settings (1).png differ diff --git a/.gitbook/assets/matrixbridge settings (2) (1).png b/.gitbook/assets/matrixbridge settings (2) (1).png new file mode 100644 index 0000000000..13dbb4794e Binary files /dev/null and b/.gitbook/assets/matrixbridge settings (2) (1).png differ diff --git a/.gitbook/assets/matrixbridge settings (2).png b/.gitbook/assets/matrixbridge settings (2).png new file mode 100644 index 0000000000..13dbb4794e Binary files /dev/null and b/.gitbook/assets/matrixbridge settings (2).png differ diff --git a/.gitbook/assets/matrixbridge settings.png b/.gitbook/assets/matrixbridge settings.png new file mode 100644 index 0000000000..13dbb4794e Binary files /dev/null and b/.gitbook/assets/matrixbridge settings.png differ diff --git a/.gitbook/assets/messagemarkdown.png b/.gitbook/assets/messagemarkdown.png new file mode 100644 index 0000000000..4f7132df55 Binary files /dev/null and b/.gitbook/assets/messagemarkdown.png differ diff --git a/.gitbook/assets/messages.png b/.gitbook/assets/messages.png new file mode 100644 index 0000000000..a2eaba5c20 Binary files /dev/null and b/.gitbook/assets/messages.png differ diff --git a/.gitbook/assets/mongodump command executing.png b/.gitbook/assets/mongodump command executing.png new file mode 100644 index 0000000000..7bfc7744aa Binary files /dev/null and b/.gitbook/assets/mongodump command executing.png differ diff --git a/.gitbook/assets/mongorestore command executed.png b/.gitbook/assets/mongorestore command executed.png new file mode 100644 index 0000000000..60c0294b5d Binary files /dev/null and b/.gitbook/assets/mongorestore command executed.png differ diff --git a/.gitbook/assets/msinfo.png b/.gitbook/assets/msinfo.PNG similarity index 100% rename from .gitbook/assets/msinfo.png rename to .gitbook/assets/msinfo.PNG diff --git a/.gitbook/assets/my profile.png b/.gitbook/assets/my profile.png new file mode 100644 index 0000000000..1130ea3f3d Binary files /dev/null and b/.gitbook/assets/my profile.png differ diff --git a/.gitbook/assets/new Meta for business admin system user.png b/.gitbook/assets/new Meta for business admin system user.png new file mode 100644 index 0000000000..b698d078ec Binary files /dev/null and b/.gitbook/assets/new Meta for business admin system user.png differ diff --git a/.gitbook/assets/new account step2 (1).png b/.gitbook/assets/new account step2 (1).png new file mode 100644 index 0000000000..d1e5cb17b5 Binary files /dev/null and b/.gitbook/assets/new account step2 (1).png differ diff --git a/.gitbook/assets/new account step2 (2).png b/.gitbook/assets/new account step2 (2).png new file mode 100644 index 0000000000..d1e5cb17b5 Binary files /dev/null and b/.gitbook/assets/new account step2 (2).png differ diff --git a/.gitbook/assets/new account step2.png b/.gitbook/assets/new account step2.png new file mode 100644 index 0000000000..bd959ee859 Binary files /dev/null and b/.gitbook/assets/new account step2.png differ diff --git a/.gitbook/assets/new clent secret b/.gitbook/assets/new clent secret new file mode 100644 index 0000000000..daa6eb7b62 Binary files /dev/null and b/.gitbook/assets/new clent secret differ diff --git a/.gitbook/assets/oracledocs3 (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/oracledocs3 (1) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..04deccc815 Binary files /dev/null and b/.gitbook/assets/oracledocs3 (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/oracledocs3 (1) (1) (1) (1) (1).png b/.gitbook/assets/oracledocs3 (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..04deccc815 Binary files /dev/null and b/.gitbook/assets/oracledocs3 (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/oracledocs3 (1) (1) (1) (1).png b/.gitbook/assets/oracledocs3 (1) (1) (1) (1).png new file mode 100644 index 0000000000..04deccc815 Binary files /dev/null and b/.gitbook/assets/oracledocs3 (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/oracledocs3 (1) (1) (2).png b/.gitbook/assets/oracledocs3 (1) (1) (2).png new file mode 100644 index 0000000000..04deccc815 Binary files /dev/null and b/.gitbook/assets/oracledocs3 (1) (1) (2).png differ diff --git a/.gitbook/assets/orange10.png b/.gitbook/assets/orange10.png new file mode 100644 index 0000000000..1e7940a799 Binary files /dev/null and b/.gitbook/assets/orange10.png differ diff --git a/.gitbook/assets/org info.png b/.gitbook/assets/org info.png new file mode 100644 index 0000000000..a4eb42db4a Binary files /dev/null and b/.gitbook/assets/org info.png differ diff --git a/.gitbook/assets/org settings.png b/.gitbook/assets/org settings.png new file mode 100644 index 0000000000..2b7f0d0145 Binary files /dev/null and b/.gitbook/assets/org settings.png differ diff --git a/.gitbook/assets/orgsettings.png b/.gitbook/assets/orgsettings.png new file mode 100644 index 0000000000..dacb03c8cb Binary files /dev/null and b/.gitbook/assets/orgsettings.png differ diff --git a/.gitbook/assets/pagerdutyConfiguration.png b/.gitbook/assets/pagerdutyConfiguration.png new file mode 100644 index 0000000000..2c4b88e12b Binary files /dev/null and b/.gitbook/assets/pagerdutyConfiguration.png differ diff --git a/.gitbook/assets/payment methods.png b/.gitbook/assets/payment methods.png new file mode 100644 index 0000000000..25ee480263 Binary files /dev/null and b/.gitbook/assets/payment methods.png differ diff --git a/.gitbook/assets/phone-icon.png b/.gitbook/assets/phone-icon.png new file mode 100644 index 0000000000..f098f3f438 Binary files /dev/null and b/.gitbook/assets/phone-icon.png differ diff --git a/.gitbook/assets/poll_1.jpg b/.gitbook/assets/poll_1.jpg new file mode 100644 index 0000000000..26dd0e88d7 Binary files /dev/null and b/.gitbook/assets/poll_1.jpg differ diff --git a/.gitbook/assets/poll_3.jpg b/.gitbook/assets/poll_3.jpg new file mode 100644 index 0000000000..9500829286 Binary files /dev/null and b/.gitbook/assets/poll_3.jpg differ diff --git a/.gitbook/assets/poll_5.jpg b/.gitbook/assets/poll_5.jpg new file mode 100644 index 0000000000..88eef24e87 Binary files /dev/null and b/.gitbook/assets/poll_5.jpg differ diff --git a/.gitbook/assets/poll_6.jpg b/.gitbook/assets/poll_6.jpg new file mode 100644 index 0000000000..cc10f951ec Binary files /dev/null and b/.gitbook/assets/poll_6.jpg differ diff --git a/.gitbook/assets/poll_live_poll_1.png b/.gitbook/assets/poll_live_poll_1.png new file mode 100644 index 0000000000..85fa0acb58 Binary files /dev/null and b/.gitbook/assets/poll_live_poll_1.png differ diff --git a/.gitbook/assets/poll_live_poll_2.jpg b/.gitbook/assets/poll_live_poll_2.jpg new file mode 100644 index 0000000000..e6a27d071a Binary files /dev/null and b/.gitbook/assets/poll_live_poll_2.jpg differ diff --git a/.gitbook/assets/poll_mixed_visibility_1.jpg b/.gitbook/assets/poll_mixed_visibility_1.jpg new file mode 100644 index 0000000000..f4abff7f58 Binary files /dev/null and b/.gitbook/assets/poll_mixed_visibility_1.jpg differ diff --git a/.gitbook/assets/poll_mixed_visibility_2.jpg b/.gitbook/assets/poll_mixed_visibility_2.jpg new file mode 100644 index 0000000000..e908e8cec3 Binary files /dev/null and b/.gitbook/assets/poll_mixed_visibility_2.jpg differ diff --git a/.gitbook/assets/poll_mixed_visibility_3.jpg b/.gitbook/assets/poll_mixed_visibility_3.jpg new file mode 100644 index 0000000000..dbfebd2a08 Binary files /dev/null and b/.gitbook/assets/poll_mixed_visibility_3.jpg differ diff --git a/.gitbook/assets/poll_settings.jpg b/.gitbook/assets/poll_settings.jpg new file mode 100644 index 0000000000..9eecd47294 Binary files /dev/null and b/.gitbook/assets/poll_settings.jpg differ diff --git a/.gitbook/assets/poll_template_based.gif b/.gitbook/assets/poll_template_based.gif new file mode 100644 index 0000000000..26038f073d Binary files /dev/null and b/.gitbook/assets/poll_template_based.gif differ diff --git a/.gitbook/assets/poll_user_defined_options_1.jpg b/.gitbook/assets/poll_user_defined_options_1.jpg new file mode 100644 index 0000000000..167e1f002c Binary files /dev/null and b/.gitbook/assets/poll_user_defined_options_1.jpg differ diff --git a/.gitbook/assets/poll_user_defined_options_2.jpg b/.gitbook/assets/poll_user_defined_options_2.jpg new file mode 100644 index 0000000000..a187523cb0 Binary files /dev/null and b/.gitbook/assets/poll_user_defined_options_2.jpg differ diff --git a/.gitbook/assets/poll_user_defined_options_3.jpg b/.gitbook/assets/poll_user_defined_options_3.jpg new file mode 100644 index 0000000000..1bb8cd5123 Binary files /dev/null and b/.gitbook/assets/poll_user_defined_options_3.jpg differ diff --git a/.gitbook/assets/poll_word_cloud.gif b/.gitbook/assets/poll_word_cloud.gif new file mode 100644 index 0000000000..c4a3e66946 Binary files /dev/null and b/.gitbook/assets/poll_word_cloud.gif differ diff --git a/.gitbook/assets/poll_word_cloud.jpg b/.gitbook/assets/poll_word_cloud.jpg new file mode 100644 index 0000000000..34bd1a2fba Binary files /dev/null and b/.gitbook/assets/poll_word_cloud.jpg differ diff --git a/.gitbook/assets/profile change password (1).png b/.gitbook/assets/profile change password (1).png new file mode 100644 index 0000000000..e0f97fd1b3 Binary files /dev/null and b/.gitbook/assets/profile change password (1).png differ diff --git a/.gitbook/assets/profile change password.png b/.gitbook/assets/profile change password.png new file mode 100644 index 0000000000..994aca06a6 Binary files /dev/null and b/.gitbook/assets/profile change password.png differ diff --git a/.gitbook/assets/publicform (1).png b/.gitbook/assets/publicform (1).png new file mode 100644 index 0000000000..729d3e7c17 Binary files /dev/null and b/.gitbook/assets/publicform (1).png differ diff --git a/.gitbook/assets/publicform (2).png b/.gitbook/assets/publicform (2).png new file mode 100644 index 0000000000..6ad248443f Binary files /dev/null and b/.gitbook/assets/publicform (2).png differ diff --git a/.gitbook/assets/publicform (3).png b/.gitbook/assets/publicform (3).png new file mode 100644 index 0000000000..c766ff1858 Binary files /dev/null and b/.gitbook/assets/publicform (3).png differ diff --git a/.gitbook/assets/publicform (4).png b/.gitbook/assets/publicform (4).png new file mode 100644 index 0000000000..c766ff1858 Binary files /dev/null and b/.gitbook/assets/publicform (4).png differ diff --git a/.gitbook/assets/publicform.png b/.gitbook/assets/publicform.png new file mode 100644 index 0000000000..c0876caf1d Binary files /dev/null and b/.gitbook/assets/publicform.png differ diff --git a/.gitbook/assets/purpledevi890 (1).png b/.gitbook/assets/purpledevi890 (1).png new file mode 100644 index 0000000000..3784f60b8c Binary files /dev/null and b/.gitbook/assets/purpledevi890 (1).png differ diff --git a/.gitbook/assets/purpledevi890.png b/.gitbook/assets/purpledevi890.png new file mode 100644 index 0000000000..3784f60b8c Binary files /dev/null and b/.gitbook/assets/purpledevi890.png differ diff --git a/.gitbook/assets/purpledevi89890.png b/.gitbook/assets/purpledevi89890.png new file mode 100644 index 0000000000..187756ef3f Binary files /dev/null and b/.gitbook/assets/purpledevi89890.png differ diff --git a/.gitbook/assets/purpledevi89891001000.png b/.gitbook/assets/purpledevi89891001000.png new file mode 100644 index 0000000000..59c6c622f8 Binary files /dev/null and b/.gitbook/assets/purpledevi89891001000.png differ diff --git a/.gitbook/assets/purpledevil0.png b/.gitbook/assets/purpledevil0.png new file mode 100644 index 0000000000..0057ca920c Binary files /dev/null and b/.gitbook/assets/purpledevil0.png differ diff --git a/.gitbook/assets/purpledevil10.png b/.gitbook/assets/purpledevil10.png new file mode 100644 index 0000000000..eb29b69498 Binary files /dev/null and b/.gitbook/assets/purpledevil10.png differ diff --git a/.gitbook/assets/purpledevil300.png b/.gitbook/assets/purpledevil300.png new file mode 100644 index 0000000000..6bc90248fc Binary files /dev/null and b/.gitbook/assets/purpledevil300.png differ diff --git a/.gitbook/assets/purpledevil400.png b/.gitbook/assets/purpledevil400.png new file mode 100644 index 0000000000..9d9fbdb95a Binary files /dev/null and b/.gitbook/assets/purpledevil400.png differ diff --git a/.gitbook/assets/purpledevil500.png b/.gitbook/assets/purpledevil500.png new file mode 100644 index 0000000000..cb3785c3ae Binary files /dev/null and b/.gitbook/assets/purpledevil500.png differ diff --git a/.gitbook/assets/purpledevil50550.png b/.gitbook/assets/purpledevil50550.png new file mode 100644 index 0000000000..8e76a2ee63 Binary files /dev/null and b/.gitbook/assets/purpledevil50550.png differ diff --git a/.gitbook/assets/purpledevil505570.png b/.gitbook/assets/purpledevil505570.png new file mode 100644 index 0000000000..f0caf11054 Binary files /dev/null and b/.gitbook/assets/purpledevil505570.png differ diff --git a/.gitbook/assets/rasa_bot_example (1) (1) (1) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2).png b/.gitbook/assets/rasa_bot_example (1) (1) (1) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1).png similarity index 100% rename from .gitbook/assets/rasa_bot_example (1) (1) (1) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2).png rename to .gitbook/assets/rasa_bot_example (1) (1) (1) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1).png diff --git a/.gitbook/assets/rasa_bot_example (1) (1) (1) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1).png b/.gitbook/assets/rasa_bot_example (1) (1) (1) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1).png new file mode 100644 index 0000000000..f1ce732aa7 Binary files /dev/null and b/.gitbook/assets/rasa_bot_example (1) (1) (1) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/rasa_bot_example (1) (1) (1) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1).png b/.gitbook/assets/rasa_bot_example (1) (1) (1) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..f1ce732aa7 Binary files /dev/null and b/.gitbook/assets/rasa_bot_example (1) (1) (1) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/rasa_bot_example (1) (1) (1) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (2).png b/.gitbook/assets/rasa_bot_example (1) (1) (1) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (2).png new file mode 100644 index 0000000000..f1ce732aa7 Binary files /dev/null and b/.gitbook/assets/rasa_bot_example (1) (1) (1) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (1) (1) (2).png differ diff --git a/.gitbook/assets/register new account_Step 02 (1).png b/.gitbook/assets/register new account_Step 02 (1).png new file mode 100644 index 0000000000..0f0d7c1f3a Binary files /dev/null and b/.gitbook/assets/register new account_Step 02 (1).png differ diff --git a/.gitbook/assets/register new account_Step 02.png b/.gitbook/assets/register new account_Step 02.png new file mode 100644 index 0000000000..36395b98bf Binary files /dev/null and b/.gitbook/assets/register new account_Step 02.png differ diff --git a/.gitbook/assets/register server.png b/.gitbook/assets/register server.png new file mode 100644 index 0000000000..9cb2987271 Binary files /dev/null and b/.gitbook/assets/register server.png differ diff --git a/.gitbook/assets/registration_file (1).png b/.gitbook/assets/registration_file (1).png new file mode 100644 index 0000000000..9dd3dd9053 Binary files /dev/null and b/.gitbook/assets/registration_file (1).png differ diff --git a/.gitbook/assets/registration_file.png b/.gitbook/assets/registration_file.png new file mode 100644 index 0000000000..31d819a748 Binary files /dev/null and b/.gitbook/assets/registration_file.png differ diff --git a/.gitbook/assets/registrationformstypes.png b/.gitbook/assets/registrationformstypes.png new file mode 100644 index 0000000000..17e0d458ce Binary files /dev/null and b/.gitbook/assets/registrationformstypes.png differ diff --git a/.gitbook/assets/remove team.png b/.gitbook/assets/remove team.png new file mode 100644 index 0000000000..8d1edcf9f2 Binary files /dev/null and b/.gitbook/assets/remove team.png differ diff --git a/.gitbook/assets/reset password.png b/.gitbook/assets/reset password.png new file mode 100644 index 0000000000..9608149af1 Binary files /dev/null and b/.gitbook/assets/reset password.png differ diff --git a/.gitbook/assets/restrict-access-inside-any-iframe (1).png b/.gitbook/assets/restrict-access-inside-any-iframe (1).png new file mode 100644 index 0000000000..b93c2a3a03 Binary files /dev/null and b/.gitbook/assets/restrict-access-inside-any-iframe (1).png differ diff --git a/.gitbook/assets/restrict-access-inside-any-iframe.png b/.gitbook/assets/restrict-access-inside-any-iframe.png new file mode 100644 index 0000000000..b93c2a3a03 Binary files /dev/null and b/.gitbook/assets/restrict-access-inside-any-iframe.png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (1).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png similarity index 100% rename from .gitbook/assets/screenshot0 (4) (4) (4) (1).png rename to .gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (1).png diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (2).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png similarity index 100% rename from .gitbook/assets/screenshot0 (4) (4) (4) (2).png rename to .gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (3).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png similarity index 100% rename from .gitbook/assets/screenshot0 (4) (4) (4) (3).png rename to .gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png similarity index 100% rename from .gitbook/assets/screenshot0 (4) (4) (4) (4).png rename to .gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (4).png diff --git a/.gitbook/assets/screenshot0 (4) (4) (4).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png similarity index 100% rename from .gitbook/assets/screenshot0 (4) (4) (4).png rename to .gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (5).png diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (6).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (6).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (6).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (5).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (5).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (2).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (2).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (2).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (3).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (3).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (3).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (4).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (4).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (5).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (5).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (5).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (3).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (3).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (3).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (4).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (4).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (4).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (5).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (5).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (5).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (6).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (6).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (6).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (5) (1).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (5) (1).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (5) (1).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (5) (2).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (5) (2).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (5) (2).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (5) (3).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (5) (3).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (5) (3).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (5) (4).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (5) (4).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (5) (4).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (5) (5).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (5) (5).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (5) (5).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (5) (6).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (5) (6).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (5) (6).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (5).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (5).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (5).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (3).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (3).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (3).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (4).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (4).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (4).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (5).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (5).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (5).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (2).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (2).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (2).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (3).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (3).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (3).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (4).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (4).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (4).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (2).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (2).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (2).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (3).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (3).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (3).png differ diff --git a/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4).png b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4).png new file mode 100644 index 0000000000..333b41de56 Binary files /dev/null and b/.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4).png differ diff --git a/.gitbook/assets/search (1).png b/.gitbook/assets/search (1).png new file mode 100644 index 0000000000..832d905bb8 Binary files /dev/null and b/.gitbook/assets/search (1).png differ diff --git a/.gitbook/assets/search icon.png b/.gitbook/assets/search icon.png new file mode 100644 index 0000000000..ad320244fe Binary files /dev/null and b/.gitbook/assets/search icon.png differ diff --git a/.gitbook/assets/search.png b/.gitbook/assets/search.png new file mode 100644 index 0000000000..832d905bb8 Binary files /dev/null and b/.gitbook/assets/search.png differ diff --git a/.gitbook/assets/secreturlform (1).png b/.gitbook/assets/secreturlform (1).png new file mode 100644 index 0000000000..cab8cb6012 Binary files /dev/null and b/.gitbook/assets/secreturlform (1).png differ diff --git a/.gitbook/assets/secreturlform (2).png b/.gitbook/assets/secreturlform (2).png new file mode 100644 index 0000000000..08c7dccf3e Binary files /dev/null and b/.gitbook/assets/secreturlform (2).png differ diff --git a/.gitbook/assets/secreturlform.png b/.gitbook/assets/secreturlform.png new file mode 100644 index 0000000000..94605e2867 Binary files /dev/null and b/.gitbook/assets/secreturlform.png differ diff --git a/.gitbook/assets/send-transcript.png b/.gitbook/assets/send-transcript.png new file mode 100644 index 0000000000..7f440c0dea Binary files /dev/null and b/.gitbook/assets/send-transcript.png differ diff --git a/.gitbook/assets/team (1).png b/.gitbook/assets/team (1).png new file mode 100644 index 0000000000..e4158cc2dd Binary files /dev/null and b/.gitbook/assets/team (1).png differ diff --git a/.gitbook/assets/team (2).png b/.gitbook/assets/team (2).png new file mode 100644 index 0000000000..81c9fdfd8b Binary files /dev/null and b/.gitbook/assets/team (2).png differ diff --git a/.gitbook/assets/team.png b/.gitbook/assets/team.png new file mode 100644 index 0000000000..81c9fdfd8b Binary files /dev/null and b/.gitbook/assets/team.png differ diff --git a/.gitbook/assets/telegram quick replies .png b/.gitbook/assets/telegram quick replies .png new file mode 100644 index 0000000000..d81ad9b295 Binary files /dev/null and b/.gitbook/assets/telegram quick replies .png differ diff --git a/.gitbook/assets/thread-close-icon.png b/.gitbook/assets/thread-close-icon.png new file mode 100644 index 0000000000..cbb3cfc41e Binary files /dev/null and b/.gitbook/assets/thread-close-icon.png differ diff --git a/.gitbook/assets/thread-collapse-icon.png b/.gitbook/assets/thread-collapse-icon.png new file mode 100644 index 0000000000..5b9941c050 Binary files /dev/null and b/.gitbook/assets/thread-collapse-icon.png differ diff --git a/.gitbook/assets/thread-expand-icon.png b/.gitbook/assets/thread-expand-icon.png new file mode 100644 index 0000000000..ea0c812bda Binary files /dev/null and b/.gitbook/assets/thread-expand-icon.png differ diff --git a/.gitbook/assets/thread-icon (1).png b/.gitbook/assets/thread-icon (1).png new file mode 100644 index 0000000000..cc40696037 Binary files /dev/null and b/.gitbook/assets/thread-icon (1).png differ diff --git a/.gitbook/assets/thread-icon.png b/.gitbook/assets/thread-icon.png new file mode 100644 index 0000000000..cc40696037 Binary files /dev/null and b/.gitbook/assets/thread-icon.png differ diff --git a/.gitbook/assets/three-dot-icon (1).png b/.gitbook/assets/three-dot-icon (1).png new file mode 100644 index 0000000000..8d5b5ee7b0 Binary files /dev/null and b/.gitbook/assets/three-dot-icon (1).png differ diff --git a/.gitbook/assets/three-dot-icon.png b/.gitbook/assets/three-dot-icon.png new file mode 100644 index 0000000000..8d5b5ee7b0 Binary files /dev/null and b/.gitbook/assets/three-dot-icon.png differ diff --git a/.gitbook/assets/twofactorauthentication (1).png b/.gitbook/assets/twofactorauthentication (1).png new file mode 100644 index 0000000000..d8787a10f2 Binary files /dev/null and b/.gitbook/assets/twofactorauthentication (1).png differ diff --git a/.gitbook/assets/twofactorauthentication.png b/.gitbook/assets/twofactorauthentication.png new file mode 100644 index 0000000000..fd01313177 Binary files /dev/null and b/.gitbook/assets/twofactorauthentication.png differ diff --git a/.gitbook/assets/user mapping 007 (1).jpg b/.gitbook/assets/user mapping 007 (1).jpg new file mode 100644 index 0000000000..fa8418c70a Binary files /dev/null and b/.gitbook/assets/user mapping 007 (1).jpg differ diff --git a/.gitbook/assets/user mapping 007 (2).jpg b/.gitbook/assets/user mapping 007 (2).jpg new file mode 100644 index 0000000000..622b0c94eb Binary files /dev/null and b/.gitbook/assets/user mapping 007 (2).jpg differ diff --git a/.gitbook/assets/user mapping 007.jpg b/.gitbook/assets/user mapping 007.jpg new file mode 100644 index 0000000000..622b0c94eb Binary files /dev/null and b/.gitbook/assets/user mapping 007.jpg differ diff --git a/.gitbook/assets/user role mapping.jpg b/.gitbook/assets/user role mapping.jpg new file mode 100644 index 0000000000..eb97f1596f Binary files /dev/null and b/.gitbook/assets/user role mapping.jpg differ diff --git a/.gitbook/assets/userpreferences.png b/.gitbook/assets/userpreferences.png new file mode 100644 index 0000000000..b33054e0d4 Binary files /dev/null and b/.gitbook/assets/userpreferences.png differ diff --git a/.gitbook/assets/verification mail step 3.png b/.gitbook/assets/verification mail step 3.png new file mode 100644 index 0000000000..d36c6ff930 Binary files /dev/null and b/.gitbook/assets/verification mail step 3.png differ diff --git a/.gitbook/assets/voice channel-voice channel.png b/.gitbook/assets/voice channel-voice channel.png new file mode 100644 index 0000000000..6af4f3288d Binary files /dev/null and b/.gitbook/assets/voice channel-voice channel.png differ diff --git a/.gitbook/assets/workspacespage.png b/.gitbook/assets/workspacespage.png new file mode 100644 index 0000000000..5948b1e11e Binary files /dev/null and b/.gitbook/assets/workspacespage.png differ diff --git a/.github/workflows/ISSUE_TEMPLATE.md b/.github/workflows/ISSUE_TEMPLATE.md new file mode 100644 index 0000000000..83e3c6dde6 --- /dev/null +++ b/.github/workflows/ISSUE_TEMPLATE.md @@ -0,0 +1,43 @@ +# Prerequisites + +Please answer the following questions before opening an issue. + +- [ ] I checked to make sure that this issue has not already been filed +- [ ] This issue concerns the user docs + +> This template can be used to report +> +> -[Existing Docs issues](#existing-docs) +> +> -[New Docs request](#new-docs-request) +> +> **Clear out any irrelevant section** + +## Existing Docs + +### Expected Behavior + +Please describe the behavior you are expecting + +### Current Behavior + +What is the current behavior? + +### Steps to Reproduce + +Please provide detailed steps for reproducing the issue. + +1. step 1 +2. step 2 +3. you get it... + +## New Docs Request + +### Details + +Please provide your details and description here. +> Add any information if you have to help develop the docs + +## Extras + +Please include any relevant information or images diff --git a/.scripts/doctor/index.ts b/.scripts/doctor/index.ts index c5f8a2ac2a..f0c9489ae3 100644 --- a/.scripts/doctor/index.ts +++ b/.scripts/doctor/index.ts @@ -22,7 +22,7 @@ const ignoreFiles = [ function execSyncIgnoringExitCode(command: string): string | Error { try { return execSync(command).toString(); - } catch (error) { + } catch (error: any) { const result = error.stdout.toString(); if (result.startsWith('error: Could not access')) { console.log(result); @@ -54,6 +54,10 @@ async function recFindByExt(basePath: string, ext: string): Promise { } } +function escapePathSpaces(path: string): string { + return path.replace(/(\s+)/g, '\\$1'); +} + export async function init(): Promise { const summary = await (await fs.readFile(SUMMARY_PATH)).toString(); @@ -77,9 +81,9 @@ export async function init(): Promise { const filesInSummaryAndDuplicated = []; for (const file of allFiles) { - let command = `md5 -q ${file}`; + let command = `md5 -q ${escapePathSpaces(file)}`; if (process.platform === 'linux') { - command = `printf $(md5sum ${file})`; + command = `printf $(md5sum ${escapePathSpaces(file)})`; } const checksum = execSync(command).toString().replace('\n', ''); diff --git a/.scripts/doctor/package-lock.json b/.scripts/doctor/package-lock.json index 5d2033723e..6c6fea00e1 100644 --- a/.scripts/doctor/package-lock.json +++ b/.scripts/doctor/package-lock.json @@ -358,9 +358,9 @@ } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "mkdirp": { "version": "1.0.4", @@ -418,9 +418,9 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "path-type": { "version": "1.1.0", diff --git a/README.md b/README.md index aafa7d86e0..95e4e5bc70 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,128 @@ ---- -description: >- - Welcome! Here you can find all the documentation about Rocket.Chat server and - client. ---- +# Rocket.Chat -# Rocket.Chat Documentation +[Rocket.Chat](https://rocket.chat)’s mission is to empower organizations to own their conversations by developing the world’s most flexible and secure open-source communications platform.\ -Our developer guides and APIs have a home of their own now. Please find them [here](https://developer.rocket.chat/). -{% page-ref page="contributors/google-summer-of-code/google-summer-of-code-2021.md" %} +[Rocket.Chat](https://rocket.chat) is a customizable open-source communications platform for organizations with high standards of data protection. It enables real-time conversations between colleagues, with other companies, or with your customers, across devices on the web, desktop, or mobile.\ + +[Rocket.Chat](https://rocket.chat) integrates with multiple conversation channels like website Live Chat, email, Facebook page, Twitter, WhatsApp, Instagram, etc. It shows discussion from various channels, thereby constructing a single view of the customer and helping diminish the time needed to switch between the tools. Mobile app for Rocket.Chat (available for Android and iOS) enables you to browse conversations, reply to messages and collaborate with the team. Using our self-managed offerings, you can deploy Rocket.Chat on your own server, or you can use SaaS Rocket.Chat. We offer support and professional services for our enterprise plan. + +## Product Offerings + +Rocket.Chat has four key product offerings: + +* **Team collaboration** - A single point for secure internal and cross-company collaboration. +* **Omnichannel customer service** - Engage in seamless interactions with customers regardless of how they connect with you. +* **Chat engine** - Create customized messaging experiences within your mobile or web app. +* **Marketplace** - Choose a wide range of apps and native integrations that help your business communicate more effectively. + +## Security Offerings + +With Rocket.Chat, you can safeguard your internal and external communications with the highest standards in data privacy, security, and ownership. Admins can configure their workspace according to their own policies. Our software has been deployed in the most rigorous environments, supporting compliance with GDPR, HIPAA, FINRA, FedRAMP, and more. + +### Rocket.Chat on-premise + +Rocket.Chat gives you full ownership of your data. Leverage secure, self-managed installation in your data center with layered security options (e.g., SSL, VPN, and DMZ). Rocket.Chat’s on-premise offerings can be hosted entirely behind your firewall or on an air-gapped network. + +### Rocket.Chat SaaS + +Rocket.Chat’s robust and scalable cloud is built on Docker and Kubernetes and combines it with our services and innovative platform. Hosted in secure and audited data centers in multiple regions for our customers to choose from – ensuring the best performance and meeting strict data localization requirements. + +### Information governance + +Rocket.Chat offers governance and risk-management capabilities that meet the needs of the most security-conscious organizations. This includes global retention policies, compliance exports, and backup and restoration capabilities. + +## Important Links + +### Setup your account + +{% content-ref url="deploy-rocket.chat/prepare-for-your-deployment/" %} +[prepare-for-your-deployment](deploy-rocket.chat/prepare-for-your-deployment/) +{% endcontent-ref %} + +{% content-ref url="setup-and-administer-rocket.chat/accessing-your-workspace/creating-the-first-administrator.md" %} +[creating-the-first-administrator.md](setup-and-administer-rocket.chat/accessing-your-workspace/creating-the-first-administrator.md) +{% endcontent-ref %} + +{% content-ref url="use-rocket.chat/user-guides/access-your-workspace.md" %} +[access-your-workspace.md](use-rocket.chat/user-guides/access-your-workspace.md) +{% endcontent-ref %} + +{% content-ref url="use-rocket.chat/workspace-administration/" %} +[workspace-administration](use-rocket.chat/workspace-administration/) +{% endcontent-ref %} + +{% content-ref url="use-rocket.chat/user-guides/user-panel/" %} +[user-panel](use-rocket.chat/user-guides/user-panel/) +{% endcontent-ref %} + +### Channels + +{% content-ref url="use-rocket.chat/user-guides/rooms/" %} +[rooms](use-rocket.chat/user-guides/rooms/) +{% endcontent-ref %} + +{% content-ref url="use-rocket.chat/omnichannel/" %} +[omnichannel](use-rocket.chat/omnichannel/) +{% endcontent-ref %} + +{% content-ref url="extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/" %} +[omnichannel-apps](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/) +{% endcontent-ref %} + +### Features + +{% content-ref url="use-rocket.chat/rocket.chat-voice-channel/" %} +[rocket.chat-voice-channel](use-rocket.chat/rocket.chat-voice-channel/) +{% endcontent-ref %} + +{% content-ref url="use-rocket.chat/rocket.chat-conference-call/" %} +[rocket.chat-conference-call](use-rocket.chat/rocket.chat-conference-call/) +{% endcontent-ref %} + +{% content-ref url="use-rocket.chat/workspace-administration/settings/analytics.md" %} +[analytics.md](use-rocket.chat/workspace-administration/settings/analytics.md) +{% endcontent-ref %} + +{% content-ref url="use-rocket.chat/rocket.chat-mobile/push-notifications/" %} +[push-notifications](use-rocket.chat/rocket.chat-mobile/push-notifications/) +{% endcontent-ref %} + +{% content-ref url="use-rocket.chat/message-auditing/" %} +[message-auditing](use-rocket.chat/message-auditing/) +{% endcontent-ref %} + +{% content-ref url="setup-and-administer-rocket.chat/advanced-workspace-management/identity-management-ee-vs-ce.md" %} +[identity-management-ee-vs-ce.md](setup-and-administer-rocket.chat/advanced-workspace-management/identity-management-ee-vs-ce.md) +{% endcontent-ref %} + +{% content-ref url="use-rocket.chat/rocket.chat-workspace-administration/settings/federation/" %} +[federation](use-rocket.chat/rocket.chat-workspace-administration/settings/federation/) +{% endcontent-ref %} + +### Minimum Requirements + +{% content-ref url="deploy-rocket.chat/installing-client-apps/minimum-requirements-for-using-rocket.chat.md" %} +[minimum-requirements-for-using-rocket.chat.md](deploy-rocket.chat/installing-client-apps/minimum-requirements-for-using-rocket.chat.md) +{% endcontent-ref %} + +{% content-ref url="deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/hardware-requirements.md" %} +[hardware-requirements.md](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/hardware-requirements.md) +{% endcontent-ref %} + +### Support + +{% content-ref url="resources/get-support/" %} +[get-support](resources/get-support/) +{% endcontent-ref %} + +### Developer Guides + +{% embed url="https://developer.rocket.chat" %} + +### Community + +{% content-ref url="contribute-to-rocket.chat/how-can-i-help/" %} +[how-can-i-help](contribute-to-rocket.chat/how-can-i-help/) +{% endcontent-ref %} diff --git a/SUMMARY.md b/SUMMARY.md index 8e3b5881fa..6930747831 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -1,448 +1,554 @@ # Table of contents -* [Rocket.Chat Documentation](README.md) -* [Installing and Updating](installing-and-updating/README.md) - * [Official Recommendations](installing-and-updating/official-recommendations.md) - * [Minimum Requirements for using Rocket.Chat](installing-and-updating/minimum-requirements-for-using-rocket.chat.md) - * [Hardware Requirements](installing-and-updating/hardware-requirements.md) - * [Snaps](installing-and-updating/snaps/README.md) - * [Auto SSL with Snaps](installing-and-updating/snaps/auto-ssl-with-snaps.md) - * [PaaS Deployments](installing-and-updating/paas-deployments/README.md) - * [Aliyun](installing-and-updating/paas-deployments/aliyun.md) - * [AWS Marketplace](installing-and-updating/paas-deployments/aws-marketplace.md) - * [AWS](installing-and-updating/paas-deployments/aws.md) - * [Cloudron.io](installing-and-updating/paas-deployments/cloudron-io.md) - * [D2C.io](installing-and-updating/paas-deployments/d2c-io.md) - * [DigitalOcean](installing-and-updating/paas-deployments/digitalocean.md) - * [Galaxy](installing-and-updating/paas-deployments/galaxy.md) - * [Google Cloud Platform](installing-and-updating/paas-deployments/google-computer-engine.md) - * [Google Compute Engine](installing-and-updating/paas-deployments/google-compute-engine.md) - * [IBM Cloud](installing-and-updating/paas-deployments/ibm-cloud.md) - * [IndieHosters](installing-and-updating/paas-deployments/indiehosters.md) - * [Jelastic](installing-and-updating/paas-deployments/jelastic.md) - * [Koozali SME](installing-and-updating/paas-deployments/koozali.md) - * [OpenShift](installing-and-updating/paas-deployments/openshift.md) - * [Oracle Cloud](installing-and-updating/paas-deployments/oracle-cloud.md) - * [ReadySpace](installing-and-updating/paas-deployments/readyspace.md) - * [Sandstorm.io](installing-and-updating/paas-deployments/sandstorm-io.md) - * [Scalingo](installing-and-updating/paas-deployments/scalingo.md) - * [Sloppy.io](installing-and-updating/paas-deployments/sloppy-io.md) - * [Syncloud](installing-and-updating/paas-deployments/syncloud.md) - * [Automation Tools](installing-and-updating/automation-tools/README.md) - * [Ansible](installing-and-updating/automation-tools/ansible.md) - * [Kubernetes using Helm](installing-and-updating/automation-tools/kubernetes-using-helm.md) - * [OpenShift](installing-and-updating/automation-tools/openshift.md) - * [Vagrant](installing-and-updating/automation-tools/vagrant.md) - * [Manual Installation](installing-and-updating/manual-installation/README.md) - * [RocketChatCTL](installing-and-updating/manual-installation/rocketchatctl.md) - * [Updating](installing-and-updating/manual-installation/updating/README.md) - * [Updating from 0.x.x to 0.40.0](installing-and-updating/manual-installation/updating/from-0-x-x-to-0-40-0.md) - * [Updating to 1.0](installing-and-updating/manual-installation/updating/to-1-0.md) - * [Rocket.Chat on Debian](installing-and-updating/manual-installation/debian.md) - * [Kali Linux](installing-and-updating/manual-installation/kali-linux.md) - * [Migrating database from Meteor built in MongoDB](installing-and-updating/manual-installation/migrating-meteor-mongo.md) - * [Running in a sub folder with Apache](installing-and-updating/manual-installation/running-in-a-sub-folder.md) - * [Passing extra options to the Mongo driver](installing-and-updating/manual-installation/mongo-options.md) - * [Rocket.Chat in Ubuntu](installing-and-updating/manual-installation/ubuntu.md) - * [Firewall configuration](installing-and-updating/manual-installation/optional-configurations.md) - * [Univention Corporate Server \(UCS\)](installing-and-updating/manual-installation/univention-corporate-server-ucs.md) - * [Installing Rocket.Chat on Redhat](installing-and-updating/manual-installation/redhat.md) - * [Rocket.Chat in CentOS](installing-and-updating/manual-installation/centos.md) - * [Running Multiple Instances Per Host To Improve Performance](installing-and-updating/manual-installation/multiple-instances-to-improve-performance.md) - * [Setting up Process Managers and Init Systems](installing-and-updating/manual-installation/pm2-systemd-upstart.md) - * [Configuring SSL Reverse Proxy](installing-and-updating/manual-installation/configuring-ssl-reverse-proxy.md) - * [Configure a replica set for MongoDB](installing-and-updating/manual-installation/mongo-replicas.md) - * [MongoDB mmap to wiredTiger migration](installing-and-updating/manual-installation/mongodb-mmap-to-wiredtiger-migration.md) - * [Supported Mongo Versions](installing-and-updating/manual-installation/mongo-versions.md) - * [Docker Containers](installing-and-updating/docker-containers/README.md) - * [Available Images](installing-and-updating/docker-containers/available-images.md) - * [systemd](installing-and-updating/docker-containers/systemd.md) - * [Docker Compose](installing-and-updating/docker-containers/docker-compose.md) - * [High Availability](installing-and-updating/docker-containers/high-availability-install.md) - * [MongoDB mmap to wiredTiger migration](installing-and-updating/docker-containers/mongodb-mmap-to-wiredtiger-migration.md) - * [Nonofficial Methods](installing-and-updating/community-supported-installation/README.md) - * [OpenSUSE Leap 42.2](installing-and-updating/community-supported-installation/opensuse.md) - * [FreeBSD](installing-and-updating/community-supported-installation/freebsd/README.md) - * [Deploying Rocket.Chat Server Binaries on a FreeBSD system](installing-and-updating/community-supported-installation/freebsd/universal.md) - * [Windows 10](installing-and-updating/community-supported-installation/windows-10-pro.md) - * [Windows Server](installing-and-updating/community-supported-installation/windows-server.md) - * [Mobile and Desktop Apps](installing-and-updating/mobile-and-desktop-apps.md) - * [Microservices Setup \[beta\]](installing-and-updating/micro-services-setup-beta.md) -* [Getting Support](getting-support.md) -* [Development Docs](development-docs.md) +* [Rocket.Chat](README.md) -## Guides +## Deploy -* [User Guides](guides/user-guides/README.md) - * [Connect to a Rocket.Chat server](guides/user-guides/connecting-to-a-server.md) - * [Registering an account](guides/user-guides/registration.md) - * [Security Bundle](guides/user-guides/security-bundle/README.md) - * [End to End Encryption User Guide](guides/user-guides/security-bundle/end-to-end-encryption.md) - * [Antivirus ClamAV App](guides/user-guides/security-bundle/antivirus-clamav-app.md) - * [Data Loss Prevention User Guide](guides/user-guides/security-bundle/data-loss-prevention-user-guide.md) - * [User Panel](guides/user-guides/user-panel/README.md) - * [My Account](guides/user-guides/user-panel/managing-your-account.md) - * [Teams](guides/user-guides/teams/README.md) - * [Create a new Team](guides/user-guides/teams/create-a-new-team.md) - * [Team Information \(view and edit\)](guides/user-guides/teams/team-information-view-and-edit.md) - * [Delete a Team \(Team Owner Permission\)](guides/user-guides/teams/delete-a-team.md) - * [Hide or Leave a Team](guides/user-guides/teams/hide-or-leave-a-team.md) - * [Teams Channels](guides/user-guides/teams/teams-channels/README.md) - * [Add an existing channel to a team](guides/user-guides/teams/teams-channels/add-an-existing-channel-to-a-team.md) - * [Create New Channel for a Team](guides/user-guides/teams/teams-channels/create-new-channel-for-a-team.md) - * [Team's Channel Auto-Join](guides/user-guides/teams/teams-channels/teams-channel-auto-join.md) - * [Remove a Channel from Team](guides/user-guides/teams/teams-channels/remove-a-chnnel-from-team.md) - * [Delete a Team's Channel](guides/user-guides/teams/teams-channels/delete-a-teams-channel.md) - * [Transforming a channel into a team](guides/user-guides/teams/teams-channels/transforming-a-channel-into-a-team.md) - * [Teams Members](guides/user-guides/teams/teams-members.md) - * [Teams Enterprise Edition](guides/user-guides/teams/teams-enterprise-edition.md) - * [Channels](guides/user-guides/channels/README.md) - * [Create a new Channel](guides/user-guides/channels/create-a-new-channel.md) - * [Types of Channels](guides/user-guides/channels/types-of-channels.md) - * [Channel Actions](guides/user-guides/channels/channel-actions/README.md) - * [Mark Channel as Favorite](guides/user-guides/channels/channel-actions/mark-channel-as-favorite.md) - * [Channel Info](guides/user-guides/channels/channel-actions/channel-info.md) - * [Search Messages in a Channel](guides/user-guides/channels/channel-actions/search-messages-in-a-channel.md) - * [Members List of a Channel](guides/user-guides/channels/channel-actions/members-list-of-a-channel/README.md) - * [Add User to a Channel](guides/user-guides/channels/channel-actions/members-list-of-a-channel/add-user-to-a-channel.md) - * [Invite Users to a Channel](guides/user-guides/channels/channel-actions/members-list-of-a-channel/invite-users-to-a-channel.md) - * [Channel Notifications](guides/user-guides/channels/channel-actions/channel-notifications.md) - * [Channel Message List](guides/user-guides/channels/channel-actions/channel-message-list.md) - * [Streaming in a Channel](guides/user-guides/channels/channel-actions/streaming-in-a-channel.md) - * [Prune Messages from a Channel](guides/user-guides/channels/channel-actions/prune-messages-from-a-channel.md) - * [Multi-users Direct Message](guides/user-guides/direct-messages-between-multiple-users.md) - * [Messages](guides/user-guides/messaging/README.md) - * [Message Actions](guides/user-guides/messaging/message-actions.md) - * [Off-the-record \(OTR\) Messaging User Guide](guides/user-guides/messaging/off-the-record-otr-messaging-guide.md) - * [Talking to users from another server](guides/user-guides/talking-to-users-from-another-server.md) - * [Video Conferencing](guides/user-guides/video-conferencing/README.md) - * [BigBlueButton User Guide](guides/user-guides/video-conferencing/bigbluebutton-user-guide.md) -* [Administration](guides/administration/README.md) - * [Administration](guides/administration/administration/README.md) - * [Settings](guides/administration/administration/settings/README.md) - * [Accounts](guides/administration/administration/settings/account-settings/README.md) - * [Custom Fields](guides/administration/administration/settings/account-settings/custom-fields.md) - * [Analytics](guides/administration/administration/settings/analytics.md) - * [Assets](guides/administration/administration/settings/assets.md) - * [Atlassian Crowd](guides/administration/administration/settings/atlassian-crowd.md) - * [Blockstack](guides/administration/administration/settings/blockstack.md) - * [Bots](guides/administration/administration/settings/bots.md) - * [Canned Responses Rocket.Chat Admin's Guides](guides/administration/administration/settings/canned-responses-rocket.chat-admins-guides.md) - * [CAS](guides/administration/administration/settings/cas.md) - * [Custom Emoji Filesystem](guides/administration/administration/settings/custom-emoji-filesystem.md) - * [Discussion](guides/administration/administration/settings/discussion.md) - * [E2E Encryption](guides/administration/administration/settings/e2e-encryption.md) - * [Email](guides/administration/administration/settings/email/README.md) - * [Edit your Email Content](guides/administration/administration/settings/email/editing-emails-content.md) - * [Mailer](guides/administration/administration/settings/email/mailer.md) - * [Direct Email reply](guides/administration/administration/settings/email/direct-reply.md) - * [Email Configuration](guides/administration/administration/settings/email/setup.md) - * [Enterprise](guides/administration/administration/settings/enterprise.md) - * [Federation](guides/administration/administration/settings/federation.md) - * [File Upload](guides/administration/administration/settings/file-upload/README.md) - * [Amazon S3](guides/administration/administration/settings/file-upload/amazon-s3.md) - * [Google Cloud Storage](guides/administration/administration/settings/file-upload/google-cloud-storage.md) - * [Minio](guides/administration/administration/settings/file-upload/minio.md) - * [WebDAV](guides/administration/administration/settings/file-upload/webdav.md) - * [Recommendations for File Upload](guides/administration/administration/settings/file-upload/recommendations-for-file-upload.md) - * [File Upload FAQs](guides/administration/administration/settings/file-upload/file-upload-faqs.md) - * [General](guides/administration/administration/settings/general/README.md) - * [Net Promoter Score \(NPS\) survey](guides/administration/administration/settings/general/net-promoter-score-nps-survey.md) - * [IRC Federation](guides/administration/administration/settings/irc-federation.md) - * [Layout](guides/administration/administration/settings/layout.md) - * [LDAP](guides/administration/administration/settings/ldap/README.md) - * [LDAP Authentication Settings](guides/administration/administration/settings/ldap/ldap-authentication-settings.md) - * [LDAP Basic Settings](guides/administration/administration/settings/ldap/ldap-basic-settings.md) - * [LDAP Examples](guides/administration/administration/settings/ldap/ldap-examples.md) - * [LDAP FAQ](guides/administration/administration/settings/ldap/ldap-faq.md) - * [Settings](guides/administration/administration/settings/ldap/settings.md) - * [LDAP Sync Settings](guides/administration/administration/settings/ldap/ldap-sync-settings.md) - * [Timeouts Settings](guides/administration/administration/settings/ldap/timeouts-settings.md) - * [User Search Settings](guides/administration/administration/settings/ldap/user-search-settings.md) - * [Livestream & Broadcasting \(Youtube\)](guides/administration/administration/settings/youtube-broadcasting.md) - * [Message](guides/administration/administration/settings/message.md) - * [Meta](guides/administration/administration/settings/meta.md) - * [Mobile](guides/administration/administration/settings/mobile.md) - * [OAuth](guides/administration/administration/settings/oauth/README.md) - * [WordPress OAuth Setup](guides/administration/administration/settings/oauth/wordpress.md) - * [Omnichannel Admin's Guide](guides/administration/administration/settings/omnichannel-admins-guide/README.md) - * [Queue Types \(Routing Algorithm\)](guides/administration/administration/settings/omnichannel-admins-guide/queue-types-routing-algorithm.md) - * [OTR](guides/administration/administration/settings/otr.md) - * [Push \(Notifications Admin Guide\)](guides/administration/administration/settings/push-notifications-admin-guide.md) - * [Rate Limiter](guides/administration/administration/settings/rate-limiter.md) - * [Retention Policy](guides/administration/administration/settings/retention-policies.md) - * [SAML](guides/administration/administration/settings/saml/README.md) - * [Rocket.Chat server settings](guides/administration/administration/settings/saml/rocket.chat-server-settings.md) - * [Simple SAML php](guides/administration/administration/settings/saml/simple-saml-php.md) - * [Active Directory Federation Services](guides/administration/administration/settings/saml/active-directory-federation-services.md) - * [Oracle Identity Cloud Service](guides/administration/administration/settings/saml/oracle-cloud.md) - * [Keycloak](guides/administration/administration/settings/saml/keycloak.md) - * [Search](guides/administration/administration/settings/untitled.md) - * [Setup Wizard](guides/administration/administration/settings/setup-wizard.md) - * [SlackBridge](guides/administration/administration/settings/slackbridge.md) - * [Smarsh](guides/administration/administration/settings/smarsh.md) - * [SMS](guides/administration/administration/settings/sms.md) - * [Threads](guides/administration/administration/settings/threads.md) - * [Troubleshoot](guides/administration/administration/settings/troubleshoot.md) - * [User Data Download](guides/administration/administration/settings/user-data-download.md) - * [Video Conference](guides/administration/administration/settings/video-conference.md) - * [Webdav Integration](guides/administration/administration/settings/webdav-integration.md) - * [WebRTC](guides/administration/administration/settings/webrtc.md) - * [Info](guides/administration/administration/info.md) - * [Import](guides/administration/administration/import/README.md) - * [HipChat](guides/administration/administration/import/hipchat/README.md) - * [HipChat Cloud](guides/administration/administration/import/hipchat/cloud.md) - * [HipChat Server / Data Center](guides/administration/administration/import/hipchat/enterprise.md) - * [Slack](guides/administration/administration/import/slack/README.md) - * [SlackBridge](guides/administration/administration/import/slack/slackbridge.md) - * [CSV](guides/administration/administration/import/csv.md) - * [Users](guides/administration/administration/users.md) - * [Rooms \(aka Channels\)](guides/administration/administration/rooms-aka-channels.md) - * [Invites](guides/administration/administration/invites.md) - * [Connectivity Services](guides/administration/administration/connectivity-services.md) - * [View Logs](guides/administration/administration/view-logs.md) - * [Custom sounds](guides/administration/administration/custom-sounds.md) - * [Federation Dashboard](guides/administration/administration/federation-dashboard.md) - * [Apps](guides/administration/administration/apps.md) - * [Marketplace](guides/administration/administration/marketplace.md) - * [Email Inboxes](guides/administration/administration/email-inboxes.md) - * [Custom Emoji](guides/administration/administration/custom-emoji.md) - * [Integrations](guides/administration/administration/integrations/README.md) - * [Add Jira notifications via WebHook](guides/administration/administration/integrations/jira.md) - * [AppVeyor](guides/administration/administration/integrations/appveyor.md) - * [Azure Alerts](guides/administration/administration/integrations/azure-alerts.md) - * [BitRocket](guides/administration/administration/integrations/bitbucket.md) - * [Dead Simple Screen Sharing](guides/administration/administration/integrations/deadsimplescreensharing.md) - * [EasyRedmine](guides/administration/administration/integrations/easyredmine.md) - * [Giphy Integrations](guides/administration/administration/integrations/giphy.md) - * [GitHub](guides/administration/administration/integrations/github.md) - * [GitLab](guides/administration/administration/integrations/gitlab.md) - * [Google Calendar](guides/administration/administration/integrations/google-calendar.md) - * [Graylog](guides/administration/administration/integrations/graylog.md) - * [Guggy](guides/administration/administration/integrations/guggy.md) - * [Jenkins notifications via Rocket.Chat API](guides/administration/administration/integrations/jenkins.md) - * [JFrog Xray](guides/administration/administration/integrations/jfrog-xray.md) - * [MicroBadger](guides/administration/administration/integrations/microbadger.md) - * [Microsoft Teams](guides/administration/administration/integrations/microsoft-teams.md) - * [NewRelic](guides/administration/administration/integrations/newrelic.md) - * [Nextcloud and WebDAV integrations](guides/administration/administration/integrations/nextcloud-and-webdav.md) - * [Nixstats notification](guides/administration/administration/integrations/nixstats.md) - * [PagerDuty](guides/administration/administration/integrations/pagerduty.md) - * [Prometheus](guides/administration/administration/integrations/prometheus.md) - * [Review Board](guides/administration/administration/integrations/reviewboard.md) - * [RunDeck Job Notifications](guides/administration/administration/integrations/rundeck.md) - * [Sentry](guides/administration/administration/integrations/sentry.md) - * [Simple Telegram Bot:](guides/administration/administration/integrations/telegram.md) - * [TravisCI](guides/administration/administration/integrations/travis-ci.md) - * [Trello](guides/administration/administration/integrations/trello.md) - * [Uptime Robot](guides/administration/administration/integrations/uptime-robot.md) - * [Zapier](guides/administration/administration/integrations/zapier/README.md) - * [Connect Rocket.Chat to hundreds of other apps with Zapier](guides/administration/administration/integrations/zapier/using-zaps.md) - * [OAuth Applications](guides/administration/administration/oauth-applications.md) - * [Mailer](guides/administration/administration/mailer.md) - * [Custom User Status](guides/administration/administration/custom-user-status.md) - * [Permissions](guides/administration/administration/permissions-1.md) - * [Engagement Dashboard](guides/administration/administration/engagement-dashboard.md) - * [Misc. Admin Guides](guides/administration/misc.-admin-guides/README.md) - * [Create the first administrator](guides/administration/misc.-admin-guides/create-the-first-admin.md) - * [White-Labeling \(Server and Web App\)](guides/administration/misc.-admin-guides/white-labeling/README.md) - * [Advanced White-Labeling](guides/administration/misc.-admin-guides/white-labeling/advanced-white-labeling.md) - * [Basic White-labeling](guides/administration/misc.-admin-guides/white-labeling/basic-white-labeling.md) - * [Authentication](guides/administration/misc.-admin-guides/authentication/README.md) - * [OpenID Connect](guides/administration/misc.-admin-guides/authentication/open-id-connect/README.md) - * [Gluu Server 4.0](guides/administration/misc.-admin-guides/authentication/open-id-connect/gluu-server-4.0.md) - * [Keycloak](guides/administration/misc.-admin-guides/authentication/open-id-connect/keycloak.md) - * [Okta Identity Cloud Service](guides/administration/misc.-admin-guides/authentication/open-id-connect/okta.md) - * [iframe based Single Sign On](guides/administration/misc.-admin-guides/authentication/single-sign-on-iframe.md) - * [Google Cloud Features](guides/administration/misc.-admin-guides/google-cloud/README.md) - * [Google Auto Translate](guides/administration/misc.-admin-guides/google-cloud/auto-translate.md) - * [Plug-ins](guides/administration/misc.-admin-guides/plug-ins/README.md) - * [Drupal Plug-in](guides/administration/misc.-admin-guides/plug-ins/drupal.md) - * [Pidgin Plug-in](guides/administration/misc.-admin-guides/plug-ins/pidgin.md) - * [Managing Settings Using Environment Variables](guides/administration/misc.-admin-guides/settings-via-env-vars.md) - * [Troubleshooting](guides/administration/misc.-admin-guides/troubleshooting.md) - * [Custom Emoji](guides/administration/misc.-admin-guides/custom-emoji.md) - * [Client Compatibility Matrix](guides/administration/misc.-admin-guides/client-compatibility-matrix.md) - * [Video Conferencing](guides/administration/misc.-admin-guides/setting-up-video-conferencing/README.md) - * [BigBlueButton \(BBB\) Admin Guide](guides/administration/misc.-admin-guides/setting-up-video-conferencing/big-blue-button-bbb-admin-guide.md) - * [Jitsi Meet Admin Guide](guides/administration/misc.-admin-guides/setting-up-video-conferencing/jitsi-meet-admin-guide.md) - * [Rocket.Chat Meet Admin Guide](guides/administration/misc.-admin-guides/setting-up-video-conferencing/rocket.chat-admin-guide.md) - * [Notifications](guides/administration/misc.-admin-guides/notifications.md) - * [Database Migration](guides/administration/misc.-admin-guides/database-migration.md) - * [Restoring an Admin User](guides/administration/misc.-admin-guides/restoring-an-admin.md) - * [CDN](guides/administration/misc.-admin-guides/cdn.md) -* [Omnichannel](guides/omnichannel/README.md) - * [Current Chats](guides/omnichannel/current-chats.md) - * [Real-time Monitoring](guides/omnichannel/real-time-monitoring.md) - * [Managers](guides/omnichannel/managers.md) - * [Agents](guides/omnichannel/agents.md) - * [Departments](guides/omnichannel/departments.md) - * [Custom Fields](guides/omnichannel/custom-fields.md) - * [Livechat Triggers Manager's Guide](guides/omnichannel/livechat-triggers-managers-guide.md) - * [Livechat Widget Installation](guides/omnichannel/livechat-widget-installation.md) - * [Livechat Widget Appearance](guides/omnichannel/livechat-widget-appearance.md) - * [Webhooks Manager's Guide](guides/omnichannel/webhooks-managers-guide.md) - * [Facebook Messenger Manager's Guide](guides/omnichannel/facebook-messenger-managers-guide.md) - * [Business Hours Manager's Guide](guides/omnichannel/business-hours-managers-guide.md) - * [Monitors Manager's Guide](guides/omnichannel/monitors-managers-guide.md) - * [Units Manager's Guide](guides/omnichannel/units-managers-guide.md) - * [Canned Responses Omnichannel Manager's Guide](guides/omnichannel/canned-responses-omnichannel-managers-guide/README.md) - * [Manager create canned response from within chatroom](guides/omnichannel/canned-responses-omnichannel-managers-guide/manager-create-canned-response-from-within-chatroom.md) - * [Tags Manager's Guide](guides/omnichannel/tags-managers-guide.md) - * [Priorities Manager's Guide](guides/omnichannel/priorities-managers-guide.md) - * [Omnichannel Agent's Guides](guides/omnichannel/omnichannel-agents-guides/README.md) - * [Omnichannel Chat](guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/README.md) - * [Omnichannel Chat Quick Actions](guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/omnichannel-chat-quick-actions.md) - * [Room Information](guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/room-information.md) - * [Canned Responses Agent's Guide](guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/README.md) - * [Agent create canned response from with in chatroom](guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/agent-create-canned-response-from-with-in-chatroom.md) - * [Create canned response from a message](guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/create-canned-response-from-a-message.md) - * [Search Messages in Omnichannel Conversation](guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/search-messages-in-omnichannel-conversation.md) - * [Omnichannel Contact Information](guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/omnichannel-contact-information.md) - * [Omnichannel Contact Center](guides/omnichannel/omnichannel-agents-guides/omnichannel-contact-center.md) - * [Omnichannel Queue](guides/omnichannel/omnichannel-agents-guides/omnichannel-chats.md) -* [Message Auditing Panel](guides/message-auditing/README.md) - * [Review All Message Auditing Panel Search Results](guides/message-auditing/review-all-message-auditing-panelsearch-results.md) - * [Check Historical Edits and Deletions of Messages](guides/message-auditing/check-historical-edits-and-deletions-of-messages.md) - * [Assign Message Auditing Permissions to Specific Users](guides/message-auditing/assign-message-auditing-permissions-to-specific-users.md) -* [Message Auditing Log](guides/message-auditing-log.md) -* [App Guides](guides/app-guides/README.md) - * [Omnichannel Apps](guides/app-guides/omnichannel-apps/README.md) - * [SMS](guides/app-guides/omnichannel-apps/whatsapp-integration-twilio.md) - * [Email Inboxes](guides/app-guides/omnichannel-apps/email-inboxes/README.md) - * [Email Inbox Admin Guide](guides/app-guides/omnichannel-apps/email-inboxes/email-inbox-admin-guide.md) - * [Email Inbox Agent Guide](guides/app-guides/omnichannel-apps/email-inboxes/email-inbox-agent-guide.md) - * [Telegram App](guides/app-guides/omnichannel-apps/telegram-app/README.md) - * [Telegram App Installation](guides/app-guides/omnichannel-apps/telegram-app/telegram-app-installation.md) - * [Telegram App Configuration](guides/app-guides/omnichannel-apps/telegram-app/telegram-app-configuration/README.md) - * [Delete Telegram App](guides/app-guides/omnichannel-apps/telegram-app/telegram-app-configuration/delete-telegram-app.md) - * [Telegram App Agent's Guide](guides/app-guides/omnichannel-apps/telegram-app/telegram-app-agents-guide.md) - * [Rasa App](guides/app-guides/omnichannel-apps/rasa-app/README.md) - * [Rasa App Installation](guides/app-guides/omnichannel-apps/rasa-app/rasa-app-installation.md) - * [Rasa App Configuration](guides/app-guides/omnichannel-apps/rasa-app/rasa-app-configuration/README.md) - * [Delete Rasa App](guides/app-guides/omnichannel-apps/rasa-app/rasa-app-configuration/delete-rasa-app.md) - * [Salesforce CRM Integration](guides/app-guides/omnichannel-apps/salesforce-crm-integration/README.md) - * [Salesforce CRM Installation](guides/app-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-installation.md) - * [Salesforce CRM Configuration](guides/app-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-configuration/README.md) - * [Delete Salesforce CRM Integration](guides/app-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-configuration/delete-salesforce-crm-integration.md) - * [Salesforce CRM Agent's Guide](guides/app-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-agents-guide.md) - * [Dialogflow App](guides/app-guides/omnichannel-apps/dialogflow-app/README.md) - * [Dialogflow App Installation](guides/app-guides/omnichannel-apps/dialogflow-app/dialogflow-app-installation.md) - * [Dialogflow App Configuration](guides/app-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/README.md) - * [Bot User Configuration](guides/app-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/bot-user-configuration.md) - * [Delete Dialogflow App](guides/app-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/delete-dialogflow-app.md) - * [Twitter App](guides/app-guides/omnichannel-apps/twitter-app/README.md) - * [Twitter App Installation](guides/app-guides/omnichannel-apps/twitter-app/twitter-app-installation.md) - * [Twitter App Configuration](guides/app-guides/omnichannel-apps/twitter-app/twitter-app-configuration/README.md) - * [Twitter App Authentication](guides/app-guides/omnichannel-apps/twitter-app/twitter-app-configuration/twitter-app-authentication.md) - * [Delete Twitter App](guides/app-guides/omnichannel-apps/twitter-app/twitter-app-configuration/delete-twitter-app.md) - * [Twitter App Agent's Guide](guides/app-guides/omnichannel-apps/twitter-app/twitter-app-agents-guide.md) - * [Facebook App](guides/app-guides/omnichannel-apps/facebook-app/README.md) - * [Facebook App Installation](guides/app-guides/omnichannel-apps/facebook-app/facebook-app-installation.md) - * [Facebook App Configuration](guides/app-guides/omnichannel-apps/facebook-app/facebook-app-configuration/README.md) - * [Facebook App Authentication](guides/app-guides/omnichannel-apps/facebook-app/facebook-app-configuration/facebook-app-authentication.md) - * [Delete Facebook App](guides/app-guides/omnichannel-apps/facebook-app/facebook-app-configuration/delete-facebook-app.md) - * [Facebook App Agent's Guide](guides/app-guides/omnichannel-apps/facebook-app/facebook-app-agents-guide.md) - * [WhatsApp](guides/app-guides/omnichannel-apps/whatsapp/README.md) - * [WhatsApp Installation](guides/app-guides/omnichannel-apps/whatsapp/whatsapp-installation.md) - * [WhatsApp Configuration](guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/README.md) - * [WhatsApp Omnichannel Setup](guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/README.md) - * [Create 360Dialog Account](guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/create-360dialog-account.md) - * [Connect WhatsApp Number to your Workspace](guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/connect-whatsapp-number-to-your-workspace.md) - * [WhatsApp Set up With 360Dialog Account](guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/whatsapp-set-up-with-360dialog-account.md) - * [Delete Whatsapp](guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/delete-whatsapp.md) - * [WhatsApp Agent's Guide](guides/app-guides/omnichannel-apps/whatsapp/whatsapp-agents-guide.md) - * [Data Loss Prevention \(DLP\) App Admin Guide](guides/app-guides/data-loss-prevention-dlp-app.md) - * [Poll](guides/app-guides/poll.md) - * [Atlassian](guides/app-guides/atlassian/README.md) - * [Jira Server v2.0](guides/app-guides/atlassian/jira-server-v2.0.md) - * [Bamboo](guides/app-guides/atlassian/bamboo-integration.md) - * [Bitbucket Server](guides/app-guides/atlassian/bitbucket-server-integration.md) - * [Confluence Server](guides/app-guides/atlassian/confluence-server-integration.md) - * [Jira Server](guides/app-guides/atlassian/jira-server-integration.md) - * [Zoom](guides/app-guides/zoom.md) -* [Mobile Guides](guides/mobile-guides/README.md) - * [Push Notifications](guides/mobile-guides/push-notifications-1/README.md) - * [Push Notifications User Guide](guides/mobile-guides/push-notifications-1/push-notifications-user-guide.md) - * [Secured Push Notification](guides/mobile-guides/push-notifications-1/push-notification-security.md) - * [Mobile Device Settings](guides/mobile-guides/push-notifications-1/mobile-device-settings.md) -* [Roles in Rocket.Chat](guides/roles-in-rocket.chat/README.md) - * [Marketplace Roles](guides/roles-in-rocket.chat/marketplace-roles.md) -* [Security and Compliance Guides](guides/security/README.md) - * [Compliance Resources and Certifications](guides/security/compliance-resources.md) - * [Security fixes and updates](guides/security/security-updates.md) - * [End-to-End Encryption Specifications](guides/security/end-to-end-encryption-algorithms.md) -* [Brand and Visual Guidelines](guides/brand-and-visual-guidelines/README.md) - * [Logo](guides/brand-and-visual-guidelines/logo.md) - * [Typography](guides/brand-and-visual-guidelines/typography.md) - * [Colors](guides/brand-and-visual-guidelines/colors.md) - * [Patterns](guides/brand-and-visual-guidelines/patterns.md) - * [Iconography](guides/brand-and-visual-guidelines/iconography.md) - * [Photos](guides/brand-and-visual-guidelines/photos.md) - * [Compositionsed](guides/brand-and-visual-guidelines/compositionsed.md) - * [Brand Usage Examples](guides/brand-and-visual-guidelines/brand-usage-examples.md) +* [Prepare for your Deployment](deploy-rocket.chat/prepare-for-your-deployment/README.md) + * [Choosing a Deployment Method](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/choosing-a-deployment-method.md) + * [Hardware Requirements](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/hardware-requirements.md) + * [Cloud Deployments](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/cloud-deployments/README.md) + * [AWS](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/cloud-deployments/aws.md) + * [Google Compute Engine](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/cloud-deployments/google-compute-engine.md) + * [IBM Cloud](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/cloud-deployments/ibm-cloud.md) + * [DigitalOcean](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/cloud-deployments/digitalocean.md) + * [Rapid Deployment Methods](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/README.md) + * [Docker & Docker Compose](quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/README.md) + * [Docker Containers](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/README.md) + * [Available Images](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/available-images.md) + * [Docker Mongo Backup and Restore](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/docker-mongo-backup-and-restore.md) + * [systemd](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/systemd.md) + * [High Availability](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/high-availability-install.md) + * [MongoDB MMAP to WiredTiger Migration](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/mongodb-mmap-to-wiredtiger-migration.md) + * [Snaps](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/README.md) + * [Configuring MongoDB](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/configuring-mongodb.md) + * [Auto SSL with Snaps](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/auto-ssl-with-snaps.md) + * [Snap Backup and Restore](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/snap-backup-and-restore.md) + * [Snap FAQ](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/snap-faq.md) + * [RocketChatCTL](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/rocketchatctl.md) + * [Kubernetes with Helm](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/helm.md) + * [Other Deployment Methods](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/README.md) + * [Manual Installation](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/README.md) + * [Rocket.Chat in CentOS](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/rocket.chat-in-centos.md) + * [Debian Based Distros](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/debian-based-distros/README.md) + * [Rocket.Chat on Debian](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/debian-based-distros/debian.md) + * [Rocket.Chat on Ubuntu](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/debian-based-distros/ubuntu.md) + * [Rocket.Chat on Kali Linux](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/debian-based-distros/kali-linux.md) + * [Updating](deploy/prepare-for-your-deployment/other-deployment-methods/manual-installation/updating.md) + * [Running Multiple Instances](deploy/prepare-for-your-deployment/other-deployment-methods/manual-installation/running-multiple-instances.md) + * [Nonofficial Methods](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/README.md) + * [OpenSUSE Leap 42.2](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/opensuse.md) + * [FreeBSD](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/freebsd/README.md) + * [Deploying Rocket.Chat Server Binaries on a FreeBSD system](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/freebsd/universal.md) + * [Windows Server](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/windows-server.md) + * [Linode](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/linode.md) + * [Scalingo](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/scalingo.md) + * [Cloudron.io](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/cloudron-io.md) + * [Jelastic](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/jelastic.md) + * [Aliyun](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/aliyun.md) + * [Galaxy](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/galaxy.md) + * [Syncloud](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/syncloud.md) + * [OpenShift](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/openshift.md) + * [Windows 10](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/windows-10-pro.md) + * [Plug-in Deployments](deploy/prepare-for-your-deployment/other-deployment-methods/plug-in-deployments.md) + * [Starting & Stopping Docker Compose](deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/starting-and-stopping.md) +* [Scaling Rocket.Chat](deploy-rocket.chat/scaling-rocket.chat/README.md) + * [Microservices](deploy-rocket.chat/scaling-rocket.chat/microservices-setup.md) + * [Automation Tools](deploy-rocket.chat/scaling-rocket.chat/automation-tools/README.md) + * [Ansible](deploy-rocket.chat/scaling-rocket.chat/automation-tools/ansible.md) + * [OpenShift](deploy-rocket.chat/scaling-rocket.chat/automation-tools/openshift.md) + * [Vagrant](deploy-rocket.chat/scaling-rocket.chat/automation-tools/vagrant.md) +* [Installing Client Apps](deploy-rocket.chat/installing-client-apps/README.md) + * [Rocket.Chat Desktop & Mobile Apps](deploy-rocket.chat/installing-client-apps/rocket.chat-desktop-and-mobile-apps.md) + * [Minimum Requirements](deploy-rocket.chat/installing-client-apps/minimum-requirements-for-using-rocket.chat.md) +* [Rocket.Chat Environment Configuration](deploy-rocket.chat/rocket.chat-environment-configuration/README.md) + * [Node Configuration](deploy-rocket.chat/rocket.chat-environment-configuration/node-configuration/README.md) + * [Supported NodeJs Version](deploy-rocket.chat/rocket.chat-environment-configuration/node-configuration/supported-nodejs-version.md) + * [Runtime Configuration](deploy-rocket.chat/rocket.chat-environment-configuration/node-configuration/runtime-configuration.md) + * [MongoDB Configuration](deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/README.md) + * [MongoDB URI Authentication](deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongodb-uri-authentication.md) + * [MongoDB Backup and Restore](deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongodb-backup-and-restore.md) + * [Passing extra options to the Mongo driver](deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongo-options.md) + * [Configure a replica set for MongoDB](deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongo-replicas.md) + * [Migrating database from Meteor built in MongoDB](deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/migrating-meteor-mongo.md) + * [MongoDB mmap to wiredTiger migration](deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongodb-mmap-to-wiredtiger-migration.md) + * [Supported Mongo Versions](deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongo-versions.md) + * [Firewall Configuration](deploy-rocket.chat/rocket.chat-environment-configuration/optional-configurations.md) + * [Extras](deploy-rocket.chat/rocket.chat-environment-configuration/extras/README.md) + * [Running in a sub folder with Apache](deploy-rocket.chat/rocket.chat-environment-configuration/extras/running-in-a-sub-folder.md) + * [Univention Corporate Server (UCS)](deploy-rocket.chat/rocket.chat-environment-configuration/extras/univention-corporate-server-ucs.md) + * [Setting up Process Managers and Init Systems](deploy-rocket.chat/rocket.chat-environment-configuration/extras/pm2-systemd-upstart.md) + * [Configuring SSL Reverse Proxy](deploy-rocket.chat/rocket.chat-environment-configuration/configuring-ssl-reverse-proxy.md) + * [Environment Variables](deploy-rocket.chat/rocket.chat-environment-configuration/environment-variables.md) +* [Updating Rocket.Chat](deploy/updating-rocket.chat/README.md) + * [Updating FAQ](deploy/updating-rocket.chat/updating-faq.md) -## Contributors +## Setup and Configure -* [How can I help?](contributors/how-can-i-help/README.md) - * [Bug Reporting](contributors/how-can-i-help/reporting-issues.md) - * [Developing](contributors/how-can-i-help/developing.md) - * [Documenting](contributors/how-can-i-help/documentation/README.md) - * [New Feature Template](contributors/how-can-i-help/documentation/new-feature-draft.md) - * [Feature Change Template](contributors/how-can-i-help/documentation/feature-change-draft.md) - * [Status Map](contributors/how-can-i-help/documentation/documentation-map/README.md) - * [Missing Articles](contributors/how-can-i-help/documentation/documentation-map/missing-and-outdated-list.md) - * [Markdown Style Guide](contributors/how-can-i-help/documentation/markdown-styleguide.md) - * [Promoting](contributors/how-can-i-help/promoting.md) - * [Security](contributors/how-can-i-help/security/README.md) - * [Responsible Disclosure Policy](contributors/how-can-i-help/security/responsible-disclosure-policy.md) - * [Translating](contributors/how-can-i-help/translating.md) - * [Donate](contributors/how-can-i-help/donate.md) -* [Contributor Code of Conduct](contributors/contributor-code-of-conduct.md) -* [Google Summer of Code](contributors/google-summer-of-code/README.md) - * [Google Summer of Code 2021](contributors/google-summer-of-code/google-summer-of-code-2021.md) - * [Google Summer of Code 2020](contributors/google-summer-of-code/google-summer-of-code-2020.md) - * [Google Summer of Code 2019](contributors/google-summer-of-code/google-summer-of-code-2019.md) - * [Google Summer of Code 2018](contributors/google-summer-of-code/google-summer-of-code-2018.md) - * [Google Summer of Code 2017](contributors/google-summer-of-code/google-summer-of-code-2017.md) -* [Google Season of Docs](contributors/google-season-of-docs/README.md) - * [Google Season of Docs 2021](contributors/google-season-of-docs/google-season-of-docs-2021.md) - * [Google Season of Docs 2019](contributors/google-season-of-docs/google-season-of-docs-2019.md) +* [License Application](setup-and-administer-rocket.chat/license-application.md) +* [Accessing Your Workspace](setup-and-administer-rocket.chat/accessing-your-workspace/README.md) + * [Rocket.Chat Setup Wizard](setup-and-administer-rocket.chat/accessing-your-workspace/rocket.chat-setup-wizard.md) + * [Admin Account Creation](setup-and-administer-rocket.chat/accessing-your-workspace/creating-the-first-administrator.md) + * [Basic White-labeling](setup-and-administer-rocket.chat/basic-white-labeling.md) + * [Inviting Users](setup-and-administer-rocket.chat/accessing-your-workspace/inviting-users.md) +* [Advanced workspace management](setup-and-administer-rocket.chat/advanced-workspace-management/README.md) + * [Authentication](setup-and-administer-rocket.chat/advanced-workspace-management/authentication/README.md) + * [OpenID Connect](setup-and-administer-rocket.chat/advanced-workspace-management/authentication/open-id-connect/README.md) + * [Gluu Server 4.0](setup-and-administer-rocket.chat/advanced-workspace-management/authentication/open-id-connect/gluu-server-4.0.md) + * [Keycloak](setup-and-administer-rocket.chat/advanced-workspace-management/authentication/open-id-connect/keycloak.md) + * [Okta Identity Cloud Service](setup-and-administer-rocket.chat/advanced-workspace-management/authentication/open-id-connect/okta.md) + * [iframe based Single Sign On](setup-and-administer-rocket.chat/advanced-workspace-management/authentication/single-sign-on-iframe.md) + * [Google Cloud Features](setup-and-administer-rocket.chat/advanced-workspace-management/google-cloud/README.md) + * [Managing Settings Using Environmental Variables](setup-and-administer-rocket.chat/advanced-workspace-management/managing-settings-using-environmental-variables.md) + * [Identity Management (EE vs CE)](setup-and-administer-rocket.chat/advanced-workspace-management/identity-management-ee-vs-ce.md) + * [Notifications](setup-and-administer-rocket.chat/advanced-workspace-management/notifications.md) + * [Database Migration](setup-and-administer-rocket.chat/advanced-workspace-management/database-migration.md) + * [Restoring an Admin User](setup-and-administer-rocket.chat/advanced-workspace-management/restoring-an-admin.md) + * [CDN](setup-and-administer-rocket.chat/advanced-workspace-management/cdn.md) + * [Troubleshooting](setup-and-administer-rocket.chat/advanced-workspace-management/troubleshooting.md) + * [Client Compatibility Matrix](setup-and-administer-rocket.chat/advanced-workspace-management/client-compatibility-matrix.md) +* [Enterprise Edition Trial](setup-and-administer-rocket.chat/enterprise-edition-trial/README.md) + * [Have a Workspace](setup-and-administer-rocket.chat/enterprise-edition-trial/has-workspace.md) + * [Do not have a Workspace](setup-and-administer-rocket.chat/enterprise-edition-trial/does-not-have-a-workspace.md) + * [Extending Trial](setup-and-administer-rocket.chat/enterprise-edition-trial/extending-trial.md) +* [Rocket.Chat Air-gapped Deployment](setup-and-administer-rocket.chat/rocket.chat-air-gapped-deployment/README.md) + * [Offline Workspace Registration](setup-and-administer-rocket.chat/rocket.chat-air-gapped-deployment/offline-workspace-registration.md) + * [Offline License](setup-and-administer-rocket.chat/rocket.chat-air-gapped-deployment/offline-license.md) + * [Air-gapped workspace Configuration](setup-and-administer-rocket.chat/rocket.chat-air-gapped-deployment/air-gapped-workspace-configuration.md) + * [Air-gapped App Installation](setup-and-configure/rocket.chat-air-gapped-deployment/air-gapped-app-installation.md) +* [Roles in Rocket.Chat](setup-and-administer-rocket.chat/roles-in-rocket.chat/README.md) + * [Marketplace Roles](setup-and-administer-rocket.chat/roles-in-rocket.chat/marketplace-roles.md) ---- +## Use Rocket.Chat -* [Github Sponsorship](github-sponsorship.md) +* [User Guides](use-rocket.chat/user-guides/README.md) + * [Access your workspace](use-rocket.chat/user-guides/access-your-workspace.md) + * [User Panel](use-rocket.chat/user-guides/user-panel/README.md) + * [My Account](use-rocket.chat/user-guides/user-panel/my-account/README.md) + * [Manage Devices](use-rocket.chat/user-guides/user-panel/my-account/manage-devices.md) + * [Rooms](use-rocket.chat/user-guides/rooms/README.md) + * [Channels](use-rocket.chat/user-guides/rooms/channels/README.md) + * [Create a new Channel](use-rocket.chat/user-guides/rooms/channels/create-a-new-channel.md) + * [Edit A Channel](use-rocket.chat/user-guides/rooms/channels/edit-a-channel.md) + * [Manage Channel Members](use-rocket.chat/user-guides/rooms/channels/manage-channel-members.md) + * [Channel LiveStream](use-rocket.chat/user-guides/rooms/channels/channel-livestream.md) + * [Search Messages in a Channel](use-rocket.chat/user-guides/rooms/channels/search-messages-in-a-channel.md) + * [Teams](guides/user-guides/rooms/teams/README.md) + * [Create a new Team](guides/user-guides/rooms/teams/create-a-new-team.md) + * [Edit a Team](use-rocket.chat/user-guides/rooms/teams/edit-a-team.md) + * [Manage Team Members](use-rocket.chat/user-guides/rooms/teams/manage-team-members.md) + * [Manage Team Channels](use-rocket.chat/user-guides/rooms/teams/manage-team-channels.md) + * [Teams Enterprise Edition](guides/user-guides/rooms/teams/teams-enterprise-edition.md) + * [Discussions](use-rocket.chat/user-guides/rooms/discussions/README.md) + * [Create a new Discussion](use-rocket.chat/user-guides/rooms/discussions/create-a-new-discussion.md) + * [Edit A Discussion](use-rocket.chat/user-guides/rooms/discussions/edit-a-discussion.md) + * [Search Messages in Discussion](use-rocket.chat/user-guides/rooms/discussions/search-messages-in-discussion.md) + * [Manage Discussion Members](use-rocket.chat/user-guides/rooms/discussions/manage-discussion-members.md) + * [Direct Messages](use-rocket.chat/user-guides/rooms/direct-messages/README.md) + * [Create a new Direct Message](use-rocket.chat/user-guides/rooms/direct-messages/create-a-new-direct-message.md) + * [Direct Message Actions](use-rocket.chat/user-guides/rooms/direct-messages/direct-message-actions.md) + * [Threads](use-rocket.chat/user-guides/rooms/threads/README.md) + * [Create a New Thread](use-rocket.chat/user-guides/rooms/threads/create-a-new-thread.md) + * [Messages](use-rocket.chat/user-guides/messages/README.md) + * [Message Actions](use-rocket.chat/user-guides/messages/message-actions.md) + * [Off-the-record (OTR) Messaging User Guide](use-rocket.chat/user-guides/messages/off-the-record-otr-messaging-user-guide.md) + * [Security Bundle](use-rocket.chat/user-guides/security-bundle/README.md) + * [Data Loss Prevention User Guide](use-rocket.chat/user-guides/security-bundle/data-loss-prevention-user-guide.md) + * [Antivirus ClamAV App](use-rocket.chat/user-guides/security-bundle/antivirus-clamav-app.md) + * [End to End Encryption User Guide](use-rocket.chat/user-guides/security-bundle/end-to-end-encryption-user-guide.md) + * [Two Factor Authentication User Guide](use-rocket.chat/user-guides/security-bundle/two-factor-authentication-user-guide.md) + * [Keyboard Shortcuts](use-rocket.chat/user-guides/keyboard-shortcuts.md) +* [Workspace Administration](use-rocket.chat/workspace-administration/README.md) + * [Go Fully Featured](use-rocket.chat/workspace-administration/go-fully-featured.md) + * [Info](use-rocket.chat/workspace-administration/info.md) + * [Import](use-rocket.chat/workspace-administration/import/README.md) + * [Import from HipChat](use-rocket.chat/workspace-administration/import/import-from-hipchat.md) + * [Import from Slack](use-rocket.chat/workspace-administration/import/import-from-slack/README.md) + * [SlackBridge](use-rocket.chat/workspace-administration/import/import-from-slack/slackbridge.md) + * [Import CSV](use-rocket.chat/workspace-administration/import/import-csv.md) + * [Users](use-rocket.chat/workspace-administration/users/README.md) + * [Guest users](use-rocket.chat/workspace-administration/users/guest-users.md) + * [Add users through Identity management and authentication services](use-rocket.chat/workspace-administration/users/add-users-through-identity-management-and-authentication-services.md) + * [Rooms](use-rocket.chat/workspace-administration/rooms.md) + * [Invites](use-rocket.chat/workspace-administration/invites.md) + * [Connectivity Services](use-rocket.chat/workspace-administration/connectivity-services.md) + * [View Logs](use-rocket.chat/workspace-administration/view-logs.md) + * [Federation Dashboard](use-rocket.chat/workspace-administration/federation-dashboard.md) + * [Email Inboxes](use-rocket.chat/workspace-administration/email-inboxes.md) + * [Custom Emoji](use-rocket.chat/workspace-administration/custom-emoji.md) + * [Integrations](use-rocket.chat/workspace-administration/integrations/README.md) + * [AppVeyor](use-rocket.chat/workspace-administration/integrations/appveyor.md) + * [Azure Alerts](use-rocket.chat/workspace-administration/integrations/azure-alerts.md) + * [BitRocket](use-rocket.chat/workspace-administration/integrations/bitbucket.md) + * [Dead Simple Screen Sharing](use-rocket.chat/workspace-administration/integrations/deadsimplescreensharing.md) + * [EasyRedmine](use-rocket.chat/workspace-administration/integrations/easyredmine.md) + * [Giphy Integrations](use-rocket.chat/workspace-administration/integrations/giphy.md) + * [GitHub](use-rocket.chat/workspace-administration/integrations/github.md) + * [GitLab](use-rocket.chat/workspace-administration/integrations/gitlab.md) + * [Google Calendar](use-rocket.chat/workspace-administration/integrations/google-calendar.md) + * [Graylog](use-rocket.chat/workspace-administration/integrations/graylog.md) + * [Guggy](use-rocket.chat/workspace-administration/integrations/guggy.md) + * [Jenkins notifications via Rocket.Chat API](use-rocket.chat/workspace-administration/integrations/jenkins.md) + * [JFrog Xray](use-rocket.chat/workspace-administration/integrations/jfrog-xray.md) + * [MicroBadger](use-rocket.chat/workspace-administration/integrations/microbadger.md) + * [Microsoft Teams](use-rocket.chat/workspace-administration/integrations/microsoft-teams.md) + * [NewRelic](use-rocket.chat/workspace-administration/integrations/newrelic.md) + * [Nextcloud and WebDAV integrations](use-rocket.chat/workspace-administration/integrations/nextcloud-and-webdav.md) + * [Nextcloud Rocket.Chat App](use-rocket.chat/workspace-administration/integrations/nextcloud-rocket.chat-app.md) + * [Nixstats notification](use-rocket.chat/workspace-administration/integrations/nixstats.md) + * [PagerDuty](use-rocket.chat/workspace-administration/integrations/pagerduty.md) + * [Prometheus](use-rocket.chat/workspace-administration/integrations/prometheus.md) + * [Review Board](use-rocket.chat/workspace-administration/integrations/reviewboard.md) + * [RunDeck Job Notifications](use-rocket.chat/workspace-administration/integrations/rundeck.md) + * [Sentry](use-rocket.chat/workspace-administration/integrations/sentry.md) + * [Simple Telegram Bot](use-rocket.chat/workspace-administration/integrations/telegram.md) + * [TravisCI](use-rocket.chat/workspace-administration/integrations/travis-ci.md) + * [Uptime Robot](use-rocket.chat/workspace-administration/integrations/uptime-robot.md) + * [Zapier](use-rocket.chat/workspace-administration/integrations/zapier.md) + * [django-rocketchat-auth 1.2](use-rocket.chat/workspace-administration/integrations/django-rocketchat-auth-1.2.md) + * [Add Jira notifications via webhook](use-rocket.chat/workspace-administration/integrations/jira.md) + * [OAuth Applications](use-rocket.chat/workspace-administration/oauth-applications.md) + * [Mailer](use-rocket.chat/workspace-administration/mailer.md) + * [User Status](use-rocket.chat/workspace-administration/user-status.md) + * [Permissions](use-rocket.chat/workspace-administration/permissions.md) + * [Settings](use-rocket.chat/workspace-administration/settings/README.md) + * [Accounts](use-rocket.chat/workspace-administration/settings/account-settings/README.md) + * [Custom Fields](use-rocket.chat/workspace-administration/settings/account-settings/custom-fields.md) + * [Analytics](use-rocket.chat/workspace-administration/settings/analytics.md) + * [Assets](use-rocket.chat/workspace-administration/settings/assets.md) + * [Bots](use-rocket.chat/workspace-administration/settings/bots.md) + * [CAS](use-rocket.chat/workspace-administration/settings/cas.md) + * [Conference Call](https://docs.rocket.chat/use-rocket.chat/rocket.chat-conference-call) + * [Custom Emoji Filesystem](use-rocket.chat/workspace-administration/settings/custom-emoji-filesystem.md) + * [Custom Sound Filesystem](use-rocket.chat/workspace-administration/settings/custom-sound-filesystem.md) + * [Device management settings](use-rocket.chat/workspace-administration/settings/device-management-settings.md) + * [Discussion](use-rocket.chat/workspace-administration/settings/discussion.md) + * [E2E Encryption](use-rocket.chat/workspace-administration/settings/e2e-encryption.md) + * [Email](use-rocket.chat/workspace-administration/settings/email/README.md) + * [Edit your Email Content](use-rocket.chat/workspace-administration/settings/email/editing-emails-content.md) + * [Direct Email reply](use-rocket.chat/workspace-administration/settings/email/direct-reply.md) + * [Email Configuration](use-rocket.chat/workspace-administration/settings/email/setup.md) + * [Enterprise](use-rocket.chat/workspace-administration/settings/enterprise.md) + * [Federation](use-rocket.chat/rocket.chat-workspace-administration/settings/federation/README.md) + * [Matrix Bridge](use-rocket.chat/rocket.chat-workspace-administration/settings/federation/matrix-bridge/README.md) + * [Matrix Admin Guide](use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-admin-guide/README.md) + * [Matrix Homeserver Setup](use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-admin-guide/matrix-homeserver-setup/README.md) + * [Matrix Allow/Block List](use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-admin-guide/matrix-homeserver-setup/matrix-allow-block-list.md) + * [Matrix Bridge Configuration](use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-admin-guide/matrixbridge-configuration.md) + * [Matrix User's Guide](use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/README.md) + * [Create federated rooms](use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/create-a-federated-rooms.md) + * [Invite external users to your Rocket.Chat server](use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/invite-external-users-to-your-rocket.chat-server.md) + * [Communicate with a federated user](use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/communicate-with-a-federated-user.md) + * [Assign roles for users in federated rooms](use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/assign-roles-for-users-in-federated-rooms.md) + * [Matrix Bridge FAQs](use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrixbridge-faqs.md) + * [Rocket.Chat Federation](use-rocket.chat/workspace-administration/settings/federation/rocket.chat-federation/README.md) + * [Cross-server Federated Channels](use-rocket.chat/workspace-administration/settings/federation/rocket.chat-federation/cross-server-federated-channels.md) + * [File Upload](use-rocket.chat/workspace-administration/settings/file-upload/README.md) + * [Minio](use-rocket.chat/workspace-administration/settings/file-upload/minio.md) + * [Recommendations for File Upload](use-rocket.chat/workspace-administration/settings/file-upload/recommendations-for-file-upload.md) + * [File Upload FAQs](use-rocket.chat/workspace-administration/settings/file-upload/file-upload-faqs.md) + * [General](use-rocket.chat/workspace-administration/settings/general/README.md) + * [Net Promoter Score (NPS) survey](use-rocket.chat/workspace-administration/settings/general/net-promoter-score-nps-survey.md) + * [IRC](use-rocket.chat/workspace-administration/settings/irc.md) + * [IRC Federation](use-rocket.chat/workspace-administration/settings/irc-federation.md) + * [Layout](use-rocket.chat/rocket.chat-workspace-administration/settings/layout.md) + * [LDAP](use-rocket.chat/workspace-administration/settings/ldap/README.md) + * [LDAP Connection Setting](use-rocket.chat/workspace-administration/settings/ldap/ldap-connection-setting.md) + * [LDAP User Search](use-rocket.chat/workspace-administration/settings/ldap/ldap-user-search.md) + * [LDAP Data Sync Settings](use-rocket.chat/workspace-administration/settings/ldap/ldap-data-sync-settings.md) + * [LDAP Enterprise Settings](use-rocket.chat/workspace-administration/settings/ldap/ldap-enterprise-settings.md) + * [LDAP Examples](use-rocket.chat/workspace-administration/settings/ldap/ldap-examples.md) + * [Livestream & Broadcasting](use-rocket.chat/workspace-administration/settings/livestream-and-broadcasting.md) + * [Logs](use-rocket.chat/workspace-administration/settings/logs.md) + * [Message](use-rocket.chat/workspace-administration/settings/message.md) + * [Meta](use-rocket.chat/workspace-administration/settings/meta.md) + * [Mobile](use-rocket.chat/workspace-administration/settings/mobile.md) + * [OAuth](use-rocket.chat/workspace-administration/settings/oauth/README.md) + * [Facebook OAuth Setup](use-rocket.chat/workspace-administration/settings/oauth/facebook-oauth-setup.md) + * [Google OAuth Setup](use-rocket.chat/workspace-administration/settings/oauth/google-oauth-setup.md) + * [GitLab OAuth Setup](use-rocket.chat/workspace-administration/settings/oauth/gitlab-oauth-setup.md) + * [GitHub OAuth Setup](use-rocket.chat/workspace-administration/settings/oauth/github-oauth-setup.md) + * [LinkedIn OAuth Setup](use-rocket.chat/workspace-administration/settings/oauth/linkedin-oauth-setup.md) + * [NextCloud OAuth Setup](use-rocket.chat/workspace-administration/settings/oauth/nextcloud-oauth-setup.md) + * [WordPress OAuth Setup](use-rocket.chat/workspace-administration/settings/oauth/wordpress.md) + * [MS Office 365 OAuth Setup](use-rocket.chat/workspace-administration/settings/oauth/ms-office-365-oauth-setup.md) + * [Other OAuth Setup](use-rocket.chat/workspace-administration/settings/oauth/other-oauth-setup.md) + * [Omnichannel Admin's Guide](use-rocket.chat/workspace-administration/settings/omnichannel-admins-guide/README.md) + * [Queue Types (Routing Algorithm)](use-rocket.chat/workspace-administration/settings/omnichannel-admins-guide/queue-types-routing-algorithm.md) + * [OTR](use-rocket.chat/workspace-administration/settings/otr.md) + * [Push](use-rocket.chat/workspace-administration/settings/push.md) + * [Rate Limiter](use-rocket.chat/workspace-administration/settings/rate-limiter.md) + * [Retention Policy](use-rocket.chat/workspace-administration/settings/retention-policies.md) + * [SAML](use-rocket.chat/workspace-administration/settings/saml/README.md) + * [Rocket.Chat server settings](use-rocket.chat/workspace-administration/settings/saml/rocket.chat-server-settings.md) + * [Simple SAML php](use-rocket.chat/workspace-administration/settings/saml/simple-saml-php.md) + * [Active Directory Federation Services](use-rocket.chat/workspace-administration/settings/saml/active-directory-federation-services.md) + * [Oracle Identity Cloud Service](use-rocket.chat/workspace-administration/settings/saml/oracle-cloud.md) + * [Keycloak](use-rocket.chat/workspace-administration/settings/saml/keycloak.md) + * [Search](use-rocket.chat/workspace-administration/settings/search.md) + * [Setup Wizard](use-rocket.chat/workspace-administration/settings/setup-wizard.md) + * [SlackBridge](use-rocket.chat/workspace-administration/settings/slackbridge.md) + * [Smarsh](use-rocket.chat/workspace-administration/settings/smarsh.md) + * [SMS](use-rocket.chat/workspace-administration/settings/sms.md) + * [Threads](use-rocket.chat/workspace-administration/settings/threads.md) + * [Troubleshoot](use-rocket.chat/workspace-administration/settings/troubleshoot.md) + * [User Data Download](use-rocket.chat/workspace-administration/settings/user-data-download.md) + * [Webdav Integration](use-rocket.chat/workspace-administration/settings/webdav-integration.md) + * [WebRTC](use-rocket.chat/workspace-administration/settings/webrtc.md) + * [Engagement Dashboard](use-rocket.chat/workspace-administration/engagement-dashboard.md) + * [Device Management](use-rocket.chat/workspace-administration/device-management.md) +* [Omnichannel](use-rocket.chat/omnichannel/README.md) + * [Current Chats](use-rocket.chat/omnichannel/current-chats.md) + * [Analytics](use-rocket.chat/omnichannel/analytics.md) + * [Real-time Monitoring](use-rocket.chat/omnichannel/real-time-monitoring.md) + * [Managers](use-rocket.chat/omnichannel/managers.md) + * [Agents](use-rocket.chat/omnichannel/agents.md) + * [Departments](use-rocket.chat/omnichannel/departments.md) + * [Custom Fields](use-rocket.chat/omnichannel/custom-fields.md) + * [Livechat Triggers](use-rocket.chat/omnichannel/livechat-triggers-managers-guide.md) + * [Livechat Widget Installation](use-rocket.chat/omnichannel/livechat-widget-installation.md) + * [Livechat Widget Appearance](use-rocket.chat/omnichannel/livechat-widget-appearance.md) + * [Webhooks](use-rocket.chat/omnichannel/webhooks-managers-guide.md) + * [Facebook Messenger Manager's Guide](use-rocket.chat/omnichannel/facebook-messenger-managers-guide.md) + * [Business Hours](use-rocket.chat/omnichannel/business-hours-managers-guide.md) + * [Monitors](use-rocket.chat/omnichannel/monitors-managers-guide.md) + * [Units](use-rocket.chat/omnichannel/units-managers-guide.md) + * [Canned Responses](use-rocket.chat/omnichannel/canned-responses/README.md) + * [Canned Responses Omnichannel Manager's Guide](use-rocket.chat/omnichannel/canned-responses/canned-responses-omnichannel-managers-guide.md) + * [Tags](use-rocket.chat/omnichannel/tags-managers-guide.md) + * [Priorities](use-rocket.chat/omnichannel/priorities-managers-guide.md) +* [Message Auditing](use-rocket.chat/message-auditing/README.md) + * [Review All Message Auditing Panel Search Results](use-rocket.chat/message-auditing/review-all-message-auditing-panelsearch-results.md) + * [Check Historical Edits and Deletions of Messages](use-rocket.chat/message-auditing/check-historical-edits-and-deletions-of-messages.md) + * [Assign Message Auditing Permissions to Specific Users](use-rocket.chat/message-auditing/assign-message-auditing-permissions-to-specific-users.md) +* [Message Auditing Log](use-rocket.chat/message-auditing-log.md) +* [Rocket.Chat Cloud](use-rocket.chat/rocket.chat-cloud/README.md) + * [Create your new cloud account](use-rocket.chat/rocket.chat-cloud/create-new-cloud-account.md) + * [Manage your cloud account](use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/README.md) + * [Custom domain for your Cloud-hosted workspace](use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/custom-domain-for-your-cloud-hosted-workspace.md) + * [Profile](use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/profile.md) + * [Organization Settings](use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/organization-settings.md) + * [Workspaces](use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/workspaces.md) + * [Invoices](use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/invoices.md) + * [Payment Methods](use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/payment-methods.md) + * [Support](use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/support.md) + * [Security](use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/security.md) + * [Contact Sales](use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/contact-sales.md) + * [Cloud Account Setup Wizard](use-rocket.chat/rocket.chat-cloud/cloud-account-setup-wizard.md) +* [Rocket.Chat Voice Channel](use-rocket.chat/rocket.chat-voice-channel/README.md) + * [Getting Started with Voice Channel](use-rocket.chat/rocket.chat-voice-channel/getting-started-with-voice-channel.md) + * [Voice Channel Admin Guide](use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/README.md) + * [Configure without previously having a PBX server](use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/configure-without-previously-having-a-pbx-server/README.md) + * [SIP Extensions](use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/configure-without-previously-having-a-pbx-server/sip-extensions.md) + * [Configure asterisk manager interface and users](use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/configure-without-previously-having-a-pbx-server/configure-asterisk-manager-interface-and-users.md) + * [Configure with an active PBX server](use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/configure-with-an-active-pbx-server/README.md) + * [Associate agents with extensions in Rocket.Chat](use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/configure-with-an-active-pbx-server/associate-agents-with-extensions-in-rocket.chat.md) + * [Voice Channel Technical Specification](use-rocket.chat/rocket.chat-voice-channel/voice-channel-technical-specification.md) + * [Voice Channel Agent Guides](use-rocket.chat/rocket.chat-voice-channel/voice-channel-agent-guides/README.md) + * [How to make myself available to accept calls?](use-rocket.chat/rocket.chat-voice-channel/voice-channel-agent-guides/how-to-make-myself-available-for-accepting-voip-calls.md) + * [How to take a call in Rocket.Chat voice channel?](use-rocket.chat/rocket.chat-voice-channel/voice-channel-agent-guides/how-to-take-a-call-in-rocket.chat-voice-channel.md) + * [How to initiate an outbound call as an agent?](use-rocket.chat/rocket.chat-voice-channel/voice-channel-agent-guides/how-to-initiate-an-outbound-call-as-an-agent.md) + * [Voice Channel FAQs](use-rocket.chat/rocket.chat-voice-channel/voice-channel-faqs.md) +* [Rocket.Chat Conference Call](use-rocket.chat/rocket.chat-conference-call/README.md) + * [Conference Call Admin Guide](use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/README.md) + * [👑 Pexip app](use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/pexip-app.md) + * [Jitsi app](use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/jitsi-app.md) + * [BigBlueButton (BBB) app](use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/bigbluebutton-bbb-app.md) + * [👑 Google Meet app](use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/google-meet-app.md) + * [Conference Call User's Guide](use-rocket.chat/rocket.chat-conference-call/conference-call-users-guide.md) + * [Omnichannel Video/Audio Call Configuration](use-rocket.chat/rocket.chat-conference-call/omnichannel-video-audio-call-configuration.md) +* [Rocket.Chat Federation](use-rocket.chat/rocket.chat-federation/README.md) + * [Cross-server Federated Channels](use-rocket.chat/rocket.chat-federation/talking-to-users-from-another-server.md) +* [Rocket.Chat Mobile](use-rocket.chat/rocket.chat-mobile/README.md) + * [Rooms on Rocket.Chat Mobile](use-rocket.chat/rocket.chat-mobile/rooms-on-rocket.chat-mobile.md) + * [Messages and Threads on Mobile](use-rocket.chat/rocket.chat-mobile/messages-and-threads-on-mobile.md) + * [Push Notifications](use-rocket.chat/rocket.chat-mobile/push-notifications/README.md) + * [Secured Push Notification](use-rocket.chat/rocket.chat-mobile/push-notifications/push-notification-security.md) + * [Push Notifications User Guide](use-rocket.chat/rocket.chat-mobile/push-notifications/push-notifications-user-guide.md) +* [Omnichannel Agent's Guides](use-rocket.chat/omnichannel-agents-guides/README.md) + * [Omnichannel Conversation](use-rocket.chat/omnichannel-agents-guides/omnichannel-conversation.md) + * [Omnichannel Queue](use-rocket.chat/omnichannel-agents-guides/omnichannel-queue.md) + * [Omnichannel Contact Center](use-rocket.chat/omnichannel-agents-guides/omnichannel-contact-center/README.md) + * [Omnichannel Contact Manager Assignment](use-rocket.chat/omnichannel-agents-guides/omnichannel-contact-center/omnichannel-contact-manager-assignment.md) + * [Email Inboxes](use-rocket.chat/omnichannel-agents-guides/email-inboxes.md) -## Rocket.Chat SaaS +## Extend Rocket.Chat Capabilities -* [Cloud Account](rocket.chat-saas/cloud-account/README.md) - * [Create your new cloud account](rocket.chat-saas/cloud-account/create-new-cloud-account.md) - * [Cloud account Setup Wizard](rocket.chat-saas/cloud-account/set-up-your-new-cloud-account.md) - * [Manage your cloud account](rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/README.md) - * [Workspaces](rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/README.md) - * [Restart Workspace](rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/restart-workspace.md) - * [Cancel Workspace](rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/cancel-workspace.md) - * [Update Workspace](rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/upgrade-update-workspace.md) - * [Workspace Details](rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/workspace-details.md) - * [Upgrade/Downgrade your Plan](rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/upgrade-downgrade-your-plan.md) - * [Profile](rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/profile.md) - * [Invoices](rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/invoices.md) - * [Payment Methods](rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/payment-methods.md) - * [Support Ticketing System](rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/support.md) - * [Organization Settings](rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/organization-settings.md) -* [FAQ](rocket.chat-saas/faq.md) +* [Rocket.Chat Marketplace](extend-rocket.chat-capabilities/rocket.chat-marketplace/README.md) + * [Rocket.Chat Public Apps Guides](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/README.md) + * [Omnichannel Apps](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/README.md) + * [SMS](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/sms.md) + * [Telegram App](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/README.md) + * [Telegram App Installation](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/telegram-app-installation.md) + * [Telegram App Configuration](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/telegram-app-configuration/README.md) + * [Generate your Telegram Bot Token](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/telegram-app-configuration/generate-your-telegram-bot-token.md) + * [Delete Telegram App](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/telegram-app-configuration/delete-telegram-app.md) + * [Telegram App Agent's Guide](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/telegram-app-agents-guide.md) + * [Rasa App](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/rasa-app/README.md) + * [Rasa App Installation](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/rasa-app/rasa-app-installation.md) + * [Rasa App Configuration](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/rasa-app/rasa-app-configuration/README.md) + * [Delete Rasa App](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/rasa-app/rasa-app-configuration/delete-rasa-app.md) + * [Salesforce CRM Integration](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/salesforce-crm-integration/README.md) + * [Salesforce CRM Installation](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-installation.md) + * [Salesforce CRM Configuration](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-configuration/README.md) + * [Delete Salesforce CRM Integration](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-configuration/delete-salesforce-crm-integration.md) + * [Salesforce CRM Agent's Guide](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-agents-guide.md) + * [HubSpot CRM](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/hubspot-crm/README.md) + * [HubSpot Installation](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/hubspot-crm/hubspot-installation.md) + * [HubSpot Configuration](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/hubspot-crm/hubspot-configuration.md) + * [HubSpot CRM Agent's Guide](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/hubspot-crm/hubspot-crm-agents-guide.md) + * [Dialogflow App](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/README.md) + * [Dialogflow App Installation](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-installation.md) + * [Dialogflow App Configuration](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/README.md) + * [Bot User Configuration](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/bot-user-configuration.md) + * [Upload File To Ongoing Dialogflow Chats](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/upload-file-to-ongoing-dialogflow-chats.md) + * [Delete Dialogflow App](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/delete-dialogflow-app.md) + * [Twitter App](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/README.md) + * [Twitter App Installation](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/twitter-app-installation.md) + * [Twitter App Configuration](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/twitter-app-configuration/README.md) + * [Twitter App Authentication](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/twitter-app-configuration/twitter-app-authentication.md) + * [Delete Twitter App](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/twitter-app-configuration/delete-twitter-app.md) + * [Twitter App Agent's Guide](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/twitter-app-agents-guide.md) + * [Facebook App](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/README.md) + * [Facebook App Installation](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/facebook-app-installation.md) + * [Facebook App Configuration](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/facebook-app-configuration/README.md) + * [Facebook App Authentication](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/facebook-app-configuration/facebook-app-authentication.md) + * [Delete Facebook App](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/facebook-app-configuration/delete-facebook-app.md) + * [Facebook App Agent's Guide](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/facebook-app-agents-guide.md) + * [WhatsApp](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/README.md) + * [WhatsApp Installation](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-installation.md) + * [WhatsApp Configuration](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/README.md) + * [WhatsApp Omnichannel Setup](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/README.md) + * [Create 360Dialog Account](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/create-360dialog-account.md) + * [Connect WhatsApp Number to your Workspace](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/connect-whatsapp-number-to-your-workspace.md) + * [WhatsApp Set up With 360Dialog Account](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/whatsapp-set-up-with-360dialog-account.md) + * [Delete Whatsapp](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/delete-whatsapp.md) + * [WhatsApp Agent's Guide](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-agents-guide.md) + * [WhatsApp Sandbox](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-sandbox/README.md) + * [WhatsApp Sandbox Installation](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-sandbox/whatsapp-sandbox-installation.md) + * [WhatsApp Sandbox Configuration](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-sandbox/whatsapp-sandbox-configuration/README.md) + * [Delete Whatsapp Sandbox](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-sandbox/whatsapp-sandbox-configuration/delete-whatsapp-sandbox.md) + * [WhatsApp Sandbox Agent's Guide](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-sandbox/whatsapp-sandbox-agents-guide.md) + * [Instagram Direct](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/README.md) + * [Instagram Direct Installation](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/instagram-direct-installation.md) + * [Instagram Direct Configuration](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/instagram-direct-configuration/README.md) + * [Instagram Direct Authentication](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/instagram-direct-configuration/instagram-direct-authentication.md) + * [Delete Instagram Direct](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/instagram-direct-configuration/delete-instagram-direct.md) + * [Instagram Direct Agent's Guide](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/instagram-direct-agents-guide.md) + * [WhatsApp Cloud App](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/README.md) + * [WhatsApp Cloud App Install](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/whatsapp-cloud-app-install.md) + * [Facebook Developer Account with WhatsApp](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/facebook-developer-account-with-whatsapp/README.md) + * [Create Permanent WhatsApp Cloud API Token](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/facebook-developer-account-with-whatsapp/create-permanent-whatsapp-cloud-api-token.md) + * [WhatsApp Cloud App Configuration](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/whatsapp-cloud-app-configuration.md) + * [Using WhatsApp Cloud App](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/using-whatsapp-cloud-app.md) + * [Atlassian](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/README.md) + * [Jira Server v2.0](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/jira-server-v2.0.md) + * [Bamboo](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/bamboo-integration.md) + * [Bitbucket Server](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/bitbucket-server-integration.md) + * [Confluence Server](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/confluence-server-integration.md) + * [Jira Server](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/jira-server-integration.md) + * [Pexip App](https://docs.rocket.chat/use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/pexip-app) + * [Jitsi app](https://docs.rocket.chat/use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/jitsi-app) + * [BigBlueButton (BBB) app](https://docs.rocket.chat/use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/bigbluebutton-bbb-app) + * [Google Meet app](https://docs.rocket.chat/use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/google-meet-app) + * [Trello](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/trello.md) + * [Zoom](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/zoom.md) + * [Data Loss Prevention (DLP) App](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/data-loss-prevention-dlp-app.md) + * [Poll](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/poll.md) + * [Poll Plus](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/poll-plus/README.md) + * [Poll Plus Features](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/poll-plus/poll-plus-features.md) + * [TeamsBridge App](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/teamsbridge-app/README.md) + * [Using the TeamsBridge App](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/teamsbridge-app/using-the-teamsbridge-app.md) + * [GitHub App](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/github-app/README.md) + * [Using GitHub App](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/github-app/using-github-app.md) + * [Google Drive](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/google-drive/README.md) + * [Using the Google Drive App](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/google-drive/google-drive-app-file-actions.md) + * [Google Calendar](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/google-calendar/README.md) + * [Using the Google Calendar App](extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/google-calendar/google-calendar-app-settings-and-events.md) + * [App Storage Location](extend-rocket.chat-capabilities/rocket.chat-marketplace/app-storage-location.md) +* [Integrations](https://docs.rocket.chat/use-rocket.chat/rocket.chat-workspace-administration/integrations) +* [Rocket.Chat API](https://developer.rocket.chat/reference/api) -## Legal +## Resources -* [Terms of Service](legal/terms.md) -* [Master Services Agreement for Self Managed Workspaces](legal/master-services-agreement-for-self-managed-workspaces.md) -* [Privacy Policy](legal/privacy/README.md) - * [Data Processing Agreement](legal/privacy/data-processing-agreement.md) - * [Subprocessors](legal/privacy/subprocessors.md) -* [Code of Conduct for our services](legal/code-of-conduct.md) -* [GDPR](legal/gdpr.md) -* [Censorship and Harmful Content](legal/censorship-and-harmful-content.md) -* [Guidelines for Law Enforcement](legal/guidelines-for-law-enforcement.md) -* [Server Lookup](legal/server-lookup.md) -* [DMCA Policy](legal/dmca-policy.md) +* [Frequently Asked Questions](rocket.chat-resources/frequently-asked-questions/README.md) + * [Apps FAQs](resources/frequently-asked-questions/apps-faqs.md) + * [Update FAQs](rocket.chat-resources/frequently-asked-questions/update-faqs.md) + * [WhatsApp Cloud API FAQs](rocket.chat-resources/frequently-asked-questions/whatsapp-cloud-api-faqs.md) + * [Cloud FAQs](rocket.chat-resources/frequently-asked-questions/cloud-faqs.md) + * [Support FAQs](rocket.chat-resources/frequently-asked-questions/support-faqs.md) + * [Whatsapp Business App FAQs](rocket.chat-resources/frequently-asked-questions/whatsapp-business-app-faqs.md) + * [Identity Management EE FAQ](rocket.chat-resources/frequently-asked-questions/ldap-faq.md) + * [Omnichannel FAQs](rocket.chat-resources/frequently-asked-questions/omnichannel-faqs.md) +* [Brand and Visual Guidelines](rocket.chat-resources/brand-and-visual-guidelines/README.md) + * [Logo](rocket.chat-resources/brand-and-visual-guidelines/logo.md) + * [Typography](rocket.chat-resources/brand-and-visual-guidelines/typography.md) + * [Colors](rocket.chat-resources/brand-and-visual-guidelines/colors.md) + * [Patterns](rocket.chat-resources/brand-and-visual-guidelines/patterns.md) + * [Iconography](rocket.chat-resources/brand-and-visual-guidelines/iconography.md) + * [Photos](rocket.chat-resources/brand-and-visual-guidelines/photos.md) + * [Brand Usage Examples](rocket.chat-resources/brand-and-visual-guidelines/brand-usage-examples.md) + * [Media Kit](rocket.chat-resources/brand-and-visual-guidelines/compositionsed.md) +* [Development Docs](rocket.chat-resources/development-docs.md) +* [Get Support](resources/get-support/README.md) + * [Enterprise Support](resources/get-support/enterprise-support/README.md) + * [Enterprise Support Plans](resources/get-support/enterprise-support/enterprise-support-plans.md) + * [Community Resources](resources/get-support/community-resources.md) + * [Legacy Support](resources/get-support/legacy-support.md) +## Contribute to Rocket.Chat + +* [Contributor Code of Conduct](contribute-to-rocket.chat/contributor-code-of-conduct.md) +* [How can I help?](contribute-to-rocket.chat/how-can-i-help/README.md) + * [Bug Reporting](contribute-to-rocket.chat/how-can-i-help/reporting-issues.md) + * [Developing](contribute-to-rocket.chat/how-can-i-help/developing.md) + * [Documenting](contribute-to-rocket.chat/how-can-i-help/documentation/README.md) + * [New Feature Template](contribute-to-rocket.chat/how-can-i-help/documentation/new-feature-draft.md) + * [Feature Change Template](contribute-to-rocket.chat/how-can-i-help/documentation/feature-change-draft.md) + * [Markdown Style Guide](contribute-to-rocket.chat/how-can-i-help/documentation/markdown-styleguide.md) + * [Promoting](contribute-to-rocket.chat/how-can-i-help/promoting.md) + * [Security](contribute-to-rocket.chat/how-can-i-help/security/README.md) + * [Responsible Disclosure Policy](contribute-to-rocket.chat/how-can-i-help/security/responsible-disclosure-policy.md) + * [Translating](contribute-to-rocket.chat/how-can-i-help/translating.md) + * [Donate](contribute-to-rocket.chat/how-can-i-help/donate.md) +* [Annual Contribution Programs](contribute-to-rocket.chat/annual-contribution-programs/README.md) + * [Google Summer of Code](contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/README.md) + * [Google Summer of Code 2023](contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2023.md) + * [Google Summer of Code 2022](contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2022.md) + * [Google Summer of Code 2021](contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2021.md) + * [Google Summer of Code 2020](contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2020.md) + * [Google Summer of Code 2019](contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2019.md) + * [Google Summer of Code 2018](contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2018.md) + * [Google Summer of Code 2017](contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2017.md) + * [Google Season of Docs](contribute-to-rocket.chat/annual-contribution-programs/google-season-of-docs/README.md) + * [Google Season of Docs 2023](contribute-to-rocket.chat/annual-contribution-programs/google-season-of-docs/google-season-of-docs-2023.md) + * [Google Season of Docs 2022](contribute-to-rocket.chat/annual-contribution-programs/google-season-of-docs/google-season-of-docs-2022.md) + * [Google Season of Docs 2021](contribute-to-rocket.chat/annual-contribution-programs/google-season-of-docs/google-season-of-docs-2021.md) + * [Google Season of Docs 2019](contribute-to-rocket.chat/annual-contribution-programs/google-season-of-docs/google-season-of-docs-2019.md) +* [Github Sponsorship](contribute-to-rocket.chat/github-sponsorship.md) + +## Rocket.Chat Legal + +* [Terms of Service](rocket.chat-legal/terms-of-service.md) +* [Master Services Agreement for Self Managed Workspaces](rocket.chat-legal/master-services-agreement-for-self-managed-workspaces.md) +* [Master Service Agreement for Professional Services](rocket.chat-legal/master-service-agreement-for-professional-services.md) +* [Code of Conduct for our services](rocket.chat-legal/code-of-conduct-for-our-services.md) +* [Censorship and Harmful Content](rocket.chat-legal/censorship-and-harmful-content.md) +* [Guidelines for Law Enforcement](rocket.chat-legal/guidelines-for-law-enforcement.md) +* [Server Lookup](rocket.chat-legal/server-lookup.md) +* [DMCA Policy](rocket.chat-legal/dmca-policy.md) + +## Rocket.Chat privacy and security + +* [Privacy Policies](rocket.chat-privacy-and-security/privacy-policies/README.md) + * [Rocket.Chat Privacy Policy](rocket.chat-privacy-and-security/privacy-policies/privacy/README.md) + * [Subprocessors](rocket.chat-privacy-and-security/privacy-policies/privacy/subprocessors.md) + * [Privacy Policy Facebook Messenger](rocket.chat-privacy-and-security/privacy-policies/privacy-policy-facebook-messenger.md) +* [Security Policy](rocket.chat-privacy-and-security/security-policy.md) +* [Security and Compliance Guides](rocket.chat-privacy-and-security/security/README.md) + * [Compliance Resources and Certifications](rocket.chat-privacy-and-security/security/compliance-resources.md) + * [Security fixes and updates](rocket.chat-privacy-and-security/security/security-updates/README.md) + * [cve-2022-32211](rocket.chat-privacy-and-security/security/security-updates/cve-2022-32211.md) + * [End-to-End Encryption Specifications](rocket.chat-privacy-and-security/security/end-to-end-encryption-algorithms.md) +* [Data Processing Agreement](rocket.chat-privacy-and-security/data-processing-agreement.md) +* [GDPR](rocket.chat-privacy-and-security/gdpr.md) diff --git a/api/livechat-widget-api.md b/api/livechat-widget-api.md deleted file mode 100644 index a7372f8b43..0000000000 --- a/api/livechat-widget-api.md +++ /dev/null @@ -1,2 +0,0 @@ -# Livechat Widget API - diff --git a/api/realtime-api/README.md b/api/realtime-api/README.md deleted file mode 100644 index fa1fd08360..0000000000 --- a/api/realtime-api/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Realtime API - diff --git a/api/realtime-api/livechat-realtime-api/README.md b/api/realtime-api/livechat-realtime-api/README.md deleted file mode 100644 index 2caeb5ef2d..0000000000 --- a/api/realtime-api/livechat-realtime-api/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Livechat Realtime API - diff --git a/api/realtime-api/livechat-realtime-api/livechat-getinitialdata.md b/api/realtime-api/livechat-realtime-api/livechat-getinitialdata.md deleted file mode 100644 index 22175ab638..0000000000 --- a/api/realtime-api/livechat-realtime-api/livechat-getinitialdata.md +++ /dev/null @@ -1,2 +0,0 @@ -# livechat:getInitialData - diff --git a/api/realtime-api/livechat-realtime-api/livechat-registerguest.md b/api/realtime-api/livechat-realtime-api/livechat-registerguest.md deleted file mode 100644 index 74b63d50d4..0000000000 --- a/api/realtime-api/livechat-realtime-api/livechat-registerguest.md +++ /dev/null @@ -1,2 +0,0 @@ -# livechat:registerGuest - diff --git a/api/realtime-api/livechat-realtime-api/livechat-sendofflinemessage.md b/api/realtime-api/livechat-realtime-api/livechat-sendofflinemessage.md deleted file mode 100644 index e6500590d4..0000000000 --- a/api/realtime-api/livechat-realtime-api/livechat-sendofflinemessage.md +++ /dev/null @@ -1,2 +0,0 @@ -# livechat:sendOfflineMessage - diff --git a/api/realtime-api/livechat-realtime-api/sendmessagelivechat.md b/api/realtime-api/livechat-realtime-api/sendmessagelivechat.md deleted file mode 100644 index 6c44e46d13..0000000000 --- a/api/realtime-api/livechat-realtime-api/sendmessagelivechat.md +++ /dev/null @@ -1,2 +0,0 @@ -# sendMessageLivechat - diff --git a/api/realtime-api/livechat-realtime-api/stream-livechat-room.md b/api/realtime-api/livechat-realtime-api/stream-livechat-room.md deleted file mode 100644 index 3553aee8d6..0000000000 --- a/api/realtime-api/livechat-realtime-api/stream-livechat-room.md +++ /dev/null @@ -1,2 +0,0 @@ -# stream-livechat-room - diff --git a/api/realtime-api/method-calls/README.md b/api/realtime-api/method-calls/README.md deleted file mode 100644 index 97eaa6793b..0000000000 --- a/api/realtime-api/method-calls/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Method Calls - diff --git a/api/realtime-api/method-calls/archive-rooms.md b/api/realtime-api/method-calls/archive-rooms.md deleted file mode 100644 index 5723dce469..0000000000 --- a/api/realtime-api/method-calls/archive-rooms.md +++ /dev/null @@ -1,2 +0,0 @@ -# Archive Rooms - diff --git a/api/realtime-api/method-calls/create-channels.md b/api/realtime-api/method-calls/create-channels.md deleted file mode 100644 index 23bf5fb218..0000000000 --- a/api/realtime-api/method-calls/create-channels.md +++ /dev/null @@ -1,2 +0,0 @@ -# Create Channels - diff --git a/api/realtime-api/method-calls/create-direct-message.md b/api/realtime-api/method-calls/create-direct-message.md deleted file mode 100644 index d8503ea8fe..0000000000 --- a/api/realtime-api/method-calls/create-direct-message.md +++ /dev/null @@ -1,2 +0,0 @@ -# Create Direct Message - diff --git a/api/realtime-api/method-calls/create-private-groups.md b/api/realtime-api/method-calls/create-private-groups.md deleted file mode 100644 index 6003dd5307..0000000000 --- a/api/realtime-api/method-calls/create-private-groups.md +++ /dev/null @@ -1,2 +0,0 @@ -# Create Private Groups - diff --git a/api/realtime-api/method-calls/delete-message.md b/api/realtime-api/method-calls/delete-message.md deleted file mode 100644 index f57dd536aa..0000000000 --- a/api/realtime-api/method-calls/delete-message.md +++ /dev/null @@ -1,2 +0,0 @@ -# Delete Message - diff --git a/api/realtime-api/method-calls/delete-rooms.md b/api/realtime-api/method-calls/delete-rooms.md deleted file mode 100644 index 810a1f60d3..0000000000 --- a/api/realtime-api/method-calls/delete-rooms.md +++ /dev/null @@ -1,2 +0,0 @@ -# Delete Rooms - diff --git a/api/realtime-api/method-calls/end-to-end-encryption-api/README.md b/api/realtime-api/method-calls/end-to-end-encryption-api/README.md deleted file mode 100644 index 8cd7b497a9..0000000000 --- a/api/realtime-api/method-calls/end-to-end-encryption-api/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# End-to-End Encryption API - diff --git a/api/realtime-api/method-calls/end-to-end-encryption-api/fetch-my-keys.md b/api/realtime-api/method-calls/end-to-end-encryption-api/fetch-my-keys.md deleted file mode 100644 index bffcb25206..0000000000 --- a/api/realtime-api/method-calls/end-to-end-encryption-api/fetch-my-keys.md +++ /dev/null @@ -1,2 +0,0 @@ -# Fetch My Keys - diff --git a/api/realtime-api/method-calls/end-to-end-encryption-api/get-users-of-room-without-key.md b/api/realtime-api/method-calls/end-to-end-encryption-api/get-users-of-room-without-key.md deleted file mode 100644 index 201d24ebac..0000000000 --- a/api/realtime-api/method-calls/end-to-end-encryption-api/get-users-of-room-without-key.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Users of Room Without Key - diff --git a/api/realtime-api/method-calls/end-to-end-encryption-api/set-room-key-id.md b/api/realtime-api/method-calls/end-to-end-encryption-api/set-room-key-id.md deleted file mode 100644 index 0c7198306e..0000000000 --- a/api/realtime-api/method-calls/end-to-end-encryption-api/set-room-key-id.md +++ /dev/null @@ -1,2 +0,0 @@ -# Set Room Key ID - diff --git a/api/realtime-api/method-calls/end-to-end-encryption-api/set-user-public-and-private-keys.md b/api/realtime-api/method-calls/end-to-end-encryption-api/set-user-public-and-private-keys.md deleted file mode 100644 index 021a054ab2..0000000000 --- a/api/realtime-api/method-calls/end-to-end-encryption-api/set-user-public-and-private-keys.md +++ /dev/null @@ -1,2 +0,0 @@ -# Set User Public and Private Keys - diff --git a/api/realtime-api/method-calls/end-to-end-encryption-api/update-group-key.md b/api/realtime-api/method-calls/end-to-end-encryption-api/update-group-key.md deleted file mode 100644 index f07b74dd0c..0000000000 --- a/api/realtime-api/method-calls/end-to-end-encryption-api/update-group-key.md +++ /dev/null @@ -1,2 +0,0 @@ -# Update Group Key - diff --git a/api/realtime-api/method-calls/favoriting-rooms.md b/api/realtime-api/method-calls/favoriting-rooms.md deleted file mode 100644 index c354ece9a0..0000000000 --- a/api/realtime-api/method-calls/favoriting-rooms.md +++ /dev/null @@ -1,2 +0,0 @@ -# Favoriting Rooms - diff --git a/api/realtime-api/method-calls/get-permissions.md b/api/realtime-api/method-calls/get-permissions.md deleted file mode 100644 index e5764c8a48..0000000000 --- a/api/realtime-api/method-calls/get-permissions.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Permissions - diff --git a/api/realtime-api/method-calls/get-public-settings.md b/api/realtime-api/method-calls/get-public-settings.md deleted file mode 100644 index a1dcadcfc5..0000000000 --- a/api/realtime-api/method-calls/get-public-settings.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Public Settings - diff --git a/api/realtime-api/method-calls/get-room-roles.md b/api/realtime-api/method-calls/get-room-roles.md deleted file mode 100644 index cb9e39d8ca..0000000000 --- a/api/realtime-api/method-calls/get-room-roles.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Room Roles - diff --git a/api/realtime-api/method-calls/get-rooms.md b/api/realtime-api/method-calls/get-rooms.md deleted file mode 100644 index d2e4bb2d38..0000000000 --- a/api/realtime-api/method-calls/get-rooms.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Rooms - diff --git a/api/realtime-api/method-calls/get-subscriptions.md b/api/realtime-api/method-calls/get-subscriptions.md deleted file mode 100644 index 179bc7b21e..0000000000 --- a/api/realtime-api/method-calls/get-subscriptions.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Subscriptions - diff --git a/api/realtime-api/method-calls/get-user-roles.md b/api/realtime-api/method-calls/get-user-roles.md deleted file mode 100644 index d7494f025c..0000000000 --- a/api/realtime-api/method-calls/get-user-roles.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get User Roles - diff --git a/api/realtime-api/method-calls/hiding-rooms.md b/api/realtime-api/method-calls/hiding-rooms.md deleted file mode 100644 index b1a0082e39..0000000000 --- a/api/realtime-api/method-calls/hiding-rooms.md +++ /dev/null @@ -1,2 +0,0 @@ -# Hiding Rooms - diff --git a/api/realtime-api/method-calls/joining-channels.md b/api/realtime-api/method-calls/joining-channels.md deleted file mode 100644 index 90f292c0bc..0000000000 --- a/api/realtime-api/method-calls/joining-channels.md +++ /dev/null @@ -1,2 +0,0 @@ -# Joining Channels - diff --git a/api/realtime-api/method-calls/leaving-rooms.md b/api/realtime-api/method-calls/leaving-rooms.md deleted file mode 100644 index b0a5b6224c..0000000000 --- a/api/realtime-api/method-calls/leaving-rooms.md +++ /dev/null @@ -1,2 +0,0 @@ -# Leaving Rooms - diff --git a/api/realtime-api/method-calls/list-custom-emoji.md b/api/realtime-api/method-calls/list-custom-emoji.md deleted file mode 100644 index 9fe7a190af..0000000000 --- a/api/realtime-api/method-calls/list-custom-emoji.md +++ /dev/null @@ -1,2 +0,0 @@ -# List Custom Emoji - diff --git a/api/realtime-api/method-calls/load-history.md b/api/realtime-api/method-calls/load-history.md deleted file mode 100644 index 204f79c931..0000000000 --- a/api/realtime-api/method-calls/load-history.md +++ /dev/null @@ -1,2 +0,0 @@ -# Load History - diff --git a/api/realtime-api/method-calls/login.md b/api/realtime-api/method-calls/login.md deleted file mode 100644 index 8fb72325eb..0000000000 --- a/api/realtime-api/method-calls/login.md +++ /dev/null @@ -1,2 +0,0 @@ -# Login - diff --git a/api/realtime-api/method-calls/logout.md b/api/realtime-api/method-calls/logout.md deleted file mode 100644 index 192c85669d..0000000000 --- a/api/realtime-api/method-calls/logout.md +++ /dev/null @@ -1,2 +0,0 @@ -# Logout - diff --git a/api/realtime-api/method-calls/notify-room-stream.md b/api/realtime-api/method-calls/notify-room-stream.md deleted file mode 100644 index c29f8b0085..0000000000 --- a/api/realtime-api/method-calls/notify-room-stream.md +++ /dev/null @@ -1,2 +0,0 @@ -# Notify Room Stream - diff --git a/api/realtime-api/method-calls/opening-rooms.md b/api/realtime-api/method-calls/opening-rooms.md deleted file mode 100644 index c85c4f9526..0000000000 --- a/api/realtime-api/method-calls/opening-rooms.md +++ /dev/null @@ -1,2 +0,0 @@ -# Opening Rooms - diff --git a/api/realtime-api/method-calls/pin-message.md b/api/realtime-api/method-calls/pin-message.md deleted file mode 100644 index 539b2cf2e0..0000000000 --- a/api/realtime-api/method-calls/pin-message.md +++ /dev/null @@ -1,2 +0,0 @@ -# Pin Message - diff --git a/api/realtime-api/method-calls/register-user.md b/api/realtime-api/method-calls/register-user.md deleted file mode 100644 index df373d90f6..0000000000 --- a/api/realtime-api/method-calls/register-user.md +++ /dev/null @@ -1,2 +0,0 @@ -# Register User - diff --git a/api/realtime-api/method-calls/save-room-settings.md b/api/realtime-api/method-calls/save-room-settings.md deleted file mode 100644 index 09485c3619..0000000000 --- a/api/realtime-api/method-calls/save-room-settings.md +++ /dev/null @@ -1,2 +0,0 @@ -# Save Room Settings - diff --git a/api/realtime-api/method-calls/send-message.md b/api/realtime-api/method-calls/send-message.md deleted file mode 100644 index 678e6e4a47..0000000000 --- a/api/realtime-api/method-calls/send-message.md +++ /dev/null @@ -1,2 +0,0 @@ -# Send Message - diff --git a/api/realtime-api/method-calls/set-reaction.md b/api/realtime-api/method-calls/set-reaction.md deleted file mode 100644 index 19d174edc3..0000000000 --- a/api/realtime-api/method-calls/set-reaction.md +++ /dev/null @@ -1,2 +0,0 @@ -# Set Reaction - diff --git a/api/realtime-api/method-calls/spotlight-search.md b/api/realtime-api/method-calls/spotlight-search.md deleted file mode 100644 index 92a3507ab1..0000000000 --- a/api/realtime-api/method-calls/spotlight-search.md +++ /dev/null @@ -1,2 +0,0 @@ -# Spotlight \(search\) - diff --git a/api/realtime-api/method-calls/star-message.md b/api/realtime-api/method-calls/star-message.md deleted file mode 100644 index 918b9685be..0000000000 --- a/api/realtime-api/method-calls/star-message.md +++ /dev/null @@ -1,2 +0,0 @@ -# Star Message - diff --git a/api/realtime-api/method-calls/unarchive-rooms.md b/api/realtime-api/method-calls/unarchive-rooms.md deleted file mode 100644 index ac8e385142..0000000000 --- a/api/realtime-api/method-calls/unarchive-rooms.md +++ /dev/null @@ -1,2 +0,0 @@ -# Unarchive Rooms - diff --git a/api/realtime-api/method-calls/unpin-message.md b/api/realtime-api/method-calls/unpin-message.md deleted file mode 100644 index b96bd68c08..0000000000 --- a/api/realtime-api/method-calls/unpin-message.md +++ /dev/null @@ -1,2 +0,0 @@ -# Unpin Message - diff --git a/api/realtime-api/method-calls/update-message.md b/api/realtime-api/method-calls/update-message.md deleted file mode 100644 index d61bda3d73..0000000000 --- a/api/realtime-api/method-calls/update-message.md +++ /dev/null @@ -1,2 +0,0 @@ -# Update Message - diff --git a/api/realtime-api/method-calls/user-presence.md b/api/realtime-api/method-calls/user-presence.md deleted file mode 100644 index 0f640f59ec..0000000000 --- a/api/realtime-api/method-calls/user-presence.md +++ /dev/null @@ -1,2 +0,0 @@ -# User Presence - diff --git a/api/realtime-api/subscriptions/README.md b/api/realtime-api/subscriptions/README.md deleted file mode 100644 index 3626db8ee7..0000000000 --- a/api/realtime-api/subscriptions/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Subscriptions - diff --git a/api/realtime-api/subscriptions/stream-notify-all.md b/api/realtime-api/subscriptions/stream-notify-all.md deleted file mode 100644 index 66c8cbf2a0..0000000000 --- a/api/realtime-api/subscriptions/stream-notify-all.md +++ /dev/null @@ -1,2 +0,0 @@ -# stream-notify-all - diff --git a/api/realtime-api/subscriptions/stream-notify-logged.md b/api/realtime-api/subscriptions/stream-notify-logged.md deleted file mode 100644 index 1ec27df2aa..0000000000 --- a/api/realtime-api/subscriptions/stream-notify-logged.md +++ /dev/null @@ -1,2 +0,0 @@ -# stream-notify-logged - diff --git a/api/realtime-api/subscriptions/stream-notify-room-users.md b/api/realtime-api/subscriptions/stream-notify-room-users.md deleted file mode 100644 index cc4243a0c5..0000000000 --- a/api/realtime-api/subscriptions/stream-notify-room-users.md +++ /dev/null @@ -1,2 +0,0 @@ -# stream-notify-room-users - diff --git a/api/realtime-api/subscriptions/stream-notify-room.md b/api/realtime-api/subscriptions/stream-notify-room.md deleted file mode 100644 index 32f07b999b..0000000000 --- a/api/realtime-api/subscriptions/stream-notify-room.md +++ /dev/null @@ -1,2 +0,0 @@ -# stream-notify-room - diff --git a/api/realtime-api/subscriptions/stream-notify-user.md b/api/realtime-api/subscriptions/stream-notify-user.md deleted file mode 100644 index 0950f06075..0000000000 --- a/api/realtime-api/subscriptions/stream-notify-user.md +++ /dev/null @@ -1,2 +0,0 @@ -# stream-notify-user - diff --git a/api/realtime-api/subscriptions/stream-room-messages.md b/api/realtime-api/subscriptions/stream-room-messages.md deleted file mode 100644 index 70b5b99724..0000000000 --- a/api/realtime-api/subscriptions/stream-room-messages.md +++ /dev/null @@ -1,2 +0,0 @@ -# stream-room-messages - diff --git a/api/realtime-api/two-factor-authentication.md b/api/realtime-api/two-factor-authentication.md deleted file mode 100644 index c6786308f0..0000000000 --- a/api/realtime-api/two-factor-authentication.md +++ /dev/null @@ -1,2 +0,0 @@ -# Two Factor Authentication - diff --git a/api/rest-api/README.md b/api/rest-api/README.md deleted file mode 100644 index 3c4427e093..0000000000 --- a/api/rest-api/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# REST API - diff --git a/api/rest-api/access-tokens.md b/api/rest-api/access-tokens.md deleted file mode 100644 index 19e864c26e..0000000000 --- a/api/rest-api/access-tokens.md +++ /dev/null @@ -1,2 +0,0 @@ -# Access Tokens - diff --git a/api/rest-api/avatars.md b/api/rest-api/avatars.md deleted file mode 100644 index 9ef2882f30..0000000000 --- a/api/rest-api/avatars.md +++ /dev/null @@ -1,2 +0,0 @@ -# Avatars - diff --git a/api/rest-api/methods/README.md b/api/rest-api/methods/README.md deleted file mode 100644 index c4c0634ccd..0000000000 --- a/api/rest-api/methods/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Methods - diff --git a/api/rest-api/methods/assets/README.md b/api/rest-api/methods/assets/README.md deleted file mode 100644 index 5ad3e475c1..0000000000 --- a/api/rest-api/methods/assets/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Assets - diff --git a/api/rest-api/methods/assets/set-asset.md b/api/rest-api/methods/assets/set-asset.md deleted file mode 100644 index 43fed29a38..0000000000 --- a/api/rest-api/methods/assets/set-asset.md +++ /dev/null @@ -1,2 +0,0 @@ -# Set Asset - diff --git a/api/rest-api/methods/assets/unset-asset.md b/api/rest-api/methods/assets/unset-asset.md deleted file mode 100644 index 10af261b5a..0000000000 --- a/api/rest-api/methods/assets/unset-asset.md +++ /dev/null @@ -1,2 +0,0 @@ -# Unset Asset - diff --git a/api/rest-api/methods/authentication/README.md b/api/rest-api/methods/authentication/README.md deleted file mode 100644 index a6bc914fdc..0000000000 --- a/api/rest-api/methods/authentication/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Authentication - diff --git a/api/rest-api/methods/authentication/login-with-facebook.md b/api/rest-api/methods/authentication/login-with-facebook.md deleted file mode 100644 index f6c2ed12f8..0000000000 --- a/api/rest-api/methods/authentication/login-with-facebook.md +++ /dev/null @@ -1,2 +0,0 @@ -# Login with Facebook - diff --git a/api/rest-api/methods/authentication/login-with-google.md b/api/rest-api/methods/authentication/login-with-google.md deleted file mode 100644 index bb820b34cd..0000000000 --- a/api/rest-api/methods/authentication/login-with-google.md +++ /dev/null @@ -1,2 +0,0 @@ -# Login with Google - diff --git a/api/rest-api/methods/authentication/login-with-twitter.md b/api/rest-api/methods/authentication/login-with-twitter.md deleted file mode 100644 index 77b7bb0407..0000000000 --- a/api/rest-api/methods/authentication/login-with-twitter.md +++ /dev/null @@ -1,2 +0,0 @@ -# Login with Twitter - diff --git a/api/rest-api/methods/authentication/login.md b/api/rest-api/methods/authentication/login.md deleted file mode 100644 index 8fb72325eb..0000000000 --- a/api/rest-api/methods/authentication/login.md +++ /dev/null @@ -1,2 +0,0 @@ -# Login - diff --git a/api/rest-api/methods/authentication/logout.md b/api/rest-api/methods/authentication/logout.md deleted file mode 100644 index 192c85669d..0000000000 --- a/api/rest-api/methods/authentication/logout.md +++ /dev/null @@ -1,2 +0,0 @@ -# Logout - diff --git a/api/rest-api/methods/authentication/me.md b/api/rest-api/methods/authentication/me.md deleted file mode 100644 index 833916facc..0000000000 --- a/api/rest-api/methods/authentication/me.md +++ /dev/null @@ -1,2 +0,0 @@ -# Me - diff --git a/api/rest-api/methods/auto-translate/README.md b/api/rest-api/methods/auto-translate/README.md deleted file mode 100644 index 51e02563f6..0000000000 --- a/api/rest-api/methods/auto-translate/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Auto Translate - diff --git a/api/rest-api/methods/auto-translate/get-supported-languages.md b/api/rest-api/methods/auto-translate/get-supported-languages.md deleted file mode 100644 index fcd5525eb2..0000000000 --- a/api/rest-api/methods/auto-translate/get-supported-languages.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Supported Languages - diff --git a/api/rest-api/methods/auto-translate/save-settings.md b/api/rest-api/methods/auto-translate/save-settings.md deleted file mode 100644 index 230f5e88c8..0000000000 --- a/api/rest-api/methods/auto-translate/save-settings.md +++ /dev/null @@ -1,2 +0,0 @@ -# Save Settings - diff --git a/api/rest-api/methods/auto-translate/translate-message.md b/api/rest-api/methods/auto-translate/translate-message.md deleted file mode 100644 index 72ff19dbc9..0000000000 --- a/api/rest-api/methods/auto-translate/translate-message.md +++ /dev/null @@ -1,2 +0,0 @@ -# Translate Message - diff --git a/api/rest-api/methods/channels/README.md b/api/rest-api/methods/channels/README.md deleted file mode 100644 index f75b2ec297..0000000000 --- a/api/rest-api/methods/channels/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channels - diff --git a/api/rest-api/methods/channels/channel-add-all.md b/api/rest-api/methods/channels/channel-add-all.md deleted file mode 100644 index c3269e8301..0000000000 --- a/api/rest-api/methods/channels/channel-add-all.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Add All - diff --git a/api/rest-api/methods/channels/channel-add-leader.md b/api/rest-api/methods/channels/channel-add-leader.md deleted file mode 100644 index f1a4f00bc0..0000000000 --- a/api/rest-api/methods/channels/channel-add-leader.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Add Leader - diff --git a/api/rest-api/methods/channels/channel-add-moderator.md b/api/rest-api/methods/channels/channel-add-moderator.md deleted file mode 100644 index 887182597a..0000000000 --- a/api/rest-api/methods/channels/channel-add-moderator.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Add Moderator - diff --git a/api/rest-api/methods/channels/channel-add-owner.md b/api/rest-api/methods/channels/channel-add-owner.md deleted file mode 100644 index cbf098b47b..0000000000 --- a/api/rest-api/methods/channels/channel-add-owner.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Add Owner - diff --git a/api/rest-api/methods/channels/channel-anonymous-read.md b/api/rest-api/methods/channels/channel-anonymous-read.md deleted file mode 100644 index 74f1b333ba..0000000000 --- a/api/rest-api/methods/channels/channel-anonymous-read.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Anonymous Read - diff --git a/api/rest-api/methods/channels/channel-archive.md b/api/rest-api/methods/channels/channel-archive.md deleted file mode 100644 index feaed8e089..0000000000 --- a/api/rest-api/methods/channels/channel-archive.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Archive - diff --git a/api/rest-api/methods/channels/channel-close.md b/api/rest-api/methods/channels/channel-close.md deleted file mode 100644 index 62d10c2682..0000000000 --- a/api/rest-api/methods/channels/channel-close.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Close - diff --git a/api/rest-api/methods/channels/channel-counters.md b/api/rest-api/methods/channels/channel-counters.md deleted file mode 100644 index 2da90952ca..0000000000 --- a/api/rest-api/methods/channels/channel-counters.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Counters - diff --git a/api/rest-api/methods/channels/channel-create.md b/api/rest-api/methods/channels/channel-create.md deleted file mode 100644 index 256cb6c7ca..0000000000 --- a/api/rest-api/methods/channels/channel-create.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Create - diff --git a/api/rest-api/methods/channels/channel-delete.md b/api/rest-api/methods/channels/channel-delete.md deleted file mode 100644 index a8efb2f390..0000000000 --- a/api/rest-api/methods/channels/channel-delete.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Delete - diff --git a/api/rest-api/methods/channels/channel-files.md b/api/rest-api/methods/channels/channel-files.md deleted file mode 100644 index 7c95a0b1b6..0000000000 --- a/api/rest-api/methods/channels/channel-files.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Files - diff --git a/api/rest-api/methods/channels/channel-history.md b/api/rest-api/methods/channels/channel-history.md deleted file mode 100644 index f5b9f86b48..0000000000 --- a/api/rest-api/methods/channels/channel-history.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel History - diff --git a/api/rest-api/methods/channels/channel-info.md b/api/rest-api/methods/channels/channel-info.md deleted file mode 100644 index ab8661d996..0000000000 --- a/api/rest-api/methods/channels/channel-info.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Info - diff --git a/api/rest-api/methods/channels/channel-invite.md b/api/rest-api/methods/channels/channel-invite.md deleted file mode 100644 index 41f63ef9d6..0000000000 --- a/api/rest-api/methods/channels/channel-invite.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Invite - diff --git a/api/rest-api/methods/channels/channel-join.md b/api/rest-api/methods/channels/channel-join.md deleted file mode 100644 index 813b25e118..0000000000 --- a/api/rest-api/methods/channels/channel-join.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Join - diff --git a/api/rest-api/methods/channels/channel-kick.md b/api/rest-api/methods/channels/channel-kick.md deleted file mode 100644 index 0b13c7198b..0000000000 --- a/api/rest-api/methods/channels/channel-kick.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Kick - diff --git a/api/rest-api/methods/channels/channel-leave.md b/api/rest-api/methods/channels/channel-leave.md deleted file mode 100644 index ebd357bfea..0000000000 --- a/api/rest-api/methods/channels/channel-leave.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Leave - diff --git a/api/rest-api/methods/channels/channel-list-joined.md b/api/rest-api/methods/channels/channel-list-joined.md deleted file mode 100644 index 4b9f52c3dc..0000000000 --- a/api/rest-api/methods/channels/channel-list-joined.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel List Joined - diff --git a/api/rest-api/methods/channels/channel-list.md b/api/rest-api/methods/channels/channel-list.md deleted file mode 100644 index 5316b2de1e..0000000000 --- a/api/rest-api/methods/channels/channel-list.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel List - diff --git a/api/rest-api/methods/channels/channel-members-list.md b/api/rest-api/methods/channels/channel-members-list.md deleted file mode 100644 index 56a5aeadf8..0000000000 --- a/api/rest-api/methods/channels/channel-members-list.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Members List - diff --git a/api/rest-api/methods/channels/channel-messages.md b/api/rest-api/methods/channels/channel-messages.md deleted file mode 100644 index 75c3713401..0000000000 --- a/api/rest-api/methods/channels/channel-messages.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel messages - diff --git a/api/rest-api/methods/channels/channel-moderators-list.md b/api/rest-api/methods/channels/channel-moderators-list.md deleted file mode 100644 index ddb0ec317b..0000000000 --- a/api/rest-api/methods/channels/channel-moderators-list.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Moderators List - diff --git a/api/rest-api/methods/channels/channel-online.md b/api/rest-api/methods/channels/channel-online.md deleted file mode 100644 index 80e780fc0a..0000000000 --- a/api/rest-api/methods/channels/channel-online.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Online - diff --git a/api/rest-api/methods/channels/channel-open.md b/api/rest-api/methods/channels/channel-open.md deleted file mode 100644 index 2c0d495332..0000000000 --- a/api/rest-api/methods/channels/channel-open.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Open - diff --git a/api/rest-api/methods/channels/channel-remove-leader.md b/api/rest-api/methods/channels/channel-remove-leader.md deleted file mode 100644 index 461c6fcacc..0000000000 --- a/api/rest-api/methods/channels/channel-remove-leader.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Remove Leader - diff --git a/api/rest-api/methods/channels/channel-remove-moderator.md b/api/rest-api/methods/channels/channel-remove-moderator.md deleted file mode 100644 index 8c6f5545cf..0000000000 --- a/api/rest-api/methods/channels/channel-remove-moderator.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Remove Moderator - diff --git a/api/rest-api/methods/channels/channel-remove-owner.md b/api/rest-api/methods/channels/channel-remove-owner.md deleted file mode 100644 index b15744fcf6..0000000000 --- a/api/rest-api/methods/channels/channel-remove-owner.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Remove Owner - diff --git a/api/rest-api/methods/channels/channel-rename.md b/api/rest-api/methods/channels/channel-rename.md deleted file mode 100644 index 6d9bf03586..0000000000 --- a/api/rest-api/methods/channels/channel-rename.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Rename - diff --git a/api/rest-api/methods/channels/channel-roles.md b/api/rest-api/methods/channels/channel-roles.md deleted file mode 100644 index 7493cbbabd..0000000000 --- a/api/rest-api/methods/channels/channel-roles.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Roles - diff --git a/api/rest-api/methods/channels/channel-set-announcement.md b/api/rest-api/methods/channels/channel-set-announcement.md deleted file mode 100644 index 84125e34e4..0000000000 --- a/api/rest-api/methods/channels/channel-set-announcement.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Set Announcement - diff --git a/api/rest-api/methods/channels/channel-set-custom-fields.md b/api/rest-api/methods/channels/channel-set-custom-fields.md deleted file mode 100644 index e46d51d8fc..0000000000 --- a/api/rest-api/methods/channels/channel-set-custom-fields.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Set Custom Fields - diff --git a/api/rest-api/methods/channels/channel-set-default.md b/api/rest-api/methods/channels/channel-set-default.md deleted file mode 100644 index e5738da3e7..0000000000 --- a/api/rest-api/methods/channels/channel-set-default.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Set Default - diff --git a/api/rest-api/methods/channels/channel-set-description.md b/api/rest-api/methods/channels/channel-set-description.md deleted file mode 100644 index aadf369ee2..0000000000 --- a/api/rest-api/methods/channels/channel-set-description.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Set Description - diff --git a/api/rest-api/methods/channels/channel-set-join-code.md b/api/rest-api/methods/channels/channel-set-join-code.md deleted file mode 100644 index 149e5aa4d7..0000000000 --- a/api/rest-api/methods/channels/channel-set-join-code.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Set Join Code - diff --git a/api/rest-api/methods/channels/channel-set-purpose.md b/api/rest-api/methods/channels/channel-set-purpose.md deleted file mode 100644 index 55b40a0d21..0000000000 --- a/api/rest-api/methods/channels/channel-set-purpose.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Set Purpose - diff --git a/api/rest-api/methods/channels/channel-set-read-only.md b/api/rest-api/methods/channels/channel-set-read-only.md deleted file mode 100644 index 06b260d746..0000000000 --- a/api/rest-api/methods/channels/channel-set-read-only.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Set Read Only - diff --git a/api/rest-api/methods/channels/channel-set-topic.md b/api/rest-api/methods/channels/channel-set-topic.md deleted file mode 100644 index e5cfb44c3e..0000000000 --- a/api/rest-api/methods/channels/channel-set-topic.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Set Topic - diff --git a/api/rest-api/methods/channels/channel-set-type.md b/api/rest-api/methods/channels/channel-set-type.md deleted file mode 100644 index 2c3063f18a..0000000000 --- a/api/rest-api/methods/channels/channel-set-type.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Set Type - diff --git a/api/rest-api/methods/channels/channel-unarchive.md b/api/rest-api/methods/channels/channel-unarchive.md deleted file mode 100644 index 1ddbd669c7..0000000000 --- a/api/rest-api/methods/channels/channel-unarchive.md +++ /dev/null @@ -1,2 +0,0 @@ -# Channel Unarchive - diff --git a/api/rest-api/methods/channels/get-all-the-mentions-of-a-channel.md b/api/rest-api/methods/channels/get-all-the-mentions-of-a-channel.md deleted file mode 100644 index 502fe71187..0000000000 --- a/api/rest-api/methods/channels/get-all-the-mentions-of-a-channel.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get all the mentions of a channel - diff --git a/api/rest-api/methods/channels/get-integrations.md b/api/rest-api/methods/channels/get-integrations.md deleted file mode 100644 index 73e0e6f8d9..0000000000 --- a/api/rest-api/methods/channels/get-integrations.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Integrations - diff --git a/api/rest-api/methods/chat/README.md b/api/rest-api/methods/chat/README.md deleted file mode 100644 index 0be676ebd5..0000000000 --- a/api/rest-api/methods/chat/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Chat - diff --git a/api/rest-api/methods/chat/delete.md b/api/rest-api/methods/chat/delete.md deleted file mode 100644 index 77d030cbbe..0000000000 --- a/api/rest-api/methods/chat/delete.md +++ /dev/null @@ -1,2 +0,0 @@ -# Delete - diff --git a/api/rest-api/methods/chat/follows-message.md b/api/rest-api/methods/chat/follows-message.md deleted file mode 100644 index c966e5c353..0000000000 --- a/api/rest-api/methods/chat/follows-message.md +++ /dev/null @@ -1,2 +0,0 @@ -# Follows Message - diff --git a/api/rest-api/methods/chat/get-channel-threads.md b/api/rest-api/methods/chat/get-channel-threads.md deleted file mode 100644 index 49aedbd8a8..0000000000 --- a/api/rest-api/methods/chat/get-channel-threads.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Channel Threads - diff --git a/api/rest-api/methods/chat/get-deleted-messages.md b/api/rest-api/methods/chat/get-deleted-messages.md deleted file mode 100644 index a20605cfcf..0000000000 --- a/api/rest-api/methods/chat/get-deleted-messages.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Deleted Messages - diff --git a/api/rest-api/methods/chat/get-discussions-of-a-room.md b/api/rest-api/methods/chat/get-discussions-of-a-room.md deleted file mode 100644 index 7d051404b2..0000000000 --- a/api/rest-api/methods/chat/get-discussions-of-a-room.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Discussions of A Room - diff --git a/api/rest-api/methods/chat/get-mentioned-messages.md b/api/rest-api/methods/chat/get-mentioned-messages.md deleted file mode 100644 index 1f04a02d6e..0000000000 --- a/api/rest-api/methods/chat/get-mentioned-messages.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Mentioned Messages - diff --git a/api/rest-api/methods/chat/get-message-read-receipts.md b/api/rest-api/methods/chat/get-message-read-receipts.md deleted file mode 100644 index ce69dcad5f..0000000000 --- a/api/rest-api/methods/chat/get-message-read-receipts.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Message Read Receipts - diff --git a/api/rest-api/methods/chat/get-message.md b/api/rest-api/methods/chat/get-message.md deleted file mode 100644 index 193f7dca2c..0000000000 --- a/api/rest-api/methods/chat/get-message.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Message - diff --git a/api/rest-api/methods/chat/get-pinned-messages.md b/api/rest-api/methods/chat/get-pinned-messages.md deleted file mode 100644 index 9663a41e73..0000000000 --- a/api/rest-api/methods/chat/get-pinned-messages.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Pinned Messages - diff --git a/api/rest-api/methods/chat/get-snippeted-message-by-id.md b/api/rest-api/methods/chat/get-snippeted-message-by-id.md deleted file mode 100644 index 2b7e3f8e49..0000000000 --- a/api/rest-api/methods/chat/get-snippeted-message-by-id.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Snippeted Message By Id - diff --git a/api/rest-api/methods/chat/get-snippeted-messages.md b/api/rest-api/methods/chat/get-snippeted-messages.md deleted file mode 100644 index b6982d67dc..0000000000 --- a/api/rest-api/methods/chat/get-snippeted-messages.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Snippeted Messages - diff --git a/api/rest-api/methods/chat/get-starred-messages.md b/api/rest-api/methods/chat/get-starred-messages.md deleted file mode 100644 index 9d74abe523..0000000000 --- a/api/rest-api/methods/chat/get-starred-messages.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Starred Messages - diff --git a/api/rest-api/methods/chat/get-thread-messages.md b/api/rest-api/methods/chat/get-thread-messages.md deleted file mode 100644 index 3c375dccda..0000000000 --- a/api/rest-api/methods/chat/get-thread-messages.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Thread Messages - diff --git a/api/rest-api/methods/chat/ignore-user.md b/api/rest-api/methods/chat/ignore-user.md deleted file mode 100644 index 4963191170..0000000000 --- a/api/rest-api/methods/chat/ignore-user.md +++ /dev/null @@ -1,2 +0,0 @@ -# Ignore User - diff --git a/api/rest-api/methods/chat/pins-message.md b/api/rest-api/methods/chat/pins-message.md deleted file mode 100644 index 2dac5f0b37..0000000000 --- a/api/rest-api/methods/chat/pins-message.md +++ /dev/null @@ -1,2 +0,0 @@ -# Pins Message - diff --git a/api/rest-api/methods/chat/post-message.md b/api/rest-api/methods/chat/post-message.md deleted file mode 100644 index bcc12171b8..0000000000 --- a/api/rest-api/methods/chat/post-message.md +++ /dev/null @@ -1,2 +0,0 @@ -# Post Message - diff --git a/api/rest-api/methods/chat/react.md b/api/rest-api/methods/chat/react.md deleted file mode 100644 index 65d536efea..0000000000 --- a/api/rest-api/methods/chat/react.md +++ /dev/null @@ -1,2 +0,0 @@ -# React - diff --git a/api/rest-api/methods/chat/report-message.md b/api/rest-api/methods/chat/report-message.md deleted file mode 100644 index 3ca61834ca..0000000000 --- a/api/rest-api/methods/chat/report-message.md +++ /dev/null @@ -1,2 +0,0 @@ -# Report Message - diff --git a/api/rest-api/methods/chat/search.md b/api/rest-api/methods/chat/search.md deleted file mode 100644 index 8300a94da1..0000000000 --- a/api/rest-api/methods/chat/search.md +++ /dev/null @@ -1,2 +0,0 @@ -# Search - diff --git a/api/rest-api/methods/chat/send-message.md b/api/rest-api/methods/chat/send-message.md deleted file mode 100644 index 678e6e4a47..0000000000 --- a/api/rest-api/methods/chat/send-message.md +++ /dev/null @@ -1,2 +0,0 @@ -# Send Message - diff --git a/api/rest-api/methods/chat/star-message.md b/api/rest-api/methods/chat/star-message.md deleted file mode 100644 index 918b9685be..0000000000 --- a/api/rest-api/methods/chat/star-message.md +++ /dev/null @@ -1,2 +0,0 @@ -# Star Message - diff --git a/api/rest-api/methods/chat/sync-thread-list.md b/api/rest-api/methods/chat/sync-thread-list.md deleted file mode 100644 index aa526fb187..0000000000 --- a/api/rest-api/methods/chat/sync-thread-list.md +++ /dev/null @@ -1,2 +0,0 @@ -# Sync Thread List - diff --git a/api/rest-api/methods/chat/sync-thread-messages.md b/api/rest-api/methods/chat/sync-thread-messages.md deleted file mode 100644 index 0ae9fd3ce9..0000000000 --- a/api/rest-api/methods/chat/sync-thread-messages.md +++ /dev/null @@ -1,2 +0,0 @@ -# Sync Thread Messages - diff --git a/api/rest-api/methods/chat/unfollow-message.md b/api/rest-api/methods/chat/unfollow-message.md deleted file mode 100644 index f5306d0c97..0000000000 --- a/api/rest-api/methods/chat/unfollow-message.md +++ /dev/null @@ -1,2 +0,0 @@ -# Unfollow Message - diff --git a/api/rest-api/methods/chat/unpins-message.md b/api/rest-api/methods/chat/unpins-message.md deleted file mode 100644 index 7194632e2c..0000000000 --- a/api/rest-api/methods/chat/unpins-message.md +++ /dev/null @@ -1,2 +0,0 @@ -# Unpins Message - diff --git a/api/rest-api/methods/chat/unstar-message.md b/api/rest-api/methods/chat/unstar-message.md deleted file mode 100644 index 24aff1efd7..0000000000 --- a/api/rest-api/methods/chat/unstar-message.md +++ /dev/null @@ -1,2 +0,0 @@ -# Unstar Message - diff --git a/api/rest-api/methods/chat/update.md b/api/rest-api/methods/chat/update.md deleted file mode 100644 index dc496eab1f..0000000000 --- a/api/rest-api/methods/chat/update.md +++ /dev/null @@ -1,2 +0,0 @@ -# Update - diff --git a/api/rest-api/methods/commands/README.md b/api/rest-api/methods/commands/README.md deleted file mode 100644 index 2831b915e0..0000000000 --- a/api/rest-api/methods/commands/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Commands - diff --git a/api/rest-api/methods/commands/get.md b/api/rest-api/methods/commands/get.md deleted file mode 100644 index 30cb91ed48..0000000000 --- a/api/rest-api/methods/commands/get.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get - diff --git a/api/rest-api/methods/commands/list.md b/api/rest-api/methods/commands/list.md deleted file mode 100644 index 3a5f65ad36..0000000000 --- a/api/rest-api/methods/commands/list.md +++ /dev/null @@ -1,2 +0,0 @@ -# List - diff --git a/api/rest-api/methods/commands/preview.md b/api/rest-api/methods/commands/preview.md deleted file mode 100644 index 39e2af2b06..0000000000 --- a/api/rest-api/methods/commands/preview.md +++ /dev/null @@ -1,2 +0,0 @@ -# Preview - diff --git a/api/rest-api/methods/commands/run.md b/api/rest-api/methods/commands/run.md deleted file mode 100644 index d1accf73b4..0000000000 --- a/api/rest-api/methods/commands/run.md +++ /dev/null @@ -1,2 +0,0 @@ -# Run - diff --git a/api/rest-api/methods/custom-emoji/README.md b/api/rest-api/methods/custom-emoji/README.md deleted file mode 100644 index d3df4763c4..0000000000 --- a/api/rest-api/methods/custom-emoji/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Custom Emoji - diff --git a/api/rest-api/methods/custom-emoji/create.md b/api/rest-api/methods/custom-emoji/create.md deleted file mode 100644 index 0997b84e0a..0000000000 --- a/api/rest-api/methods/custom-emoji/create.md +++ /dev/null @@ -1,2 +0,0 @@ -# Create - diff --git a/api/rest-api/methods/custom-emoji/delete.md b/api/rest-api/methods/custom-emoji/delete.md deleted file mode 100644 index 77d030cbbe..0000000000 --- a/api/rest-api/methods/custom-emoji/delete.md +++ /dev/null @@ -1,2 +0,0 @@ -# Delete - diff --git a/api/rest-api/methods/custom-emoji/list.md b/api/rest-api/methods/custom-emoji/list.md deleted file mode 100644 index 3a5f65ad36..0000000000 --- a/api/rest-api/methods/custom-emoji/list.md +++ /dev/null @@ -1,2 +0,0 @@ -# List - diff --git a/api/rest-api/methods/custom-emoji/update.md b/api/rest-api/methods/custom-emoji/update.md deleted file mode 100644 index dc496eab1f..0000000000 --- a/api/rest-api/methods/custom-emoji/update.md +++ /dev/null @@ -1,2 +0,0 @@ -# Update - diff --git a/api/rest-api/methods/custom-sounds/README.md b/api/rest-api/methods/custom-sounds/README.md deleted file mode 100644 index b4e4e15e57..0000000000 --- a/api/rest-api/methods/custom-sounds/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Custom Sounds - diff --git a/api/rest-api/methods/custom-sounds/custom-sounds-list.md b/api/rest-api/methods/custom-sounds/custom-sounds-list.md deleted file mode 100644 index f553130a94..0000000000 --- a/api/rest-api/methods/custom-sounds/custom-sounds-list.md +++ /dev/null @@ -1,2 +0,0 @@ -# Custom Sounds List - diff --git a/api/rest-api/methods/custom-user-status/README.md b/api/rest-api/methods/custom-user-status/README.md deleted file mode 100644 index 69ed49806f..0000000000 --- a/api/rest-api/methods/custom-user-status/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Custom User Status - diff --git a/api/rest-api/methods/custom-user-status/custom-user-status-list.md b/api/rest-api/methods/custom-user-status/custom-user-status-list.md deleted file mode 100644 index 9abbfa87f1..0000000000 --- a/api/rest-api/methods/custom-user-status/custom-user-status-list.md +++ /dev/null @@ -1,2 +0,0 @@ -# Custom User Status List - diff --git a/api/rest-api/methods/groups/README.md b/api/rest-api/methods/groups/README.md deleted file mode 100644 index 0c6409172f..0000000000 --- a/api/rest-api/methods/groups/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Groups - diff --git a/api/rest-api/methods/groups/get-integrations.md b/api/rest-api/methods/groups/get-integrations.md deleted file mode 100644 index 73e0e6f8d9..0000000000 --- a/api/rest-api/methods/groups/get-integrations.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Integrations - diff --git a/api/rest-api/methods/groups/group-add-all.md b/api/rest-api/methods/groups/group-add-all.md deleted file mode 100644 index 3bc8437fac..0000000000 --- a/api/rest-api/methods/groups/group-add-all.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Add All - diff --git a/api/rest-api/methods/groups/group-add-leader.md b/api/rest-api/methods/groups/group-add-leader.md deleted file mode 100644 index 900b2eea3f..0000000000 --- a/api/rest-api/methods/groups/group-add-leader.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Add Leader - diff --git a/api/rest-api/methods/groups/group-add-moderator.md b/api/rest-api/methods/groups/group-add-moderator.md deleted file mode 100644 index 6de1453b98..0000000000 --- a/api/rest-api/methods/groups/group-add-moderator.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Add Moderator - diff --git a/api/rest-api/methods/groups/group-add-owner.md b/api/rest-api/methods/groups/group-add-owner.md deleted file mode 100644 index 4b351f9c4f..0000000000 --- a/api/rest-api/methods/groups/group-add-owner.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Add Owner - diff --git a/api/rest-api/methods/groups/group-archive.md b/api/rest-api/methods/groups/group-archive.md deleted file mode 100644 index a7190fe5c7..0000000000 --- a/api/rest-api/methods/groups/group-archive.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Archive - diff --git a/api/rest-api/methods/groups/group-close.md b/api/rest-api/methods/groups/group-close.md deleted file mode 100644 index fdfb74240c..0000000000 --- a/api/rest-api/methods/groups/group-close.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Close - diff --git a/api/rest-api/methods/groups/group-counters.md b/api/rest-api/methods/groups/group-counters.md deleted file mode 100644 index 2bfb978cbd..0000000000 --- a/api/rest-api/methods/groups/group-counters.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Counters - diff --git a/api/rest-api/methods/groups/group-create.md b/api/rest-api/methods/groups/group-create.md deleted file mode 100644 index a237ba735a..0000000000 --- a/api/rest-api/methods/groups/group-create.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Create - diff --git a/api/rest-api/methods/groups/group-delete.md b/api/rest-api/methods/groups/group-delete.md deleted file mode 100644 index 96d5df74e5..0000000000 --- a/api/rest-api/methods/groups/group-delete.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Delete - diff --git a/api/rest-api/methods/groups/group-history.md b/api/rest-api/methods/groups/group-history.md deleted file mode 100644 index 6c77a6eed5..0000000000 --- a/api/rest-api/methods/groups/group-history.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group History - diff --git a/api/rest-api/methods/groups/group-info.md b/api/rest-api/methods/groups/group-info.md deleted file mode 100644 index 571f8c2f7b..0000000000 --- a/api/rest-api/methods/groups/group-info.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Info - diff --git a/api/rest-api/methods/groups/group-invite.md b/api/rest-api/methods/groups/group-invite.md deleted file mode 100644 index e5b3e9ff5b..0000000000 --- a/api/rest-api/methods/groups/group-invite.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Invite - diff --git a/api/rest-api/methods/groups/group-kick.md b/api/rest-api/methods/groups/group-kick.md deleted file mode 100644 index a88c5b0a92..0000000000 --- a/api/rest-api/methods/groups/group-kick.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Kick - diff --git a/api/rest-api/methods/groups/group-leave.md b/api/rest-api/methods/groups/group-leave.md deleted file mode 100644 index 62078c9f50..0000000000 --- a/api/rest-api/methods/groups/group-leave.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Leave - diff --git a/api/rest-api/methods/groups/group-list-all.md b/api/rest-api/methods/groups/group-list-all.md deleted file mode 100644 index 4ceffd137e..0000000000 --- a/api/rest-api/methods/groups/group-list-all.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group List All - diff --git a/api/rest-api/methods/groups/group-list.md b/api/rest-api/methods/groups/group-list.md deleted file mode 100644 index abbf3eaf9d..0000000000 --- a/api/rest-api/methods/groups/group-list.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group List - diff --git a/api/rest-api/methods/groups/group-members.md b/api/rest-api/methods/groups/group-members.md deleted file mode 100644 index 1c48692b1b..0000000000 --- a/api/rest-api/methods/groups/group-members.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Members - diff --git a/api/rest-api/methods/groups/group-messages.md b/api/rest-api/methods/groups/group-messages.md deleted file mode 100644 index c55043c21a..0000000000 --- a/api/rest-api/methods/groups/group-messages.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group messages - diff --git a/api/rest-api/methods/groups/group-moderators-list.md b/api/rest-api/methods/groups/group-moderators-list.md deleted file mode 100644 index 557bba5002..0000000000 --- a/api/rest-api/methods/groups/group-moderators-list.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Moderators List - diff --git a/api/rest-api/methods/groups/group-online.md b/api/rest-api/methods/groups/group-online.md deleted file mode 100644 index 5a1416497a..0000000000 --- a/api/rest-api/methods/groups/group-online.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Online - diff --git a/api/rest-api/methods/groups/group-open.md b/api/rest-api/methods/groups/group-open.md deleted file mode 100644 index cb49243d5c..0000000000 --- a/api/rest-api/methods/groups/group-open.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Open - diff --git a/api/rest-api/methods/groups/group-remove-leader.md b/api/rest-api/methods/groups/group-remove-leader.md deleted file mode 100644 index 0ac2a3fc29..0000000000 --- a/api/rest-api/methods/groups/group-remove-leader.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Remove Leader - diff --git a/api/rest-api/methods/groups/group-remove-moderator.md b/api/rest-api/methods/groups/group-remove-moderator.md deleted file mode 100644 index 03a609677d..0000000000 --- a/api/rest-api/methods/groups/group-remove-moderator.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Remove Moderator - diff --git a/api/rest-api/methods/groups/group-remove-owner.md b/api/rest-api/methods/groups/group-remove-owner.md deleted file mode 100644 index 76a8a94e7f..0000000000 --- a/api/rest-api/methods/groups/group-remove-owner.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Remove Owner - diff --git a/api/rest-api/methods/groups/group-rename.md b/api/rest-api/methods/groups/group-rename.md deleted file mode 100644 index d06e0ca4e3..0000000000 --- a/api/rest-api/methods/groups/group-rename.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Rename - diff --git a/api/rest-api/methods/groups/group-set-announcement.md b/api/rest-api/methods/groups/group-set-announcement.md deleted file mode 100644 index 28c0ab2364..0000000000 --- a/api/rest-api/methods/groups/group-set-announcement.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Set Announcement - diff --git a/api/rest-api/methods/groups/group-set-custom-fields.md b/api/rest-api/methods/groups/group-set-custom-fields.md deleted file mode 100644 index 441b1ec532..0000000000 --- a/api/rest-api/methods/groups/group-set-custom-fields.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Set Custom Fields - diff --git a/api/rest-api/methods/groups/group-set-description.md b/api/rest-api/methods/groups/group-set-description.md deleted file mode 100644 index 481ce5cc68..0000000000 --- a/api/rest-api/methods/groups/group-set-description.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Set Description - diff --git a/api/rest-api/methods/groups/group-set-purpose.md b/api/rest-api/methods/groups/group-set-purpose.md deleted file mode 100644 index 06f944911c..0000000000 --- a/api/rest-api/methods/groups/group-set-purpose.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Set Purpose - diff --git a/api/rest-api/methods/groups/group-set-read-only.md b/api/rest-api/methods/groups/group-set-read-only.md deleted file mode 100644 index 8f004ba72a..0000000000 --- a/api/rest-api/methods/groups/group-set-read-only.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Set Read Only - diff --git a/api/rest-api/methods/groups/group-set-topic.md b/api/rest-api/methods/groups/group-set-topic.md deleted file mode 100644 index e9c5261977..0000000000 --- a/api/rest-api/methods/groups/group-set-topic.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Set Topic - diff --git a/api/rest-api/methods/groups/group-set-type.md b/api/rest-api/methods/groups/group-set-type.md deleted file mode 100644 index d7de9f025b..0000000000 --- a/api/rest-api/methods/groups/group-set-type.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Set Type - diff --git a/api/rest-api/methods/groups/group-unarchive.md b/api/rest-api/methods/groups/group-unarchive.md deleted file mode 100644 index 1bbc3c5962..0000000000 --- a/api/rest-api/methods/groups/group-unarchive.md +++ /dev/null @@ -1,2 +0,0 @@ -# Group Unarchive - diff --git a/api/rest-api/methods/groups/groups-files.md b/api/rest-api/methods/groups/groups-files.md deleted file mode 100644 index 6230c642e1..0000000000 --- a/api/rest-api/methods/groups/groups-files.md +++ /dev/null @@ -1,2 +0,0 @@ -# Groups Files - diff --git a/api/rest-api/methods/groups/groups-roles.md b/api/rest-api/methods/groups/groups-roles.md deleted file mode 100644 index ea92446748..0000000000 --- a/api/rest-api/methods/groups/groups-roles.md +++ /dev/null @@ -1,2 +0,0 @@ -# Groups Roles - diff --git a/api/rest-api/methods/im/README.md b/api/rest-api/methods/im/README.md deleted file mode 100644 index 08d4e56ff5..0000000000 --- a/api/rest-api/methods/im/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# IM - diff --git a/api/rest-api/methods/im/close.md b/api/rest-api/methods/im/close.md deleted file mode 100644 index cba1bd0eb6..0000000000 --- a/api/rest-api/methods/im/close.md +++ /dev/null @@ -1,2 +0,0 @@ -# Close - diff --git a/api/rest-api/methods/im/counters.md b/api/rest-api/methods/im/counters.md deleted file mode 100644 index f2cfd41ad5..0000000000 --- a/api/rest-api/methods/im/counters.md +++ /dev/null @@ -1,2 +0,0 @@ -# Counters - diff --git a/api/rest-api/methods/im/create.md b/api/rest-api/methods/im/create.md deleted file mode 100644 index 0997b84e0a..0000000000 --- a/api/rest-api/methods/im/create.md +++ /dev/null @@ -1,2 +0,0 @@ -# Create - diff --git a/api/rest-api/methods/im/files.md b/api/rest-api/methods/im/files.md deleted file mode 100644 index b8d48191ef..0000000000 --- a/api/rest-api/methods/im/files.md +++ /dev/null @@ -1,2 +0,0 @@ -# Files - diff --git a/api/rest-api/methods/im/history.md b/api/rest-api/methods/im/history.md deleted file mode 100644 index e0e57d3b3b..0000000000 --- a/api/rest-api/methods/im/history.md +++ /dev/null @@ -1,2 +0,0 @@ -# History - diff --git a/api/rest-api/methods/im/list-everyone.md b/api/rest-api/methods/im/list-everyone.md deleted file mode 100644 index 4d5f8af941..0000000000 --- a/api/rest-api/methods/im/list-everyone.md +++ /dev/null @@ -1,2 +0,0 @@ -# List Everyone - diff --git a/api/rest-api/methods/im/list.md b/api/rest-api/methods/im/list.md deleted file mode 100644 index 3a5f65ad36..0000000000 --- a/api/rest-api/methods/im/list.md +++ /dev/null @@ -1,2 +0,0 @@ -# List - diff --git a/api/rest-api/methods/im/members.md b/api/rest-api/methods/im/members.md deleted file mode 100644 index 6770fb5981..0000000000 --- a/api/rest-api/methods/im/members.md +++ /dev/null @@ -1,2 +0,0 @@ -# Members - diff --git a/api/rest-api/methods/im/messages-others.md b/api/rest-api/methods/im/messages-others.md deleted file mode 100644 index aeae0feb49..0000000000 --- a/api/rest-api/methods/im/messages-others.md +++ /dev/null @@ -1,2 +0,0 @@ -# Messages Others - diff --git a/api/rest-api/methods/im/messages.md b/api/rest-api/methods/im/messages.md deleted file mode 100644 index 15939643f4..0000000000 --- a/api/rest-api/methods/im/messages.md +++ /dev/null @@ -1,2 +0,0 @@ -# Messages - diff --git a/api/rest-api/methods/im/open.md b/api/rest-api/methods/im/open.md deleted file mode 100644 index 3b4259994c..0000000000 --- a/api/rest-api/methods/im/open.md +++ /dev/null @@ -1,2 +0,0 @@ -# Open - diff --git a/api/rest-api/methods/im/set-topic.md b/api/rest-api/methods/im/set-topic.md deleted file mode 100644 index 52a78db7ff..0000000000 --- a/api/rest-api/methods/im/set-topic.md +++ /dev/null @@ -1,2 +0,0 @@ -# Set Topic - diff --git a/api/rest-api/methods/integration/README.md b/api/rest-api/methods/integration/README.md deleted file mode 100644 index 9ea70c65b0..0000000000 --- a/api/rest-api/methods/integration/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Integration - diff --git a/api/rest-api/methods/integration/create.md b/api/rest-api/methods/integration/create.md deleted file mode 100644 index 0997b84e0a..0000000000 --- a/api/rest-api/methods/integration/create.md +++ /dev/null @@ -1,2 +0,0 @@ -# Create - diff --git a/api/rest-api/methods/integration/get.md b/api/rest-api/methods/integration/get.md deleted file mode 100644 index 30cb91ed48..0000000000 --- a/api/rest-api/methods/integration/get.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get - diff --git a/api/rest-api/methods/integration/history.md b/api/rest-api/methods/integration/history.md deleted file mode 100644 index e0e57d3b3b..0000000000 --- a/api/rest-api/methods/integration/history.md +++ /dev/null @@ -1,2 +0,0 @@ -# History - diff --git a/api/rest-api/methods/integration/list.md b/api/rest-api/methods/integration/list.md deleted file mode 100644 index 3a5f65ad36..0000000000 --- a/api/rest-api/methods/integration/list.md +++ /dev/null @@ -1,2 +0,0 @@ -# List - diff --git a/api/rest-api/methods/integration/remove.md b/api/rest-api/methods/integration/remove.md deleted file mode 100644 index 69df8d4242..0000000000 --- a/api/rest-api/methods/integration/remove.md +++ /dev/null @@ -1,2 +0,0 @@ -# Remove - diff --git a/api/rest-api/methods/invite/README.md b/api/rest-api/methods/invite/README.md deleted file mode 100644 index 585ceae94a..0000000000 --- a/api/rest-api/methods/invite/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Invite - diff --git a/api/rest-api/methods/invite/find-or-create-invite.md b/api/rest-api/methods/invite/find-or-create-invite.md deleted file mode 100644 index e618b6381b..0000000000 --- a/api/rest-api/methods/invite/find-or-create-invite.md +++ /dev/null @@ -1,2 +0,0 @@ -# Find or Create Invite - diff --git a/api/rest-api/methods/invite/list-invites.md b/api/rest-api/methods/invite/list-invites.md deleted file mode 100644 index b93374cd89..0000000000 --- a/api/rest-api/methods/invite/list-invites.md +++ /dev/null @@ -1,2 +0,0 @@ -# List Invites - diff --git a/api/rest-api/methods/invite/remove-invite.md b/api/rest-api/methods/invite/remove-invite.md deleted file mode 100644 index 2aa0cb70db..0000000000 --- a/api/rest-api/methods/invite/remove-invite.md +++ /dev/null @@ -1,2 +0,0 @@ -# Remove Invite - diff --git a/api/rest-api/methods/invite/use-invite-token.md b/api/rest-api/methods/invite/use-invite-token.md deleted file mode 100644 index 272dbac367..0000000000 --- a/api/rest-api/methods/invite/use-invite-token.md +++ /dev/null @@ -1,2 +0,0 @@ -# Use Invite Token - diff --git a/api/rest-api/methods/invite/validate-invite-token.md b/api/rest-api/methods/invite/validate-invite-token.md deleted file mode 100644 index b61584617c..0000000000 --- a/api/rest-api/methods/invite/validate-invite-token.md +++ /dev/null @@ -1,2 +0,0 @@ -# Validate Invite Token - diff --git a/api/rest-api/methods/miscellaneous/README.md b/api/rest-api/methods/miscellaneous/README.md deleted file mode 100644 index 57545924af..0000000000 --- a/api/rest-api/methods/miscellaneous/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Miscellaneous - diff --git a/api/rest-api/methods/miscellaneous/directory.md b/api/rest-api/methods/miscellaneous/directory.md deleted file mode 100644 index 1ee8fad8c6..0000000000 --- a/api/rest-api/methods/miscellaneous/directory.md +++ /dev/null @@ -1,2 +0,0 @@ -# Directory - diff --git a/api/rest-api/methods/miscellaneous/info.md b/api/rest-api/methods/miscellaneous/info.md deleted file mode 100644 index 2bb2cc51ba..0000000000 --- a/api/rest-api/methods/miscellaneous/info.md +++ /dev/null @@ -1,2 +0,0 @@ -# Info - diff --git a/api/rest-api/methods/miscellaneous/shield-svg.md b/api/rest-api/methods/miscellaneous/shield-svg.md deleted file mode 100644 index c34957e697..0000000000 --- a/api/rest-api/methods/miscellaneous/shield-svg.md +++ /dev/null @@ -1,2 +0,0 @@ -# Shield SVG - diff --git a/api/rest-api/methods/miscellaneous/spotlight.md b/api/rest-api/methods/miscellaneous/spotlight.md deleted file mode 100644 index a33f82b73a..0000000000 --- a/api/rest-api/methods/miscellaneous/spotlight.md +++ /dev/null @@ -1,2 +0,0 @@ -# Spotlight - diff --git a/api/rest-api/methods/miscellaneous/statistics-list.md b/api/rest-api/methods/miscellaneous/statistics-list.md deleted file mode 100644 index 45189043c9..0000000000 --- a/api/rest-api/methods/miscellaneous/statistics-list.md +++ /dev/null @@ -1,2 +0,0 @@ -# Statistics List - diff --git a/api/rest-api/methods/miscellaneous/statistics.md b/api/rest-api/methods/miscellaneous/statistics.md deleted file mode 100644 index 5bc8578756..0000000000 --- a/api/rest-api/methods/miscellaneous/statistics.md +++ /dev/null @@ -1,2 +0,0 @@ -# Statistics - diff --git a/api/rest-api/methods/oauthapps/README.md b/api/rest-api/methods/oauthapps/README.md deleted file mode 100644 index 5296c86e44..0000000000 --- a/api/rest-api/methods/oauthapps/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# OAuthApps - diff --git a/api/rest-api/methods/oauthapps/get.md b/api/rest-api/methods/oauthapps/get.md deleted file mode 100644 index 30cb91ed48..0000000000 --- a/api/rest-api/methods/oauthapps/get.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get - diff --git a/api/rest-api/methods/oauthapps/list.md b/api/rest-api/methods/oauthapps/list.md deleted file mode 100644 index 3a5f65ad36..0000000000 --- a/api/rest-api/methods/oauthapps/list.md +++ /dev/null @@ -1,2 +0,0 @@ -# List - diff --git a/api/rest-api/methods/omnichannel/README.md b/api/rest-api/methods/omnichannel/README.md deleted file mode 100644 index dc640ef2c1..0000000000 --- a/api/rest-api/methods/omnichannel/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Omnichannel - diff --git a/api/rest-api/methods/omnichannel/agent-info.md b/api/rest-api/methods/omnichannel/agent-info.md deleted file mode 100644 index e7e19728d5..0000000000 --- a/api/rest-api/methods/omnichannel/agent-info.md +++ /dev/null @@ -1,2 +0,0 @@ -# Agent Info - diff --git a/api/rest-api/methods/omnichannel/agents-available-for-service-time.md b/api/rest-api/methods/omnichannel/agents-available-for-service-time.md deleted file mode 100644 index 330540166a..0000000000 --- a/api/rest-api/methods/omnichannel/agents-available-for-service-time.md +++ /dev/null @@ -1,2 +0,0 @@ -# Agents available for service time - diff --git a/api/rest-api/methods/omnichannel/agents-average-service-time.md b/api/rest-api/methods/omnichannel/agents-average-service-time.md deleted file mode 100644 index 73127cb37b..0000000000 --- a/api/rest-api/methods/omnichannel/agents-average-service-time.md +++ /dev/null @@ -1,2 +0,0 @@ -# Agents average service time - diff --git a/api/rest-api/methods/omnichannel/agents-total-service-time.md b/api/rest-api/methods/omnichannel/agents-total-service-time.md deleted file mode 100644 index 81d64fd3ba..0000000000 --- a/api/rest-api/methods/omnichannel/agents-total-service-time.md +++ /dev/null @@ -1,2 +0,0 @@ -# Agents total service time - diff --git a/api/rest-api/methods/omnichannel/appearance.md b/api/rest-api/methods/omnichannel/appearance.md deleted file mode 100644 index fff39a42df..0000000000 --- a/api/rest-api/methods/omnichannel/appearance.md +++ /dev/null @@ -1,2 +0,0 @@ -# Appearance - diff --git a/api/rest-api/methods/omnichannel/average-chat-duration-by-department.md b/api/rest-api/methods/omnichannel/average-chat-duration-by-department.md deleted file mode 100644 index 9f46490f69..0000000000 --- a/api/rest-api/methods/omnichannel/average-chat-duration-by-department.md +++ /dev/null @@ -1,2 +0,0 @@ -# Average chat duration by department - diff --git a/api/rest-api/methods/omnichannel/average-waiting-time-by-department.md b/api/rest-api/methods/omnichannel/average-waiting-time-by-department.md deleted file mode 100644 index 48a93c843f..0000000000 --- a/api/rest-api/methods/omnichannel/average-waiting-time-by-department.md +++ /dev/null @@ -1,2 +0,0 @@ -# Average waiting time by department - diff --git a/api/rest-api/methods/omnichannel/config.md b/api/rest-api/methods/omnichannel/config.md deleted file mode 100644 index fc01198639..0000000000 --- a/api/rest-api/methods/omnichannel/config.md +++ /dev/null @@ -1,2 +0,0 @@ -# Config - diff --git a/api/rest-api/methods/omnichannel/custom-field.md b/api/rest-api/methods/omnichannel/custom-field.md deleted file mode 100644 index e664a33a6d..0000000000 --- a/api/rest-api/methods/omnichannel/custom-field.md +++ /dev/null @@ -1,2 +0,0 @@ -# Custom Field - diff --git a/api/rest-api/methods/omnichannel/department.md b/api/rest-api/methods/omnichannel/department.md deleted file mode 100644 index 4ad8c949ce..0000000000 --- a/api/rest-api/methods/omnichannel/department.md +++ /dev/null @@ -1,2 +0,0 @@ -# Department - diff --git a/api/rest-api/methods/omnichannel/inquiries-list.md b/api/rest-api/methods/omnichannel/inquiries-list.md deleted file mode 100644 index 861b08f9ac..0000000000 --- a/api/rest-api/methods/omnichannel/inquiries-list.md +++ /dev/null @@ -1,2 +0,0 @@ -# Inquiries List - diff --git a/api/rest-api/methods/omnichannel/integrations-settings.md b/api/rest-api/methods/omnichannel/integrations-settings.md deleted file mode 100644 index 4d708b72e2..0000000000 --- a/api/rest-api/methods/omnichannel/integrations-settings.md +++ /dev/null @@ -1,2 +0,0 @@ -# Integrations Settings - diff --git a/api/rest-api/methods/omnichannel/message.md b/api/rest-api/methods/omnichannel/message.md deleted file mode 100644 index 2c462864e6..0000000000 --- a/api/rest-api/methods/omnichannel/message.md +++ /dev/null @@ -1,2 +0,0 @@ -# Message - diff --git a/api/rest-api/methods/omnichannel/office-hours.md b/api/rest-api/methods/omnichannel/office-hours.md deleted file mode 100644 index 466108eed3..0000000000 --- a/api/rest-api/methods/omnichannel/office-hours.md +++ /dev/null @@ -1,2 +0,0 @@ -# Office Hours - diff --git a/api/rest-api/methods/omnichannel/percentage-of-abandoned-chats-by-department.md b/api/rest-api/methods/omnichannel/percentage-of-abandoned-chats-by-department.md deleted file mode 100644 index eba76638f0..0000000000 --- a/api/rest-api/methods/omnichannel/percentage-of-abandoned-chats-by-department.md +++ /dev/null @@ -1,2 +0,0 @@ -# Percentage of abandoned chats by department - diff --git a/api/rest-api/methods/omnichannel/queue.md b/api/rest-api/methods/omnichannel/queue.md deleted file mode 100644 index 8b596a2f38..0000000000 --- a/api/rest-api/methods/omnichannel/queue.md +++ /dev/null @@ -1,2 +0,0 @@ -# Queue - diff --git a/api/rest-api/methods/omnichannel/room.md b/api/rest-api/methods/omnichannel/room.md deleted file mode 100644 index fc7032b280..0000000000 --- a/api/rest-api/methods/omnichannel/room.md +++ /dev/null @@ -1,2 +0,0 @@ -# Room - diff --git a/api/rest-api/methods/omnichannel/rooms.md b/api/rest-api/methods/omnichannel/rooms.md deleted file mode 100644 index 5a53c3fd72..0000000000 --- a/api/rest-api/methods/omnichannel/rooms.md +++ /dev/null @@ -1,2 +0,0 @@ -# Rooms - diff --git a/api/rest-api/methods/omnichannel/sms-incoming.md b/api/rest-api/methods/omnichannel/sms-incoming.md deleted file mode 100644 index 80cc5a7c92..0000000000 --- a/api/rest-api/methods/omnichannel/sms-incoming.md +++ /dev/null @@ -1,2 +0,0 @@ -# SMS Incoming - diff --git a/api/rest-api/methods/omnichannel/total-abandoned-chats-by-department.md b/api/rest-api/methods/omnichannel/total-abandoned-chats-by-department.md deleted file mode 100644 index 67d8503f71..0000000000 --- a/api/rest-api/methods/omnichannel/total-abandoned-chats-by-department.md +++ /dev/null @@ -1,2 +0,0 @@ -# Total abandoned chats by department - diff --git a/api/rest-api/methods/omnichannel/total-of-transferred-chats-by-department.md b/api/rest-api/methods/omnichannel/total-of-transferred-chats-by-department.md deleted file mode 100644 index 1f5412b071..0000000000 --- a/api/rest-api/methods/omnichannel/total-of-transferred-chats-by-department.md +++ /dev/null @@ -1,2 +0,0 @@ -# Total of transferred chats by department - diff --git a/api/rest-api/methods/omnichannel/total-service-time-by-department.md b/api/rest-api/methods/omnichannel/total-service-time-by-department.md deleted file mode 100644 index 9dfa5638f2..0000000000 --- a/api/rest-api/methods/omnichannel/total-service-time-by-department.md +++ /dev/null @@ -1,2 +0,0 @@ -# Total service time by department - diff --git a/api/rest-api/methods/omnichannel/transcript.md b/api/rest-api/methods/omnichannel/transcript.md deleted file mode 100644 index bb36b1f9e5..0000000000 --- a/api/rest-api/methods/omnichannel/transcript.md +++ /dev/null @@ -1,2 +0,0 @@ -# Transcript - diff --git a/api/rest-api/methods/omnichannel/triggers.md b/api/rest-api/methods/omnichannel/triggers.md deleted file mode 100644 index e92ff692ff..0000000000 --- a/api/rest-api/methods/omnichannel/triggers.md +++ /dev/null @@ -1,2 +0,0 @@ -# Triggers - diff --git a/api/rest-api/methods/omnichannel/users.md b/api/rest-api/methods/omnichannel/users.md deleted file mode 100644 index c204f3251e..0000000000 --- a/api/rest-api/methods/omnichannel/users.md +++ /dev/null @@ -1,2 +0,0 @@ -# Users - diff --git a/api/rest-api/methods/omnichannel/video-call.md b/api/rest-api/methods/omnichannel/video-call.md deleted file mode 100644 index 24eb30d551..0000000000 --- a/api/rest-api/methods/omnichannel/video-call.md +++ /dev/null @@ -1,2 +0,0 @@ -# Video Call - diff --git a/api/rest-api/methods/omnichannel/visitors.md b/api/rest-api/methods/omnichannel/visitors.md deleted file mode 100644 index f3e82db29d..0000000000 --- a/api/rest-api/methods/omnichannel/visitors.md +++ /dev/null @@ -1,2 +0,0 @@ -# Visitors - diff --git a/api/rest-api/methods/permissions/README.md b/api/rest-api/methods/permissions/README.md deleted file mode 100644 index e108abb554..0000000000 --- a/api/rest-api/methods/permissions/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Permissions - diff --git a/api/rest-api/methods/permissions/list-all.md b/api/rest-api/methods/permissions/list-all.md deleted file mode 100644 index ede0e269df..0000000000 --- a/api/rest-api/methods/permissions/list-all.md +++ /dev/null @@ -1,2 +0,0 @@ -# List All - diff --git a/api/rest-api/methods/permissions/update.md b/api/rest-api/methods/permissions/update.md deleted file mode 100644 index dc496eab1f..0000000000 --- a/api/rest-api/methods/permissions/update.md +++ /dev/null @@ -1,2 +0,0 @@ -# Update - diff --git a/api/rest-api/methods/push-token/README.md b/api/rest-api/methods/push-token/README.md deleted file mode 100644 index bc7fce048b..0000000000 --- a/api/rest-api/methods/push-token/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Push Token - diff --git a/api/rest-api/methods/push-token/delete.md b/api/rest-api/methods/push-token/delete.md deleted file mode 100644 index 77d030cbbe..0000000000 --- a/api/rest-api/methods/push-token/delete.md +++ /dev/null @@ -1,2 +0,0 @@ -# Delete - diff --git a/api/rest-api/methods/push-token/post.md b/api/rest-api/methods/push-token/post.md deleted file mode 100644 index 303cfd8b9e..0000000000 --- a/api/rest-api/methods/push-token/post.md +++ /dev/null @@ -1,2 +0,0 @@ -# Post - diff --git a/api/rest-api/methods/roles/README.md b/api/rest-api/methods/roles/README.md deleted file mode 100644 index 373e1525e9..0000000000 --- a/api/rest-api/methods/roles/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Roles - diff --git a/api/rest-api/methods/roles/role-addusertorole.md b/api/rest-api/methods/roles/role-addusertorole.md deleted file mode 100644 index 427993711d..0000000000 --- a/api/rest-api/methods/roles/role-addusertorole.md +++ /dev/null @@ -1,2 +0,0 @@ -# Role AddUserToRole - diff --git a/api/rest-api/methods/roles/role-create.md b/api/rest-api/methods/roles/role-create.md deleted file mode 100644 index 421584fbd7..0000000000 --- a/api/rest-api/methods/roles/role-create.md +++ /dev/null @@ -1,2 +0,0 @@ -# Role Create - diff --git a/api/rest-api/methods/roles/role-get-users-in-role.md b/api/rest-api/methods/roles/role-get-users-in-role.md deleted file mode 100644 index bb4f12dc83..0000000000 --- a/api/rest-api/methods/roles/role-get-users-in-role.md +++ /dev/null @@ -1,2 +0,0 @@ -# Role Get Users In Role - diff --git a/api/rest-api/methods/roles/role-list.md b/api/rest-api/methods/roles/role-list.md deleted file mode 100644 index f493af0aba..0000000000 --- a/api/rest-api/methods/roles/role-list.md +++ /dev/null @@ -1,2 +0,0 @@ -# Role List - diff --git a/api/rest-api/methods/roles/role-sync.md b/api/rest-api/methods/roles/role-sync.md deleted file mode 100644 index bcc89ca53c..0000000000 --- a/api/rest-api/methods/roles/role-sync.md +++ /dev/null @@ -1,2 +0,0 @@ -# Role Sync - diff --git a/api/rest-api/methods/rooms/README.md b/api/rest-api/methods/rooms/README.md deleted file mode 100644 index 5a53c3fd72..0000000000 --- a/api/rest-api/methods/rooms/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Rooms - diff --git a/api/rest-api/methods/rooms/admin-rooms.md b/api/rest-api/methods/rooms/admin-rooms.md deleted file mode 100644 index 34d8261d22..0000000000 --- a/api/rest-api/methods/rooms/admin-rooms.md +++ /dev/null @@ -1,2 +0,0 @@ -# Admin Rooms - diff --git a/api/rest-api/methods/rooms/clean-history.md b/api/rest-api/methods/rooms/clean-history.md deleted file mode 100644 index 40eaeb76fe..0000000000 --- a/api/rest-api/methods/rooms/clean-history.md +++ /dev/null @@ -1,2 +0,0 @@ -# Clean History - diff --git a/api/rest-api/methods/rooms/create-discussion.md b/api/rest-api/methods/rooms/create-discussion.md deleted file mode 100644 index 00683fe96c..0000000000 --- a/api/rest-api/methods/rooms/create-discussion.md +++ /dev/null @@ -1,2 +0,0 @@ -# Create Discussion - diff --git a/api/rest-api/methods/rooms/favorite.md b/api/rest-api/methods/rooms/favorite.md deleted file mode 100644 index c87ac85bac..0000000000 --- a/api/rest-api/methods/rooms/favorite.md +++ /dev/null @@ -1,2 +0,0 @@ -# Favorite - diff --git a/api/rest-api/methods/rooms/get-discussions.md b/api/rest-api/methods/rooms/get-discussions.md deleted file mode 100644 index 7b81315806..0000000000 --- a/api/rest-api/methods/rooms/get-discussions.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Discussions - diff --git a/api/rest-api/methods/rooms/get.md b/api/rest-api/methods/rooms/get.md deleted file mode 100644 index 30cb91ed48..0000000000 --- a/api/rest-api/methods/rooms/get.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get - diff --git a/api/rest-api/methods/rooms/leave.md b/api/rest-api/methods/rooms/leave.md deleted file mode 100644 index 3bc6278451..0000000000 --- a/api/rest-api/methods/rooms/leave.md +++ /dev/null @@ -1,2 +0,0 @@ -# Leave - diff --git a/api/rest-api/methods/rooms/rooms-info.md b/api/rest-api/methods/rooms/rooms-info.md deleted file mode 100644 index 24ef5601a7..0000000000 --- a/api/rest-api/methods/rooms/rooms-info.md +++ /dev/null @@ -1,2 +0,0 @@ -# Rooms Info - diff --git a/api/rest-api/methods/rooms/save-notification.md b/api/rest-api/methods/rooms/save-notification.md deleted file mode 100644 index 7d9d2c81cb..0000000000 --- a/api/rest-api/methods/rooms/save-notification.md +++ /dev/null @@ -1,2 +0,0 @@ -# Save Notification - diff --git a/api/rest-api/methods/rooms/upload.md b/api/rest-api/methods/rooms/upload.md deleted file mode 100644 index c204396c14..0000000000 --- a/api/rest-api/methods/rooms/upload.md +++ /dev/null @@ -1,2 +0,0 @@ -# Upload - diff --git a/api/rest-api/methods/settings/README.md b/api/rest-api/methods/settings/README.md deleted file mode 100644 index 29e82f8cf1..0000000000 --- a/api/rest-api/methods/settings/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Settings - diff --git a/api/rest-api/methods/settings/oauth.md b/api/rest-api/methods/settings/oauth.md deleted file mode 100644 index d3595cb66e..0000000000 --- a/api/rest-api/methods/settings/oauth.md +++ /dev/null @@ -1,2 +0,0 @@ -# oAuth - diff --git a/api/rest-api/methods/settings/private-settings.md b/api/rest-api/methods/settings/private-settings.md deleted file mode 100644 index fc55fb31a9..0000000000 --- a/api/rest-api/methods/settings/private-settings.md +++ /dev/null @@ -1,2 +0,0 @@ -# Private Settings - diff --git a/api/rest-api/methods/settings/public-settings-get.md b/api/rest-api/methods/settings/public-settings-get.md deleted file mode 100644 index 33ac86eb3c..0000000000 --- a/api/rest-api/methods/settings/public-settings-get.md +++ /dev/null @@ -1,2 +0,0 @@ -# Public Settings Get - diff --git a/api/rest-api/methods/settings/service-configurations-get.md b/api/rest-api/methods/settings/service-configurations-get.md deleted file mode 100644 index b4d55edd17..0000000000 --- a/api/rest-api/methods/settings/service-configurations-get.md +++ /dev/null @@ -1,2 +0,0 @@ -# Service Configurations Get - diff --git a/api/rest-api/methods/settings/settings-get.md b/api/rest-api/methods/settings/settings-get.md deleted file mode 100644 index 8696defccc..0000000000 --- a/api/rest-api/methods/settings/settings-get.md +++ /dev/null @@ -1,2 +0,0 @@ -# Settings Get - diff --git a/api/rest-api/methods/settings/settings-update.md b/api/rest-api/methods/settings/settings-update.md deleted file mode 100644 index ff39d24d2d..0000000000 --- a/api/rest-api/methods/settings/settings-update.md +++ /dev/null @@ -1,2 +0,0 @@ -# Settings Update - diff --git a/api/rest-api/methods/subscriptions/README.md b/api/rest-api/methods/subscriptions/README.md deleted file mode 100644 index 3626db8ee7..0000000000 --- a/api/rest-api/methods/subscriptions/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Subscriptions - diff --git a/api/rest-api/methods/subscriptions/get-one.md b/api/rest-api/methods/subscriptions/get-one.md deleted file mode 100644 index 01198b725d..0000000000 --- a/api/rest-api/methods/subscriptions/get-one.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get One - diff --git a/api/rest-api/methods/subscriptions/get.md b/api/rest-api/methods/subscriptions/get.md deleted file mode 100644 index 30cb91ed48..0000000000 --- a/api/rest-api/methods/subscriptions/get.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get - diff --git a/api/rest-api/methods/subscriptions/read.md b/api/rest-api/methods/subscriptions/read.md deleted file mode 100644 index da75875d79..0000000000 --- a/api/rest-api/methods/subscriptions/read.md +++ /dev/null @@ -1,2 +0,0 @@ -# Read - diff --git a/api/rest-api/methods/subscriptions/unread.md b/api/rest-api/methods/subscriptions/unread.md deleted file mode 100644 index 8fad0f8846..0000000000 --- a/api/rest-api/methods/subscriptions/unread.md +++ /dev/null @@ -1,2 +0,0 @@ -# Unread - diff --git a/api/rest-api/methods/users/README.md b/api/rest-api/methods/users/README.md deleted file mode 100644 index c204f3251e..0000000000 --- a/api/rest-api/methods/users/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Users - diff --git a/api/rest-api/methods/users/create-token.md b/api/rest-api/methods/users/create-token.md deleted file mode 100644 index 4197920231..0000000000 --- a/api/rest-api/methods/users/create-token.md +++ /dev/null @@ -1,2 +0,0 @@ -# Create Token - diff --git a/api/rest-api/methods/users/create.md b/api/rest-api/methods/users/create.md deleted file mode 100644 index 0997b84e0a..0000000000 --- a/api/rest-api/methods/users/create.md +++ /dev/null @@ -1,2 +0,0 @@ -# Create - diff --git a/api/rest-api/methods/users/delete-1.md b/api/rest-api/methods/users/delete-1.md deleted file mode 100644 index 77d030cbbe..0000000000 --- a/api/rest-api/methods/users/delete-1.md +++ /dev/null @@ -1,2 +0,0 @@ -# Delete - diff --git a/api/rest-api/methods/users/delete-own-account.md b/api/rest-api/methods/users/delete-own-account.md deleted file mode 100644 index 77dc46957e..0000000000 --- a/api/rest-api/methods/users/delete-own-account.md +++ /dev/null @@ -1,2 +0,0 @@ -# Delete Own Account - diff --git a/api/rest-api/methods/users/delete.md b/api/rest-api/methods/users/delete.md deleted file mode 100644 index 77d030cbbe..0000000000 --- a/api/rest-api/methods/users/delete.md +++ /dev/null @@ -1,2 +0,0 @@ -# Delete - diff --git a/api/rest-api/methods/users/forgot-password.md b/api/rest-api/methods/users/forgot-password.md deleted file mode 100644 index c3f423e318..0000000000 --- a/api/rest-api/methods/users/forgot-password.md +++ /dev/null @@ -1,2 +0,0 @@ -# Forgot Password - diff --git a/api/rest-api/methods/users/generate-personal-access-token.md b/api/rest-api/methods/users/generate-personal-access-token.md deleted file mode 100644 index cb273d351f..0000000000 --- a/api/rest-api/methods/users/generate-personal-access-token.md +++ /dev/null @@ -1,2 +0,0 @@ -# Generate Personal Access Token - diff --git a/api/rest-api/methods/users/get-avatar.md b/api/rest-api/methods/users/get-avatar.md deleted file mode 100644 index c3648eb799..0000000000 --- a/api/rest-api/methods/users/get-avatar.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Avatar - diff --git a/api/rest-api/methods/users/get-personal-access-tokens.md b/api/rest-api/methods/users/get-personal-access-tokens.md deleted file mode 100644 index 74f97e1e2a..0000000000 --- a/api/rest-api/methods/users/get-personal-access-tokens.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Personal Access Tokens - diff --git a/api/rest-api/methods/users/get-preferences.md b/api/rest-api/methods/users/get-preferences.md deleted file mode 100644 index 4c15482261..0000000000 --- a/api/rest-api/methods/users/get-preferences.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Preferences - diff --git a/api/rest-api/methods/users/get-presence.md b/api/rest-api/methods/users/get-presence.md deleted file mode 100644 index bab70b03c4..0000000000 --- a/api/rest-api/methods/users/get-presence.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Presence - diff --git a/api/rest-api/methods/users/get-status.md b/api/rest-api/methods/users/get-status.md deleted file mode 100644 index 45a1c38563..0000000000 --- a/api/rest-api/methods/users/get-status.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Status - diff --git a/api/rest-api/methods/users/get-username-suggestion.md b/api/rest-api/methods/users/get-username-suggestion.md deleted file mode 100644 index 48850bd31e..0000000000 --- a/api/rest-api/methods/users/get-username-suggestion.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get Username Suggestion - diff --git a/api/rest-api/methods/users/info.md b/api/rest-api/methods/users/info.md deleted file mode 100644 index 2bb2cc51ba..0000000000 --- a/api/rest-api/methods/users/info.md +++ /dev/null @@ -1,2 +0,0 @@ -# Info - diff --git a/api/rest-api/methods/users/list.md b/api/rest-api/methods/users/list.md deleted file mode 100644 index 3a5f65ad36..0000000000 --- a/api/rest-api/methods/users/list.md +++ /dev/null @@ -1,2 +0,0 @@ -# List - diff --git a/api/rest-api/methods/users/regenerate-personal-access-token.md b/api/rest-api/methods/users/regenerate-personal-access-token.md deleted file mode 100644 index 7713dcee45..0000000000 --- a/api/rest-api/methods/users/regenerate-personal-access-token.md +++ /dev/null @@ -1,2 +0,0 @@ -# Regenerate Personal Access Token - diff --git a/api/rest-api/methods/users/register-1.md b/api/rest-api/methods/users/register-1.md deleted file mode 100644 index 481e6a5d51..0000000000 --- a/api/rest-api/methods/users/register-1.md +++ /dev/null @@ -1,2 +0,0 @@ -# Register - diff --git a/api/rest-api/methods/users/register.md b/api/rest-api/methods/users/register.md deleted file mode 100644 index 481e6a5d51..0000000000 --- a/api/rest-api/methods/users/register.md +++ /dev/null @@ -1,2 +0,0 @@ -# Register - diff --git a/api/rest-api/methods/users/remove-personal-access-token.md b/api/rest-api/methods/users/remove-personal-access-token.md deleted file mode 100644 index a5c21f549f..0000000000 --- a/api/rest-api/methods/users/remove-personal-access-token.md +++ /dev/null @@ -1,2 +0,0 @@ -# Remove Personal Access Token - diff --git a/api/rest-api/methods/users/request-data-download.md b/api/rest-api/methods/users/request-data-download.md deleted file mode 100644 index caba612be4..0000000000 --- a/api/rest-api/methods/users/request-data-download.md +++ /dev/null @@ -1,2 +0,0 @@ -# Request Data Download - diff --git a/api/rest-api/methods/users/reset-avatar.md b/api/rest-api/methods/users/reset-avatar.md deleted file mode 100644 index a1c085bd94..0000000000 --- a/api/rest-api/methods/users/reset-avatar.md +++ /dev/null @@ -1,2 +0,0 @@ -# Reset Avatar - diff --git a/api/rest-api/methods/users/set-active-status.md b/api/rest-api/methods/users/set-active-status.md deleted file mode 100644 index ed817c0cce..0000000000 --- a/api/rest-api/methods/users/set-active-status.md +++ /dev/null @@ -1,2 +0,0 @@ -# Set Active Status - diff --git a/api/rest-api/methods/users/set-avatar.md b/api/rest-api/methods/users/set-avatar.md deleted file mode 100644 index 6cceffd14f..0000000000 --- a/api/rest-api/methods/users/set-avatar.md +++ /dev/null @@ -1,2 +0,0 @@ -# Set Avatar - diff --git a/api/rest-api/methods/users/set-preferences.md b/api/rest-api/methods/users/set-preferences.md deleted file mode 100644 index 37d0d9a4ed..0000000000 --- a/api/rest-api/methods/users/set-preferences.md +++ /dev/null @@ -1,2 +0,0 @@ -# Set Preferences - diff --git a/api/rest-api/methods/users/set-status.md b/api/rest-api/methods/users/set-status.md deleted file mode 100644 index bba7c95e29..0000000000 --- a/api/rest-api/methods/users/set-status.md +++ /dev/null @@ -1,2 +0,0 @@ -# Set Status - diff --git a/api/rest-api/methods/users/update-own-basic-information.md b/api/rest-api/methods/users/update-own-basic-information.md deleted file mode 100644 index 136c9e60fd..0000000000 --- a/api/rest-api/methods/users/update-own-basic-information.md +++ /dev/null @@ -1,2 +0,0 @@ -# Update own basic information - diff --git a/api/rest-api/methods/users/update.md b/api/rest-api/methods/users/update.md deleted file mode 100644 index dc496eab1f..0000000000 --- a/api/rest-api/methods/users/update.md +++ /dev/null @@ -1,2 +0,0 @@ -# Update - diff --git a/api/rest-api/methods/users/users-presence.md b/api/rest-api/methods/users/users-presence.md deleted file mode 100644 index e0ce0dc39d..0000000000 --- a/api/rest-api/methods/users/users-presence.md +++ /dev/null @@ -1,2 +0,0 @@ -# Users Presence - diff --git a/api/rest-api/methods/video-conference/README.md b/api/rest-api/methods/video-conference/README.md deleted file mode 100644 index 1c545d8704..0000000000 --- a/api/rest-api/methods/video-conference/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Video Conference - diff --git a/api/rest-api/methods/video-conference/update-jitsi-timeout.md b/api/rest-api/methods/video-conference/update-jitsi-timeout.md deleted file mode 100644 index 8c19203aa5..0000000000 --- a/api/rest-api/methods/video-conference/update-jitsi-timeout.md +++ /dev/null @@ -1,2 +0,0 @@ -# Update Jitsi Timeout - diff --git a/api/rest-api/methods/webdav/README.md b/api/rest-api/methods/webdav/README.md deleted file mode 100644 index 6da74d35b3..0000000000 --- a/api/rest-api/methods/webdav/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Webdav - diff --git a/api/rest-api/methods/webdav/get-my-accounts.md b/api/rest-api/methods/webdav/get-my-accounts.md deleted file mode 100644 index b6d7295ddf..0000000000 --- a/api/rest-api/methods/webdav/get-my-accounts.md +++ /dev/null @@ -1,2 +0,0 @@ -# Get My Accounts - diff --git a/api/rest-api/pagination.md b/api/rest-api/pagination.md deleted file mode 100644 index d51aa6cdd6..0000000000 --- a/api/rest-api/pagination.md +++ /dev/null @@ -1,2 +0,0 @@ -# Pagination - diff --git a/api/rest-api/query-and-fields.md b/api/rest-api/query-and-fields.md deleted file mode 100644 index dfa70024b0..0000000000 --- a/api/rest-api/query-and-fields.md +++ /dev/null @@ -1,2 +0,0 @@ -# Query and Fields - diff --git a/api/rest-api/rate-limiter.md b/api/rest-api/rate-limiter.md deleted file mode 100644 index 6237357a05..0000000000 --- a/api/rest-api/rate-limiter.md +++ /dev/null @@ -1,2 +0,0 @@ -# Rate Limiter - diff --git a/api/rest-api/two-factor-authentication.md b/api/rest-api/two-factor-authentication.md deleted file mode 100644 index c6786308f0..0000000000 --- a/api/rest-api/two-factor-authentication.md +++ /dev/null @@ -1,2 +0,0 @@ -# Two Factor Authentication - diff --git a/api/schema-definition-v2-draft/README.md b/api/schema-definition-v2-draft/README.md deleted file mode 100644 index bf50ef91c3..0000000000 --- a/api/schema-definition-v2-draft/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Schema Definition v2 \(Draft\) - diff --git a/api/schema-definition-v2-draft/events/README.md b/api/schema-definition-v2-draft/events/README.md deleted file mode 100644 index 2d7cfb97f9..0000000000 --- a/api/schema-definition-v2-draft/events/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Events - diff --git a/api/schema-definition-v2-draft/events/eventcontext.md b/api/schema-definition-v2-draft/events/eventcontext.md deleted file mode 100644 index 1f4a090150..0000000000 --- a/api/schema-definition-v2-draft/events/eventcontext.md +++ /dev/null @@ -1,2 +0,0 @@ -# EventContext - diff --git a/api/schema-definition-v2-draft/events/ievent/README.md b/api/schema-definition-v2-draft/events/ievent/README.md deleted file mode 100644 index b924e8222f..0000000000 --- a/api/schema-definition-v2-draft/events/ievent/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# IEvent - diff --git a/api/schema-definition-v2-draft/events/ievent/eventcontext.md b/api/schema-definition-v2-draft/events/ievent/eventcontext.md deleted file mode 100644 index 1f4a090150..0000000000 --- a/api/schema-definition-v2-draft/events/ievent/eventcontext.md +++ /dev/null @@ -1,2 +0,0 @@ -# EventContext - diff --git a/api/schema-definition-v2-draft/events/ievent/eventdatadefinition/README.md b/api/schema-definition-v2-draft/events/ievent/eventdatadefinition/README.md deleted file mode 100644 index b6bf141265..0000000000 --- a/api/schema-definition-v2-draft/events/ievent/eventdatadefinition/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# EventDataDefinition - diff --git a/api/schema-definition-v2-draft/events/ievent/eventdatadefinition/ieventdataempty.md b/api/schema-definition-v2-draft/events/ievent/eventdatadefinition/ieventdataempty.md deleted file mode 100644 index aa5100152f..0000000000 --- a/api/schema-definition-v2-draft/events/ievent/eventdatadefinition/ieventdataempty.md +++ /dev/null @@ -1,2 +0,0 @@ -# IEventDataEmpty - diff --git a/api/schema-definition-v2-draft/events/ievent/eventdatadefinition/ieventdataupdate.md b/api/schema-definition-v2-draft/events/ievent/eventdatadefinition/ieventdataupdate.md deleted file mode 100644 index ff08b62247..0000000000 --- a/api/schema-definition-v2-draft/events/ievent/eventdatadefinition/ieventdataupdate.md +++ /dev/null @@ -1,2 +0,0 @@ -# IEventDataUpdate - diff --git a/api/schema-definition-v2-draft/events/ievent/eventmessagetypedescriptor.md b/api/schema-definition-v2-draft/events/ievent/eventmessagetypedescriptor.md deleted file mode 100644 index d838783cf1..0000000000 --- a/api/schema-definition-v2-draft/events/ievent/eventmessagetypedescriptor.md +++ /dev/null @@ -1,2 +0,0 @@ -# EventMessageTypeDescriptor - diff --git a/api/schema-definition-v2-draft/events/ievent/eventtypedescriptor.md b/api/schema-definition-v2-draft/events/ievent/eventtypedescriptor.md deleted file mode 100644 index 67ce34485e..0000000000 --- a/api/schema-definition-v2-draft/events/ievent/eventtypedescriptor.md +++ /dev/null @@ -1,2 +0,0 @@ -# EventTypeDescriptor - diff --git a/api/schema-definition-v2-draft/events/iroomevent/README.md b/api/schema-definition-v2-draft/events/iroomevent/README.md deleted file mode 100644 index bcc0ab2854..0000000000 --- a/api/schema-definition-v2-draft/events/iroomevent/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# IRoomEvent - diff --git a/api/schema-definition-v2-draft/events/iroomevent/roomeventdatadefinition/README.md b/api/schema-definition-v2-draft/events/iroomevent/roomeventdatadefinition/README.md deleted file mode 100644 index e3fd65d624..0000000000 --- a/api/schema-definition-v2-draft/events/iroomevent/roomeventdatadefinition/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# RoomEventDataDefinition - diff --git a/api/schema-definition-v2-draft/events/iroomevent/roomeventdatadefinition/iroomeventdatamessage.md b/api/schema-definition-v2-draft/events/iroomevent/roomeventdatadefinition/iroomeventdatamessage.md deleted file mode 100644 index 2cca3cad39..0000000000 --- a/api/schema-definition-v2-draft/events/iroomevent/roomeventdatadefinition/iroomeventdatamessage.md +++ /dev/null @@ -1,2 +0,0 @@ -# IRoomEventDataMessage - diff --git a/api/schema-definition-v2-draft/events/iroomevent/roomeventdatadefinition/iroomeventdataroom.md b/api/schema-definition-v2-draft/events/iroomevent/roomeventdatadefinition/iroomeventdataroom.md deleted file mode 100644 index ff1becbcae..0000000000 --- a/api/schema-definition-v2-draft/events/iroomevent/roomeventdatadefinition/iroomeventdataroom.md +++ /dev/null @@ -1,2 +0,0 @@ -# IRoomEventDataRoom - diff --git a/api/schema-definition-v2-draft/events/iroomevent/roomeventtypedescriptor.md b/api/schema-definition-v2-draft/events/iroomevent/roomeventtypedescriptor.md deleted file mode 100644 index f78989a495..0000000000 --- a/api/schema-definition-v2-draft/events/iroomevent/roomeventtypedescriptor.md +++ /dev/null @@ -1,2 +0,0 @@ -# RoomEventTypeDescriptor - diff --git a/api/schema-definition-v2-draft/ifederationinfo.md b/api/schema-definition-v2-draft/ifederationinfo.md deleted file mode 100644 index 48e3a3969d..0000000000 --- a/api/schema-definition-v2-draft/ifederationinfo.md +++ /dev/null @@ -1,2 +0,0 @@ -# IFederationInfo - diff --git a/api/schema-definition-v2-draft/imessage.md b/api/schema-definition-v2-draft/imessage.md deleted file mode 100644 index 0d563ade63..0000000000 --- a/api/schema-definition-v2-draft/imessage.md +++ /dev/null @@ -1,2 +0,0 @@ -# IMessage - diff --git a/api/schema-definition-v2-draft/iroom.md b/api/schema-definition-v2-draft/iroom.md deleted file mode 100644 index 06e91f07f2..0000000000 --- a/api/schema-definition-v2-draft/iroom.md +++ /dev/null @@ -1,2 +0,0 @@ -# IRoom - diff --git a/api/schema-definition-v2-draft/iuser.md b/api/schema-definition-v2-draft/iuser.md deleted file mode 100644 index c3b2d83857..0000000000 --- a/api/schema-definition-v2-draft/iuser.md +++ /dev/null @@ -1,2 +0,0 @@ -# IUser - diff --git a/api/schema-definition/README.md b/api/schema-definition/README.md deleted file mode 100644 index f1b5e94b62..0000000000 --- a/api/schema-definition/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Schema Definition - diff --git a/api/schema-definition/message.md b/api/schema-definition/message.md deleted file mode 100644 index 2c462864e6..0000000000 --- a/api/schema-definition/message.md +++ /dev/null @@ -1,2 +0,0 @@ -# Message - diff --git a/api/schema-definition/room.md b/api/schema-definition/room.md deleted file mode 100644 index fc7032b280..0000000000 --- a/api/schema-definition/room.md +++ /dev/null @@ -1,2 +0,0 @@ -# Room - diff --git a/api/schema-definition/subscriptions.md b/api/schema-definition/subscriptions.md deleted file mode 100644 index 3626db8ee7..0000000000 --- a/api/schema-definition/subscriptions.md +++ /dev/null @@ -1,2 +0,0 @@ -# Subscriptions - diff --git a/api/schema-definition/user.md b/api/schema-definition/user.md deleted file mode 100644 index db0110d77c..0000000000 --- a/api/schema-definition/user.md +++ /dev/null @@ -1,2 +0,0 @@ -# User - diff --git a/apps-development/fundamentals-of-apps/README.md b/apps-development/fundamentals-of-apps/README.md deleted file mode 100644 index 63a7a66157..0000000000 --- a/apps-development/fundamentals-of-apps/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Fundamentals of Apps - diff --git a/apps-development/fundamentals-of-apps/app-lifecycle.md b/apps-development/fundamentals-of-apps/app-lifecycle.md deleted file mode 100644 index 6905657909..0000000000 --- a/apps-development/fundamentals-of-apps/app-lifecycle.md +++ /dev/null @@ -1,2 +0,0 @@ -# App Lifecycle - diff --git a/apps-development/fundamentals-of-apps/event-interfaces.md b/apps-development/fundamentals-of-apps/event-interfaces.md deleted file mode 100644 index 0aa2f3cb63..0000000000 --- a/apps-development/fundamentals-of-apps/event-interfaces.md +++ /dev/null @@ -1,2 +0,0 @@ -# Event Interfaces - diff --git a/apps-development/fundamentals-of-apps/scheduler-api.md b/apps-development/fundamentals-of-apps/scheduler-api.md deleted file mode 100644 index dbf8ceb6d5..0000000000 --- a/apps-development/fundamentals-of-apps/scheduler-api.md +++ /dev/null @@ -1,2 +0,0 @@ -# Scheduler API - diff --git a/apps-development/permission-system.md b/apps-development/permission-system.md deleted file mode 100644 index 8abbca1bd6..0000000000 --- a/apps-development/permission-system.md +++ /dev/null @@ -1,2 +0,0 @@ -# Permission System - diff --git a/apps-development/recipes/README.md b/apps-development/recipes/README.md deleted file mode 100644 index 5c4be187a9..0000000000 --- a/apps-development/recipes/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Recipes - diff --git a/apps-development/recipes/extending-messages.md b/apps-development/recipes/extending-messages.md deleted file mode 100644 index 7faf9e8c32..0000000000 --- a/apps-development/recipes/extending-messages.md +++ /dev/null @@ -1,2 +0,0 @@ -# Extending Messages - diff --git a/apps-development/recipes/making-http-requests.md b/apps-development/recipes/making-http-requests.md deleted file mode 100644 index 7cc00f22dd..0000000000 --- a/apps-development/recipes/making-http-requests.md +++ /dev/null @@ -1,2 +0,0 @@ -# Making HTTP Requests - diff --git a/apps-development/recipes/registering-api-endpoints.md b/apps-development/recipes/registering-api-endpoints.md deleted file mode 100644 index 941b786474..0000000000 --- a/apps-development/recipes/registering-api-endpoints.md +++ /dev/null @@ -1,2 +0,0 @@ -# Registering API endpoints - diff --git a/apps-development/recipes/storing-user-input.md b/apps-development/recipes/storing-user-input.md deleted file mode 100644 index a500bbe9cd..0000000000 --- a/apps-development/recipes/storing-user-input.md +++ /dev/null @@ -1,2 +0,0 @@ -# Storing User Input - diff --git a/apps-development/recipes/sub-command-pattern.md b/apps-development/recipes/sub-command-pattern.md deleted file mode 100644 index 441bc405c1..0000000000 --- a/apps-development/recipes/sub-command-pattern.md +++ /dev/null @@ -1,2 +0,0 @@ -# Sub-command pattern - diff --git a/apps-development/rocket.chat-app/README.md b/apps-development/rocket.chat-app/README.md deleted file mode 100644 index f2aaf6dae7..0000000000 --- a/apps-development/rocket.chat-app/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Rocket.Chat App - diff --git a/apps-development/rocket.chat-app/app-submission-to-the-marketplace/README.md b/apps-development/rocket.chat-app/app-submission-to-the-marketplace/README.md deleted file mode 100644 index 19ca2b1764..0000000000 --- a/apps-development/rocket.chat-app/app-submission-to-the-marketplace/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# App Submission to the Marketplace - diff --git a/apps-development/rocket.chat-app/app-submission-to-the-marketplace/app-submission-through-cli.md b/apps-development/rocket.chat-app/app-submission-to-the-marketplace/app-submission-through-cli.md deleted file mode 100644 index 2f0da20dee..0000000000 --- a/apps-development/rocket.chat-app/app-submission-to-the-marketplace/app-submission-through-cli.md +++ /dev/null @@ -1,2 +0,0 @@ -# App Submission through CLI - diff --git a/apps-development/rocket.chat-app/app-submission-to-the-marketplace/paid-app-submission-through-publisher.md b/apps-development/rocket.chat-app/app-submission-to-the-marketplace/paid-app-submission-through-publisher.md deleted file mode 100644 index c4c10d04e4..0000000000 --- a/apps-development/rocket.chat-app/app-submission-to-the-marketplace/paid-app-submission-through-publisher.md +++ /dev/null @@ -1,2 +0,0 @@ -# Paid App Submission \(through Publisher\) - diff --git a/apps-development/rocket.chat-app/creating-an-app.md b/apps-development/rocket.chat-app/creating-an-app.md deleted file mode 100644 index 43def32d3a..0000000000 --- a/apps-development/rocket.chat-app/creating-an-app.md +++ /dev/null @@ -1,2 +0,0 @@ -# Creating an App - diff --git a/apps-development/rocket.chat-app/rocket.chat-app-engine-cli.md b/apps-development/rocket.chat-app/rocket.chat-app-engine-cli.md deleted file mode 100644 index 7573d9f63e..0000000000 --- a/apps-development/rocket.chat-app/rocket.chat-app-engine-cli.md +++ /dev/null @@ -1,2 +0,0 @@ -# Rocket.Chat App Engine CLI - diff --git a/apps-development/slack-compatibility.md b/apps-development/slack-compatibility.md deleted file mode 100644 index 5b72c73bb1..0000000000 --- a/apps-development/slack-compatibility.md +++ /dev/null @@ -1,2 +0,0 @@ -# Slack Compatibility - diff --git a/apps-development/uikit/README.md b/apps-development/uikit/README.md deleted file mode 100644 index 9c8b7ce7df..0000000000 --- a/apps-development/uikit/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# UIKit - diff --git a/apps-development/uikit/slack-compatibility-layers-unsupported-properties.md b/apps-development/uikit/slack-compatibility-layers-unsupported-properties.md deleted file mode 100644 index 6576a8828e..0000000000 --- a/apps-development/uikit/slack-compatibility-layers-unsupported-properties.md +++ /dev/null @@ -1,2 +0,0 @@ -# Slack Compatibility Layer's unsupported properties - diff --git a/apps-development/uikit/uikit-building-blocks.md b/apps-development/uikit/uikit-building-blocks.md deleted file mode 100644 index 27cb2f55e6..0000000000 --- a/apps-development/uikit/uikit-building-blocks.md +++ /dev/null @@ -1,2 +0,0 @@ -# UIKit building blocks - diff --git a/contribute-to-rocket.chat/annual-contribution-programs/README.md b/contribute-to-rocket.chat/annual-contribution-programs/README.md new file mode 100644 index 0000000000..a90258a147 --- /dev/null +++ b/contribute-to-rocket.chat/annual-contribution-programs/README.md @@ -0,0 +1,2 @@ +# Annual Contribution Programs + diff --git a/contributors/google-season-of-docs/README.md b/contribute-to-rocket.chat/annual-contribution-programs/google-season-of-docs/README.md similarity index 100% rename from contributors/google-season-of-docs/README.md rename to contribute-to-rocket.chat/annual-contribution-programs/google-season-of-docs/README.md diff --git a/contribute-to-rocket.chat/annual-contribution-programs/google-season-of-docs/google-season-of-docs-2019.md b/contribute-to-rocket.chat/annual-contribution-programs/google-season-of-docs/google-season-of-docs-2019.md new file mode 100644 index 0000000000..4601bc237a --- /dev/null +++ b/contribute-to-rocket.chat/annual-contribution-programs/google-season-of-docs/google-season-of-docs-2019.md @@ -0,0 +1,94 @@ +# Google Season of Docs 2019 + +[![Google Season of Docs 2019](https://github.com/Sing-Li/bbug/raw/master/images/gsodlogo.png)](https://developers.google.com/season-of-docs/) + +[Season of Docs](https://g.co/seasonofdocs) is Google's annual program that fosters collaboration between open source projects and technical writers. It's happening for the first time in 2019! + +Season of Docs is a unique program that pairs technical writers with open source mentors to introduce the technical writer to an open source community and provide guidance while the writer works on a real-world open source project. The technical writer ,in turn, provides documentation expertise to the open source organization. + +Projects can cover a wide range of fields including Cloud computing, operating systems, graphics, medicine, programming languages, robotics, science, security and many more. Season of Docs is not a recruiting program or an internship but it does provide invaluable experience and looks great on a resume! + +This year's Season of Docs is a pilot that accepts only a limited number of applications, so don't wait to the last minute to prepare! + +## How to apply + +Application for technical writers is now closed for the 2019 season. See [Google Season of Docs 2019 timeline](https://developers.google.com/season-of-docs/docs/timeline) for more details. + +Write and submit your proposal now! Check out our [list of ideas](https://docs.rocket.chat/contributing/google-season-of-docs-2019/#project-ideas) for some inspiration. + +Meet the mentors and fellow writers for GSoD 2019 and get some real-time help on next steps, please visit our 24 x 7 community server channel: + +[https://open.rocket.chat/channel/gsod2019](https://open.rocket.chat/channel/gsod2019) + +For offline discussions, we have a discussion forum: + +[https://forums.rocket.chat/c/gsod/gsod2019](https://forums.rocket.chat/c/gsod/gsod2019) + +If you have questions and prefer email, please write us at: gsod+2019@rocket.chat + +#### Update on July 10, 2019 + +Application for technical writers has closed. During the past month, technical writers have continued to approach us regarding project details. Several mentors have engaged with their prospective writer(s) in assisting with proposal; and several writers have already started to contribute (typos and small fixes) to our docs. We have received a total of TWENTY THREE proposals (one was a submission to the wrong org), and have started the evaluation process with the project mentors. Of the technical writers who have reached out to us, we continue to engage with them and explore project details and interim contributions. We plan to finalize our own selections by July 18th and submit them prior to the final selections deadline. + +#### Update on May 28, 2019 + +Application for technical writers has opened. Please use this [form](https://forms.gle/Fxr2nW4TCiyESHbo8) to apply. Response during this exploration month has been generally positive. Several project teams are already engaging with interested writers to discuss open source work in general and details of their projects in particular. Some of the writers have already warmed up and started to contribute documentation fix PRs to our repositories. We have created a [call-to-action blog](https://rocket.chat/2019/05/21/rocket-chat-in-season-of-docs/) for our participation in the program. Mentors of projects with interested writers have started to assist them in creating their project proposals. + +## Project Ideas + +### Application Programming Interfaces (APIs) Documentation + +* **Mentors**: @martin.schoeler, @marcos.defendi +* **Description**: When developing applications, developers can use a rich set of Application Programming Interfaces (APIs) offered by Rocket.Chat to control every aspect of Rocket.Chat's operation. The documentation for this set of APIs mixes automated generation with hand-crafted usage descriptions, application scenarios, and coding examples. By September 2019, Rocket.Chat should have a "playground" that makes this documentation comes alive. Developers will be able to visit the API page in the "playground" and actually interact with the API directly through the documentation page. We already have a hand-crafted set of API docs that is maintained by our community but they tend to become obsolete as API changes. This project will replace the legacy documentation. You will work with two mentors specialized in API coding and documentation generation for this project. +* In this project, we will **not** be creating the playground or the docs generation systems, that will be handled by the Google Summer of Code student ([See the GSoC Project](google-season-of-docs-2019.md)). Our API docs were written without the idea of a playground to test it. The objective of this project is to improve the structure and wording of the API docs to reflect the new playground system. +* **Related Material**: [Our existing REST API documentation](https://docs.rocket.chat/developer-guides/rest-api/) + +### Administration/Settings Documentation + +* **Mentors**: @martin.schoeler, @marcos.defendi +* **Description**: Given the huge amount of features and customizability of Rocket.Chat we currently lack documentation for a great part of our admin section. This project aims at the completion of the administration documentation, and it can be broken down in two parts, the configuration, and the admin tools part: +* **Configuration**: We need to complete our settings, fortunately, we already have the skeleton for that documentation on [This Pull Request](https://github.com/RocketChat/docs/pull/1095) but will also like a professional opinion on this structure, or help to improve it. We can _cherry-pick_ each file, so no need to work on all articles at once. +* **Admin Tools**: In the administration section we have a set of tools to help admins manage their server, things like user management, permission control, mailer, etc... +* **Related Material**: [Our existing Admin documentation](https://docs.rocket.chat/administrator-guides/) + +### Security documentation + +* **Mentors**: @markus.kirsch @rodrigok +* **Description**: We at Rocket.Chat take pride in taking extra efforts in providing a true open source and secure messaging solution. Transparency and trust are key features of our products. This is an exciting opportunity to work with our team of experts to create a comprehensive documentation of the security features of Rocket.Chat and create implementation guides for configuring Rocket.Chat to follow compliance regimes such as GDPR, HIPAA and NIST. The focus is on creating a new set of documentation based on the existing material and new features that since have been deployed. +* **Related Material**: [Rocket.Chat Security Overview](https://docs.rocket.chat/contributing/security/), [Rocket.Chat GDPR features](https://docs.rocket.chat/legal/gdpr) + +### Android Kotlin Software Development Kit (Kotlin SDK) documentation + +* **Mentors**: @filipe.brito, @rafael.kellermann +* **Description**: Modern Android mobile developers typically use Kotlin to create their mobile apps. To make developing Rocket.Chat integrated and compatible Android apps simpler, Rocket.Chat has created a comprehensive Software Development Kit (SDK) in Kotlin - which can be used on Kotlin or Java applications due to its interoperability. This project will involve detailed documentation for the SDK features, application scenarios, and APIs. This documentation does not exist yet, you will be working from scratch on this. You will be working closely with Rocket.Chat mobile leads, the developers who actually coded the SDK, during your term. +* **Related Material**: [The Kotlin SDK](https://github.com/RocketChat/Rocket.Chat.Kotlin.SDK) + +### The Bot Docs + +* **Mentors**: @reetp @sing.li +* **Description**: Working with core developers and the best open source community advocates in the Rocket.Chat community this is your opportunity to join us and dive into the exciting world of Chatbots and Machine Learning (ML). Bots are tomorrows technology, today. Automating and simplifying life for both user and provider, the demand for this technology and how to develop and deploy is huge. Rocket.Chat has integrated support for bots created via different programming languages and deployment methods to leverage the power of Rocket.Chat. This includes leading services and frameworks such as Dialogflow, Botpress, RASA, Botkit, hubot, and bbot. Documenting this in a clear and precise manner, from bot development and usage through to more advanced deployments, is a huge task and vital to Rocket.Chat and its users. We do already have scattered docs, in the form of developers READMEs, for the subprojects. A major part of this project is to better organize, unify, and improve them for end-user consumption. +* **Related Material**: BOT projects we have ongoing that needs to be unified in the new documentation. [alexa](https://github.com/RocketChat/alexa-rocketchat), [hubot](https://github.com/RocketChat/hubot-rocketchat), [chatops-gitsy](https://github.com/RocketChat/hubot-gitsy), [botpress](https://github.com/RocketChat/botpress-channel-rocketchat), [rasa](https://github.com/RocketChat/rasa-kick-starter), [bbot](http://bbot.chat/), [botkit](https://github.com/RocketChat/botkit-rocketchat-connector), [BOTswana](https://github.com/RocketChat/botswana-snap), and [Bot in Rocket.Chat overview plus roadmap](https://rocket.chat/bots) + +### Project leadership directions and roadmaps + +* **Mentors**: @gabriel.engel @marcelo.schmidt +* **Description**: Transparency is a cornerstone value of many open source projects. Rocket.Chat aims to support this value by offering a set of frequently updated project directional documents - including roadmaps, visionary, strategy and white papers. These will incorporate input from the wider community through interactive feedback as well as regular reviews. This documentation currently exists in bits and pieces, but is not in an easy to digest/understand format. A system will be implemented to present this content in various consumable formats. You will be working with Rocket.Chat's leadership team in formulating and authoring of these documents. +* **Related Material**: [Project roadmap on our Github repository](https://github.com/RocketChat/Rocket.Chat/projects/30), [Live Chat component roadmap](https://github.com/orgs/RocketChat/projects/20) + +### Rocket.Chat Experimental (React Native client) documentation + +* **Mentors**: @diego.mello @renato.becker +* **Description**: React Native is one of the hottest frameworks nowadays. It allows developers to write fully native mobile applications using only Javascript and inherits all the ease of development features from the ReactJS community. At Rocket.Chat we have our own client implemented using RN and it's available on App Store and Google Play as Rocket.Chat Experimental. This project aims to build user documentation for all the features we have implemented so far. This documentation does not exist today. You will be working with our lead React Native developer during this project. +* **Related Material**: [Rocket.Chat Experimental](https://github.com/RocketChat/Rocket.Chat.ReactNative), [Rocket.Chat Experimental on App Store](https://itunes.apple.com/br/app/rocket-chat-experimental/id1272915472?mt=8), [Rocket.Chat Experimental on Google Play](https://play.google.com/store/apps/details?id=chat.rocket.reactnative) + +### Apps-Engine guides + +* **Mentors**: @d-gubert @rodrigok +* **Description**: The Apps-Engine is a framework that enables developers to integrate new functionality to Rocket.Chat without having to deep dive in the code base, and makes it possible to distribute your Rocket.Chat Apps to the wide community of users! And in order to improve the developer experience when making those apps, we need to improve our docs so they guide people smoothly through the available features. You will be working with Rocket.Chat Apps leads to extend the guides and docs that already exist, focusing on the DX of the community. +* **Related Material**: [Getting Started with Rocket.Chat Apps](https://docs.rocket.chat/guides/developer/mobile-apps), [Rocket.Chat Apps-Engine API Reference](https://rocketchat.github.io/Rocket.Chat.Apps-engine/) + +### JS SDK documentation + +* **Mentors**: @rodrigok, @ggazzo +* **Description**: The JS SDK is a library of code written in JS that offers an easier interface to communicate with a Rocket.Chat server providing APIs to be called from a JS code that executes commands on the server, like send a message, or retrieve data, like get the list of rooms, abstracting all the logic necessary to handle the communication with the server side. You will be working with Rocket.Chat backend and frontend leads to improve the documentation of all JS SDK methods, from the initial setup of how to get the library and install it to the list of methods, how to use them and the expected returned data. Current documentation is under the SDK repository README. +* **Related Material**: [JS SDK repository](https://github.com/RocketChat/Rocket.Chat.js.SDK), [Mention in BOT's Docs](https://docs.rocket.chat/bots/bots-architecture/#rocketchat-js-sdk), [NPM Package](https://www.npmjs.com/package/@rocket.chat/sdk), [Documentation](https://github.com/RocketChat/Rocket.Chat.js.SDK/blob/master/README.md) diff --git a/contribute-to-rocket.chat/annual-contribution-programs/google-season-of-docs/google-season-of-docs-2021.md b/contribute-to-rocket.chat/annual-contribution-programs/google-season-of-docs/google-season-of-docs-2021.md new file mode 100644 index 0000000000..411e7322a8 --- /dev/null +++ b/contribute-to-rocket.chat/annual-contribution-programs/google-season-of-docs/google-season-of-docs-2021.md @@ -0,0 +1,84 @@ +# Google Season of Docs 2021 + +[![Google Season of Docs 2019](https://github.com/Sing-Li/bbug/raw/master/images/gsodlogo.png)](https://developers.google.com/season-of-docs/) + +[Season of Docs](https://g.co/seasonofdocs) is Google's annual program that fosters collaboration between open source projects and technical writers. + +Season of Docs is a unique program that pairs technical writers with open source mentors to introduce the technical writer to an open source community and provide guidance while the writer works on a real-world open source project. The technical writer, in turn, provides documentation expertise to the open source organization. + +Projects can cover a wide range of fields including Cloud computing, operating systems, graphics, medicine, programming languages, robotics, science, security and many more. Season of Docs is not a recruiting program or an internship but it does provide invaluable experience and looks great on a resume! + +## How to apply + +#### Update April 16, 2021 + +Rocket.Chat has applied, but has not been selected for the 2021 Google Season of Docs program. We intend to try again in 2022, and like to thank Google for the kind consideration this year. + +### Project Proposal + +## Developer Guides and SDK Docs Rewrite + +**Mentors:** [@reetp](https://open.rocket.chat/direct/reetp) [@rodrigo.nascimento](https://open.rocket.chat/direct/rodrigo.nascimento) [@ggazzo](https://open.rocket.chat/direct/guilherme.gazzo) + +**Project description:** + +Working with core developers and the community team at Rocket.Chat this is an opportunity to help other developers get to the code faster, and start working on code and contributing to Rocket.Chat more easily.\ +\ +Rocket.Chat has different methods and SDKs that can be difficult to navigate for new developers and it can take a lot of time to get them up to a point where they can contribute code.\ +\ +Documentation for setting up development environments is scattered and fragmented and needs bringing together in an easy to read and understand format.\ +\ +This will include methods for setting up libraries such as the JS SDK, core server code, and mobile application development code + +In particular, our JS SDK is a library of code written in JS that offers an easier interface to communicate with a Rocket.Chat server providing APIs to be called from a JS code that executes commands on the server, like send a message, or retrieve data, like get the list of rooms, abstracting all the logic necessary to handle the communication with the server side.\ +\ +The writer will be working with Rocket.Chat backend and frontend leads to improve the documentation of all JS SDK methods, from the initial setup of how to get the library and install it to the list of methods, how to use them and the expected returned data.\ +\ +This is an exciting opportunity to work on a cutting edge project with a dynamic group of experienced developers and team members.\ +\ +Current documentation is under the[ JS SDK repository README](https://github.com/RocketChat/Rocket.Chat.js.SDK) + +**Related Material**: [Existing developers guides](https://docs.rocket.chat/guides/developer), [JS SDK repository](https://github.com/RocketChat/Rocket.Chat.js.SDK) + +### Measuring Success + +As with many open source projects, Rocket.Chat attracts a large number of young and often inexperienced developers. + +Rocket.Chat has an enormous and complex code base. New contributors often feel frustrated at being unable to get a test setup running quickly and can lose interest and look for an easier project. + +Currently the documentation on getting them started with a development environment is fragmented. Developers need to spend time on basic setup rather than coding, and it is frustrating for new users.. + +We believe that better written documentation will reduce the time existing developers need to spend on helping new developers with development setup which can then be spent on actual coding issues.\ +\ +Rocket.Chat currently hosts documentation with gitbook and analytics in the form of Pageviews and Ratings are available. As we intend to create entirely new content pulling information from a variety of sources there will be no direct comparison of usages. However, we can check an overall views count of existing page content and then compare this with the new pages.\ +\ +We will use these metrics to measure the success of this project: + +* pageviews of the rewritten docs +* percentage of rating above 4 +* total count of ratings + +We will develop a benchmark of the above metrics against both: + +* the documentation before rewrite +* other Rocket.Chat documentation pages (admin guides, user guides, and so on) + +Gitbook also has full text indexed searches and we will analyze search terms and results to establish additional metrics of "interest" in the new documentation. We expect to see significantly increased interest in the new documentation as we push to widen our community. + +In addition, we believe we will see a decrease in simple developer support requests, more pull requests and code contributions, and a higher retention of new developers who want to try developing with Rocket.Chat, especially for the GSoC 2022 season. We will measure and track these metrics as indicators of the project's success: + +* (normalized) developer support requests +* pull requests activities +* retention of developers for the GSoC 2022 season + +## Project Budget Details + +### Budget Items + +We anticipate the budget for this project to be USD $12,000 comprising of: + +* Technical writer to re-structure and re-write the technical guides, and to write the JS SDK documentation $8000 +* Stipend for 3 x Volunteers to help in proof reading and production of graphics and other assets $1500 +* Project stickers and T-Shirts x 10 $200 +* Contribution to downline non-profit for assistance with design and volunteer search $300 +* Organization's participation in administration, mentorship of doc systems and tech project, and reviewing of content $2000 diff --git a/contribute-to-rocket.chat/annual-contribution-programs/google-season-of-docs/google-season-of-docs-2022.md b/contribute-to-rocket.chat/annual-contribution-programs/google-season-of-docs/google-season-of-docs-2022.md new file mode 100644 index 0000000000..19feb3ccf7 --- /dev/null +++ b/contribute-to-rocket.chat/annual-contribution-programs/google-season-of-docs/google-season-of-docs-2022.md @@ -0,0 +1,89 @@ +# Google Season of Docs 2022 + +[![Google Season of Docs 2019](https://github.com/Sing-Li/bbug/raw/master/images/gsodlogo.png)](https://developers.google.com/season-of-docs/) + +[Season of Docs](https://g.co/seasonofdocs) is Google's annual program that fosters collaboration between open source projects and professional technical writers. + +Season of Docs is a unique program that pairs professional technical writers with open source mentors to introduce the technical writer to an open source community and provide guidance while the writer works on a real-world open source project. The technical writer, in turn, provides documentation expertise to the open source organization. + +Projects can cover a wide range of fields including Cloud computing, operating systems, graphics, medicine, programming languages, robotics, science, security and many more. Season of Docs is not a recruiting program or an internship but it does provide invaluable experience and looks great on a resume! + +## How to apply + +#### Update April 2022 + +Rocket.Chat has applied, but has not been selected for the 2022 Google Season of Docs program. We intend to try again in 2023, and like to thank Google for the kind consideration this year.\ +\ + + +Rocket.Chat operates a 24 x 7 community server at [http://open.rocket.chat](http://open.rocket.chat) Please contact us through the Google Seasons of Docs 2022 channel at [https://open.rocket.chat/channel/gsod2022](https://open.rocket.chat/channel/gsod2022) + +Interested professional technical writers can directly send us an email to [gsod@rocket.chat](mailto:gsod@rocket.chat). + +See [official GSoD 2022 rules](https://developers.google.com/season-of-docs/docs/tech-writer-guide) for more information. + +## About our organization + +Ultimate open source team chat and communications platform + +Rocket.Chat is one of the largest active open source (permissive MIT source license) nodeJS communications platform communities on GitHub, connecting 1500+ global community contributors (across projects) from 30+ countries, with 31700+ GitHub stars, 6500 forks, 490+ total releases and 12,000+ issues since inception in 2015. + +Rocket.Chat is a modern team chat and collaborating platform written in full-stack JavaScript. Rocket.Chat offers a full featured rich team chat experience on modern browsers, comparable to Slack and Microsoft Teams. Mobile and desktop clients run on iOS, Android, Mac, Windows, and Linux. Rocket.Chat server can scale from a small family messaging server for 5 users running on a Raspberry Pi 4, to clustered micro-services configuration that can support hundred thousands of users. On-premise deployment of Rocket.Chat can ensure 100% complete security and privacy of your valuable communications/data. + +Rocket.Chat is now installed on over 500k servers and counts over 12m users worldwide. Rocket.Chat’s long-term vision is to replace email with a real-time federated communications platform globally. + +Users can set up Rocket.Chat on cloud or by hosting their own servers on-premises. Thanks to its extension support via Rocket.Chat Apps (plugins), and extremely rich API/SDK support, startups and innovators have customized Rocket.Chat into new products and services. Chatbots extend the interactivity of Rocket.Chat and integrate external IT systems. Omnichannel extends reach to wherever user may be including WhatsApp, Instagram, Facebook Messenger and more. + +Rocket.Chat has won multiple prizes such as a 2016 Bossie Award for Best Open Source Application and first prize in the 2017 edition of All Things Open’s Startup Competition. + +Rocket.Chat supports over 59 local languages. Rocket.Chat's community interacts 24 x 7 at the community Rocket.Chat server https://open.rocket.chat since 2015. + +## Project Idea + +### Improve Rocket.Chat App Building Documentation + +## About the project + +### The problem + +Rocket.Chat can be extended through apps. Apps are considerably easier to code than modifying the large Rocket.Chat code base. But we are seriously lacking on documentation for Apps developers. + +New app builders have a hard time navigating our existing meager documentation. There is a lack of details and current contents are difficult to understand. This makes building an app a very time consuming activity and causes developers to get frustrated or even abandon their projects. + +As it exists today, it is very difficult to develop an app without getting help from an existing app developer or our internal team. The documentation is also not up to date - while the app platform is consistently being updated. Outdated documentation is causing more issues and slows down development ending up with more of the same questions asked multiple times. + +### Project's Scope + +This writer will + +* Design the ideal layout and content flow which should improve the learning experience of new developers. +* Update the existing articles on GitBook with the help of GSoD administrator, including automatically generated API references, existing articles, webinar contents and code comments. +* Identify any gaps, as in missing pieces in the documentation. +* Fill the identified gaps by adding supporting documentation. +* Incorporate feedback from documentation testers (volunteer testers from our community) and the wider Rocket.Chat community. +* Collaborate with project administrators to validate and test the documentation and identify any opportunities of improvement. +* Update current READMEs to help new contributors navigate to the right resources including how to create Rocket.Chat Apps and resources around Git and Pull Requests. + +### Measuring Success + +* 50% increase in [@rocket.chat/apps-cli](https://www.npmjs.com/package/@rocket.chat/apps-cli) weekly downloads. +* Reduced number of common queries from the community. +* Increase in the number of members in [Developers of Rocket.Chat Apps](https://open.rocket.chat/channel/developers-of-rocket-chat-apps) team and the team channels on our Open Community Server. + +### Timeline + +Standard 3 month project. + +## Project Budget + +| Type | Amount | Running Total | Description | +| :--------: | :-------------: | :-----------: | :---------------------------------: | +| Writer | $6000 | $6000 | Writer stipend | +| Volunteers | $500 ($200 x 2) | $6400 | For swags and other incentive items | +| Total | | $6400 | | + +## Previous Experience + +### Previous experience with technical writers or documentation + +### Previous participation in Season of Docs, Google Summer of Code or others diff --git a/contribute-to-rocket.chat/annual-contribution-programs/google-season-of-docs/google-season-of-docs-2023.md b/contribute-to-rocket.chat/annual-contribution-programs/google-season-of-docs/google-season-of-docs-2023.md new file mode 100644 index 0000000000..f3dd6a7281 --- /dev/null +++ b/contribute-to-rocket.chat/annual-contribution-programs/google-season-of-docs/google-season-of-docs-2023.md @@ -0,0 +1,23 @@ +# Google Season of Docs 2023 + +[![Google Season of Docs 2019](https://github.com/Sing-Li/bbug/raw/master/images/gsodlogo.png)](https://developers.google.com/season-of-docs/) + +[Season of Docs](https://g.co/seasonofdocs) is Google's annual program that fosters collaboration between open source projects and technical writers. + +Season of Docs is a unique program that pairs technical writers with open source mentors to introduce the technical writer to an open source community and provide guidance while the writer works on a real-world open source project. The technical writer, in turn, provides documentation expertise to the open source organization. + +Projects can cover a wide range of fields including Cloud computing, operating systems, graphics, medicine, programming languages, robotics, science, security and many more. Season of Docs is not a recruiting program or an internship but it does provide invaluable experience and looks great on a resume! + +## How to apply + +Rocket.Chat operates a 24 x 7 community server at [http://open.rocket.chat](http://open.rocket.chat) Please contact us through the Google Seasons of Docs 2023 channel at [https://open.rocket.chat/channel/gsod2023](https://open.rocket.chat/channel/gsod2023) + +You should also join our Google Season of Docs general team on the same server at [https://open.rocket.chat/channel/google-season-of-docs](https://open.rocket.chat/channel/google-season-of-docs) + +Interested professional technical writers can directly send us an email to [gsod@rocket.chat](mailto:gsod@rocket.chat). + +See [official GSoD 2022 rules](https://developers.google.com/season-of-docs/docs/tech-writer-guide) for more information. + +### Project Ideas + +_TBD_ diff --git a/contributors/google-summer-of-code/README.md b/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/README.md similarity index 100% rename from contributors/google-summer-of-code/README.md rename to contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/README.md diff --git a/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2017.md b/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2017.md new file mode 100644 index 0000000000..822f944539 --- /dev/null +++ b/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2017.md @@ -0,0 +1,181 @@ +# Google Summer of Code 2017 + +[![Google Summer of Code 2017](https://github.com/Sing-Li/bbug/raw/master/images/gsoclogo.jpg)](https://developers.google.com/open-source/gsoc/) + +## How to apply + +For general information, please visit our community server Google Summer of Code 2017 discussion group: [https://open.rocket.chat/channel/gsoc17](https://open.rocket.chat/channel/gsoc17) + +Final proposal submission is now officially closed. + +Our sincere thanks goes to every student who had worked hard in creating one of the SIXTY EIGHT proposals we have received across all projects. We are totally surprised and flattered as a first year GSoC participating organization. + +The official list of accepted students and projects is now available directly from Google: + +[https://summerofcode.withgoogle.com/organizations/6368590472151040/](https://summerofcode.withgoogle.com/organizations/6368590472151040/) + +Out of the SIXTY EIGHT proposals we received, we have painstakingly selected a short list of NINE outstanding ones. We have personally met (video conferenced) with every one of the students behind these NINE proposals during the last few weeks. + +Google has incredibly sponsored FOUR out of the NINE students (first year organization typically gets 1 or 2 students/projects only). Thank you, Google GSoC 2017 ! + +The FOUR Google sponsored students and projects for GSoC 2017 are: + +| Student | Project | Mentor(s) | +| ------------- | ----------------------------------- | -------------------------------------------- | +| Naman Gupta | To Create a PWA Client | Karl Prieb, Guilherme Gazzo | +| Lucas Woo | Rocket.Chat iOS SDK | Rafael Kellermann Streit, Rodrigo Nascimento | +| Pradeep Kumar | Integrated Personal Email Gateway | Rodrigo Nascimento, Diego Sampaio | +| Mrinal Dhar | E2E encryption with Signal protocol | Marcelo Schmidt, Marius | + +Team bonding and familiarization activities have started between mentors and the selected students. + +We have contacted the FIVE other students to discuss potential Rocket.Chat sponsorships. One student happily reported that he has already been selected by another GSoC 2017 mentoring organization. Another did not reply to any of our offers and queries before the deadline. THREE other students have accepted Rocket.Chat sponsorship and are currently working diligently with their mentors. + +The THREE Rocket.Chat sponsored students and projects for 2017 are: + +| Student | Project | Mentor(s) | +| ------------- | ----------------------- | --------------------------------------- | +| Karan Batra | Automatic Channels | Mitar, Rodrigo Nascimento | +| Sachin Shinde | Rocket.Chat Android SDK | Rafael Kellermann Streit | +| Manish Kakoti | Federation Server | Gabriel Engel, Sing Li, Matthew Hodgson | + +Please keep monitoring this page for the latest Rocket.Chat GSoC 2017 updates. + +#### Coding has started + +June is finally upon us. All of our GSoC students who have had prior apprenticeship or other engagements are now free of their obligations, and have started to code for Rocket.Chat full time. The _commmunity bonding_ period has come and gone smoothly, with the mingling between our students and the core team on the 24 x 7 community chat server, on GitHub, via email, or at our weekly scheduled team video-conference. Many of our students have also made friends with our extended community - helping them and exchanging ideas for their projects. + +In fact, due to their overwhelming enthusiasm, most of our GSoC students have started coding even before the beginning of June. Here are some of the most recent contributions (of many!) to Rocket.Chat by our new team of GSoC recruits: + +Manish Kakoti: [https://github.com/RocketChat/Rocket.Chat.Federation/pull/5](https://github.com/RocketChat/Rocket.Chat.Federation/pull/5) + +Karan Batra: [https://github.com/RocketChat/Rocket.Chat/pull/7137](https://github.com/RocketChat/Rocket.Chat/pull/7137) + +Lucas Woo: [https://github.com/RocketChat/Rocket.Chat.iOS/pull/438](https://github.com/RocketChat/Rocket.Chat.iOS/pull/438) + +Naman Gupta: [https://github.com/RocketChat/Rocket.Chat.PWA/pull/12](https://github.com/RocketChat/Rocket.Chat.PWA/pull/12) + +Pradeep Kumar: [https://github.com/RocketChat/Rocket.Chat/pull/7088](https://github.com/RocketChat/Rocket.Chat/pull/7088) + +Congratulations to the new team members, and keep up the great work! We are all looking forward to the first evaluation milestone at the end of June. + +#### Creating open source citizens + +July is in full swing. First evaluation has completed and we're working towards our end-of-July milestone. + +We are happy to report that all _seven_ of our students have passed their first evaluation. Most are making very good pace on their projects, with some close to completion and in planning phase for extensions. We are also keeping a keen eye out on potential candidate(s) for full-time hire at end of their term. + +The following are the Rocket.Chat projects that our new team members are working on. Contribution and participation are welcomed immediately from the greater Rocket.Chat community: + +* [iOS SDK](https://github.com/RocketChat/Rocket.Chat.Kotlin.SDK) +* [Android SDK](https://github.com/RocketChat/Rocket.Chat.Android.SDK) +* [Java SDK](https://github.com/RocketChat/Rocket.Chat.Java.SDK) +* [PWA](https://github.com/RocketChat/Rocket.Chat.PWA) +* [Federation](https://github.com/RocketChat/Rocket.Chat.Federation/) + +After the evaluation, we have made sure that they all have received the first stipend payment - especially the students under Rocket.Chat's sponsorship. + +Working with a publicity company, we have been creating open source "hero stories" profiling every one of our new summer-term team members. Many of them have already been featured on our Blog: + +* [Mrinal Dhar](https://rocket.chat/2017/07/02/mrinal-dhar-developing-end-to-end-encryption-with-signal-protocol/) +* [Manish Kakoti](https://rocket.chat/2017/07/02/manish-kakoti-extending-communications-beyond-teams-with-rocketchat-federation/) +* [Pradeep Kumar](https://rocket.chat/2017/07/02/pradeep-kumar-bridging-the-email-and-rocketchat-divide-with-personal-email-gateway) +* [Sachin Shinde](https://rocket.chat/2017/07/05/sachin-shinde-add-rocketchat-to-any-app-with-mobile-sdk) +* [Naman Gupta](https://rocket.chat/2017/07/06/naman-gupta-smaller-faster-and-more-bandwidthefficient-client-with-pwa) + +In July, along with continued technical progress, we are focusing to help the student in development of their open source citizenship skills - something hopefully useful beyond their GSoC terms with us. + +This will include activities in: + +* promoting their open source project +* build and nurture a community around their project +* interaction with internal and external open source team members + +Over the next two months, guided by their mentor(s) - each student will be giving a presentation on their project to the larger Rocket.Chat team. + +We continue to be extremely optimistic going into the critical mid-term evaluation in late July. + +## Project Ideas + +### Federation of Rocket.Chat Servers + +* **Mentors:** Matthew Hodgson ([@arathorn](https://github.com/ara4n)) Rodrigo Nascimento ([@rodrigo.nascimento](https://github.com/rodrigok)) +* **Description:** Tens of thousands of Rocket.Chat servers are running at this very minute on the Internet. There is currently no way for users/bots/services of one instance to address or communicate with those from another. This project's mission is to make it possible. You will be working and exchanging ideas with the very best in the field - experts from Matrix.org and Rocket.Chat. +* **Desirable Skills:** Familiarity with JavaScript development. Demonstrated interest and/or passion on networking and federation protocols research and evolution. +* **Goal/Deliverable:** The foundation for all Rocket.Chat users/bots/services to optionally communicate with one another, across all connected instances. + +### Create a Progressive Web App client + +* **Mentors:** Karl Prieb ([@karl.prieb](https://github.com/karlprieb)) +* **Description:** Create a new PWA client for Rocket.Chat using [Angular](https://angular.io/) framework, WebSocket and mobile-first approach. +* **Desirable Skills:** Some Javascript coding skills would be required to complete this task. +* **Goal/Deliverable:** A PWA client with basic chat functionality like channels and direct messages list, users status, channel messages, user preferences, etc. + +### Improved End-to-End Encryption Implementation (currently feature-named OTR) + +* **Mentors:** Marcelo Schmidt ([@marcelo.schmidt](https://github.com/marceloschmidt)) Mitar ([@mitar](https://github.com/mitar)) +* **Description:** Taking and improving our end-to-end encryption implementation. Perhaps replace with more modern protocols, such as [Signal](https://en.wikipedia.org/wiki/Signal\_Protocol). +* **Desirable Skills:** Some Javascript coding skills and familiarity with cryptography. +* **Goal/Deliverable:** The ability to have end-to-end encrypted conversations between users. There are various features possible: forward secrecy, online and offline use (do users have to be online at the same time for encryption to be possible), do we store messages on the server, pair or group conversations, encrypted file transfer, etc. + +### File uploads and exchanges with OwnCloud + +* **Mentors:** Diego Sampaio ([@diego.sampaio](https://github.com/sampaiodiego)) Thomas Müller ([@thomas.muller](https://github.com/DeepDiver1975)) deepdiver1975@gmail.com +* **Description:** When you upload a file today in Rocket.Chat, your server may be configured to store it on AWS S3, Google's object storage, MongoDB's GridFS, or local filesystem. This project adds OwnCloud as an official target destination. In addition, since every user of Rocket.Chat may have her/his own OwnCloud server - some way to support file exchanges with those servers will also be interesting. You will be working with top engineers who actually designed and coded these features, from OwnCloud and Rocket.Chat, on this project. +* **Desirable Skills:** Familiarity with PHP and JavaScript development. Familiarity with (and already a user of) Rocket.Chat and OwnCloud definitely a plus. +* **Goal/Deliverable:** Support integrations between OwnCloud and Rocket.Chat as if it was designed-in since the very first day. + +### Use of Chromecast as Presentation Room + +* **Mentors:** Bradley Hilton ([@graywolf336](https://github.com/graywolf336)) +* **Description:** Use Chromecast as presentation output which shows a chat room and will join any Jitsi / WebRTC meetings that are started in it, this way meetings can be started inside Rocket.Chat and the Chromecast can be on a TV/Monitor inside a conference room. +* **Desirable Skills:** Some Javascript coding skills will be required to complete this task. Students with WebRTC knowledge and/or who have already produced Chromecast apps are on a good start. A Chromecast is required for this task. +* **Goal/Deliverable:** Being able to pair a room with Chromecast, displaying it's messages. Chromecast app needs to be able to automatically join a Jitsi/WebRTC video call. + +### Integrated Personal Email Gateway + +* **Mentors:** Rodrigo Nascimento ([@rodrigo.nascimento](https://github.com/rodrigok)) +* **Description:** Add feature to allow automated reply when offline, and forwarding of incoming messages via email. +* **Desirable Skills:** Some Javascript coding skills will be required to complete this task. An understanding of industry standard SMTP and POP protocols, and configuration of standard email servers will be required. +* **Goal/Deliverable:** Ability for each user to set an away message, and receive any offline messages - in batches per interval, via through email account. + +### Create an SDK for Mobile Apps to include a chat inside other apps + +* **Mentors:** Rafeal Kellermann ([@rafaelks](https://github.com/rafaelks)) +* **Description:** Create an SDK (for iOS and/or Android) to embed in any app that wants to have a chat inside it. It could be useful for support and also for chat in enterprise apps. One example is an app that’s used by all sellers from a company to be able to communicate with each other using Rocket.Chat. Another example is something very similar to Intercom ([https://www.intercom.com/mobile](https://www.intercom.com/mobile)) +* **Desirable Skills:** Students will be required to code in either Java for Android SDK or Swift for the iOS SDK. Students will also need to understand how Rocket.Chat communicates over websockets. +* **Goal/Deliverable:** To have an SDK that allows App Developers to embed a chat system inside their own apps using Rocket.Chat servers to deliver messages. + +### Calendar Integration for Meeting Scheduling + +* **Mentors:** Bradley Hilton ([@graywolf336](https://github.com/graywolf336)) +* **Description:** taking and embedding a calendar inside rocket.chat, being standalone yet integrating with all the calendars out there so people can schedule meetings and be reminded of upcoming meetings that are inside Rocket.Chat +* **Desirable Skills:** Some javascript coding skills +* **Goal/Deliverable:** The ability to schedule a meeting in Rocket.Chat + +### Rocket.Chat on Mesh Network + +* **Mentors:** Mitar ([@mitar](https://github.com/mitar)) Gabriel Engel ([@gabriel.engel](https://github.com/engelgabriel)) +* **Description:** Modify the Rocket.Chat to work on mesh networks. There are two basic types of mesh networks which would be interesting to cover: + * A network of mostly always online off-the-shelf WiFi equipment which forms a network where all network nodes can connect directly to each other (no NAT). Here it would be interesting to port Rocket.Chat so that it could run served as a static resource from these limited devices (which are often not powerful enough to run MongoDB and node.js, which Rocket.Chat otherwise uses for server-side part). Rocket.Chat should be bundled into a static resource, served over HTTP to clients, which could then use something like WebRTC to connect to each other and communicate with each other. A very thin server-side program might be needed as well, to help with WebRTC connections for example, or discovery of other nodes to connect to. A distributed database like [Scuttlebot](http://scuttlebot.io/) could be used as well. + * A [delay tolerant mesh network](https://en.wikipedia.org/wiki/Delay-tolerant\_networking) where devices do not have regular connectivity between each other, and are often even moving around. Such networks often do not even use TCP/IP. On the other hand, devices often have much more storage space and power, when they are available. The idea is to change Rocket.Chat so that it can operate in such environment as well. +* **Desirable Skills:** Javascript, WebRTC, networking, OpenWrt, and programming for embedded devices (C, Lua, bash) +* **Goal/Deliverable:** An OpenWrt package providing a modified Rocket.Chat to work in a mesh network. + +### Automatic Channels + +* **Mentors:** Marcelo Schmidt ([@marcelo.schmidt](https://github.com/marceloschmidt)) Mitar ([@mitar](https://github.com/mitar)) +* **Description:** Add a feature of creation of automatic channels to Rocket.Chat and automatic joining of users to those channels. The idea is to extend Rocket.Chat with a plugin system where plugins could classify users into channels. Then such channel would be automatically created, if it does not yet exist, and user added to it. This should also work reactively so that plugin can remove the user from a channel, and remove such channels. Use cases here are various. For example, a plugin could detect user's language and automatically add them to a channel for that language. Or, plugin could resolve user's IP into their country and add them to a channel for this country. If user changes the IP and moves to another country, they should be automatically moved to a new channel. In combination with mesh networking support, users could be automatically put into channels local to the node to which they are connected. +* **Desirable Skills:** Some javascript coding skills +* **Goal/Deliverable:** Modification to Rocket.Chat with a plugin system for automatic channels and joining with two example plugins: based on browser specified language, and country based on GeoIP of the user. + +### Enable multi-instance High Availabilty (HA) configuration with snaps + +* **Mentors:** Aaron Ogle ([@geekgonecrazy](https://github.com/geekgonecrazy)) +* **Description:** Modify the Rocket.Chat snap to enable mongodb replica's and multi instance Rocket.Chat +* **Desirable Skills:** Familiarity with Linux, and bash scripting. +* **Goal/Deliverable:** A snap that can be used in a multi-instance HA setup. + +## Timeline + +{% embed url="https://developers.google.com/open-source/gsoc/timeline" %} diff --git a/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2018.md b/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2018.md new file mode 100644 index 0000000000..7c1c6ff2b2 --- /dev/null +++ b/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2018.md @@ -0,0 +1,264 @@ +# Google Summer of Code 2018 + +[![Google Summer of Code 2018](https://github.com/Sing-Li/bbug/raw/master/images/gsoclogo.jpg)](https://summerofcode.withgoogle.com/) + +## How to apply + +Applications for the GSoC 2018 season have now closed. + +UPDATE September 8, 2018 + +The final list of successful 2018 GSoC Rocket.Chat projects and students/mentors is now [officially](https://summerofcode.withgoogle.com/organizations/6355544806260736/) available. + +Our own final tabulation of the status for GSoC projects is as follows: + +| Status | Student | Project | Mentors | +| -------- | --------------------- | ------------------------------------------------------------------------------ | --------------------------------------------- | +| PASS | Mikael Mello | Improve the integration of bots on Rocket.Chat | Tim Kinnane, Diego Dorgam | +| PASS | Aniket Singh | Android and wear app | Fiipe Brito, Lucio Maciel | +| PASS | Jose Renan | Rocket.Chat SDK for Javascript Clients | Guilherme Gazzo, Diego Sampaio, Renato Becker | +| PASS | Semih Serhat Karakaya | Nextcloud as Storage and User File Provider | Guilherme Gazzo | +| PASS | Karan Bedi | Rocket.Chat voice recognition APIs and built-in Speech2Text Engine integration | Pierre Lehnen, Rodrigo Nascimento | +| PASS | Nikhil Kaushik | Integration with Google Drive and Dropbox | Marcelo Schmidt, Martin Schoeler | +| PASS | Samar Sunkaria | Support for theming the Rocket.Chat iOS app | Matheus Cardoso, Filipe Alvarenga | +| WITHDREW | De Sheng Chuan | Data integrity and consistency | Diego Sampaio, Rodrigo Nascimento, Sing Li | + +UPDATE August 20, 2018 This final term has been a term full of changes. One good student - who had been doing great work up to this third term- has had health issues, been hospitalized, and is unable to complete his project. Upon advice from GSoC admin, he withdrew from the project and may resume outside of GSoC upon his recovery. The "turn around projects" in the second term continued to show major improvement this term - due mainly to the hard work of the affected students. Mentors and students are busy this term wrapping up their work, preparing for final GSoC evaluation requirements, plus scheduling presentations of their completed work to the larger Rocket.Chat team. Many of the presentations are recorded and are available [here](https://youtu.be/pnz2LCtCeMM), [here](https://www.youtube.com/watch?v=nlsTyJZbKSM) and [here](https://www.youtube.com/watch?v=kuDlwnlX67k). As a final result for 2018, one out of our eight GSoC students has withdrawn, and mentors gave final passes to the other seven GSoC projects. Of the four independently funded projects, three passed and one failed (due to the student's disappearance). We congratulate the students and mentors on their achievements and sincerely hope all students now have enough of a taste of open source (and Rocket.Chat in particular) to continue on their life-long open source contribution as they embark on their next phase of personal development. We will continue to work through the backlog of GSoC project stories on the blog this term. + +UPDATE July 15, 2018 Mentors and students continued to work towards their objectives during this second evaluation period. Due to internal organizational staff changes and other organization operational factors, three problematic projects were identified during this period. Extensive administrative intervention and turn-around was necessary to "salvage" these projects. Thankfully, the GSoC students worked with us every step of the way as we reassign mentors and realign mutually agreed project scopes. As a result, the (new in some cases) project mentors have decided to pass all enrolled students - both GSoC and independently funded projects for this term. Internally, the projects' blog post series is lagging significantly behind, we are working to catch up as soon as possible. + +UPDATE June 15, 2018 The first evaluation period has come and gone. Our students have been coding feverishly over the past months and many of them have already demonstrated their work to their mentors and teams. We are proud to report that during this evaluation, our mentors have decided to pass all eight of the GSoC students. Our Rocket.Chat-sponsored projects also reported all passes for the three students. We have started to create blog stories around the projects featuring our students - the first story should be available in the next week or two. Due to some internal project logistical problems, one of the students has agreed, together with his mentors and team to switch topic from the second term onwards - to another one of his accepted final proposals - our list below has been amended to reflect the change. We have, through our working partner, been able to fund an additional (to the 11 that we already have) highly capable but non-GSoC selected student to work on a Rocket.Chat-related topic. + +UPDATE April 25, 2018, AMENDED June 15, 2018 The list of [official GSoC 2018 accepted students and projects](https://summerofcode.withgoogle.com/organizations/6355544806260736/) is now available. First, we would like to sincerely thank every student who has submitted a proposal and many who had worked on PRs and assisted in our open source community - please continue the excellent work. Of the 93 proposals we received, there were many high quality ones. We have also interacted with many of the students in the prior month. The decision-making was difficult and mentors were competitive this year. Ultimately, EIGHT of the top students/proposals this year are accepted for GSoC 2018 (thank you, Google!): + +| Student | Project | Mentors | +| --------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------- | +| Mikael Mello | Improve the integration of bots on Rocket.Chat | Tim Kinnane, Diego Dorgam, John Szaszvari | +| Aniket Singh | Android and wear app | Fiipe Brito, Lucio Maciel | +| Jose Renan | Rocket.Chat SDK for Javascript Clients | Karl Prieb | +| Semih Serhat Karakaya | Nextcloud as Storage and User File Provider | Guilherme Gazzo, Bjoern Schiessle, John Szaszvari | +| Karan Bedi | Rocket.Chat voice recognition APIs and built-in Speech2Text Engine integration | Gabriel Delavald, Pierre Lehnen | +| Nikhil Kaushik | Integration with Google Drive and Dropbox | Marcelo Schmidt, Martin Schoeler | +| Samar Sunkaria | Support for theming the Rocket.Chat iOS app | Matheus Cardoso, Filipe Alvarenga | +| De Sheng Chuan | Data integrity and consistency | Diego Sampaio, Rodrigo Nascimento, Sing Li | + +In addition, due to the sheer number of high quality entrants, Rocket.Chat has decided to sponsor THREE additional top students for this summer: + +| Student | Project | Mentors | +| --------------- | ------------------------------- | ---------------------------- | +| Pradeep Kumar | Live Chat Reports and Analytics | Renato Becker | +| Nitesh Saxena | Intgration with IPFS | Sing Li, Ankit Bhatia | +| Arthur Temporim | Enhanced BOT Adapters | Diego Dorgam, John Szaszvari | + +All of the eleven students have been contacted by mentors and have started the community bonding period. + +UPDATE April 2, 2018 - 2018 is an incredible GSoC year for us, we have received a total of NINETY THREE proposals from students studying at every corner of the globe - Brazil, Turkey, USA, Armenia, India, China, Singapore, Hong Kong and more. Thank you, GSoC students, for the overwhelming interest on our project. Proposal topics covered almost all of the suggestions on our idea list - and even a few original ones. Our TWENTY FIVE Rocket.Chat core, guest, and community mentors are hard-at-work right now going through every one of the proposals, and will be contacting students for a video chat prior to deciding on proposal selection and slot assignments. Please keep in touch with us and continue to contribute to the Rocket.Chat project during this time. + +UPDATE March 24, 2018 - Students PLEASE NOTE that your final proposal is due on March 27th. It must be in PDF format and submitted via the official GSoC Dashboard. Your Rocket.Chat Core and Guest Industry mentors are looking forward to receive and review your final proposals. + +UPDATE March 12, 2018 - Proposal submission for GSoC 2018 has started! Interested students should visit the [GSoC 2018 site](https://summerofcode.withgoogle.com/) to apply and submit their proposals. See the _Project Ideas_ section below for some interesting ideas. + +You can email the mentor(s) directly for discussion and further information. You can also find them, most of the time, on our [community server](https://open.rocket.chat/) for real-time chat. Many of the mentors are fluent in both Portuguese and English. + +For current information on the 2018 program and general discussions, please see GSoC 2018 category on our discussion forums: + +[https://forums.rocket.chat/c/gsoc](https://forums.rocket.chat/c/gsoc) + +For some real-time help on next steps, please visit our community server Google Summer of Code 2018 discussion channel: + +[https://open.rocket.chat/channel/gsoc18](https://open.rocket.chat/channel/gsoc18) + +If you have ideas and proposals that are not on our idea list, or if a mentor is not available, please email to: + +gsoc+2018@rocket.chat + +Interested students are also encouraged to interact with our contributor community on GitHub: + +[https://github.com/RocketChat/Rocket.Chat](https://github.com/RocketChat/Rocket.Chat) + +## Project Ideas + +### Global Search + +* **Mentors:** @rodrigo.nascimento +* **Description:** Add global search to Rocket.Chat, allowing users to search across messages, rooms, files, users, etc in a single and easy to use interface. Like a macOS Spotlight search. +* **Desirable Skills:** Familiarity with JavaScript development, MongoDB or other search engine. + +### Users Directory integration plus custom fields editor and search + +* **Mentors:** @marcelo.schmidt +* **Description:** Rocket.Chat already allows for users to add custom fields through a setting that accepts a JSON. We would like to create an interface to manage these custom fields. Each custom field must be composed of label, type (one of predefined: string, number, picklist, money, etc.), and an option to determine if this field must be displayed on registration or not. On Users Directory, users must be able to select multiple records from the results and do one of the possible actions: add to existing channel or group and create new channel or group; if only one record is selected, it should also be possible to start a direct message with the selected user. +* **Desirable Skills:** Familiarity with JavaScript development. + +### Storage integration with Google Drive and/or Dropbox + +* **Mentors:** @marcelo.schmidt, @martin.schoeler (co-mentor) +* **Description:** (1) Enabling Rocket.Chat users to use Google Drive and/or Dropbox for storage of their uploads. (2) Within Rocket.Chat, allow access to Google Drive or Dropbox contents. +* **Desirable Skills:** Familiarity with JavaScript development, and with Google Drive and/or Dropbox APIs. + +### Nextcloud Integration + +* **Mentors:** @guilherme.gazzo, @bjoern.schiessle (Nextcloud Guest Mentor) +* **Description:** You will create a cross-platform GUI file picker interface for Nextcloud, integrated within Rocket.Chat, allowing any user to select files from a Nextcloud server (or hosted Nextcloud account) for utilization (such as file-sharing upload) within Rocket.Chat. +* **Desirable Skills:** You should already be familiar with the operation of Nextcloud and Rocket.Chat and ideally have experience programming with Nextcloud’s API. Experience working with JavaScript GUI an fullstack frameworks such as Angular and/or React is a big plus. You will get a chance to work with the creators and architects of both Nextcloud and Rocket.Chat. Upon completion of this project, you will be able to claim experience creating a modern open source software component that will be used by hundreds of thousands of Rocket.Chat and Nextcloud users. + +### NextCloud as a Storage Provider + +* **Mentors:** @guilherme.gazzo, @bjoern.schiessle (Nextcloud Guest Mentor) +* **Description:** (1) Enabling Rocket.Chat server administrator to use an NextCloud instance for storage of upload. (2) Within Rocket.Chat client user interface, allow access to the contents on a user's NextCloud instance +* **Desirable Skills:** Familiarity with both Rocket.Chat and NextCloud development. + +### Snap Crafting + +* **Mentors:** @aaron.ogle, @sing.li +* **Description:** Snap is one of the easiest and most popular method to install Rocket.Chat on Linux distributions. You can have a Rocket.Chat server up and running with database and SSL proxy fully configured with one simple command. The current snap installation build script, used by hundreds of thousands of community users, is in need of updating and enhancements. You will be crafting updates and new features for our snaps for this project. +* **Desirable Skills:** Interest in system configuration, dev ops, system operations, and operating systems. Should be competent in shell scripting on Linux and one or more programming languages. Experience with docker or snapcraft a big plus. + +### Scaling to the edge of dreams + +* **Mentors:** @diego.sampaio +* **Description:** Assist Rocket.Chat’s scalability engineers to scale Rocket.Chat to the next level. From tens of thousands of active connections, to hundreds of thousands to millions, to world-scale. +* **Desirable Skills:** We are looking for an enthusiastic undergraduate, planning to enroll or already enrolled for masters or PhD work in a cluster computing or scalability discipline to join us for an exciting summer of hands-on practical fun. Working alongside our scalability expert – you will devise and test out various performance and scalability enhancements for Rocket.Chat’s deployment configurations. You will be able to practice everything you have learnt so far in your under-graduate study, pushes beyond their limits, with a real production clustered server project – having your work impacting thousands of global users – all within the span of a single summer. + +### Live Chat Reports and Analytics + +* **Mentors:** @renato.becker +* **Description:** Add a panel to have analytical information about interactions in Live Chat. +* **Desirable Skills:** Familiarity with JavaScript development. + +### Uniting “One Rocket.Chat” with Federation + +* **Mentors:** @gabriel.engel, @matthew.hodgson (Matrix.org Guest Mentor), and @sing.li +* **Description:** Help Rocket.Chat to invent and implement networked federation for the next generation of collaboration platforms. +* **Desirable Skills:** Suitable for an ambitious undergraduate planning to enroll or already enrolled for masters or PhD work in a cluster computing, networking or distributed systems discipline in computer science or engineering to join us for an exciting summer of incredible brain crushing yet hands-on fun. Working alongside our federation team – you will help design and test out your hypothesis against a next generation federation mechanism optimized specifically for Rocket.Chat servers – uniting them globally across all geo-political boundaries to dynamically form “One Rocket.Chat”. This work will leverage all existing current research in this domain. You must already be familiar with the work of giants – such as matrix.org – and be ready to break all conventions to improve and innovate upon existing paradigms. You will be rewarded with production working experience on this bleeding-edge discipline, in a world-leading open source team environment with a like-minded team. An incredible and unique opportunity in 2018. + +### Built-in and server themes for iOS + +* **Mentors:** @matheus.cardoso +* **Project repository:** [https://github.com/RocketChat/Rocket.Chat.iOS](https://github.com/RocketChat/Rocket.Chat.iOS) +* **Description:** Be part of our iOS team this summer to push Rocket.Chat's native iOS App to the next level! You will - with our help - build the foundation for customizable user experience, support built-in themes for users to choose from and server-specific themes, allowing server owners to manifest the colors and feel of their communities. You will have the chance to exchange experience with our engineers and designers, plus your work will have a great impact on the experience of thousands of users! +* **Desirable Skills:** We are looking for an undergraduate student who is familiar with team work, developing iOS Apps using UIKit, Auto Layout and Swift, as well as writing maintainable code with Unit Tests. + +### Apple Watch & Siri Support + +* **Mentors:** @rafael.kellermann +* **Project repository:** [https://github.com/RocketChat/Rocket.Chat.iOS](https://github.com/RocketChat/Rocket.Chat.iOS) +* **Description:** Create an Apple Watch application that replicates the most basic features we have in our iOS mobile client, such like viewing the chat rooms and reading the messages. Let user ask Siri to read latest messages, send messages or respond to a message. +* **Desirable Skills:** Familiarity with WatchKit development on WatchOS & SiriKit. Ability to work in large multi-disciplinary teams. + +### PDF/File preview + +* **Mentors:** @rodrigo.nascimento +* **Description:** Add small previews for non image files improving the UI/UX allowing users to see a preview of the content before click to open the file, it includes PDF, Word Documents and similar, Excel Documents and similar, PowerPoint and similar, Text files, Sketch, Photoshop, etc. +* **Desirable Skills:** Familiarity with JavaScript development. Experience hacking documents conversion and/or rendering libraries is a big plus. + +### Draw (Android) + +* **Mentors:** @rafael.kellermann +* **Project repository:** [https://github.com/RocketChat/Rocket.Chat.Android](https://github.com/RocketChat/Rocket.Chat.Android) +* **Description:** Allow user to draw something using our Android native app and send to Rocket.Chat channel. The draw would have different colors and "brush" options (pen, brush, pencil, etc). User will also be able to draw on top of an image selected from library or just shot. +* **Desirable Skills:** Familiarity with Java or Kotlin development on Android. Previous experience with working on the Android App development and using open source libraries would be helpful. Ability to work in large multi-disciplinary teams. + +### Android Wear App + +* **Mentors:** @filipe.brito +* **Project repository:** [https://github.com/RocketChat/Rocket.Chat.Android](https://github.com/RocketChat/Rocket.Chat.Android) +* **Description:** Create an Android Wear application that replicates the most basic features we have in our Android app, such like viewing the chat rooms and reading the messages. +* **Desirable Skills:** Familiarity with Kotlin development on Android. Ability to work in large multi-disciplinary teams. + +### Enabling global decentralized blockchain powered crypto communities + +* **Mentors:** @sing.li , @ankit.bhatia (Sapien Network Guest Mentor) and other leading blockchain industry guest mentors +* **Description:** Working together with our crypto and blockchain team – you will help build the key enabler platform for the future of blockchain powered decentralized communities all over this world (and perhaps even beyond). Within this short summer, you will gain experience in working on a global-circulation production-grade blockchain-powered adoption-acceleration platform. You will also meet and work with leading visionaries and pioneers in the current blockchain / crypto field. Tangible potential to become an early architect of this brave new world, supported by Rocket.Chat. + +Some projects that you can submit proposals for include: + +### **Decentralized Crypto Exchange in Rocket.Chat** + +* **Description:** Starting either from scratch or utilizing one of the compatible license open source DEX code bases – create a functional Decentralized Exchange within Rocket.Chat. You will create a DEX that takes advantage of strong cryptographic identity solutions such as Blockstack ID and wallet integration such as Metamask or ARK wallet in your work. + +### **IPFS storage solution in Rocket.Chat** + +* **Description:** Integrate IPFS into Rocket.Chat as a viable storage provider. Ideally IPFS can be used as a storage provider for uploaded Rocket.Chat contents. In addition, the ability to access IPFS within Rocket.Chat, to supply files that can be shared between users of Rocket.Chat is also essential. Leveraging integration with strong cryptographic identities such as Blockstack ID, the solution should include strong data-at-rest encryption of decentralized contents. Use of decentralized storage abstraction frameworks such as Blockstack Gaia should be considered to simplify this work. Use of IPFS as a decentralized storage for Rocket.Chat’s data should also be considered within the term. + +### **Cryptocurrency Wallet and/or Portfolio Management in Rocket.Chat** + +* **Description:** Enable the integration of wallet(s) such as Metamask, MyEtherWallet, ARK or other wallets or crypto portfolio management system within Rocket.Chat. +* **Desirable Skills:** Looking for a unique fringe-dropout university student already committed to our inevitable decentralized future powered by Web 3.0 and continued blockchain technology innovations. While maintaining a high score on all your subjects, you should be finding your existing university education ridiculously limiting, and already have experience hacking smart contracts, minting tokens for friends and family, hacking ethereum, and trading cryptokitties. You eat truffle for breakfast and ride the open zepplin to school every day. Recent government (perhaps your own government) baseless advances into this area has significantly disturbed you. You already realized that you are way ahead of your time. And you will recognize this GSoC 2018 project to be the absolutely not-to-miss opportunity of your life. + +### Google Assistant + +* **Mentors:** @rafael.kellermann +* **Project repository:** [https://github.com/RocketChat/Rocket.Chat.Android](https://github.com/RocketChat/Rocket.Chat.Android) +* **Description:** Let user send messages talking to Google Assistant. + +### Performance tests + +* **Mentors:** @diego.sampaio +* **Description:** Create an initial script to run performance tests of basic functionalities, it should be able to run in our CI and should track information to allow us and the community follow the performance changes. + +### Javascript SDK + +* **Mentors:** @karl.prieb @guilherme.gazzo +* **Description:** Create a javascript SDK that can be used on our ReactNative, Live Chat and our webclient projects. + +### Game platform integration + +* **Mentors:** @pierre.lehnen +* **Description:** Integrate a multiplayer-capable game engine that runs on the web browser (eg. Unity WebGL, Phaser, Three.js) with Rocket.Chat. Let room members start small multiplayer games and play together. +* **Desirable Skills:** Experienced with JavaScript, web browser game engines, and networking. + +### Improve Hubot Integration + +* **Mentors:** @diego.dorgam, @john.szaszvari (Contributing Guest Mentor) +* **Description:** Improve the internal hubot interface, by allowing users to set up their own repositories for Rocket.Chat to read and deploy a hubot instance from it. Also would be awesome if the user could just edit the scripts files, and get console logs, right from the Rocket.Chat interface. +* **Desirable Skills:** Familiarity with JavaScript development and hubot architecture. + +### Open Source Bot Frameworks Adapters + +* **Mentors:** @diego.dorgam, @timkinnnae, @john.szaszvari (Contributing Guest Mentor) +* **Description:** The objective is to widely open Rocket.Chat's bots ecosystem by developing connectors/adapters to open source bot frameworks available in the web, so their community can develop bots able to run on Rocket.Chat platform. The scope would include the following frameworks: +* BotKit +* Rasa.ai (Rasa Core) +* BotPress +* **Desirable Skills:** Familiarity with JavaScript and Python development. + +### Rich Messages and Payloads for Buttons and Cards + +* **Mentors:** @diego.dorgam, @timkinnnae, @john.szaszvari (Contributing Guest Mentor) +* **Description:** Create UI components and develop the handling of message payloads to support new interactions for bots, like buttons, cards, images and more. Follow existing conventions to let bot developers migrate pre-built solutions to be delivered via Rocket.Chat. This opens the door for enhanced user experience and interaction flows in automated messaging, letting bots provide a much greater variety of utility; such as business apps, team workflows, even games and interactive narratives. +* **Desirable Skills:** Familiarity with front-end design and development (JavaScript / CSS). + +### Use Voice Recognition APIs + +* **Mentors:** @gabriel.delavald +* **Description:** Develop a voice recognition integration feature, by building a `Settings` pane to connect some of the well-known voice recognition and speech to text APIs on the market directly from within Rocket.Chat. By configuring API's connection and usage attributes, and giving rocket.chat's UI the ability to click a button, record a message, send to the desired API and return the results to Rocket.Chat editing message box. The project scope could include the following APIs: +* IBM Watson's +* AWS Lex +* Google Assistant +* Bing + + Different APIs can be proposed as a possible change of scope. +* **Desirable Skills:** Familiarity with JavaScript development. + +### Built-in Speech2Text Engine + +* **Mentors:** @gabriel.delavald +* **Description:** Integrate an Open Source speech to text engine to be used inside Rocket.Chat by users who prefer an On-Premise full featured installation. There are many opensource speech2text engines on the market, like CMUSphinx and pocketsphinxjs, annyang, JuliusJS, Mumble, Voix JS, voice-commands.js and Artyon.js. This project will include a feature matrix comparison between those engines and the best one to be implemented in Rocket.Chat bundle, giving the UI the ability to click a button, record a message, send it to the text2speech engine and return the results to Rocket.Chat editing message box. +* **Desirable Skills:** Familiarity with JavaScript development and speech2text techniques. + +### Calendar Integration + +* **Mentors:** Mrinal Dhar (@mrinal.dhar) +* **Description:** Implement a calendar within Rocket.Chat for scheduling events and reminders, offering standalone functionality as well as integration with other calendars out there (Google Calendar, for example). Desirable features: + * Ability to schedule events and set up alerts for them. + * Automatically detect dates and time from messages and allow creating events from them. For example: In the message "Lets meet tomorrow", "tomorrow" should be automatically highlighted and user can then schedule an event by clicking on it. + * In a conversation, allow each user to select preferred time-slots and automatically schedule an event based on everyone's preferences. + * A consolidated events view that lists all scheduled events for a particular day, week or month. + * Integration with Google Calendar + * Ability to search for an event +* **Desirable Skills:** Familiarity with JavaScript development required. Previous experience with NLP (Natural Language Processing) or AI (Artificial Intelligence) would be helpful. + +## Timeline + +{% embed url="https://developers.google.com/open-source/gsoc/timeline" %} diff --git a/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2019.md b/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2019.md new file mode 100644 index 0000000000..3a026e84cd --- /dev/null +++ b/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2019.md @@ -0,0 +1,305 @@ +# Google Summer of Code 2019 + +[![Google Summer of Code 2019](https://github.com/Sing-Li/bbug/raw/master/images/gsoclogo.jpg)](https://summerofcode.withgoogle.com/) + +## How to apply + +Applications for the GSoC 2019 season have now closed. Please see GSoC timeline for more details. + +#### Update on July 10, 2019 + +First evaluation has completed! Coding continues at a feverish pace. Progress has been smooth across the projects. Projects are ontrack based on weekly mini-milestones agreed between mentors and students. Mentors are busy making sure that every student receive his/her detailed evaluation and payment. Students have also completed evaluation for their mentor(s). Many students are preparing their project for interim demo and reviews by our core team. During this first evaluation, we have decided to fail one student due to no communications with mentor. We also had to remove a mentor due to lack of available participation time. + +#### Update on May 28, 2019 + +Coding has begun! This year continues to be the most active and productive GSoC year at Rocket.Chat. During the bonding period, our students continued to assist community in public channels, interact with core team, contribute to bug fixes and documenation updates. They have also worked with their mentors to add detailed schedule to their proposal, reflecting measurable goals/milestones. Coding and detailed design work have started across all active projects. In addition, we are happy to welcome a team of community mentors from Credit Suisse Singapore, already well experienced with our core and native mobile code bases, to assist us this season. + +Unfortunately, during this time, we had to remove one student from the program due to extended inactivity. + +#### Update on May 8, 2019 + +2019 is an incredible year for GSoC at Rocket.Chat. Thanks to the enthusiastic early support from students and community (mentors), Google has graciously granted us **SEVENTEEN** project slots. This far surpasses any record from prior years. As a result, we are delighted to welcome these 17 active community members to work with us during the GSoC 2019 season: + +| Student | Project | Mentors | +| ----------------- | ----------------------------------------------------------------------------------------- | ---------------------------------------------------------- | +| Rudrank Riyam | VoiceOver Accessibility in Rocket.Chat iOS application | Matheus Cardoso, Samar Sunkaria | +| Noor Binte Amir | Theme Support for Rocket.Chat Android App | Filipe Brito, Peter Nguyen, Balaji Sanjeevi, Renji Raj | +| Aditya Bhardwaj | Service Accounts | Karen Bedi, Peter Lepeska | +| Shubham Singh | Rocket.Chat Articles | Peter Lepeska, Karen Bedi, Ramkumar KB, Jian Hou | +| Kautilya Tripath | Live Chat: Real-time Visitor Monitoring | Renato Becker, Diego Mello | +| Fongang Rodrique | Interactive APIs documenation | Martin Schoeler, Marcos Defendi | +| Kapil Gautam | Integrating Google Calendar with Rocket.Chat | Douglas Gubert, Rodrigo Nascimento | +| Upendra Reddy | Improve User Experience with Bots in Android App | James Hepburn, Peter Lepeska | +| Govind Dixit | Improve Test Automation in Rocket.Chat Android Repository | Eric Rosenthal, James Hepburn | +| Jon Goodrum | Improve Rocket.Chat Auto-Translate feature | Marcelo Schmidt, Sing Li | +| Ilarion Halushk | Improve end-to-end testing infrastructure for ReactNative client | Diego Mello, Diego Sampaio | +| Amish Mittal | Implemenation of Newsfeed in Rocket.Chat | Devin Toth, Peter Lepeska | +| Djorkaeff | Implement iOS and Android share extension for React Native app (Rocket.Chat Experimental) | Diego Sampaio, Diego Mello | +| Pranav Pandey | Enhancing ReactNative App with new features | Guilherme Gazzo, Diego Mello | +| Utkarsh Barsaiyan | Deeper Nextcloud Integration | Tasso Evangelista, Roeland Douma, Gulherme Gazzo | +| Tuan | Apple Watch App | Samar Sunkaria, Thiago Sanchez, Balaji Sanjeevi, Renji Raj | +| Ashish Jha | Alexa Skill for Rocket.Chat | Sing Li, Gabriel Engel | + +It was a very difficult decision for many mentors to select from the large number of highly qualified students (we were able to engage the students early on in the GSoC cycle with open source contributions via the [GSoC Leaderboard](https://gsoc.rocket.chat/) ). + +Some high calibre open source contributors were not selected for GSoC; to accommodate these exceptional students, our community member [Viasat](https://www.viasat.com/) has agreed to sponsor an additional FOUR projects this season. Rocket.Chat has in addition sponsored ONE qualified student with special circumstances to work with us for the term. + +| Student | Sponsored Project | +| ------------------ | ------------------------------------------------------------------------- | +| Shloak Aggarwal | Rocket.Chat iOS Contact Sync | +| Kailash Bhalaki | ReactNative Social Features | +| Divyanshu Bhargava | Making Rocket.Chat Android native app wonderful for consumers | +| SShi-qi Mei | Performance optimizations for ReactNative Client | +| Prajval Raval | Google Action for Google Home and Server-side improvements to support VUI | + +This, in combination, allowed us to accommodate a total of **TWENTY TWO** enthusiastic students this summer season. + +All students and mentors are now busy mutually bonding and with our core team and greater community. Each mentor is also working with his/her student on refining the weekly and monthly milestones/deliverables within the proposal to better reflect achievable project objectives as well as making them measurable for the monthly evaluations. Meanwhile, all our students are continuing to contribute to the Rocket.Chat open source project(s) as they have been doing since the start of the GSoC 2019 cycle. + +#### Update on April 10, 2019 + +This year, Rocket.Chat received a record breaking **ONE HUNDRED AND TWO** proposals from students studying at every corner of the globe. It is the first year we attempted to build a students + mentors community prior to submission deadline. Thanks to an enthusiastic and dedicated students community, we are successful in creating a GSoC 2019 community of **TWO HUNDRED AND FIFTY** members on our dedicated community server channel: + +[https://open.rocket.chat/channel/gsoc2019](https://open.rocket.chat/channel/gsoc2019) + +Open source contributions from students have already reach an all time high, with over ONE HUNDRED AND THIRTY students signed up for our real-time contribution tracking leaderboard: + +[https://gsoc.rocket.chat/](https://gsoc.rocket.chat/) + +Our community of mentors is hard-at-work right now going through every one of the proposals, and will be contacting students for a video chat prior to deciding on proposal selection and slot assignments. All students are encouraged to continue their engagement with our community, and contribute to our open source projects. + +#### About Rocket.Chat GSoC 2019 + +For ideas, check out our [list of ideas](https://docs.rocket.chat/contributing/google-summer-of-code-2019/#project-ideas) for some inspiration. + +Come meet our global community of 200+ mentors and students for GSoC 2019 and get some real-time help on next steps, please visit our 24 x 7 community server channel: + +[https://open.rocket.chat/channel/gsoc2019](https://open.rocket.chat/channel/gsoc2019) + +For offline discussions, we have a discussion forum: + +[https://forums.rocket.chat/c/gsoc/gsoc2019](https://forums.rocket.chat/c/gsoc/gsoc2019) + +If you have ideas and proposals that are not on our ideas list, or if a mentor is not available, please email to: + +gsoc@rocket.chat + +Interested students are also encouraged to interact with our contributor community on GitHub: + +[https://github.com/RocketChat/Rocket.Chat](https://github.com/RocketChat/Rocket.Chat) + +Enthusiasm and interest are extremely high this year; over 100 candidate students have already started to interact with our community and contributing to the projects! Together, they have already contributed over 100 merged PRs to our various projects. We are maintaining a real-time updated leaderboard for at-a-glance student (candidates) contribution here: + +[https://gsoc.rocket.chat/](https://gsoc.rocket.chat/) + +The leaderboard project **itself** is open source, created and maintained by our student (candidates). All potential GSoC organizations are welcome to use and deploy it (the project has a super friendly MIT license - just like Rocket.Chat). + +[https://github.com/lolimay/GSoC-Contribution-Leaderboard-Node](https://github.com/lolimay/GSoC-Contribution-Leaderboard-Node) + +## Project Ideas + +### Apple Watch & Siri Support + +* **Mentors**: @sameesunkaria @thiago.sanchez +* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.iOS](https://github.com/RocketChat/Rocket.Chat.iOS) +* **Description**: Create an Apple Watch application that replicates the most basic features we have in our iOS mobile client, such as viewing the chat rooms and reading the messages. Let the user ask Siri to read the latest messages, send messages or respond to a message. +* **Desirable Skills**: Familiarity with WatchKit development on WatchOS & SiriKit. Ability to work in large multi-disciplinary teams. + +### Themes support for Rocket.Chat Android app + +* **Mentors**: @filipe.brito +* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.Android](https://github.com/RocketChat/Rocket.Chat.Android) +* **Description**: Themes are very popular and they are part of what makes Android stand out from the rest. But the current Rocket.Chat Android app lacks the feature of applying different themes. This project aims to bring different themes support like dark mode and black mode into the existing Android client. It should enable any developer to create a theme for the Rocket.Chat Android app without the need to work with our core codebase. +* **Desirable Skills:** Familiarity with Android development, Kotlin, and design patterns. + +### Google Calendar Rocket.Chat App + +* **Mentors**: @douglas.gubert @rodrigok +* **Description**: The [Rocket.Chat Apps Engine](https://github.com/RocketChat/Rocket.Chat.Apps-engine) is here to make it easier to extend Rocket.Chat's functionality without having to deep dive into the code base. The goal of this project is to leverage the Apps Engine capabilities to create an integration with Google Calendar, using Slashcommands, custom API endpoints, custom Settings, etc. +* **Desirable Skills**: Familiarity with TypeScript. + +### Deeper Nextcloud Integration + +* **Mentors**: @roeland.douma @guilherme.gazzo +* **Description**: It's already possible to share a file from Nextcloud into Rocket.Chat. But the authentication is a bit clumsy. It would be great to have a single real sign in. So you only need to sign into Rocket.Chat and are automatically signed in Nextcloud of both talks to the same directory of course. +* **Desirable Skills**: Familiarity with Rocket.Chat and Nextcloud development. + +### Improve Rocket.Chat Auto-Translate feature + +* **Mentors**: @marcelo.schmidt +* **Project repository**: [https://github.com/RocketChat/Rocket.Chat/tree/develop/packages/rocketchat-autotranslate](https://github.com/RocketChat/Rocket.Chat/tree/develop/packages/rocketchat-autotranslate) +* **Description**: One of the most popular features in Rocket.Chat is auto-translate, where users can set their language preference to have all messages translated. This feature works by translating every incoming message into the user language of choice. We would like the student to make it possible for the package also to translate every message the user sends into another language. As a plus, if the student can implement a channel language setting, it would be superb. +* **Desirable Skills:** Familiarity with Rocket.Chat development and meteor packages. + +### Live Chat: Real-Time Visitor Monitoring + +* **Mentors**: @renatobecker, @diegolmello +* **Description**: The goal of Real-Time Visitor Monitoring is to provide an important feature for the Live Chat team by displaying a list of visitors who are browsing the website where the Live Chat widget is installed. Having this feature, it will be possible to track important information related to visitors, such as the current page, location, time on site, local time, and so on, even though the visitor has not yet started a conversation with an agent. In addition, an agent will be able to start a conversation with a specific visitor directly from the list, improving the proactivity of the Live Chat team. +* **Desirable Skills**: Familiarity with Rocket.Chat/Live Chat development. + +### API Playground: Interactive APIs documentation + +* **Mentors**: @martin.schoeler @marcos.defendi +* **Project repository**: [https://github.com/RocketChat/docs](https://github.com/RocketChat/docs) +* **Description**: Create an easy-to-use interface to let the user explore, test and get info about the existing endpoints of the Rocket.Chat's APIs - an API playground. The user will be able to connect and make requests directly from the UI, also being able to change the arguments of the requests and testing different flows of the APIs. Since our server APIs change constantly, it is important that the subset of API documentation within the playground is in precise synchronization with the code. This will require the integration of a documentation generation library. +* **Desirable Skills**: Familiarity with Jekyll and Rocket.Chat Rest API. + +### Service Accounts in Rocket.Chat + +* **Mentors:** @karan.bedi, @bizzbyster +* **Description:** Adding the functionality of Service accounts to Rocket.Chat. A service account is an account owned by a User (owner), having a basic profile (username, avatar, description, etc.). If any other User (initiating user) creates a direct messages(DM) session with this service account, this chat session is carried to the owner of the service account. The owner can then reply to this chat session, but to the initiating user, it would seem that the reply is coming from the service account. An authorized user should be able to create service accounts, transfer the ownership of the service account. Service accounts should be searchable; there should be a directory of service accounts. Also, users should be able to subscribe to service accounts, and a service account owner should be able to send broadcast messages to its subscribers. Automated tests should be written to cover the added functionality. +* **Desirable Skills:** Familiarity with JavaScript development & Rocket.Chat code base + +### Improved Test Automation in Rocket.Chat Repos + +* **Mentors** @eric.rosenthal @jaytat0 +* **Description:** The goal of this project is to enhance the current test infrastructure in the Rocket.Chat repos and pipelines. Currently, there is some very minimal unit testing that needs to be expanded, and no integration or system level tests or infrastructure to support them. This project could focus on one of the repos, possibly the Android code base, or all. Once a test infrastructure and best practice is established, the goal is that no new code gets merged unless it has new tests that will be run at build time, and it passes all of the previous tests. + +### iOS Voice Over Accessibility + +* **Mentors:** @matheus.cardoso +* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.iOS](https://github.com/RocketChat/Rocket.Chat.iOS) +* **Description:** VoiceOver is a gesture-based screen reader that lets you enjoy using iPhone even if you don’t see the screen. This is especially important for those with low or no vision. We want to make Rocket.Chat for everyone. A blind user should be able to easily add servers, change servers, read messages and send messages, as well as other additional functions such as editing profile and creating channels. A minimum acceptable scope is to be determined. +* **Desirable Skills:** We are looking for an undergraduate student who is familiar with team work, developing iOS Apps using UIKit and Swift, as well as writing maintainable code with Unit Tests and having some familiarity with Voice Over and Accessibility. + +### Ability to Rebrand Android and iOS Apps + +* **Mentors:** @jaytat0, @bizzbyster +* **Description:** Implement a way for administrators to rebrand their instances of Rocket.Chat - product name, icons, colors, etc. - for the android and ios apps, which currently do not support this. Besides adding this capability, another goal would be to make this branding across all the OS’s easy for an administrator that may not be too tech savvy. Ideally, this would only be a few easy steps. Besides this ease-of-use improvement, this would also make it less likely that people will fork rocket to put in their own branding. +* **Desirable Skills:** Familiarity with Android and/or iOS development, specifically the Rocket.Chat.Android/Rocket.Chat.iOS code bases. + +### Live Chat: Voice and Video Calls + +* **Mentors**: @tasso.evangelista @guilherme.gazzo +* **Description**: We've been working on our new Live Chat solution and it's time to add two great new features that will make Live Chat even more powerful: voice and video calls! The idea is to integrate Live Chat with the providers already supported in Rocket.Chat, such as Jitsi, WebRTC, BigBlueButton and so on. With these two new features, Live Chat users will be able to initiate video and audio calls between them and Live Chat agents. +* **Desirable Skills**: Familiarity with Rocket.Chat/Live Chat development, ReactJS/PreactJS, Voice and Video communication + +### Alexa Skill(s) + +* **Mentors**: @sing.li @gabriel.engel +* **Project repository**: [https://github.com/RocketChat/alexa-rocketchat](https://github.com/RocketChat/alexa-rocketchat) +* **Description**: Bring access of Rocket.Chat into the world of 100 million+ Alexa enabled devices. The project should aim beyond the obvious TTS <-> STT "Rocket.Chat bridging" of intelligent VUI terminal devices and create innovative, high valued user experiences to the Alexa ecosystem - powered by open source Rocket.Chat. Google Home/Assistant devices support, if possible, should also be considered concurrently. +* **Desirable Skills**: Familiarity with Alexa skills development. Experience with interfacing external sources and systems into Alexa skills. Passion for global converstational interaction enablement. Familiarity with Google Action development ideal. + +### BOTs UX: Improve the User Experience with bots by adding support for persistent menus, webviews, and rich messaging features + +* **Mentors**: @bizzbyster, @eric.rosenthal +* **Description**: Rocket.Chat trails both team and consumer chat platforms like Slack and Facebook Messenger/WeChat in terms of the richness of user interface components supported by bots. The goal of this project would be to add rich messages, persistent menus, welcome pages, webviews and other components to the Android, iOS, and web clients to allow chatbots to become comparable to web apps in terms of usability and UX. +* **Desirable Skills**: Interest UI/UX and chatbots. Experience in iOS, Android, or web client front ends development. Excited to participate in the full life cycle development process in an open source community context. + +### Newsfeed + +* **Mentors:** @bizzbyster, @karan.bedi +* **Description:** Adding the functionality of newsfeed, which is similar to a customized read-only channel for every user. Every user (follower) can follow other users (followed user). Posts from the followed user appear in the newsfeed of their followers. Posts are threaded discussions, started by the followed user in any public channel (origin channel), their follower can or cannot be a part of the origin channel, but this post comes up in their wall with a permalink to the original post in the origin channel. This helps in discovering new conversations. Interns are encouraged to propose extensions to this like wall, where a user can post threads that show up in their follower's feed, status updates, etc. Automated tests should be written to cover the added functionality. +* **Desirable Skills:** Familiarity with JavaScript development & Rocket.Chat code base + +### Improve end-to-end testing infrastructure for React Native app (Rocket.Chat Experimental) + +* **Mentors**: @diegolmello, @renatobecker +* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.ReactNative](https://github.com/RocketChat/Rocket.Chat.ReactNative) +* **Description**: E2E testing is important to keep the entire app working throughout the implementation of new features. Currently there's 219 E2E tests developed and passing on iOS only and they aren't working on CI, because we need an E2E dedicated and configured server. This project aims to improve testing infrastructure by adding Android capability and making test to pass on CI. Also we need to make sure all tests are passing as fast as possible. If there's any time left, the student must add even more tests. +* **Desirable Skills:** Familiarity with React Native and Rocket.Chat.ReactNative code base. + +### Rocket.Chat Articles + +* **Mentors:** @bizzbyster, @karan.bedi +* **Description:** For every deployment of Rocket.Chat, there is a team or community that generates a lot of content. Rocket.Chat itself is the repository for much of that content but the rest typically resides in other applications such as github or jira or google docs, many of which are third party services and so the content is not owned by the community that hosts the Rocket.Chat server. In one particular scenario, a user may want to write an article and "publish" it to groups or contacts within Rocket.Chat. Today that would have to be done typically using a third party service. What if instead article creation, searching, and storage were integrated with Rocket.Chat such that each user could maintain his or her own library of articles and contacts of that user could subscribe to see new articles posted by that user and to discuss those articles using something like Rocket.Chat Threads. By default, each Rocket.Chat user would essentially hav their own "blog" which could be accessed via a permalink including links to each "article." In general, the purpose of this project is to develop a minimum integration with another open source publishing platform (such as [https://github.com/TryGhost/Ghost](https://github.com/TryGhost/Ghost)) that allows users (or bots or service accounts) to write and publish articles that get stored on a location configured by the Rocket.Chat administrator so that the community maintains ownership of more of the content it generates. +* **Desirable Skills:** Familiarity with JavaScript development & Rocket.Chat code base & interest in exploring integrations with publishing open source projects. + +### Implement iOS and Android share extension for React Native app (Rocket.Chat Experimental) + +* **Mentors**: @diego.sampaio, @diegolmello +* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.ReactNative](https://github.com/RocketChat/Rocket.Chat.ReactNative) +* **Description**: Share extensions enables iOS or Android OS to share content between apps. This project aims to implement a share extension for React Native client to let users share data into Rocket.Chat from other apps. For example, a user should be able to send photos from the camera roll to a Rocket.Chat channel without opening the RC client. +* **Desirable Skills:** Familiarity with React Native, iOS and Android development and Rocket.Chat.ReactNative code base. + +### Improve performance and implement slash commands on React Native app (Rocket.Chat Experimental) + +* **Mentors**: @guilherme.gazzo, @diegolmello +* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.ReactNative](https://github.com/RocketChat/Rocket.Chat.ReactNative) +* **Description**: In mobile apps, users must be able to do what they want in fewer taps as possible. Slash commands are faster ways to trigger trivial actions, like invite a user or archive a channel, and it should be available on React Native client. +* **Desirable Skills:** Familiarity with React Native development, specifically the Rocket.Chat.ReactNative code base. + +### Allow Rocket.Chat Apps to use their own NPM modules + +* **Mentors**: @douglas.gubert, @rodrigok +* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.Apps-engine](https://github.com/RocketChat/Rocket.Chat.Apps-engine) +* **Description**: Currently the Rocket.Chat Apps Engine does not support that apps include their own `node_modules` dependencies, which can be very limiting in some use cases. The goal of this project is to modify our engine so that it can properly install and manage an app's dependencies, enabling app developers to unleash their full potential. +* **Desirable Skills**: Solid understanding of JavaScript and some familiarity with TypeScript. Familiarity with TypeScript's compiler is definitely a plus. + +### Users Directory integration plus custom fields editor and search + +* **Mentors**: @marceloschmidt +* **Description**: Rocket.Chat already allows for users to add custom fields through a setting that accepts a JSON. We would like to create an interface to manage these custom fields. Each custom field must be composed of label, type (one of predefined: string, number, picklist, money, etc.), and an option to determine if this field must be displayed on registration or not. On Users Directory, users must be able to select multiple records from the results and do one of the possible actions: add to existing channel or group and create new channel or group; if only one record is selected, it should also be possible to start a direct message with the selected user. +* **Desirable Skills**: Familiarity with Rocket.Chat development. + +### BOTs Suite: starter Chatbots for Rocket.Chat + +* **Mentors**: TBD +* **Project repositories**: [hubot](https://github.com/RocketChat/hubot-rocketchat), [chatops-gitsy](https://github.com/RocketChat/hubot-gitsy), [botpress](https://github.com/RocketChat/botpress-channel-rocketchat), [rasa](https://github.com/RocketChat/rasa-kick-starter), [bbot](http://bbot.chat/), [botkit](https://github.com/RocketChat/botkit-rocketchat-connector), [BOTswana](https://github.com/RocketChat/botswana-snap) +* **Description**: Develop a suite (5+) of BOTs across our Chatbot support portfolio/platforms; integrating current ML, AI, NLP, CMS, CRM and big data access stacks. BOTs need to be contemporarily interesting, simple to construct, yet substantially functional. They also need to be adaptable across the bot frameworks that Rocket.Chat supports. They will be used as starter learning resources across our BOT repositories. +* **Desirable Skills**: Deep interest in ML, AI, and modern BOT technologies. Experience in developing BOTs using NodeJS or Python. Clear methodical mind plus the ability to simplify and explain complex problems in simple terms. Technologically fearless. + +### Mattermost Data Importer + +* **Mentors**: TBD +* **Description**: Rocket.Chat is currently capable of importing data exported from Slack and HipChat, but there's no importer for Mattermost data. This is a valuable feature that the application is still missing. + +### Asana Rocket.Chat App + +* **Mentors**: @douglas.gubert, @rodrigok +* **Description**: The [Rocket.Chat Apps Engine](https://github.com/RocketChat/Rocket.Chat.Apps-engine) is here to make it easier to extend Rocket.Chat's functionality without having to deep dive into the code base. The goal of this project is to leverage the Apps Engine capabilities to create an integration with Asana, using Slashcommands, custom API endpoints, custom Settings, etc. + +### Admin webview page integration on React Native app (Rocket.Chat Experimental) + +* **Mentors**: @diegolmello +* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.ReactNative](https://github.com/RocketChat/Rocket.Chat.ReactNative) +* **Description**: The goal of this project is integration with Rocket.Chat's admin webview page when the user has access. This helps administrators to change their servers behavior without the need to open Rocket.Chat on the web or the mobile version on their devices. +* **Desirable Skills:** Familiarity with React Native development and Rocket.Chat.ReactNative code base. + +### Improve notifications on React Native app (Rocket.Chat Experimental) + +* **Mentors**: @diegolmello +* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.ReactNative](https://github.com/RocketChat/Rocket.Chat.ReactNative) +* **Description**: For better user experience, we need to group notifications by channel and allow the user to reply directly from the notification. Also, we should show notifications from other channels when the user is using the app. +* **Desirable Skills:** Familiarity with React Native, iOS and Android development and Rocket.Chat.ReactNative code base. + +### Implement theming on React Native app (Rocket.Chat Experimental) + +* **Mentors**: @diegolmello +* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.ReactNative](https://github.com/RocketChat/Rocket.Chat.ReactNative) +* **Description**: Themes, like dark mode, are very popular and everywhere right now, but the Rocket.Chat React Native app lacks the feature of applying different themes. This project aims to bring different themes like dark mode and black mode into the existing React Native client. + +### Integration of Rocket.Chat with Existing Phone/Voice Networks + +* **Mentors**: TBD +* **Description**: Deep VoIP integration of Rocket.Chat with modern software and hardware SIP switches and VoIP SaaS. Intelligently add access to phone networks and SMS channels to the Rocket.Chat workflow. Enable multi-channel conferences with chat + phone calls + video. Empower Live Chat with voice calls in workflow. +* **Desirable Skills**: Familiar with SIP development. Fluent in VoIP concepts and practices. Ability to rapidly code in JavaScript and Linux shell. Wide open mind for new ideas. + +### iOS contacts sync, invites & dynamic links + +* **Mentors**: @zi.lin, @eric.rosenthal +* **Description**: In the Rocket.Chat native iOS application, add the functionality of listing all the contacts of a user, syncing in background these contacts with the server using existing APIs and displaying the intersection with public accounts on server. Integrating the APIs to invite users that do not have an account (via email/phone) or inviting via other applications on the phone. Support dynamic links in iOS app, allow the creation of links such that when invited through one, after installation of the app it opens a DM with the inviter, etc. `These functionalities are already implemented for Android in a fork.` +* **Desirable Skills**: Familiarity with iOS development. + +### SNAP improvements + +* **Mentors**: @lucia.guevgeozian +* **Description**: The most popular Rocket.Chat deployment method in the world is via snaps. Snaps are containerised software packages that are simple to create and install. The aim of this project is improve our snap installation process and features, bringing better support for our ARM architecture deployment, and expand our configuration options to set up Rocket.Chat in more diverse layouts adding support for loadbalancing between instances where Rocket.Chat will only be bound to the loopback interface, regular backups for our database configured as a replicaset and possible firewall configuration. +* **Desirable Skills:** Familiarity with Linux. Good shell scripting skills. Aware of DevOps and containers based deployment technology. + +### Data Doctor: A database sanitizer tool for Rocket.Chat + +* **Mentors:** TBD +* **Description:** Rocket.Chat's data backend is MongoDB, a NoSQL database. NoSQL databases enable application developers to quickly add and change data schemas for new features without imposing rigid integrity constraints. While effective for small projects, this can create varied data inconsistency in long-lasting production server projects such as Rocket.Chat. Causes such as buggy code versions, crashes during migrations and/or schema updates, core customizations, and inadvertent DB admin modifications can all lead to a non-deterministic data schema. Some corrupted schema may break code, while others can go years without being detected. The goal of this project is to create a tool to help sanitize in production Rocket.Chat databases. Depending on the ingenuity of the tool design, the same code can one day be integrated into Rocket.Chat as a data integrity layer. +* **Desirable Skills:** Familiarity with database concepts and administration. Fluent with NodeJS and Javascript. Love hacking. + +### Open Source Office Suite Integration + +* **Mentors**: TBD +* **Description**: Add deep integration with open source word processing, spreadsheet, presentation, email and content management suite(s). Create a full chat-centric office team collaboration environment. +* **Desirable Skills**: Familiarity with development and extension/integration points for existing open source office suites. Ability to code and script in multiple programming languages. Preference to work with a team. + +## Timeline + +{% embed url="https://developers.google.com/open-source/gsoc/timeline" %} diff --git a/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2020.md b/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2020.md new file mode 100644 index 0000000000..c0090ef555 --- /dev/null +++ b/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2020.md @@ -0,0 +1,344 @@ +# Google Summer of Code 2020 + +[![Google Summer of Code 2020](https://github.com/Sing-Li/bbug/raw/master/images/gsoclogo.jpg)](https://summerofcode.withgoogle.com) + +## How to apply + +Application for Google Summer of Code 2020 is now closed. + +#### Update September 8, 2020 + +The GSoC 2020 season has completed with one of the best experience ever for many of the participating students and mentors. + +The final list of successful Google Summer of Code 2020 Rocket.Chat projects and students/mentors is now [officially](https://summerofcode.withgoogle.com/organizations/4685162459168768/#5623423331467264) available. + +Of the **seven official** GSoC projects, every student has managed to pass their final evaluation.\ +Congratulations to all the students of 2020 and their tireless mentors! + +Of the **five additional** sponsored projects, **one** student : the problematic one noted in the previous term, has been **failed** by his mentors. + +In this final term, we encouraged students to prepare a 30 minutes demo and presentation of their project for our community and core team. Reception was incredible! The list of invitees topped 80! Most presentations were well attended. Students showed off their work proudly alongside their mentors. + +For many students, it was the very first presentation experience in their entire life - and having it in front such a supportive audience made it extremely fulfilling. Attendees are delighted to discover the excellent work (and exciting features) that the student undertook. + +From the crop of excellent 2020 students, the Rocket.Chat team made an internship offer to one student and he has accepted and became a member of our team. Our long time community contributor, Viasat, has also independently made an offer to another student this year. + +#### Update August 4, 2020 + +Second evaluation has completed. Once again, all mentors have decided to pass their students for this term. Of note is one potentially problematic student, mentor agreed to monitor the situation for the final term. Another student has pre-arranged with his mentor to start the term early and has completed his work by this evaluation. + +#### Update July 12, 2020 + +First evaluation has completed! All students have passed this first term. Most projects have students that are tracking or exceeding planned schedules. There is one project that is slightly lagging and we will keep a watchful eye on it this second term. Progress has been relatively smooth across the projects. Mentors are busy making sure that every student receive his/her evaluation and payment. Students have also completed evaluation for their mentor(s). Some project(s) have decided to start mini virtual daily stand-ups to keep closer tab on progress once past GSoC mid-way mark. Two mentors have withdrawn from participation, one has left the Rocket.Chat organization/community altogether, another due to unanticipated personal obligations. + +**Update June 8, 2020** + +Coding has started on June 1st. All mentors and students are busy getting the first month milestones of the project under way. Many of them are engaged daily via our [24 x 7 community community server](https://open.rocket.chat) + +We have two community sponsored projects with students dropping out during this time, one due to family obligations and another due to prolonged funding uncertainty, and replacement students have been located for these projects. + +**Updated June 8, 2020 ; Original on May 5, 2020** + +2020 is another exciting year for GSoC at Rocket.Chat. Thanks to the enthusiastic early support from students and community, the program has managed to sustain momentum despite COVID-19 downturn and reduced participation from core. Google has graciously granted us **SEVEN** project slots. As a result, we are delighted to welcome these 7 active community members to work with us during the GSoC 2020 season: + +| Student | Project | Mentors | +| ----------------- | --------------------------------------------------------------------- | -------------------------------------------------------------------- | +| Ashwani Yadav | Omnichannel: Add screen sharing feature in the Live Chat widget | Guilherme Gazzo, Renato Becker, Tasso Evangelista, Marcos Defendi | +| Ritwiz Sinha | Apps-CLI: Hot reload apps during development | Douglas Gubert, Shiqi Mei, Rodrigo Nascimento | +| Ezequiel Reis | Full-screen composer option to send/edit long messages on mobile apps | Djorkaeff Alexandre, Ramkumar Kalpathy, Diego Mello, Rowan Youngson | +| Govind Dixit | Create F-Droid build | Diego Mello, Djorkaeff Alexandre | +| Adarsh Naidu | Alexa Skill(s) Improvement | Ashish Jha, Prajval Raval, Weng Wei | +| Murtaza Patrawala | Omnichannel: Chatbot support for RASA and Dialogflow | Renato Becker, Marcos Defendi, David Lassalle, Steve Stetak | +| Taimur Azhar | Download manager on desktop app | Tasso Evangelista, Guilherme Gazzo, Eduarda Cunha, Gabriel Henriques | + +It was a very difficult decision for us to select _seven_ from the large number of highly qualified students (we were able to engage the students early on in the GSoC cycle with open source contributions via the [GSoC Leaderboard](https://gsoc.rocket.chat) ). + +While some high calibre open source contributors were not selected for GSoC; to accommodate these exceptional students, our community member Credit Suisse APAC has agreed to sponsor an additional THREE projects this season. + +| Student | Sponsored Project | Mentors | +| --------------------- | ----------------------------------------------------- | ---------------------------------------------- | +| Neil Agarwal | Audio Improvements on mobile apps | Nathan Khoo, Diego Mello, Djorkaeff Alexandre | +| Youssef Muhamad | Add Analytics to Mobile Apps | Noorul Ameen, Diego Mello, Djorkaeff Alexandre | +| Shreyansh Singh Tomar | Content Moderation Rocket.Chat App (Machine Learning) | John Eric Sobrepena, Karan Bedi | + +Furthermore, Viasat, one of Rocket.Chat's long-time community supporters, has agreed to sponsor TWO projects this season. + +| Student | Sponsored Project | Mentors | +| -------------- | ---------------------------------- | ----------------------------------------------------------- | +| Prajval Raval | Live agent and chatbot handoff app | David Lassalle, Steve Stetak, Renato Becker, Marcos Defendi | +| Kashish Jayasi | Rocket.Chat mobile site | Peter Lepeska, Eric Rosenthal, Karan Bedi | + +This, in combination, allowed us to accommodate a total of **TWELVE** enthusiastic students this summer season. + +All students and mentors are now busy mutually bonding and with our core team and greater community. Each mentor is also working with his/her student on refining the weekly and monthly milestones/deliverables within the proposal to better reflect achievable project objectives as well as making them measurable for the monthly evaluations. Meanwhile, all our students are continuing to contribute to the Rocket.Chat open source project(s) as they have been doing since the start of the GSoC 2019 cycle. Many are also engaging with community members on the various public channels of our 24 x 7 [community team server](https://open.rocket.chat). + +#### Update March 31st, 2020 + +First, we would like to thank all GSoC 2020 students for their enthusiastic support for Rocket.Chat. This year we have received a total of **86** proposals, including **81** final proposals. In the final pool, there are 13 proposals that are spam, without content, or not related to our projects. + +Over the next month, our mentors will be reviewing the received proposals. Google Summer of Code will be announcing the selected projects and students on May 4th, 2020. Please see [GSoC timeline](google-summer-of-code-2020.md#timeline) for more details. + +Meanwhile, we continue to introduce all active and incoming students to open source in general, and Rocket.Chat's ecosystem of open source projects in particular. Students will continue to make meaningful open source contributions in the form of issues & PR for our projects and interact with Rocket.Chat's vibrant community + team. + +#### Update March 29th, 2020 + +Enthusiasm and interest from students are all time high this year; over 112 candidate students have already started to interact with our community and contributing to the repositories! Together, they have already contributed over 100 issues and over 50 merged PRs to our various projects. We are maintaining a real-time updated leaderboard for at-a-glance student (candidates) contribution here: + +[https://gsoc.rocket.chat/](https://gsoc.rocket.chat) + +The leaderboard project **itself** is open source, created and maintained by our former GSoC student (now mentor and team member). All potential GSoC organizations are welcome to use and deploy it (the project has a super friendly MIT license - just like Rocket.Chat). + +[https://github.com/lolimay/GSoC-Contribution-Leaderboard-Node](https://github.com/lolimay/GSoC-Contribution-Leaderboard-Node) + +We have recnetly arranged for the TOP 8 student contributors to meet one on one with Rocket.Chat's project lead Gabriel Engel and great remote fun was had by all. + +Mentoring interest from core team has been reduced this year, while community mentor participation is at an all time high. Proposals for projects are streaming steadily in since application open, the volume of incoming proposals is reduced compared to prior year - but the percentage of high quality proposals has increased. + +#### About GSoC 2020 + +For ideas, check out our growing [list of ideas](google-summer-of-code-2020.md#project-ideas) for some inspiration. + +Come meet our global community of potential mentors and students for GSoC 2020 and get some real-time help on next steps, please visit our 24 x 7 community server channel: + +[https://open.rocket.chat/channel/gsoc2020](https://open.rocket.chat/channel/gsoc2020) + +For offline discussions, we have a discussion forum: + +[https://forums.rocket.chat/c/gsoc/gsoc2020/70](https://forums.rocket.chat/c/gsoc/gsoc2020/70) + +If you have ideas and proposals that are not on our ideas list, or if a mentor is not available, please email to: + +gsoc@rocket.chat + +Interested students are also encouraged to interact with our contributor community on GitHub: + +[https://github.com/RocketChat/Rocket.Chat](https://github.com/RocketChat/Rocket.Chat) + +## Project Ideas + +### Advanced Rocket.Chat administrators and operations toolkit + +* **Mentors**: [@diego.sampaio](https://open.rocket.chat/direct/diego.sampaio), [@sing.li](https://open.rocket.chat/direct/sing.li) +* **Description**: Administration and management of a Rocket.Chat server is a very complex task, especially for servers that are utilized by thousdands of users on a daily basis. There exists many administrative and operational activities that require access to the system in ways that are not currently supported by our Administrative dashboard. This project creates small, standalone tools, to address this need. These tools will be immediately useful for anyone operating one-or-more large Rocket.Chat server(s) worldwide. +* **Desirable Skills**: Familiarity with nodeJS fullstack webapp development. Experience with ReactJS or Vue.js ideal. Must have database skills, ideally MongoDB. + +### Download Manager on Desktop App + +* **Mentors**: [@tasso.evangelista](https://open.rocket.chat/direct/tasso.evangelista) and [@guilherme.gazzo](https://open.rocket.chat/direct/guilherme.gazzo) +* **Description**: With the React/Redux/Redux-Saga stack coming to the Electron-based app, a richer user experience is achievable through [Rocket.Chat's Fuselage components](https://github.com/RocketChat/Rocket.Chat.Fuselage). A long-awaited feature is the management of file downloads with some tracking of download progress and ability to cancel/restart. +* **Desirable Skills**: Some knowledge about the concept of CSS-in-JS and popular implementations for React (e.g. [Styled Components](https://styled-components.com), [Emotion](https://emotion.sh/docs/introduction)) as well basic understanding about the [Electron framework](https://www.electronjs.org). + +### Omnichannel: Chatbot support for RASA and Dialogflow + +* **Mentors**: @renatobecker, [@marcos.defendi](https://open.rocket.chat/direct/marcos.defendi) +* **Description**: The goal of this project would be to create new integrations to interact with popular BOT frameworks - RASA and Dialogflow. Also, support and adapt rich messages to the formats of these platforms, as well as the formats supported by Rocket.Chat. +* **Desirable Skills**: Experience in working with Chatbots communication. Familiarity with Typescript and, ideally, experience with Javascript. + +### Omnichannel: Live Agent and Chatbot Handoff App + +* **Mentors**: @steve.stetak, @dlassalle, @renatobecker +* **Description**: Enhance Omnichannel Rocket.Chat with an app to support the use of Chatbots, powered by NLP such as Dialogflow, in front of a larger existing infrastructure of Care Live Agents. The focus of this app being the seamless transfer between Bot, Live Agent, and Bot again. If the Chatbot is unable to solve their issue, the app will seamlessly route them to a Live Agent through a third-party queue system such as Salesforce. At the end of the conversation, the customer will be reconnected back to the chatbot for additional support or CSAT survey purposes, all within the same chat client window for the customer. +* **Desirable Skills**: Familiarity with Rocket.Chat development, Salesforce, and NLP or Chatbot experience + +### Omnichannel: Add screen sharing feature in the Live Chat widget + +* **Mentors**: @renatobecker, [@marcos.defendi](https://open.rocket.chat/direct/marcos.defendi) +* **Description**: Add a new interface between Rocket.Chat and the Omnichannel Live Chat widget, allowing Agents to get real-time screenshare on customer's devices. For this initial version, we will also create an integration with the Cobrowse.io, which will be the first screen sharing supplier supported. +* **Desirable Skills**: Experience with Javascript and React.JS. + +### Alexa Skill(s) Improvement + +* **Mentors**: @ashish.jha @prajval.raval1 +* **Project repository**: [https://github.com/RocketChat/alexa-rocketchat](https://github.com/RocketChat/alexa-rocketchat) +* **Description**: Bring access of Rocket.Chat into the world of 100 million+ Alexa enabled devices. The project should aim beyond the obvious TTS <-> STT "Rocket.Chat bridging" of intelligent VUI terminal devices and create innovative, high valued user experiences to the Alexa ecosystem - powered by open source Rocket.Chat. Google Home/Assistant devices support, if possible, should also be considered concurrently. The focus will be on devoting more time to improve the features which add more advantage and serve a frictionless experience when used via voice compared to features which have a limited use and are better performed using a GUI. +* **Desirable Skills**: Familiarity with Alexa skills development and conversational design. NodeJS Server Development and Rocket.Chat source code. Experience with interfacing external sources and systems into Alexa skills. Passion for global conversational interaction enablement. Familiarity with Google Action development ideal. + +### Apps-CLI: Hot reload apps during development + +* **Mentors**: @douglas.gubert @shiqi.mei +* **Description**: Add the option to the Rocket.Chat Apps-CLI to support apps development by hot-reloading the app in the development server on file saving. +* **Desirable Skills**: Experience with Javascript and familiarity with Typescript. + +### Add Analytics to Mobile Apps + +* **Mentors**: @noorul.ameen @djorkaeff.alexandre @diego.mello +* **Description**: We use Firebase to track some analytics, now we want to know data like 'how many people clicked on login?'. You need to add firebase analytics to our app and add track analytics of the most important features and events. +* **Desirable Skills**: Familiarity with React Native and Firebase Analytics. + +### Audio improvements on mobile apps + +* **Mentors**: @nathan.khoo @djorkaeff.alexandre @diego.mello +* **Description**: A new UI component to be rendered outside the room view allowing users to listen to the room’s audios when navigating to other rooms. Additions like listening speed are welcome. +* **Desirable Skills**: Familiarity with React Native and Rocket.Chat codebase. + +### Full-screen composer option to send/edit long messages on mobile apps + +* **Mentors**: @rowan.work @ramkumar.kb @diego.mello +* **Description**: A full-screen composer that could be opened from the current composer to provide a larger area for text input or edition, good to send or edit large texts. +* **Desirable Skills**: Familiarity with React Native and Rocket.Chat codebase. + +### Create F-Droid build + +* **Mentors**: @djorkaeff.alexandre @diego.mello +* **Description**: Create a build for the other store for Android apps: [https://f-droid.org/](https://f-droid.org) +* **Desirable Skills**: Familiarity with Android development, React Native and Rocket.Chat codebase. + +### Image/Video Content Moderation Rocket.Chat App using Machine Learning + +* **Mentors**: @johnathan.handoyo @jethro.lam @matheus.cardoso +* **Description**: Create a Rocket.Chat App that can classify videos and images as SFW or NSFW and block them based on user or admin settings. +* **Desirable Skills**: Familiarity with Rocket.Chat Apps and Machine Learning/Deep Learning or existing image classification services. + +### Uber Rocket.Chat App + +* **Mentors**: [@marcos.defendi](https://open.rocket.chat/direct/marcos.defendi), @renatobecker +* **Description**: The goal of this project is allow users to call their Uber rides directly from Rocket.Chat. +* **Desirable Skills**: Familiarity with Typescript and OOP concepts. + +### Vocabulary Booster Rocket.Chat App + +* **Mentors**: [@marcos.defendi](https://open.rocket.chat/direct/marcos.defendi), @renatobecker +* **Description**: The goal of this project is to provide the user a way to improve his vocabulary in a certain language (English, for now), by sending him a message with a "new" word in certain periods of time (configurable). After that, the app should validate if the user has learned the meaning of the word, sending the definition and some word options, or some sentence with the word and a gap to fill. Also the app would show the user's performance. There are some API's to get the words and the meanings. e.g ([WordsAPI](https://www.wordsapi.com), [Datamuse](https://www.datamuse.com/api/), [Oxford](https://developer.oxforddictionaries.com), etc) (needs to be evaluated deeply) +* **Desirable Skills**: Familiarity with Typescript and OOP concepts. + +### Rocket.Chat Mobile site + +* **Mentors**: @karan.bedi @eric.rosenthal +* **Description**: A client build for mobile-web, lite in size and functionality to bring down the site load time, with a better UI/UX customized for mobile screens. +* **Desirable Skills**: Familiarity with Rocket.Chat and Responsive Design + +### OAuth/Account integration + +* **Mentors**: [@shiqi.mei](https://open.rocket.chat/direct/shiqi.mei) and [@douglas.gubert](https://open.rocket.chat/direct/douglas.gubert) +* **Description**: Enable Apps to provide custom OAuth providers for Rocket.Chat + +### Assets installation (emoji and sounds) + +* **Mentor**: [@rodrigo.nascimento](https://open.rocket.chat/direct/rodrigo.nascimento) and [@douglas.gubert](https://open.rocket.chat/direct/douglas.gubert) +* **Description**: Enable Apps to provide custom assets as emojis and sounds for use on the various related features on Rocket.Chat + +### Federation Whitelisting + +* **Mentor**: [@alan.sikora](https://open.rocket.chat/direct/alan.sikora) +* **Description**: Enable Federation-enabled servers to whitelist other servers, avoiding unwanted chat requests and improving security + +### Permissions system - Feature Manifest + +* **Mentors**: [@douglas.gubert](https://open.rocket.chat/direct/douglas.gubert) and [@rodrigo.nascimento](https://open.rocket.chat/direct/rodrigo.nascimento) +* **Description**: Currently there is no way for an admin to know during the installation of an App which Apps-Engine features are going to be used and what kind of access the app will have to the workspace's data. The idea is for the App to provide a manifest with the features and access it is going to require, and the Apps-Engine will only allow the defined features to be used by the App. + +### Improve test coverage and enable visual regression tests + +* **Mentors**:[@guilherme.gazzo](https://open.rocket.chat/direct/guilherme.gazzo) and [@tasso.pinto](https://open.rocket.chat/direct/tasso.evangelista) +* **Description**: Re-enable all current skipped tests, start a visual regression test for each relevant UI part using the same tooling (Cypress) and add tests to features without tests. + +### Lightweight UI for single room access (embedded UI) + +* **Mentors**:[@guilherme.gazzo](https://open.rocket.chat/direct/guilherme.gazzo) and [@tasso.pinto](https://open.rocket.chat/direct/tasso.evangelista) +* **Description**: Rocket.Chat already has an option to load the UI as embedded layout, although it still loads a lot of unnecessary data, the objective here is to find the most efficient way to render a single room UI with the minimum data possible in a way that the UI can be embedded in a website using an iframe and be performatic when reloading within the site navigation + +### UI to see videos outside the room, using popouts + +* **Mentors**: [@guilherme.gazzo](https://open.rocket.chat/direct/guilherme.gazzo) and [@tasso.pinto](https://open.rocket.chat/direct/tasso.evangelista) +* **Description**: A new UI component to be rendered outside the room view allowing users to listen to the room’s videos when navigating to other rooms. + +### UI to listen to audio files outside the room (like telegram) + "user is recording audio" indicator (as the typing one) + +* **Mentors**: [@tasso.pinto](https://open.rocket.chat/direct/tasso.evangelista) and [@guilherme.gazzo](https://open.rocket.chat/direct/guilherme.gazzo) +* **Description**: A new UI component to be rendered outside the room view allowing users to listen to the room’s audios when navigating to other rooms. Additions like listening speed are welcome. + +### Pre-installed apps + +* **Mentors**: [@douglas.gubert](https://open.rocket.chat/direct/douglas.gubert) and [@shiqi.mei](https://open.rocket.chat/direct/shiqi.mei) +* **Description**: Make Rocket.Chat have a list of default apps that are going to be installed during the first run of the server. + +### Improve Documentation Framework (Versioning) + +* **Mentors**: [@martin.scholeler](https://open.rocket.chat/direct/martin.schoeler), [@guilherme.cruz](https://open.rocket.chat/direct/guilherme.cruz) +* **Description**: The main objective of this project is to add a versioning capacity to the documentation, while maintaining a relatively simple file structure and ease of use. In addition, add support for multi-lingual documentation and increase the ease of use of the documentation generation and hosting framework to ease the barrier of entry for contributors trying to run the environment on their own machines, making it more contributor friendly. +* **Desirable Skills**: Familiarity with Javascript development. Working knowledge of Jekyll and documentation generation framework highly useful. + +### Google Action Improvement + +* **Mentors**: @ashish.jha @prajval.raval1 +* **Project repository**: [https://github.com/RocketChat/google-action-rocketchat](https://github.com/RocketChat/google-action-rocketchat) +* **Description**: Bring access of Rocket.Chat into the world of 1 Billion+ Google Assistant enabled devices. The project should aim beyond the obvious TTS <-> STT "Rocket.Chat bridging" of intelligent VUI terminal devices and create innovative, high valued user experiences to the Google Assistant ecosystem - powered by open source Rocket.Chat. The project will aim towards making current action compaitable with Multisever proxy and publishing of Google Action of on its store, of course while adding more features to it such as Interactive Canvas, App Actions etc. This project will also focus on making current documentation more streamlined and "easy to refer" for newcomers. +* **Desirable Skills**: Familiarity with Google Actions development, Dialogflow, NodeJS Server Development and Rocket.Chat source code. Experience with interfacing external sources and systems into Google Action. Passion for global converstational interaction enablement. + +### Use Lingohub on mobile apps + +* **Mentors**: @djorkaeff.alexandre @diego.mello +* **Description**: Share Lingohub keys with the web client. +* **Desirable Skills**: Familiarity with React Native and Rocket.Chat codebase. + +### Share Location on Mobile Apps + +* **Mentors**: @djorkaeff.alexandre @diego.mello +* **Description**: We have this feature on our web client, server has an implementation about this, you only need to implement this feature on our Mobile Client and ability to select and share a location (based or not on user's location), custom message to show the location shared and need to be able to open this location on maps apps. +* **Desirable Skills**: Familiarity with React Native and Rocket.Chat codebase. + +### Mobile Apps Accessibility + +* **Mentors:** [@matheus.cardoso](https://open.rocket.chat/direct/matheus.cardoso) +* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.ReactNative](https://github.com/RocketChat/Rocket.Chat.ReactNative) +* **Description:** Android and iOS both support gesture-based screen readers that let you enjoy using the phone even if you don’t see the screen. This is especially important for those with low or no vision. We want to make Rocket.Chat for everyone. A blind user should be able to easily add servers, change servers, read messages and send messages, as well as other additional functions such as editing profile and creating channels. The proposal should contain a per-screen study of the current App's state of accessibility (what is missing and what needs to be improved), and a roadmap to take it to a delightful state. +* **Desirable Skills:** We are looking for a student who is familiar with team work, developing mobile Apps using React Native and JavaScript, as well as writing maintainable code with Unit Tests and having some familiarity with Voice Over (iOS), TalkBack (Android) and Accessibility. Knowledge of Swift/Objective-C and Kotlin/Java may be needed for some of the trickier tasks. + +### Omnichannel: Create integration with Zoho Desk CRM + +* **Mentors**: @renatobecker +* **Description**: In order to have a complete customer service experience, it is essential to have quick access to customer data, create service tickets, etc. The aim of this project is to provide that experience by creating an integration between Rocket.Chat and Zoho CRM, a complete CRM platform that will bring an even richer experience to the Omnichannel Customer Service. +* **Desirable Skills**: REST, Experience with Javascript and familiarity with Typescript. + +### Omnichannel: Support for Voice and Video Calls + +* **Mentors**: @gazzo, @tazzo +* **Description**: We've been working on our new Omnichannel solution and it's time to add two great new features that will make Omnichannel even more powerful: voice and video calls! The idea is to integrate Omnichannel with the providers already supported in Rocket.Chat, such as Jitsi, WebRTC, BigBlueButton and so on. With these two new features, Omnichannel users will be able to initiate video and audio calls between them and Omnichannel agents. +* **Desirable Skills**: Familiarity with Rocket.Chat/Omnichannel development, ReactJS/PreactJS, Voice and Video communication + +### Houston Improvements - Rocket.Chat release/changelog generator + +* **Mentors**: [@diego.sampaio](https://open.rocket.chat/direct/diego.sampaio) and [@rodrigo.nascimento](https://open.rocket.chat/direct/rodrigo.nascimento) +* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.Houston](https://github.com/RocketChat/Rocket.Chat.Houston) +* **Description**: Huston is the CLI tooling we use to release new versions of Rocket.Chat and to generate our change logs from merged pull requests. We want to: + * Rewrite the tooling in TypeScript; + * \~Improve the changelog generation getting more information from the PRs like description, images, etc;\~ (already done) + * Accept a new format of PR titles (conventional changelog); + * Add a validation system for PRs titles via GitHub Actions; + * Add a tooling to preview the generated changelog for the PR + * Add new top level of separation for product type (like Enterprise and Community) based on labels + +### Add Support for Bixby + +* **Mentors**: @ashish.jha @prajval.raval1 +* **Project repository**: [https://github.com/RocketChat/alexa-rc-multiserver-client](https://github.com/RocketChat/alexa-rc-multiserver-client) +* **Description**: Last year we explored the possibilities of having a Rocket.Chat Amazon Alexa Skill and a Rocket.Chat Action on Google. This project should aim to explore adding a Samsung Bixby Capsule for Rocket.Chat. Bixby is a next-generation, conversational assistant platform that was created to help users get things done in a more efficient, personalized and natural way. The way Bixby focuses on a multimodal approach from the very start could help eliminate the nuances involved in building an intricate voice-only experience. +* **Desirable Skills**: Familiarity with VUI/Bixby development. Experience with interfacing external sources and systems into Alexa skills. Passion for global conversational interaction enablement. Familiarity with Javascript ideal. + +### Apps-CLI: Generate boilerplate components + +* **Mentors**: @douglas.gubert @shiqi.mei +* **Description**: Add commands to the Rocket.Chat Apps-CLI that generate the boilerplate needed to add new components to the app being developed, such as Slash commands, API endpoints, etc. +* **Desirable Skills**: Experience with Javascript and familiarity with Typescript. + +### Nextcloud Video Management + +* **Mentors**: @guilherme.gazzo +* **Description**: Add the ability to manage and access recorded and previously live streamed video within the Rocket.Chat integrated Nextcloud environment. Similar to Youtube but with a chat-centric access interface. +* **Desirable Skills**: Familiarity with Rocket.Chat and Nextcloud development. Deep understanding of current digital streaming and recorded media standards a big plus. + +### Apple Watch App + +* **Mentors**: @djorkaeff.alexandre @diego.mello +* **Description**: Create an Apple Watch application that replicates the most basic features we have in our iOS mobile client, such as viewing the chat rooms and reading the messages. Let the user ask Siri to read the latest messages, send messages or respond to a message. +* **Desirable Skills**: Familiarity with WatchKit development on WatchOS & SiriKit, Familiarity with React Native. + +### Target official/experimental Mobile apps using GitHub Actions (CI) + +* **Mentors**: @djorkaeff.alexandre @diego.mello +* **Description**: Create build of our 4 apps on GitHubCI, 2 Android Apps and 2 iOS Apps (Official and Experimental). +* **Desirable Skills**: Familiarity with React Native, FastLane, Android & iOS build apps. + +## Timeline + +{% embed url="https://developers.google.com/open-source/gsoc/timeline" %} diff --git a/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2021.md b/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2021.md new file mode 100644 index 0000000000..10ef5cd81c --- /dev/null +++ b/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2021.md @@ -0,0 +1,330 @@ +# Google Summer of Code 2021 + +[![Google Summer of Code 2020](https://github.com/Sing-Li/bbug/raw/master/images/gsoclogo.jpg)](https://summerofcode.withgoogle.com) + +### Update August 21, 2021 + +All 15 of our projects continued smoothly during these final weeks of the GSoC 2021 program. Students and mentors worked hard together to finalize the (now it has become a tradition) [Rocket.Chat GSoC 2021 Project Demos](https://www.youtube.com/playlist?list=PLee3gqXJQrFXGRepCnOATldI6q-bCsaLB) This is the very first time for some students, to present in front of a group. And the audience this year is up to **120** Rocket.Chat community and team members, as well as fellow GSoC 2021 colleagues and mentors. + +This week, students are preparing for their final GSoC submission and final mentor evaluation. Next week, mentors will start their final evaluation. + +### Update July 11, 2021 + +Due to sudden departure of an active mentor, we are in jeopardy of losing two key projects for the year. Thankfully two heroines from Rocket.Chat's own Agile Planning and UI/UX team came forward and, together with mentors from our front-end team, saved the day for these projects. The new mentors assignments are now reflected on these two projects. + +| Student | Project | Mentors | +| ------------ | -------------------------------------------------------- | ------------------------------------- | +| Ghulam Ghous | Omnichannel Project: Live Chat Widget - Accessible ModeL | Leticia Peuser, Tasso Evangelista | +| Dhruv Jain | Introduce Audio calls to Live Chat | Murtaza Patrawala, Gabriel Henriquesz | + +The unsung heroine here is Aline Nunes, our senior Agilist, without whose help the last minute mentors re-assignment would not have been possible. + +### Update June 25th 2021 + +\ +Community bonding period is now officially over. Coding has officially began on all projects. Students are working towards the July 12 first evaluations. + +To accommodate another highly qualified student, and keen interests from mentors, our long time community partner Credit Suisse APAC has sponsored an additional project. This brings our total number of projects this season to **15**. + +| Student | Project | Mentors | +| ------------ | ------------------------------------------------ | -------------------------------------------------- | +| Priya Bihani | Image Manipulation: Editing / Cropping on Upload | Gabriel Henriques, Tasso Evangelista, Vibha Chawla | + +### Update May 20th 2021 + +2021 is an incredible year for GSoC at Rocket.Chat. Thanks to the enthusiastic early support from students and community (mentors), Google has graciously granted us **TWELVE** project slots. The [official listing](https://summerofcode.withgoogle.com/organizations/5243748067311616/?sp-page=2) of students selected for these 12 projects is now published.\ +\ +We are delighted to welcome these 12 active community members to work with us during the GSoC 2021 season: + +| Student | Project | Mentors | +| --------------- | ------------------------------------------------------- | ---------------------- | +| Ghulam Ghous | Omnichannel Project: Live Chat Widget - Accessible Mode | Leticia Peuser | +| Kartik Gupta | Speech-to-Text | Marcelo Schmidt | +| Darshil Patel | Introducing Ephemeral Channels in Rocket.Chat | Kevin Aleman | +| Yash Rajpal | App: Bad-Words Filter | Douglas Guebert | +| Dhruv Jain | Introduce Audio calls to Live Chat | Murtaza Patrawala | +| Anant Bhasin | E2E Testing for Android in Rocket.Chat.ReactNative | Diego Mello | +| Rahul Halder | Voice Channels | Douglas Fabris | +| Aditya Mitra | Out Of Office Settings with an Assigning Deputy | Amol Babu, Asrar Zaman | +| Jean Staquet | Task Channels | Pierre Lehnen | +| Adithya Vardhan | Channels Discovery | Martin Schoeler | +| Rohan Lekhwani | Poll App Mega Extensions | Ramkumar KB | +| Allan Juan | Language Power Tools | Rodrigo Nascimento | + +Even with the generous slot assignment this year, it is still a very difficult decision for many mentors to select from the large number of highly qualified students (we were able to engage the students early on in the GSoC cycle with open source contributions via the [GSoC Leaderboard](https://gsoc.rocket.chat) ; with **219 participating students**, **61 students with contributions**, **21 code committers**, working on **196 Merged PRs**, **231 Open PRs**, and **290 Issues** so far). Several high calibre open source contributors were left out and not selected for GSoC; to accommodate these exceptional students, Rocket.Chat has arranged to sponsor an **additional TWO** projects this season. + +| Student | Sponsored Project | +| -------------- | ------------------------------------------------- | +| Sumukha Hegde | New statuses for user actions/events (Typing 2.0) | +| Deepak Agarwal | Introduce Video calls to Live Chat | + +All verified students are now interacting with their mentors and the greater Rocket.Chat community during the community bonding phase of the 2021 GSoC season. + +### Update April 15th 2021 + +We are having a phenomenal Google Summer of Code season this year, participation from students is at an all-time-high. The enthusiasm and aptitude of student applicants have also improved over prior years.\ +\ +In our [24 x 7 GSoC 2021 channel ](https://open.rocket.chat/channel/gsoc2021)- we have over **473 mentors, alumni and students** collaborating actively on GSoC projects. On our[ GSoC leaderboard](https://gsoc.rocket.chat), we are tracking **219 students** actively contributing code to the Rocket.Chat open source ecosystem. As of today, we have welcomed **17 new code committers** to our projects. With a total of **138 merged PRs**, **182 open PRs,** and **246 issues** raised by GSoC 2021 students so far.\ +\ +To rally student spirit and assist them in creating their proposal, we organized an [Alumni Re-union Summit](https://community.rocket.chat/events/gsoc2021.html) where we invited former Rocket.Chat GSoC Alumni from all previous years to share tips with this year's GSoC students. More than **20 students** attended throughout the day to enjoy the talks from **10 alumni and mentors**. Highlight talks included one from a Facebook engineer and a Brazilian open source movement champion.\ +\ +As of student application deadline on April 13th, Rocket.Chat has received a total of **98 proposals** from interested students. Mentors are now busy reviewing the proposals and continuing to keep the students engaged on contributing to the Rocket.Chat open source ecosystem. + +## How to apply + +Application for GSoC 2021 is now closed. + +Accepted student projects will be announced on **May 17th , 2021** + +Please see the [Official GSoC 2021 schedule ](https://developers.google.com/open-source/gsoc/timeline)for more timeline details.\ +\ +Students continue to interact with mentors actively on our 24 x 7 GSoC 2021 community channel: + +[https://open.rocket.chat/channel/gsoc2021](https://open.rocket.chat/channel/gsoc2021) + +## About GSoC 2021 + +For project ideas, check out our growing [list of ideas ](google-summer-of-code-2021.md#project-ideas)for some inspiration. + +Meet our global **community of 470+ mentors and students** for GSoC 2021 and get some real-time help on the next steps. Please visit our 24 x 7 community server channel: + +[https://open.rocket.chat/channel/gsoc2021](https://open.rocket.chat/channel/gsoc2021) + +For offline discussions, we have a discussion forum: + +[https://forums.rocket.chat/t/about-the-gsoc2021-category/10335](https://forums.rocket.chat/t/about-the-gsoc2021-category/10335) + +If you have ideas and proposals that are not on our ideas list, or if a mentor is not available, please email to: + +gsoc@rocket.chat + +Interested students are also encouraged to interact with our core team and contributor community on GitHub: + +[https://github.com/RocketChat/Rocket.Chat](https://github.com/RocketChat/Rocket.Chat) + +[https://github.com/RocketChat/Rocket.Chat.ReactNative](https://github.com/RocketChat/Rocket.Chat.ReactNative) + +[https://github.com/RocketChat/Rocket.Chat.Electron](https://github.com/RocketChat/Rocket.Chat.Electron) + +## Project Ideas + +### Out of office settings with assigning deputy + +* **Mentors:** [@amol.babu](https://open.rocket.chat/direct/amol.babu), [@asrar](https://open.rocket.chat/direct/asrar) +* **Description:** The project's focus is to solve a very common but problem relating to Out of office functionality in Chat. + + **The goal:** + + * Any user can create out-of-office settings in Rocket.Chat by giving from and to date with the auto-reply message. + * User should be able to select the channels which would receive the out of office notification. + * The out-of-office notification should only be sent once for the first incoming message. + * The user can also define his deputy from the list of eligible users. + * At the time of out of office, the selected deputy will be automatically added to channel and can reply on behalf of main user. + * After the out-of-office time ends, the deputy should be auto removed from the channel. +* **Desirable Skills:** Familiarity with Rocket.Chat, nodeJS, Experience with ReactJS. Must have database skills, ideally MongoDB. + +### Ephemeral messages + +* **Mentors:** [@kevin.aleman](https://open.rocket.chat/direct/kevin.aleman) +* **Description:** This project aims to create a channel in which the messages sent will vanish after a configured amount of time. This would be a room (channel) setting where you can define how long the messages will last. Messages from here cannot be retrieved after its deletion, and the deletion cannot be deactivated, just postponed. +* **Desirable skills:** Familiarity with JS Full Stack web app development. Experience with MongoDB and PM2 are ideal. + +### Voice Channels + +* **Mentors**: [@douglas.fabris](https://open.rocket.chat/direct/douglas.fabris), [@pierre.lehnen](https://open.rocket.chat/direct/pierre.lehnen) +* **Description**: The ability to create voice channels would allow users to quickly enter and leave pre-existing voice calls from Rocket.Chat's own UI, enabling a more practical usage of audio features for team collaboration. This project would add the UI elements and integrate them with an established audio platform to handle the calls. +* **Desirable Skills**: Familiarity with nodeJS full-stack web app development. + +### Decentralized Storage Integration + +* **Mentors:** [@murtaza.patrawala](https://open.rocket.chat/direct/murtaza.patrawala) +* **Description:** The goal of this project is to add new decentralized P2P-based storage providers within [Rocket.Chat](http://rocket.chat). Decentralized solutions not only provide more security but are also more cost-effective. Some examples of decentralized solutions include Filecoin, Saicoin, Storj, etc. Via this project, the files uploaded on Rocket.Chat should be stored on the decentralized network, and the uploaded files should be accessible within Rocket.Chat. +* **Desirable Skills**: Familiarity with nodeJS full-stack web app development. Experience with [Rocket.Chat](http://rocket.chat) codebase and/or with any of the decentralized solution providers is ideal. + +### Omnichannel: Help Center + +* **Mentors:** [@murtaza.patrawala](https://open.rocket.chat/direct/murtaza.patrawala) +* **Description:** This project aims to add a Help Center within the Omnichannel Domain of Rocket.Chat. This will allow the creation of content that will answer people’s simple questions faster. This project's focus would be to provide an interface to create content (similar to how we can create an article on a Blogging platform like Medium) and then allow users/agents and customers to search within these contents, quickly answering their questions. This project will add a self-serve support layer that will help with scaling by automatically resolving repetitive questions with the help of such articles and guides, leading to faster answers for the customers and fewer questions to users/agents. +* **Desirable Skills**: Familiarity with nodeJS full stack web app development. Experience with ReactJS is ideal. + +### Apps-Engine E2E Testing + +* **Mentors:** [@lolimay](https://open.rocket.chat/direct/shiqi.mei), [@govind.dixit](https://github.com/GOVINDDIXIT) +* **Description:** This project aims to improve Apps-Engine end-to-end testing by adding more testing cases. The Apps-Engine APIs should be covered as much as possible to ensure that APIs tested are working. This project requires you to work across multiple repos ([Rocket.Chat](https://github.com/RocketChat/Rocket.Chat) and [Apps-Engine](https://github.com/RocketChat/Rocket.Chat.Apps-engine)). + + Checkout these links for the context: + + * [Apps-Engine E2E Testing GitHub Workflow](https://github.com/RocketChat/Rocket.Chat.Apps-engine/pull/366) + * [Apps-Engine E2E Testing Folder on Rocket.Chat side](https://github.com/RocketChat/Rocket.Chat/tree/develop/tests/end-to-end/apps) +* **Desirable Skills:** Familiarity with JavaScript. Experience with TypeScript and end-to-end testing is better. + +### Poll App Mega Extensions + +* **Mentors:** [@ramkumar.kb](https://open.rocket.chat/direct/ramkumar.kb), [@diego.sampaio](https://open.rocket.chat/direct/diego.sampaio) +* **Description:** The[ poll app](https://github.com/RocketChat/rocket.chat.app-poll) already allows anyone to create engaging rich interaction polls within any chat room. This project aims to expand its scope and capabilities hugely: making it a tool for enhancing participant's engagement with interactive quizzes/trivia / live-polls. + + Some initial ideas include: + + * Better bar-graph visualization for the responses (with a switch for anonymous responses - so 3 types: Open / Confidential / Mixed) + * Ability to add user options in the poll response and show the response of those responses in a visual way (e.g., word-cloud) + * Ability to create different types of polls (e.g., 1-to-5, Agree/Disagree, Overrated/Underrated) + * Ability to add emoticons on the response options + * Ability to create `/poll live` or `/live-poll` feature - it has 2 parts (prepare a set of questions beforehand and retrieve it just before the live poll starts. During the live-poll, a countdown timer for each question is shown, and upon completion, the responses are shown visually) a.k.a. multi-question version of the single poll feature + * (Stretch Goal) Ability to download the `live-poll` response, once the poll is over + * Enhance[ UIKit](https://docs.rocket.chat/apps-development/uikit) if needed to meet the above goals +* **Desirable Skills:** The sky is _not even the limit_ for this project. We will need a hot-shot all round challenge-loving student already familiar with JavaScript, TypeScript, React,[ current poll-app codebase](https://github.com/sampaiodiego/rocket.chat.app-poll) and [Rocket.Chat + Fuselage codebase](https://github.com/RocketChat/Rocket.Chat.Fuselage). + +### **Language Power Tools** + +* **Mentors:** [@rodrigo.nascimento](https://open.rocket.chat/direct/rodrigo.nascimento) +* **Project Channel:** [https://open.rocket.chat/channel/88mhz95ppbsncn4pk](https://open.rocket.chat/channel/88mhz95ppbsncn4pk) +* **Project Repository:** [https://github.com/RocketChat/Rocket.Chat](https://github.com/RocketChat/Rocket.Chat) +* **Desirable Skills:** JavaScript / TypeScript +* **Description:** Create internal scripts to extract translation strings from the source code and give some options: + * Check if all strings are translated in the target languages (en by default) + * List strings present in the target language that are not in the code anymore + * Option to render a completion chart for all languages + * Option to remove strings from all languages based on a target one + * Option to import missing strings into the target language to easily add translations + * Integrate the script on CI to block PR from merge if there are new strings without translations + +### Introduce Video and Audio calls to Live Chat + +* **Mentors**: [@rafaelferreira](https://open.rocket.chat/direct/rafaelferreira), [@murtaza.patrawala](https://open.rocket.chat/direct/murtaza.patrawala) +* **Description:** The outcome expected from this project is to support Video and Audio calls in one of the native Omnichannel entry points called \[Live Chat]\(https://github.com/RocketChat/Rocket.Chat.Live Chat). Live Chat is a small and lightweight application designed to provide B2C communication between Agents and website visitors. It is developed with [PreactJS](https://preactjs.com), which means that any ReactJS developer will be able to implement the new features using [WebRTC](https://webrtc.org) framework. +* **Desirable Skills**: Experience with JavaScript, ReactJS and WebRTC, and WebSocket API. + +### **App: Speech-to-Text** + +* **Mentors:** [@marcelo.schmidt](https://open.rocket.chat/direct/marcelo.schmidt) +* **Description:** This project aims to save a text version of audio in the file metadata. This should be done server-side upon receiving the audio. +* **Desirable Skills**: Familiarity with JavaScript and TypeScript. Knowledge in how to build Rocket.Chat Apps is a plus. + +### Channel Discovery + +* **Mentors:** [@martin.schoeler](https://open.rocket.chat/direct/martin.schoeler) +* **Description:** The idea is to add a page where you can discover new channels. This will allow users to find channels based on: Total number of users, number of messages, search for specific topics, if the channel has been trending lately, and any more ideas we can think of. The whole idea of this project is to improve communities using Rocket.Chat and add a sprinkle of social aspects to Rocket.Chat. +* **Desirable Skills**: Familiarity with JavaScript, React, and TypeScript. Knowledge in how to use Rocket.Chat fuselage is a plus. + +### Task Channels + +* **Mentors**: [@pierre.lehnen](https://open.rocket.chat/direct/pierre.lehnen), [@guilherme.gazzo](https://open.rocket.chat/direct/guilherme.gazzo) +* **Description**: This project aims to create a new kind of channel where instead of sending messages, users would be able to create task cards with several custom fields. Those tasks would then work as a thread header, allowing comments in the format of a thread. The basic additional information for a task message would be an assigned user and a status. The channel header should also list options to filter the tasks by those fields. +* **Desirable Skills**: Familiarity with nodeJS full stack web app development. Experience with ReactJS is ideal. + +### Image **Manipulation:** Editing/Cropping on Upload + +* **Mentors:** [@gabriel.henriques](https://open.rocket.chat/direct/gabriel.henriques) +* **Description:** This project aims to improve the Image upload feature, allowing users to crop images before sending it to a channel. Adding text and the possibility to draw on images could be implemented too. +* **Desirable Skills:** Experience with Javascript and React + Hooks. TypeScript is a plus. + +### App: Bad-Words Filter + +* **Mentors:** [@marcelo.schmidt](https://open.rocket.chat/direct/marcelo.schmidt) and [@douglas.gubert](https://open.rocket.chat/direct/douglas.gubert) +* **Description:** Rocket.Chat currently uses a third-party package to filter bad words. This poses a few problems, such as having to update the package every so often, having to check which words have been added or excluded in newer versions, and deciding if we would like to keep blocking or allowing words. This project is for building an App that can be enabled in our Marketplace to filter out a list of default bad words but will allow admins to add or delete words from that list. The app will need to cover the following requirements: + * Create a UI for managing the App settings + * Load a list of words from a URL + * Add/Remove words from a list + * Add/Remove channels where the bad words filtering is enabled (with a toggle for "all channels") + * Provide statistics on blocked words and offending users + * Automatically deactivate users that go above a certain threshold +* **Desirable Skills**: Familiarity with JavaScript and TypeScript. Knowledge in how to build Rocket.Chat Apps is a plus. + +### **Houston Improvements - Rocket.Chat release/changelog generator** + +* **Mentors:** [@rodrigo.nascimento](https://open.rocket.chat/direct/rodrigo.nascimento) +* **Project Channel:** [https://open.rocket.chat/channel/2dxywf7577zxgzark](https://open.rocket.chat/channel/2dxywf7577zxgzark) +* **Project Repository:** [https://github.com/RocketChat/Rocket.Chat.Houston](https://github.com/RocketChat/Rocket.Chat.Houston) +* **Desirable Skills:** TypeScript, Git, Shell +* **Description:** Houston is the CLI tooling we use to release new versions of Rocket.Chat and generate our changelogs from merged pull requests. We want to: + * Rewrite the tooling in TypeScript + * Accept a new format of PR titles (conventional changelog) + * Add a validation system for PRs titles via GitHub Actions + * Add tooling to preview the generated changelog for the PR + * Add new top level of separation for product type (like Enterprise and Community) based on labels + * Support dependent repositories to import their changelogs, for example, import the changelogs of apps engine + +### Add a bundler to the Apps-Compiler + +* **Mentors**: [@douglas.gubert](https://open.rocket.chat/douglas.gubert) +* **Description**: Currently, the Apps-Compiler package uses the bare TypeScript compiler to process apps' code and generate the JS version. This has some limitations, e.g. we can't "simply" bundle the whole app in a single file, we can't bundle npm packages, and so on. By changing this compiler into a proper bundler (Webpack, Rollup, etc.), we would have access to a richer ecosystem of tooling to handle the compilation process of Rocket.Chat Apps. +* **Desirable Skills**: JS/TS, familiarity with bundlers (using them, not necessarily writing one) would be interesting + +### **Stop notifications and Notifications schedule** + +* **Mentors:** [@rodrigo.nascimento](https://open.rocket.chat/direct/rodrigo.nascimento) +* **Project Channel:** [https://open.rocket.chat/channel/9nlxzwlfpcgzbfzl3](https://open.rocket.chat/channel/9nlxzwlfpcgzbfzl3) +* **Project Repository:** [https://github.com/RocketChat/Rocket.Chat](https://github.com/RocketChat/Rocket.Chat) +* **Desirable Skills:** JavaScript/TypeScript, React, React Native,, Rocket.Chat codebase +* **Description:** This feature consists of two new options for the end-users: + * **Stop Notifications:** A list of options to stop notifications for a certain time (30min, 1h, 2h, 24h, custom date/hour). + * **Notifications Schedule:** Option to configure (in user's settings) the availability time where notifications will be sent: + * With the option to configure for every day from X time to Y time + * With the option to configure for weekdays from X time to Y time + * With the option to configure X and Y times for each day of the week manually + * The same settings should be available for the workspace admin to configure a default value for all users + * The implementation should cover the web and mobile applications + +### **New statuses for user actions/events (Typing 2.0)** + +* **Mentors:** [@rodrigo.nascimento](https://open.rocket.chat/direct/rodrigo.nascimento), [@guilherme.gazzo](https://open.rocket.chat/direct/guilherme.gazzo) +* **Project Channel:** [https://open.rocket.chat/channel/mzbtnxgzodrofkxw8](https://open.rocket.chat/channel/mzbtnxgzodrofkxw8) +* **Project Repository:** [https://github.com/RocketChat/Rocket.Chat](https://github.com/RocketChat/Rocket.Chat) +* **Desirable Skills:** JavaScript/TypeScript, React, React Native,, Rocket.Chat codebase +* **Description:** Improve the current \`Typing\` functionality to support, on web and mobile applications, two new things: + * New properties to allow define new actions like \`recording\` or \`uploading\`, changing the current implementations to support and send those 2 new events and improve the end-user experience + * Support specifies a context for the typing, allowing it to be shown inside a thread when users are typing in that context instead of in the main room. + +### App: Global Translation + +* **Mentors:** [@marcelo.schmidt](https://open.rocket.chat/direct/marcelo.schmidt) +* **Description:** Rocket.Chat currently uses a package to provide message translations. This project aims to build that functionality on an app, thus reducing the codebase of Rocket.Chat and allowing for easier configuration. +* **Desirable Skills**: Familiarity with JavaScript and TypeScript. Knowledge in how to build Rocket.Chat Apps is a plus. + +### Community Collaboration Platform: Improvements + +* **Mentors:** [@sing.li](https://open.rocket.chat/direct/sing.li) [@murtaza.patrawala](https://open.rocket.chat/direct/murtaza.patrawala) +* **Description:** This is a chat and networking platform that helps to manage, grow and connect communities through messaging, content and discovery. This platform's aim to is to provide an easier way to collaborate over any Github, Gitlab, and other repository hosting services. The focus will be to add new features like User Management, Administration Module, etc. - also improve the current features, which add more advantages and provide a frictionless experience to all the fellow developers. +* **Desirable Skills**: Familiarity with nodeJS full stack web app development. Experience with ReactJS and ExpressJS is ideal. + +### Community Collaboration Platform: Discourse integration + +* **Mentors:** [@sing.li](https://open.rocket.chat/direct/sing.li) [@murtaza.patrawala](https://open.rocket.chat/direct/murtaza.patrawala) +* **Description:** This is a chat and networking platform that helps manage, grow and connect communities through messaging, content and discovery. The platform aims to provide an easier way to build a massive community collaborating over any Github, Gitlab, and other repository hosting services. The focus of this project will be to add tightly integrated support for Discourse, the leading open-source forum (civilized discussion) platform. +* **Desirable Skills**: Familiarity with nodeJS full stack web app development, and Ruby on Rails. Experience with Discourse and Discourse API programming a big plus. + +### **UiKit Playground** + +* **Mentors:** [@guilherme.gazzo](https://open.rocket.chat/direct/guilherme.gazzo), [@tasso.evangelista](https://open.rocket.chat/direct/tasso.evangelista) +* **Description:** Develop an application/playground that allows developers to test UiKit Blocks and Interactions. Should allow developers to generate code used by Rocket.Chat apps and edit the content to preview the result +* **Desirable Skills:** JavaScript/TypeScript + +### **Omnichannel: Live Chat Widget Accessible Mode** + +* **Mentors:** [@rafaelferreira](https://open.rocket.chat/direct/rafaelferreira) +* **Project repository:** [https://github.com/RocketChat/Rocket.Chat.Live Chat](https://github.com/RocketChat/Rocket.Chat.Livechat) +* **Desirable Skills:** Accessibility, React, SCSS +* **Description:** Omnichannel users, including users with visual disabilities, must be able to perceive content at the Live Chat widget. The main idea here is to give some options to Live Chat widget users to active "Accessible mode", which means: + * High contrast colors. + * Icons accompanying text. + * Bigger highlight over selected text or cursor active/hover using the "tab" key. + * Show a better solution when an Agent is typing. + * Etc + +### **Matrix Interoperability: migrating to native support** + +* **Mentors:** [@sing.li](https://open.rocket.chat/direct/sing.li) [@gabriel.engel](https://open.rocket.chat/direct/gabriel.engel) +* **Desirable Skills:** Familiarity with matrix.org protocol; skilled in rust, golang, and TypeScript development +* **Description:** Explore and improve existing Rocket.Chat to Matrix.org bridge(s) Investigate the current state of development in dendrite and hydrogen. Start the work on migrating to native support of the matrix protocols. + +### **Big Blue Button: replace embedded chat with Rocket.Chat** + +* **Mentors:** [@fcecagno](https://open.rocket.chat/direct/fcecagno) [@sing.li](https://open.rocket.chat/direct/sing.li) [@gabriel.engel](https://open.rocket.chat/direct/gabriel.engel) +* **Desirable Skills:** Familiarity with Big Blue Button; skilled in JavaScript, nodeJS and Meteor development +* **Description:** The embedded chat in Big Blue Button is already a Meteor based chat with a similar structure to Rocket.Chat. However, other components in Big Blue Button also depend on the same Meteor stack working against the same MongoDB instance for proper operations. This project aims to create the ability to integrate an existing Rocket.Chat server into Big Blue Button, replacing the existing embedded chat component. + +### **Channel's Calendar View** + +* **Mentors:** [@pierre.lehnen](https://open.rocket.chat/direct/pierre.lehnen) +* **Desirable Skills:** Familiarity with nodeJS full stack web app development. Experience with ReactJS is ideal. +* **Description:** Create a new option to see your activity in a channel in the format of a calendar, listing any action you had on each day. The listed actions would be things like: "joined discussion X", "created discussion Y", "sent messages on thread Z". This will help users find messages that they know they read/sent on a specific day but don't remember where. diff --git a/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2022.md b/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2022.md new file mode 100644 index 0000000000..bfba42786a --- /dev/null +++ b/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2022.md @@ -0,0 +1,513 @@ +# Google Summer of Code 2022 + +## [![Google Summer of Code 2020](https://github.com/Sing-Li/bbug/raw/master/images/gsoclogo.jpg)](https://summerofcode.withgoogle.com) + +## How to apply + +Application for Google Summer of Code 2022 is now closed. See [official Google Summer of Code site](https://summerofcode.withgoogle.com/). + +See official [accepted projects and contributors ](https://summerofcode.withgoogle.com/programs/2022/organizations/rocketchat)for the list of projects this year. + +For timeline, see [Official Google Summer of Code 2022 Timeline ](https://developers.google.com/open-source/gsoc/timeline)for more details.\ +\ +Rocket.Chat is proud to be a participating open source organization for the [Google Summer of Code 2022](https://summerofcode.withgoogle.com) program. This marks the exciting 6th year of participation with this 18 years-old program to usher in a new generation of open source contributors and enthusiasts.\ +\ +Almost anyone in the world [over 18 years of age ](https://opensource.googleblog.com/2021/11/expanding-google-summer-of-code-in-2022.html)who loves coding and wants to explore the incredible world of open source can join us as a GSoC 2022 contributor. + +#### **Contacting Rocket.Chat** + +For general information, please visit our 24 x 7 community channel for Google Summer of Code 2022 : [https://open.rocket.chat/channel/gsoc2022](https://open.rocket.chat/channel/gsoc2022) + +Join our [Google Summer of Code 2022 Team](https://open.rocket.chat/channel/google-summer-of-code) today and interact with over 300 like-minded contributors and meet the mentors in the [25 team channels](https://open.rocket.chat/channel/google-summer-of-code/team-channels). + +If you have ideas and proposals that are not on our idea list, or if a mentor is not available, you can also email to: + +gsoc+2022@rocket.chat + +Interested contributors are also encouraged to interact directly with our team and community on the team channels:\ +\ +[https://open.rocket.chat/channel/google-summer-of-code/team-channels](https://open.rocket.chat/channel/google-summer-of-code/team-channels)\ +\ +As well as on GitHub:\ +\ +[https://github.com/RocketChat/Rocket.Chat](https://github.com/RocketChat/Rocket.Chat) + +Those who prefers forums can post messages on our GSoC forum channel (although as the leading open source team chat project we prefer you use Rocket.Chat channels above to reach us instantly) :\ +\ +[https://forums.rocket.chat/t/google-summer-of-code-gsoc/118](https://forums.rocket.chat/t/google-summer-of-code-gsoc/118)\\ + +### **Latest update** + +**Final weeks status (Update on September 10th)** + +All of our active GSoC contributors, their mentors, Rocket.Chat team members, and our community all enjoyed the LIVE virtual event - Rocket.Chat Google Summer of Code Demo Day - on September 8th, 2022. We had 12 super innovative projects proudly presented by their creators, welcomed by Rocket.Chat's founders/project leaders/mentors, and supported by our enthusiastic community. Anyone missing the live event can now view the[ proceedings of the entire day here](https://youtube.com/playlist?list=PLee3gqXJQrFUD5d8Y1qDhUwqxRLge9KxV). Each presentation has been edited separately to help the creators to promote their open source projects (a few of which already welcomed new contributors of their own! ). Detailed description of each of the 14 sessions are available [here ](https://conf.rceng.shop/conferences/c/1#sessions).\ +\ +These are the final weeks of GSoC 2022 for all of us, contributors are busy wrapping up their administrative obligations and all mentors and contributors are getting ready for the final evaluations next week. + +**Demo Day 2022 Announced (Updated August 25th, minor update August 30th)** + +During these final days of GSoC 2022, contributors and mentors are busy wrapping up their project and preparing for Demo Day 2022! This LIVE virtual event will happen on September 8th, 2022 ! Please mark your calendar and prepare to join us for a fun-filled day exploring all the innovative new projects. Details for Demo Day 2022 are now available [here](https://conf.rceng.shop/conferences/c/1#sessions) + +**Midterm evaluation completed (Update August 3rd)** + +Coding on projects continued throughout the month of July. And 13 out of the 14 projects have completed their midterm evaluations; contributors from the 13 projects have all passed midterm - and are now busy completing their projects. The remaining project actually has extended midterm evaluation at the end of August, and mentors are indicating the contributor has not been keeping up with the schedule at this time. All project participants are now preparing for the GSoC 2022 Demo Day virtual event to be held in late August. + +**Coding begins and new open source projects welcoming additional contributors (Update June 22nd)**\ +Coding has started for all our GSoC 2022 projects. Mentors are busy guiding contributors in completing the scheduled work. This year, uniquely, many of our projects are in independent open source repositories. We welcome our extended community and any new contributors to join these projects. See the table below for links to repository associated with each project. + +We are also planning a virtual conference at the end of the GSoC term - named GSoC 2022 Demo Day. Mentors and contributor from each project will collaborate in presenting the final result. Please stay tuned for more information in late July. + +| Project | Repository | +| ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Standalone Desktop Messaging cross-platforms Applet | [https://github.com/RocketChat/SlimDesktopApp](https://github.com/RocketChat/SlimDesktopApp) | +| Weekly Video Meeting and Archive App - BigBlueButton + Rocket.Chat | [https://github.com/RocketChat/Apps.BigBlueButton](https://github.com/RocketChat/Apps.BigBlueButton) | +| New Emoji Picker for Mobile Client | [https://github.com/RocketChat/Rocket.Chat.ReactNative](https://github.com/RocketChat/Rocket.Chat.ReactNative) | +| Rocket.Chat for Virtual Conferences - Eventyay integration | [https://github.com/RocketChat/RC4Conferences](https://github.com/RocketChat/RC4Conferences) | +| Rocket.Chat Golang SDK | [https://github.com/RocketChat/Rocket.Chat.Go.SDK](https://github.com/RocketChat/Rocket.Chat.Go.SDK) | +| Figma App ( Rocket.Chat Integration ) | [https://github.com/RocketChat/Apps.Figma](https://github.com/RocketChat/Apps.Figma) | +| ClickUp App for Rocket.Chat | [https://github.com/RocketChat/Apps.ClickUp](https://github.com/RocketChat/Apps.ClickUp) | +| Message Forwarding | (branch) [https://github.com/RocketChat/Rocket.Chat/tree/new/message-forwarding](https://github.com/RocketChat/Rocket.Chat/tree/new/message-forwarding) | +| GitHub App | [https://github.com/RocketChat/Apps.Github22](https://github.com/RocketChat/Apps.Github22) | +| Botpress Connector Enhancements | [https://github.com/RocketChat/rocketchat-botpress-lab-bot](https://github.com/RocketChat/rocketchat-botpress-lab-bot) | +| Rocket.Chat ReactJS fullstack Component | [https://github.com/RocketChat/EmbeddedChat](https://github.com/RocketChat/EmbeddedChat) | +| Rocket.Chat TUI | [https://github.com/RocketChat/rocketchat-tui](https://github.com/RocketChat/rocketchat-tui) | +| Playground for UIKit ReactJS components | | +| Rocket.Chat - Teams Bridge: interop with Microsoft Teams | [https://github.com/RocketChat/Apps.teams.bridge](https://github.com/RocketChat/Apps.teams.bridge) | + +**Mentors welcome contributors from 14 accepted projects (Update May 20th)** + +2022 is a phenomenal year for GSoC at Rocket.Chat. With high calibre contributors arriving as early as January and very early enthusiastic community mentors support. So far, 137 new contributors have created 94 Merged PRs, 110 Open PRs, and identified 154 Issues for our projects. We received 83 GSoC 2022 proposals; most of them are of good to excellent quality. Google has graciously granted us a total of [FOURTEEN projects for 2022 GSoC](https://summerofcode.withgoogle.com/programs/2022/organizations/rocketchat). Thank you Google! Mentors have started to welcome these 14 active contributing community members to work with us during the 2022 season:\\ + +| Contributors | Project | Mentors | +| ------------------ | ------------------------------------------------------------------ | --------------------------------------------- | +| Ahmed Ibrahim | Standalone Desktop Messaging cross-platforms Applet | Jean Brito, Gabriel Casals | +| Aswini | Weekly Video Meeting and Archive App - BigBlueButton + Rocket.Chat | Debdut Chakraborty, Felipe Cecagno | +| Danish Ahmed Mirza | New Emoji Picker for Mobile Client | Diego Mello, Daniel Silva | +| Dnouv | Rocket.Chat for Virtual Conferences - Eventyay integration | Sing Li, Marcos Defendi | +| Evan Slack | Rocket.Chat Golang SDK | cauefcr, Aaron Ogle | +| Irfan Asif | Figma App ( Rocket.Chat Integration ) | Douglas Gubert, Ivan Netto, Alvaro Mello | +| Mustafa Hasan Khan | ClickUp App for Rocket.Chat | Douglas Gubert, Allan Ribeiro | +| Nishant Patel | Message Forwarding | Douglas Fabris, Milton Rucks | +| Samad Khan | GitHub App | Rohan Lekhwani, Sing Li | +| sangyul.cha | Botpress Connector Enhancements | Duda Nogueira, Frank Dase | +| Sidharth Mohanty | Rocket.Chat ReactJS fullstack Component | Rohan Lekhwani | +| srrathi | Rocket.Chat TUI | Aaron Ogle, Debdut Chakraborty | +| Vivek Srivastava | Playground for UIKit ReactJS components | Martin Schoeler, Guilherme Gazzo | +| Yuqing | Rocket.Chat - Teams Bridge: interop with Microsoft Teams | Gabriel Engel, Yash Rajpal, Fábio Albuquerque | + +**Total of 83 proposals received (Update April 20th)** + +We would like to thank all of our enthusiastic contributors for the **83 proposals** that we have received as of submission deadline on April 19th. Over the next few weeks, mentors for every project will be going through these proposals to determine the ones to accept. Accepted projects and contributors will be announced on May 20th 2022 by Google.\ +\ +Meanwhile, please continue to interact with our GSoC 2022 **community of over 350 mentors and contributors** in our [team channel](https://open.rocket.chat/channel/gsoc2022) ; please continue to contribute to our ecosystem of repositories.\ +\ +As of today, **135 GSoC** **contributors** have created **88 Merged PRs**, **108 Open PRs**, and identified **151 Issues** in the Rocket.Chat ecosystem.\ +\ +Over the next week, we will announce an exciting special activity for those ranking at the top of our [Contributors Leaderboard](https://gsoc.rocket.chat/). Please stay tuned. + +#### **Proposal submission begins (Update April 10th)** + +Momentum for proposal submission is building up. As our GSoC 2022 community of **300** contributors and mentors continue to engage actively in the [project specific team channels](https://open.rocket.chat/channel/google-summer-of-code/team-channels). Mentors for the various projects are in these channels to help contributors to craft their winning proposals. On our [contributor leaderboard ](https://gsoc.rocket.chat/)(which is also a[n open source project](https://github.com/RocketChat/Opensource-Contribution-Leaderboard)) , _116 contributors have added_ 75 Merged PRs, 105 Open PRs, and 141 Issues to our projects this season so far. + +#### **Successful Virtual Alumni Summit (Update April 6th)** + +We held our 2nd annual Rocket.Chat Google Summer of Code Alumni Summit on April 6th. It was exciting to bring back Google Summer of Code participants from our previous five years to speak and help this year's contributors in crafting their winning proposals. We have alumni from all walks of life speaking, see [official poster for this event](https://community.rocket.chat/virtualconf/mainstage). There were 11 fascinating sessions and we welcomed a total of 156 unique individuals throughout the day at the summit. We expect hundreds more new contributors to benefit from the recorded sessions.\ +\ +All of the sessions are recorded and are available directly from our [YouTube Playlist.](https://www.youtube.com/playlist?list=PLee3gqXJQrFW3dMG1P8qGzQ7E7Ea1SB80) The tips and best practices shared by our alumni apply to the entire Google Summer of Code contributors, and are not Rocket.Chat specific. We hope these recordings will benefit all those who intend to submit proposals this season. + +#### **Shout out to our early contributors (Update Feb 20th)** + +We are very thankful for the enthusiastic participation of our early contributors. The learning curve for Rocket.Chat's huge production code base is known to be very steep and they are getting a head-start even before the announcement of the GSoC 2022 program. Check out our [GSoC 2022 Leaderboard](https://gsoc.rocket.chat), to see their amazing contributions: 31 Merged PRs, 69 Open PRs, and 83 issues. as of Feb 20, 2022.\\ + +## Project Ideas + +This list is being updated regularly, some projects without assigned mentors may be removed. + +### **Playground for UIKit ReactJS components** + +**Mentors:** Martin Schoeler, Guilherme Gazzo + +**Description:** Develop an application/playground that allows developers to test UIKit ReactJS components and Interactions. Should allow developers to generate code used by Rocket.Chat apps and edit the content to preview the result + +**Desirable Skills:** JavaScript/TypeScript, ReactJS + +**Goal/Deliverable:** An on-line web app that features a construction playground for Rocket.Chat's UIKit ReactJS components. Plus code and preview generators. + +**Project Duration:** 350 hours. (Large) + +**Difficulty:** Medium + +### Tasks and workflow automation App with n8n + +**Mentor(s):** Fongang Rodrique, Chris Skelly + +**Description:** Tasks automation systems that compose workflow out of a chain of multiple on-line services is becoming very common and popular. Services such as [Zapier](https://zapier.com) and [n8n](https://n8n.io) are used by millions daily. n8n is one of the most popular open source alternatives available.\ +\ +This project involves the creation of a Rocket.Chat app that connects to n8n, enabling Rocket.Chat to participate richly in the n8n ecosystem.\ +\ +There is already an [n8n node ](https://n8n.io/integrations/n8n-nodes-base.rocketchat)available. We want to extend this, with the help of a Rocket.Chat app, to support the rich feature set offered by Rocket.Chat. + +**Desirable Skills:** Familiarity with Typescript and Rocket.Chat App development. + +**Goal/Deliverable:** Rocket.Chat node in n8n and associated Rocket.Chat App + +**Project Duration:** 175 hours. (Medium) + +**Difficulty:** Medium + +### Rocket.Chat ReactJS fullstack Component + +**Mentor(s):** Rohan Lekhwani + +**Description:** Create a ready-to-go easy to embed mini-chat React component. This component should be configurable to use any public channel on a Rocket.Chat server. Authentication should be flexibly configurable to existing Rocket.Chat server token, or via an independent IDM or auth service. The challenge here is to create a futuristic full-stack component that bundles tightly coupled backend behaviours with standard front-end ReactJS components (from Rocket.Chat Fuselage ReactJS library) - creating an amazing developer experience when developing In-App Chat applications.\ +**Desired Skills:** ReactJS component creation experience, understanding of Rocket.Chat server internals + +**Goals/Deliverables:** Standlone mini-chat React component that can be easily installed into any ReactJS based web app + +**Project Duration:** 175 hours. (Medium) + +**Difficulty:** Medium + +### Chatbot Engine Connector: Botpress + +**Mentor(s):** Frank Dase, Duda Nogueira + +**Description:** Botpress is a popular open source framework for creation and execution of chatbots. This project extends a existing community-contributed Botpress connector to facilitate deployment of Botpress chatbots and Omnichannel bots. Focus here will include - better rich UI/UX / interaction support for bots and ability to run multiple instances of multiple bots.\ +**Desired Skills:** Javascript and Typescript development. Keen interest in Bots and Chatbots. + +**Goals/Deliverables:** A Rocket.Chat App as a Botpress connector. A couple of example chatbots (running in a channel, and running in omnichannel) plus documentation. + +**Project Duration:** 175 hours. (Medium) + +**Difficulty:** Medium + +### Multi-bots support for Dialogflow App and Rasa App + +**Mentor(s):** Murtaza Patrawala + +**Description:** The idea here is to improve the existing Omnichannel Chatbot integrations (Dialogflow and Rasa), by allowing them to connect multiple chatbot accounts to a single [Rocket.chat](http://rocket.chat) server. Right now, the app is only equipped to deal with a single bot which means users can only interact with a bot within a single domain and a single language. But, if we allow connecting multiple bots via a single app, then we can solve this problem, thus allowing companies to serve chatbots in multiple languages, across multiple domains, right from a single [Rocket.Chat](http://rocket.chat) instance. + +**Desirable Skills:** Familiarity with TypeScript development. Familiarity with [Rocket.Chat](http://rocket.chat) App's development framework\ +\ +**Goals/Deliverables:** Framework supporting the connection of multiple Dialogflow/Rasa bots to a single [Rocket.Chat](http://rocket.chat) instance. + +**Project Duration:** 350 hours. (Large) + +**Difficulty:** Medium + +### Rocket.Chat Golang SDK + +**Mentor(s):** Cauê Felchar, Aaron Ogle + +**Description:** Golang module to enable any Go package to talk to a Rocket.Chat server with ease, making it possible to create from custom clients to bots. + +**Goals/Deliverables:** + +* Create new models and update existing as needed +* Add receivers for top level endpoints for rest api according to [https://developer.rocket.chat/reference/api/rest-api](https://developer.rocket.chat/reference/api/rest-api/endpoints) +* Improve realtime module as needed and complete any missing receivers according to [https://developer.rocket.chat/reference/api/realtime-api](https://developer.rocket.chat/reference/api/realtime-api) +* Follow a test driven approach, add tests to each method to verify its robustness and evade regressions across releases + +**Project Duration:** 350 hours. (Large) + +**Difficulty:** Easy + +### **Rocket.Chat for Virtual Conferences - Eventyay integration** + +**Mentors:** Marcos Defendi, Sing Li + +**Description:** Create a totally open source end-to-end solution for planning, management and running of online virtual events. Investigate integration with FOSSASIA's Eventyay platform for even planning and management. Day of event conference handling should be done by integrating RC4Community's virtual conference NextJS component with open-event-next - or create an even tighter integration with RC4Community. + +**Desired Skills:** ReactJS and NextJS development experience. Fluent with Python development. Good understanding of video conference technology (such as Jitsi) and realtime chat platforms (such as Rocket.Chat).\ +\ +**Goals/Deliverables:** Open source virtual conference system integrating Rocket.Chat and Eventyay. + +**Project Duration: 350** hours. (Large) + +**Difficulty:** Hard + +### Standalone Desktop Messaging cross-platforms Applet + +**Mentor(s):** Jean Brito, Gabriel Casals + +**Description:** Create a simpler desktop application similar to the old Google Talk (see [2005 GoogleTalk UI ](https://en.wikipedia.org/wiki/Google\_Talk#/media/File:Google\_Talk\_Labs\_Edition\_\(screenshot\).png)here), is a simple channels list on a little window and each chat will open in another separated window, making it possible to talk with people without opening a big window. Making the usage of [Rocket.chat](http://rocket.chat) more seamless. This project will make extensive use of Rocket.Chat's In-App Chat APIs (REST APIs). + +**Desired Skills:** Familiarity with ElectronJS and TypeScript. + +**Goal/Deliverable:** Standalone app that is deployable on all platforms supported by Electron - Windows, Mac, Linux, and more. The App will display a listing window for the channels and open each chat on another window, making the chat more popup-like. + +**Project Duration:** 350 hours. (Large) + +**Difficulty:** Medium + +### Omnichannel users identity verification + +**Mentor(s):** Kevin Aleman, Martin Schoeler + +**Description:** This project investigates and implements a new and "native" identity verification mechanism for Omnichannel end-users, such as Live Chat visitors who, depending on the use case, have to provide personal data like email addresses, etc. [Rocket.Chat](http://rocket.chat) already has in place a similar confirmation mechanism for user verification, such as 2FA, email, etc. The contributor will have the freedom to propose ideas and design the best solution for the problem described. + +**Desired Skills:** Familiarity with JavaScript development. Good understanding of the architecture of Rocket.Chat's Omnichannel implementation. + +**Project Duration:** 175 hours. (Medium) + +**Difficulty:** Medium + +### **IRC Bridge : improve ease of deployment and stability** + +**Mentors:** Gabriel Engel + +**Description:** Rocket.Chat has long featured the ability to bridge directly witn IRC. IRC is still in use by many hard core technical open source communities all over the world, and this bridge is very important to many of our community users. However, since we started evolving our architecture to be more scalable, the IRC bridge has not been updated to match . As a result, it has become unstable in some edge cases and also difficult to deploy in scaled Rocket.Chat configuration. This project aims to improve the situation. The IRC bridge should be updated to be compatible with our scaled configuration. Extracting from core code base and repackaging as Rocket.Chat App or npm module should be investigated. Additional configuration/provisioning options and DevOps images will need to be created to improve the administrator's experience. + +**Goals/Deliverables:** Familiarity with Typescript development. User of IRC and an understanding of how it works. An understanding of how Rocket.Chat scales. + +**Project Duration:** 175 hours. (Medium) + +**Difficulty:** Hard + +### **Sidebar UI revamp and UX improvements** + +**Mentors:** Ivan Netto, Tasso Evangelista, Gabriel Henriques + +**Description:** Conversations in [Rocket.Chat](http://rocket.chat) can be done in multiple ways but at this stage, we need a scalable interface which would help users to maximize their daily tasks within the software. The following improvements would speed up users' workflow: + +* Ability to collapse sidebar section; +* Add rooms straight from the its section header; +* Reduce the types of badge notifications, having to sizes will make the user interface more consistent and therefore, cleaner; +* Changes in the margins/paddings, which will bring a more robust visual hirarchy and scanning/reading experience; +* Changes in the colors to improve the readability. + +**Goals/Deliverables:** Improve UX of daily basis tasks on a central touch point of the software. + +**Project Duration:** 350 hours. (Large) + +**Difficulty:** Medium + +### Message forwarding + +**Mentor(s):** Douglas Fabris, Milton Rucks + +**Description:** Implement the ability to forward messages to another channel, thread, or discussion. This is a high demand capability that is currently missing in Rocket.Chat. It can significantly improve the user's experience and her/his productivity. The scope of this project will be limited to the web application (not for mobile apps). + +**Desirable Skills:** Familiarity with JavaScript and TypeScript development + +**Goal/Deliverable:** + +* Being able to forward messages and files to multiple users and channels +* Being able to add additional messages on the top of forwarded content + +**Project Duration:** 350 hours. (Large) + +**Difficulty:** Medium + +### Pomodoro Time Management App + +Mentor(s): Debdut Chakraborty, Duda Nogueira + +Description: With remote work now becoming the norm, lack of essential time management skills can throw off work/life balance and resulting in burn-out or dangerous mental wellness problems. [Pomodoro](https://science.nichd.nih.gov/confluence/display/newsletter/2020/05/07/The+Pomodoro+Technique%3A+An+Effective+Time+Management+Tool) is a proven and easy to adopt time management technique practiced by millions world wide. This project involves the creation of an always available Pomodoro timer Rocket.Chat App. + +Goals/Deliverables: A Pomodoro timer Rocket.Chat App + +Desired Skills: Familiarity with TypeScript development. User of the pomodoro time management technique + +Project Duration: 175 hours (Medium) + +**Difficulty:** Easy + +### Figma Integration (Rocket.Chat App) + +**Mentor(s):** Douglas Gubert, Alvaro Mello, Ivan Netto + +**Description:** This project brings Figma's life right into Rocket.Chat. + +**Desirable Skills:** Familiarity with TypeScript development. + +**Goals/Deliverables:** + +* being notified on + * new comment on a file +* replying and commenting in files right from Rocket.Chat + +**Project Duration:** 350 hours. (Large) + +**Difficulty:** Easy + +### Improve Navigation in Mobile Client + +**Mentor(s):** Daniel Silva, Diego Mello + +**Description:** Navigation is one of the most important parts of a mobile application. We've been using [React Navigation](https://reactnavigation.org) as our navigation library and we need to update it from v5 to v6, which contains a few nice new features. The same applies to [react-native-screens](https://github.com/software-mansion/react-native-screens), which released support to Fabric recently. After these updates, we're planning to evaluate native-stack. + +**Desirable Skills:** Experience with React Native and React Navigation. + +**Goals/Deliverables:** Update react-navigation and react-native-screens to latest and apply native-stack + +**Project Duration:** 350 hours. (Large) + +**Difficulty:** Medium + +### Improve Mobile Client Animations + +**Mentor(s):** Gerzon Canario, Diego Mello + +**Description:** [react-native-reanimated](https://github.com/software-mansion/react-native-reanimated) is the de facto animation library for React Native and they recently released their v2, changing the whole API to a more straight forward way. You're going to make use of this library to rewrite our animations from scratch. You're also going to apply Layout Animation on Android, a long-awaited feature.\ +Desirable skills: Experience with React Native and react-native-reanimated v2. Preferred, but optional: the student needs a Macbook to test animations on iOS. + +**Desirable Skills:** Knowledge of React Native and react-native-animated is preferred + +**Goals/Deliverables:** Apply reanimated v2 to dropdown, RoomItem swipe and ImageViewer and apply LayoutAnimations from v2 + +**Project Duration:** 350 hours. (Large) + +**Difficulty:** Medium + +### Mobile Client: Redesigned MessageBox + +**Mentor(s):** Diego Mello + +**Description:** We redesigned our Messagebox, also know as message composer, from scratch to make it easier to use, composable and following a more modern UX. You're going to implement gesture animations to record audio messages from the start. This is one of the most important components from our app. + +**Desirable Skills:** Experience with React Native and [react-native-reanimated](https://github.com/software-mansion/react-native-reanimated). Required: Macbook to test iOS. + +**Project Duration:** 350 hours. (Large) + +**Difficulty:** Hard + +### New Emoji Picker for Mobile Client + +**Mentor(s):** Daniel Silva, Diego Mello + +**Description:** Actions sheets are a very common UX pattern used for users to interact with quick actions on a fast and easy way. [react-native-bottom-sheet](https://github.com/gorhom/react-native-bottom-sheet) has growth a lot recently and it's been receiving love from the community. That's why we want to migrate to it. While doing this migration, we want to make dynamic, so we can render the emoji picker inside of it. You're going to be designing the new emoji picker from scratch. + +**Desirable skills:** Experience with React Native. + +**Goals/Deliverables:** Switch to [https://github.com/gorhom/react-native-bottom-sheet](https://github.com/gorhom/react-native-bottom-sheet), make it dynamic enough so it can render emojis picker. Apply the new design. + +**Project Duration:** 350 hours. (Large) + +**Difficulty:** Medium + +### Team Bridge: interop with Microsoft Teams + +**Mentor(s):** Yash Rajpal, Fábio Albuquerque, Gabriel Engel + +**Description:** Microsoft team is unquestionably the most popular and frequently used closed source team chat system in the world. Many administrators and users of open source Rocket.Chat team chat will have needs to bridge between their open source users and legacy users still on team. This project will create a Rocket.Chat App or an npm module that will act as a bridge between Rocket.Chat and Microsoft Team. Users on one system should be able to chat with the other through shared channels. Support for rich interactions including DM, emoji's, embedded graphics, shared youtube links and so on should also be supported. The exact scope for this project will be determined between the contributor and the mentors. + +**Desired Skills:** Familiarity with Typescript and Javascript development. Familiarity with Microsoft Team's available APIs. An interest in crafting bridges between communications platforms. + +**Project Duration:** 350 hours. (Large) + +**Difficulty:** Medium + +### Rocket.Chat Text Terminal Client (TUI) + +**Mentor(s):** Aaron Ogle, Debdut Chakraborty + +**Description:** Rocket.Chat has desktop, web and mobile clients, time for a fourth, a TUI client. This project brings Rocket.Chat right into your terminal. By design this is to be extremely lightweight and blazing fast for basic functions, with the only noticeable latency source being the SDK calls. + +**Desired Skills:** + +* Golang knowledge is required +* Any modern TUI package knowledge is preferred ([https://charm.sh](https://charm.sh), [https://github.com/charmbracelet/bubbles](https://github.com/charmbracelet/bubbles)) +* Knowledge of termios and/or VTE is a bonus + +**Goals/Deliverables:** + +* Authenticate against a Rocket.Chat server via TUI +* List rooms and update real time +* Being able to send and receive messages real time +* Threaded conversations +* Ability to create room resources like channels, private groups, discussions, direct messages +* User mentions (including @all, @here) +* No-UI slashcommand implementations (/create, /invite, /invite-all-from, /invite-to-from, /join) + +**Project Duration:** 350 hours. (Large) + +**Difficulty:** Medium + +### Weekly Video Meeting and Archive App - Big Blue Button + Rocket.Chat + +**Mentors:** Debdut Chakraborty, Felipe Cecagno + +**Description:** Big Blue Button is one of the most popular open source virtual classroom and conferencing tool available today. This project is a very simple integration with Rocket.Chat for conducting a weekly meeting and maintaining the recording video archive. Mentors will include both Rocket.Chat and Big Blue Button experts. + +**Desirable Skills:** Familiarity with TypeScript development. Experience with AVideo. + +**Goals/Deliverables:** A Rocket.Chat App that will enable users in a channel to join an existing weekly meeting if it is in progress. Or query for recorded meeting videos and view them. + +**Project Duration:** 175 hours. (Medium) + +**Difficulty:** Easy + +### Chatbot to improve agile workflow + +**Mentors:** Tiago Evangelista, Gabriel Casals, José Paulo Petry + +**Description:** Agile adoption is increasing year to year on the different industries. There is an opportunity to add agile package bots to help squad with reminders, links and facilitate attendance to meeting based on simple calendar inputs and emoji reactions. Candidate will be working with Agile experts and Engineers to build some solutions for this space and help improve team/squads productivity. Successful contributor will propose and implement a Chatbot that solves a problem in agile. Candidate have a free choice of technology to implement the chatbot - RASA, Botpress, Dialogflow, and so on. + +**Desirable Skills:** Familiarity with TypeScript development. Demonstrated interest and/or passion in Agile and squad productivity tools. + +**Goal/Deliverable:** A working chatbot that can improve agile team productivity + +**Project Duration:** 175 hours. (Medium) + +**Difficulty:** Easy + +### Zoho App + +**Mentors:** Jorge leite & Marcelo Schmidt + +**Description:** Zoho Employee is the revamp of the existing Zoho App. This integrates Zoho People with [Rocket.Chat](http://rocket.chat), and lets the users view and modify resources according to their accounts. Zoho People is a very capable employee management system, but opening Zoho for every little thing can get tedious in a busy schedule. This app will make this interfacing much easier, right from [Rocket.Chat](http://rocket.chat). + +**Desirable Skills:** Familiarity with TypeScript development. Zoho REST APIs. + +**Goals/Deliverables:** A Rocket.Chat App that is able to look up colleague details, see upcoming PTOs, apply for PTOs, and apply for reimbursements. + +**Project Duration:** 175 hours. (Medium) + +**Difficulty:** Easy + +### GitHub App + +**Mentor(s):** Rohan Lekhwani, Sing Li + +**Description:** GitHub is the largest centralized repository for hosting open source projects. This app will enable the users to perform many GitHub activities right from Rocket.Chat. Including query of issues and PRs, code modification logs, and announcement of events - such as new releases, PR merged, and so on. + +Goals/Deliverables: Rocket.Chat App integrating common Github features + +**Desired Skills:** Familiarity with TypeScript development. GitHub API + +_Project Duration: 175 hours (Medium)_ + +**Difficulty:** Medium + +### DropBox App + +Mentor(s): Sing Li, Debdut Chakraborty + +Description: Dropbox is a file hosting service. You will create an app that will help the users manage their dropbox files easily directly from Rocket.Chat.\ +\ +Optional second part of the project entails making DropBox a possible storage provider for file uploads. + +Goals/Deliverables: Rocket.Chat App with DropBox operations integrated\ +\ +Desired Skills: Familiarity with TypeScript development. DropBox API + +Project Duration: 175 hours (Medium) + +**Difficulty:** Medium + +### ClickUp App + +Mentor(s): Allan Ribeiro + +Description: ClickUp is an extremely feature rich collaboration and project management tool, used by many organizations. When used on a daily basis, going back and forth for the simple things like checking a task's status or changing that task's status can get tedious pretty quick. This app will make it easier for Rocket.Chat users to perform simple clickup tasks without having to leave the platform, making team communications more efficient, and team members more productive. + +Goals/Deliverables: Rocket.Chat App with ClickUp integration features. + +Desired Skills: Familiarity with TypeScript development. ClickUp API + +Project Duration: 350 hours (Large) + +**Difficulty:** Medium + +### diff --git a/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2023.md b/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2023.md new file mode 100644 index 0000000000..6467d4af6e --- /dev/null +++ b/contribute-to-rocket.chat/annual-contribution-programs/google-summer-of-code/google-summer-of-code-2023.md @@ -0,0 +1,780 @@ +# Google Summer of Code 2023 + +## [![Google Summer of Code 2020](https://github.com/Sing-Li/bbug/raw/master/images/gsoclogo.jpg)](https://summerofcode.withgoogle.com) + +## How to apply + +Rocket.Chat is proud to be a participating mentoring open source organization for [Google Summer of Code 2023](https://summerofcode.withgoogle.com/). This marks the exciting 7th year of participation in this 19 years-old program to usher in a new generation of open source contributors and enthusiasts. + +Almost anyone in the world [over 18 years of age ](https://opensource.googleblog.com/2021/11/expanding-google-summer-of-code-in-2022.html)who loves coding and wants to explore the incredible world of open source can join us as a GSoC 2023 contributor. + +For details and rules of Google Summer of Code 2023, please see the [GSoC 2023 Official Website](https://summerofcode.withgoogle.com/). For timeline, see [Official Google Summer of Code 2023 Timeline](https://developers.google.com/open-source/gsoc/timeline) for more details. + +#### **Contacting Rocket.Chat** + +For general information, please visit our 24 x 7 community channel for Google Summer of Code 2023 : [https://open.rocket.chat/channel/gsoc2023](https://open.rocket.chat/channel/gsoc2023) + +Join our [Google Summer of Code 2023 Team ](https://open.rocket.chat/channel/gsoc2023)today and interact with over **600 like-minded** contributors/mentors and meet the team in the[ 20 team channels](https://open.rocket.chat/channel/gsoc2023/team-channels). + +If you have ideas and proposals that are not on our idea list, or if a mentor is not available, you can also email to: + +gsoc+2023@rocket.chat + +Interested contributors are also encouraged to interact directly with our team and community on the team channels:\ +\ +[https://open.rocket.chat/channel/gsoc2023/team-channels](https://open.rocket.chat/channel/gsoc2023/team-channels)\ +\ +As well as on GitHub:\ +\ +[https://github.com/RocketChat/Rocket.Chat](https://github.com/RocketChat/Rocket.Chat) + +Those who prefers forums can post messages on our GSoC forum channel (although as the leading open source team chat project we prefer you use Rocket.Chat channels above to reach us instantly). + +[https://forums.rocket.chat/c/gsoc/gsoc2023/76](https://forums.rocket.chat/c/gsoc/gsoc2023/76) + +## Project Ideas + +This list is being updated regularly, some project ideas are still subject to further refinement, and some projects without assigned mentors may be removed. + +### Guided RC Code Walkthrough and Tutorial + +**Mentor(s):** Kevin Aleman + +**Description:**\ +Most Rocket.Chat developers uses VSCode when studying our massive production code base, and when writing new code. VSCode is the best environment for conducting interactive tutorial and code walkthroughs. The CodeTour extension available in VSCode can be used to create such walkthrough and tutorials. This project involves the development of a set of guided tutorials using CodeTour that will help new developers to understand how to perform multiple actions. Paths to be documented will go from this areas: + +* How a message is sent +* How to create an endpoint +* How to add a new service +* How to create a DB model +* How to use DB models +* How services interact between them +* How to build a lib +* How to navigate monorepo (where is everything, how's imported, etc) + +We welcome any additional ideas you may have. + +**Desired Skills:** NodeJS, MongoDB + +**Goals/Deliverables:** A set of guided tours from the topics described above + +**Project Duration:** 175 hours. (Medium) + +**Difficulty:** Easy/Medium + +### Improved Rocket.Chat Translations (i18n) + +**Description:** Rocket.Chat is widely used all over the world in multiple languages. Having a welcoming and vibrant community of translators and reviewers is essential to make sure we can deliver the best localization possible. + +This project aims to both convert today's i18n to work with community friendly open source translation platform such as weblate and kick-off a translation community. + +**Mentors:** Douglas Fabris, Duda Nogueira + +**Desired Skills:** Advanced Typescript. Familiarity with i18n platform and technologies, weblate preferred. + +Goal/Deliverable: + +* Rocket.Chat's i18n working with weblate hosting our community of translators. +* Documentation on how to contribute with Rocket.Chat with translations + +**Project Duration:** 175 hours. (Medium) + +**Difficulty:** Medium + +### Moderation Console Mute User Action and Emoji Votes + +**Mentors:** Devanshu Sharma + +**Description:**\ +Moderation console for Rocket.Chat enables moderators to examine reported messages and then take action against the individuals who post them. A simple set of action is already included. In this project you will add the action to allow muting of the user for a specific duration. + +Currently, the only way to submit messages for moderator's review is to report the message. This project will add a mini-reputation system, through voting with special emojis, to assist the moderator in deciding what to do with the reported user. A count of special emojis against a message can be used to determine the number of users that find a particular message offensive. + +**Desired Skills:**\ +ReactJS, TypeScript, MeteorJS. A thorough understanding of Moderation Console operations. Knowledge of how to expose additional core features to Apps. + +**Goals/Deliverables:**\ +Mini-reputation system enabling users to mark messages using special emojis. Additional action for moderation console allowing user to be muted by moderator for some durations (5min, 1 hour, or any custom minutes) + +**Project Duration:** 175 hours (Medium)\ +\ +**Difficulty:** Easy/Medium + +### Embedded Chat 2023 + +**Mentors:** Sidharth Mohanty\ +\ +**Description:**\ +A Rocket.Chat channel can be embedded into some existing web application via the [Embedded Chat component](https://github.com/RocketChat/EmbeddedChat). Currently, the available integration surface and features of Embedded Chat is rather limited. This project aims to significantly expand the applicability of Embedded Chat for a wider range of web applications - including the most popular frameworks such as Vue, Angular, Svelte, React Native; and hosting platforms such as WordPress and Ghost; web application developed in Java, PHP and Python. Embeddability via [HTML](https://github.com/arnav-t/riot-embedded) . Customizability needs to be improved with theme kit, as well as a way to enable users to supply custom CSS. Features we still need includes the support of all authentication methods that the hosting server has activated, file/media attachments, sending audio messages, autocomplete mention search, and in-chat RC-App slash-command access. Realtime messages transport needs to be improved to avoid 429. Last but not least, we need to greatly improve the first-time developer experience by supplying better server startup, testing, and e2e testing devops and via gitpod-ization. + +**Desired Skills:** React and NextJS. Absolute in-depth knowledge of Embedded Chat project. Thorough understand of modern web application development platform and technologies.\ +\ +**Goal/Deliverable:** Embedded Chat working with most current web application building technologies, and updated with missing essential features. Ideally also improved realtime transport as well as first-time developer experience.\ +\ +**Project Duration:** 350 hours. (Large)\ +\ +**Difficulty:** Medium + +### Mobile Media Carousel Component + +Mentors: Diego Mello\ +\ +**Description:**\ +Implement a new mobile media carousel component that can: + +* open any media (image, video, audio, doc, etc) +* swipe horizontally to navigate to previous/next +* support [async delayed video playback](https://docs.expo.dev/versions/v47.0.0/sdk/av/#playback) semantics + +**Desirable Skills:** Advanced Typescript, advanced React Native.\ +\ +**Goal/Deliverable:** A media carousel component for our mobile apps. + +**Project Duration:** 175 hours. (Medium)\ +\ +**Difficulty:** Medium/Advanced + +### Enhanced media handling for mobile message composer + +**Mentors:** TBD + +**Description:**\ +\ +This project consists of two major tasks: + +* Copy any media from other platform apps to the message composer (on mobile) +* Add option to[ copy media to platform clipboard](https://docs.expo.dev/versions/v47.0.0/sdk/clipboard/#setimageasyncbase64image) (on mobile)\ + \ + The implementation should operate across all the mobile platforms that Rocket.Chat support. Including iOS and Android, form factors from phone to tablet. + +**Desired Skills:** Advanced Typescript, advanced React, advanced React Native. + +**Goal/Deliverable:** Composer ability to accept copy/paste media from other platform apps and the option to copy media to clipboard. + +**Project Duration:** 175 hours (Medium) + +**Difficulty**: Medium/Advanced + +### GitHub Pull request reminders app + +**Mentors:** Murtaza Patrawala, Samad Khan + +**Description:**\ +Have you ever faced challenges keeping track of your pull request reviews as a student? This is a common problem faced by many development teams. That's why we propose developing a pull request reminder app for [Rocket.Chat](http://rocket.chat) as a part of the Google Summer of Code program. For now, we’re isolating the scope of this project to GitHub. + +The app's goal will be to provide regular reminders and updates to keep the review process moving and help ensure that pull requests are being reviewed and discussed in a timely manner. This project will be built on top of [this existing GitHub App](https://github.com/RocketChat/Apps.Github22) which already has a bunch of boilerplate code to deal with authentications and GitHub APIs. + +One approach to solving the issue of pending pull requests is to create a separate Rocket.Chat channels for each pull request (This is a proven strategy organizations already use on Slack. Check [here](https://axolo.co/blog/p/utlimate-slack-pull-request-reminder-bot) for more info). This way, all relevant stakeholders can be added to the channel, including the author of the pull request, the reviewers, and any other team members who need to be informed about the status of the review. + +The Rocket.Chat channels can serve as a dedicated space for discussion and collaboration around each pull request. Users can receive notifications about updates to the pull request, such as new comments or changes to the code. This helps keep everyone informed and ensures the review process stays on track. + +Example text message for Rocket.Chat channel: + +* "🔔 Attention reviewers! This pull request has been pending for \[number] days now. Let's make sure to give it the attention it deserves and keep the review process moving forward 🚀" + +In addition, the users can also opt-in to receive a direct message from the bot at the start of their workday, with a comprehensive list of all the reviews that need his/her attention. + +Example DM text messages: + +1. "👀 Time to give those pull requests some love! You've got \[number] pending review(s) waiting for you. Don't keep your fellow developers waiting 😊" +2. "🔔 Don't let those pull requests get forgotten! You've got \[number] waiting for your review. Let's get to work 💻" +3. "🚀 It's time to move those pull requests forward! You've got \[number] waiting for your review. Give them the green light 💚" + +By using Rocket.Chat channels to manage the review process, teams can improve the visibility of their pull requests and ensure that they are being reviewed and discussed in a timely manner. + +PS: For more inspiration on how to solve this issue, please refer to some of these solutions on other platforms. + +* [Pull Remind](https://www.producthunt.com/products/pull-remind) +* [Axolo](https://axolo.co/blog/p/utlimate-slack-pull-request-reminder-bot) + +**Desirable Skills:** Advanced Typescript; Knowledge about Github API's; Rocket.Chat app-engine Framework; Familiarity with existing [Github App](https://github.com/RocketChat/Apps.Github22) + +**Goal/Deliverable:** A working Rocket.Chat app which sends pulls request reminders to Rocket.Chat users. + +**Project Duration:** 175 hours. (Medium)\ +\ +**Difficulty:** Easy/Medium\\ + +### Building the Rocket.Chat Appliance + +**Mentors:** Aaron Ogle, Sing Li\ +\ +**Description:**\ +Create a "plug-in and go" appliance that allows anyone to run and operate a small Rocket.Chat server for their interest group, family, or friends.\ +\ +The resulting image should run on arm SoC based SBCs with either 2GB or 4GB of RAM (as in most of today's Android TV boxes). Some technologies to consider include [Armbian ](https://www.armbian.com/)and[ Gokrazy](https://gokrazy.org/). But we are wide open to all applicable stacks.\ +\ +Back in 2015, Rocket.Chat planned a kickstarter/indiegogo project to do something very similar. Finally in 2023 the open source technology stacks, plus widely available arm hardware, are making it possible this to become a general open source project.\ +\ +**Desirable Skills:** Familiarity with Rocket.Chat deployment platforms and workflows. This project will take someone with highly specialized interests and skills in low level firmware mods, kernel patching, bootloader hacking and possibly knowledge of Golang. + +**Goal/Deliverable:** An image that can be loaded into inexpensive common 2GB/4GB Android TV-Box and repurpose it to become a "plug-in and go" Rocket.Chat appliance.\ +\ +**Project Duration**: 350 hours (Large)\ +\ +**Difficulty:** Advanced + +### Introduce Captcha to Livechat Widget + +**Mentors:** Murtaza Patrawala, Kevin Aleman + +**Description:**\ +RocketChat is a popular open-source communication platform, but it is not uncommon for spammers to take advantage of its live chat widget to send unwanted messages. To mitigate this issue, a CAPTCHA solution should be implemented in the live chat widget. This project aims to integrate a CAPTCHA mechanism in RocketChat's live chat widget to prevent spam messages from being sent. + +The solution should allow users to prove that they are human by completing a simple CAPTCHA task before sending a message. This will help to reduce the number of spam messages and improve the overall user experience. + +Key Deliverables: + +* Integration of a CAPTCHA solution in RocketChat's live chat widget +* A comprehensive testing suite to ensure that the CAPTCHA is working as expected +* A user guide to help users understand how to use the new CAPTCHA feature in the live chat widget + +Note: The CAPTCHA solution should be accessible to all users, including those with disabilities, and should not negatively impact the user experience. + +**Desirable Skills:** React (Mid-level); Familiar with [Rocket.Chat Livechat](https://github.com/RocketChat/Rocket.Chat/tree/develop/packages/livechat) + +**Goal/Deliverable:** Captcha integrated within Livechat widget + +**Project Duration:** 175 hours. (Medium)\ +\ +**Difficulty:** Easy/Medium + +### Live Preview Message Composer + +**Mentors**: Hugo Costa, Martin Schoeler + +**Description:**\ +Make the message composer live preview feature instead of just adding markdown tokens that styles/parse the message in the Message List. + +E.g: If the user press Bold button in the message composer actions that has the message "Test Message" or wrap the message in asterisk nowadays it shows: + +Current output: \*Test Message\* + +![](https://lh6.googleusercontent.com/CNoHypIy18Z1yYBUnc-yCa7-hiO3GSXucx0MBQi2JNFL6GL2zYBHM\_A9QNkuyB3UcWYljMw\_XGbZqeTros0Byf\_W-lyc-w71l01FXMM2VNrDxjM3HPC9C-TSR5WFPRwBHox9YLfsw\_jjStE4y5IXGgU) + +Desired output: Test Message + +![](https://lh4.googleusercontent.com/NkAv5dheflqArH3ZHb-zW7iL9EPwNSk3WSDjm9DG8wvycsBHWdx1LgZX2wgnpWCcmmgGNTNKgyeOHsF3L9Aw9Rln00ve1kkg7Klor\_nGL8p89262wPUfdMYdBd3O6mggeQN2CbHXKKrHkDLZVChERpU) + +**Desirable Skills**: Typescript (mid) and React (mid)\ +\ +**Goal/Deliverable:** Live preview in message composer + +**Project Duration:** 175 hours (Medium)\ +\ +**Difficulty:** Easy/Medium + +### Agile BOT + +**Mentors:** Gabriel Casals & Tiago Evangelista\ +\ +**Description:**\ +Agile adoption is increasing year to year on the different industries. There is an opportunity to add agile package bots to help squad with reminders, links and facilitate attendance to meeting based on simple calendar inputs and emoji reactions. Candidate will be working with Agile experts and Engineers to build some solutions for this space and help improve team/squads productivity. Successful contributor will propose and implement a Chatbot that solves a problem in agile. Candidate have a free choice of technology to implement the chatbot - RASA, Botpress, Dialogflow, and so on.\ +\ +**Desirable Skills:** Familiarity with TypeScript development. Demonstrated interest and/or passion in Agile and squad productivity tools.\ +\ +**Goal/Deliverable:** A working chatbot that can improve agile team productivity\ +\ +**Project Duration:** 175 hours. (Medium)\ +\ +**Difficulty:** Easy/Medium + +### Token Economy for Team Channels + +**Mentors:** José Paulo + +**Description:**\ +Rocket.Chat has Team Channels to handle sub-communities wanting autonomous control over their membership within a scaled server (possibly servicing tens of thousands of users). + +This project aims to provide such sub-communities / teams with a mean to: + +* mint their own erc-20 token, unique to the team +* distribute the tokens to the members of the team +* enable tokens to be securely exchanged between members within the team channels + +The implementation can also work optionally with blockchains and tokens from other providers - but this is not mandatory. Integration with a wallet is implied but novel alternative solution will also be accepted. It can be implemented as a Rocket.Chat App or extension to core, or both. + +**Desirable Skills:** Thorough understanding of Rocket.Chat core. Working experience with modern Web3 / blockchain technologies. Rocket.Chat App development experience. Advanced Typescript + +**Goal/Deliverable:** Ability to mint, distribute, and exchange unique erc-20 tokend within a "team". + +**Project Duration:** 350 hours. (Large)\ +\ +**Difficulty:** Medium/Advanced\\ + +### AI Moderation APP + +**Mentors**: Rafael Tapia + +**Description:**\ +\ +Offensive/sensitive content detection by AI. Ideally both images/text will be processed. Proposals that extend the existing work on the [AI Moderation project](https://github.com/RocketChat/Apps.Moderation), as well as brand new approaches will be welcomed. Proposal should also address scaling and cost of the solution. + +**Desirable Skills:** TypeScript(mid), TensorFlow(mid) + +**Goal/Deliverable:** An app that uses TensorFlow AI to verify images/texts and flag them when has harmful, toxic, or offensive content and block. + +**Project Duration:** 175 hours (Medium)\ +\ +**Difficulty:** Medium/Advanced + +### **UiKit Playground 2.0** + +**Mentors:** Guilherme Gazzo, Tasso Evangelista Pinto, Diego Sampaio + +**Description:**\ +Rocket.chat UiKit is the protocol/tool that allows rocket.chat apps to add new (both web and mobile) elements to the current UI. + +People often do not imagine what is possible to do with the protocol. That's why the playground idea. + +Nowadays we already have a version of the [playground](https://rocketchat.github.io/fuselage/uikit-playground/develop/), so it is already possible to visualize the main functionalities, but it is still not the full experience desired. + +**Desirable Skills:** TypeScript, React + +**Goal/Deliverable:** The objective is to add other functionalities that improve and encourage the development of apps. Features such as templates, workflows simulation, connecting to a workspace and also sending/sharing the prototypes through rocket.chat are the main goals of the project + +**Project Duration:** 350 hours (Large) + +**Difficulty:** Medium/Advanced + +### Integrate Notion via RC App + +**Mentors:** Bárbara Zanella and Samad Khan + +**Description:** Create pages and receive notifications inside Rocket.Chat + +**Desirable Skills:** JavaScript/TypeScript, ReactJS + +**Goal/Deliverable:** Work as if you were creating documents in notion without leaving Rocket.Chat + +**Project Duration:** 175 hours (Medium)\ +\ +**Difficulty:** Easy/Medium + +### Mobile App Share Extension Update + +**Mentors:** TBD\ +\ +**Description:**\ +Rewrite our [current mobile apps share extension](https://github.com/RocketChat/rn-extensions-share) in Swift for iOS and Kotlin for Android, making sure that it supports the latest [ReactNative Fabric](https://github.com/react-native-community/discussions-and-proposals/issues/4) architecture.\ +\ +**Desirable Skill:** Advanced ReactNative. Good knowledge of native iOS and Android development. Passion for creating great mobile experiences. + +**Project Duration:** 175 hours (Medium) + +**Difficulty:** Advanced\ + + +### Summarizing Live Chat Conversations using OpenAI's ChatGPT + +**Mentors:** Lester Coyoy, Murtaza Patrawala + +**Description:**\ +The goal of this project is to develop a solution that utilizes OpenAI's ChatGPT to generate a concise summary of live chat conversations within Rocket.Chat. This will provide managers with a quick and efficient way to stay up-to-date with live chat conversations, allowing them to make informed decisions without having to spend time reading through lengthy conversations. + +**Desirable Skill :** Strong programming skills in Typescript. Familiarity with natural language processing and machine learning. Familiarity with Rocket.Chat and its Apps-engine. Knowledge about OpenAI's ChatGPT API is a must. + +**Goal/Deliverable:** A Rocket.Chat app that retrieves live chat conversations from the Rocket.Chat apps-engine. Use of the OpenAI ChatGPT API to generate a summary of the conversation. Storing the generated summaries in a database for later retrieval and analysis. + +**Project Duration:** 175 hours. (Medium)\ +\ +**Difficulty:** Easy/Medium + +### Next Generation Desktop Apps on Tauri + +**Mentors:** Jean Brito, Gabriel Casals + +**Description:**\ +Current [Rocket.Chat desktop app](https://github.com/RocketChat/Rocket.Chat.Electron) for MacOS, Windows and Linux is created using [Electron](https://www.electronjs.org/), the 10-years old grand daddy of cross platform frameworks.\ +\ +In this project, you will build our next generation desktop app using the next generation [Tauri framework](https://tauri.app/). The project should leverage the strength of the framewwork on each supported platform to add value above and beyond those offered by Electron framework today.\ +\ +Note that this is not an impossibly scoped rewrite of the desktop app on each platform in rust. The app must continue to run inside an embedded browser as in Electron, and the platform specific rust glue components adapted appropriately. + +**Desirable Skill :** Strong programming skills in Rust. Knowledge of Javascript and Typescript. Knowledge in cross-platform development. Familiarity with existing Rocket.Chat Desktop app. Familiarity with Tauri. + +**Goal/Deliverable:** Next Generation Rocket.Chat desktop app. + +**Project Duration:** 350 hours (Large)\ +\ +**Difficulty:** Medium + +### WordPress super plugin + +**Mentors:** TBD\ +\ +**Description:**\ +Rocket.Chat had a[ WordPress plugin](https://en-ca.wordpress.org/plugins/rocketchat-livechat/) that worked well with WordPress offering a few years back, giving users a very easily integrated LiveChat widget on their website. Since then both Rocket.Chat and WordPress have undergone major re-architecture and vastly expanded the possible intergration surfaces.\ +\ +This projects aims to build a new WordPress plugin that enable the quick addition of a chatroom (not just LiveChat or omnichannel) to any WordPress website leveraging some of the new integration technology we have such as [EmbeddedChat](https://en-ca.wordpress.org/plugins/rocketchat-livechat/).\ +\ +The new plugin should cater for WordPress legacy architecture and yet be highly useful in the new headless CMS model. It should deliver value for both WordPress SaaS users as well as self hosted WordPress installations.\ +\ +**Desirable Skills:**\ +In-depth knowledge of WordPress architectures and plugin construction. Knowledge of Rocket.Chat integration surfaces. + +**Goal/Deliverable:**\ +Working WordPress plugin on the WP marketplace supporting Rocket.Chat integration.\ +\ +**Project Duration:** 350 hours (Large)\ +**Difficulty:** Medium\ + + +### Flutter SDK for Rocket.Chat + +**Mentors:** TBD + +**Description:**\ +In recent years, [Flutter ](https://flutter.dev/)has became the de-facto standard for high performance open source multi-platforms apps development. Thanks to its[ huge global developers community](https://flutter.dev/community) and the ever-growing ecosystem of [open source flutter components](https://pub.dev/packages). + +This project aims to create an easy to integrate flutter component to embed Rocket.Chat into any existing and new flutter applications (similar to our existing [EmbeddedChat](https://github.com/RocketChat/EmbeddedChat) project). In addition, a layer of Dart friendly API/stub needs to be created for application that needs in-depth modification of chat behavior or needing to use the chat engine as a messaging fabric.\ +\ +We invite and welcome original proposals at varying level. + +**Desired Skills:** + +Flutter, Flutter components construction, Dart, JavaScript. A thorough understanding of how Rocket.Chat core works. Knowledge of Flutter multi-platform development (Android, iOS, Linux, Windows and MacOS). + +**Goals/Deliverables:**\ +An SDK that enable easy embedding of RC instances into any flutter app plus Dart APIs to access RC collaboration engine internals. + +**Project Duration:** 350 hours (Large)\ +\ +**Difficulty:** Advanced + +### Open source Metaverse integration (mozilla hubs / third room) + +**Mentors:** TBD + +**Description:**\ +One very popular interpretation of the "Metaverse" is group interactions within a real-time rendered 3D Virtual Reality world. [Mozilla Hubs](https://hubs.mozilla.com/) has been the leading open source project in this space for the **last decade**. Due to the limitation (and cost) of today's technology, however, hub has always had limited scalability. Rooms can contain 20 to 30 attendees. Another similar technology proof of concept has emerged recently in [Third Room](https://github.com/matrix-org/thirdroom). While Rocket.Chat as a collaboration platform has re-architectured to handle millions of users - and through federation, the world; we have also implemented Team Channels to deal with very large communities wanting autonomous control over their membership. This project is to create a rational integration between Mozilla Hubs (and/or Third Room) and Rocket.Chat team channel - enabling a pragmatic version of "the metaverse" to be built organically.\ +\ +We welcome original proposals at different levels of integration. It can be a direct extension of core, an external bridge, a link preview-extension, or even a Rocket.Chat App.\ + + +**Desired Skills:** + +ReactJS, TypeScript, MeteorJS. A thorough understanding of how Rocket.Chat core works. Knowledge of Rocket.Chat Apps development. Passion for improving human communications and collaboration. + +**Goals/Deliverables:**\ +Working integration of Mozilla Hubs rooms within Rocket.Chat Team Channels in a rational and usable context. + +**Project Duration:** 350 hours (Large)\ +\ +**Difficulty:** Advanced + + + +### Craft a sustainable snap for arm64 + +**Mentors:** TBD\ +\ +**Description:** + +[Snaps ](https://ubuntu.com/blog/topics/snapcraft)(in amd64 architecture) is one of the most popular distribution method through which new users discover Rocket.Chat. 64bit ARM processors have come of age and becoming mainstream now that Apple has bet their future on the architecture. + +In recent years, our own multi-platform snap build effort has failed miserably for the arm64 architecture. But tooling for building arm64 architecture snap on arm64 and amd64 is finally maturing. This project aims to leverage these new tooling to build a long-term sustainable snap distribution for arm64.\ +\ +**Desired Skills:**\ +Rocket.Chat deployment experience. Working experience with Snapcraft. Intense interest on DevOps.\ +\ +**Goals/Deliverables:**\ +Working arm64 snap for 5.x and 6.x releases of Rocket.Chat that leverages `core22` and cross-build capabilities of Snapcraft 7.\ +\ +**Project Duration:** 175 hours (Medium)\ +\ +**Difficulty:** Medium\ + + +### Unified Push for Android Apps + +**Mentors:** Diego Mello + +**Description:**\ +In the Android ecosystem, [UnifiedPush](https://unifiedpush.org/) has proven to be a practical provider agnostic way of supporting multiple push notification infrastructures. This project[ adds support for UnifiedPush to Rocket.Chat mobile app](https://github.com/RocketChat/Rocket.Chat.ReactNative/issues/3241) for Android platform.\ +\ +**Desired Skills:**\ +Advanced ReactNative. Knowledge of Android platform development.\ +\ +**Goals/Deliverables:**\ +UnifiedPush working on the Android app. With or without FCM fallback.\ +\ +**Project Duration:** 175 hours (Medium)\ +\ +**Difficulty:** Medium\ + + +### Off the Record Messaging for Mobile (OTR) + +**Mentors:** TBD\ +\ +**Description:**\ +[Off the Record Messaging](https://docs.rocket.chat/use-rocket.chat/user-guides/rooms/messaging/off-the-record-otr-messaging-guide) is a very popular and well loved feature of Rocket.Chat desktop and web client. It enable two parties to securely exchange encrypted message while both side are online, and not have the encrypted conversation be persisted in the chat history. However our mobile app currently does not support this. This project will add OTR support to our mobile apps. + +**Desired Skills:** Advanced ReactNative. Knowledge of native Android and iOS app development.\ +\ +**Goals/Deliverable:**\ +OTR working on both iOS and Android apps.\ +\ +**Project Duration:** 175 hours (Medium)\ +**Difficulty:** Medium\\ + +### Jitsi Meet x Rocket.Chat + +**Mentors:** TBD\ +\ +**Description:**\ +Jitsi meet has become one of the most popular and frequently used open source video conference platform in the world. The chat that is included as part of the Jitsi system is rudimentary and chat history is lost as soon as the conference is over. This project leverages our existing _**EmbeddedChat**_ project to integrate an embedded version of Rocket.Chat into Jitsi Meet - giving it a rich messaging experience with full history after conference.\ +\ +Ideally we would like an integration at the [Jitsi Meet React SDK](https://jitsi.github.io/handbook/docs/dev-guide/dev-guide-react-sdk/) level. Perhaps extending the _\_ tag with a _useRCForChat_ attribute. The integration should maintain prosody as the single source of truth for channel membership. A variety of server authentication scenarios must be catered for (including SSO and Oauth). + +**Desired Skills:** React Native, in-depth knowledge of EmbeddedChat project, familiarity with Jitsi Meet, understanding of prodigy.\ +\ +**Goal/Deliverable:** Jitsi Meet with Rocket.Chat embedded in place of existing chat.\ +\ +**Project Duration:** 350 hours. (Large)\ +\ +**Difficulty:** Medium/Advanced\\ + +### QuickAnswer Bot + +**Mentors:** Debdut Chakraborty + +**Description:**\ +The goal is to develop a bot that can help reduce repetitive questions asked in Rocket.Chat channels by providing relevant answers from its knowledge base (Similar to [this Slack app](https://slack.com/apps/ASAFS8C2D-truffle?tab=more\_info)) + +Features: + +1. Knowledge base: The bot will have a knowledge base of all previously answered questions and their answers. +2. Real-time scanning: The bot will scan the Rocket.Chat channels in real-time for new questions and check if it has a relevant answer in its knowledge base. +3. Private response: If the bot finds a relevant answer, it will send the answer privately to the person who asked the question, without interrupting the public conversation. +4. Analytics (optional): The bot will keep track of the number of repetitive questions answered and provide analytics to the administrator. + +Technologies to be used: + +* [Rocket.Chat](http://rocket.chat) apps-engine +* Natural Language Processing (NLP) +* Elasticsearch (a suggestion, but I’m open to any other good alternatives) + +With Elasticsearch integrated into the tech stack, the bot can leverage the powerful search and analysis capabilities of Elasticsearch to efficiently search through the knowledge base and provide accurate answers to the user's questions. [Here’s](https://rebeccabilbro.github.io/intro-doc-similarity-with-elasticsearch/) a good blog to get started. + +**Desirable Skills:** Advanced knowledge of Natural Language Processing (NLP); [Rocket.Chat](http://rocket.chat) apps-engine; Experience using chosen indexing framework like ElasticSearch + +**Goal/Deliverable:** A Rocket.Chat app that suggests relevant answers to new messages in a channel, based on past messages. Plus an additional service is used for indexing messages. + +**Project Duration:** 350 hours. (Large)\ +\ +**Difficulty:** Medium/Advanced + +### Full-stack Components Framework for Community Builders + +**Mentors:** TBD + +**Description:**\ +Full-stack component is the holy grail of software componentization. Imagine building a fully functional customized web portal in minutes by dragging and dropping full-stack components. Each component not only contains interactive UI, but also associated mid-tier and server-side/severless behaviours as well as parameterizations. Unfortunately the state of our current software art is not quite there yet. The next best thing is actually which solves the same problem but at a page level and not at the component-within-the-page level.\ +\ +RC4Community is a specialized componentized framework for community builders to rapidly create fully functional community portal. It was designed to work with a full-stack component framework since day one - but had to use Next.js instead. + +This project involves the introduction of the missing architectural, build workflow, and packaging technology to enable full-stack components within the RC4Community context. + +**Desirable Skills:** ReactJS, JavaScript, Next.js, server-side technology, serverless technology, microservices. A thorough understanding of how current component framework works. In-depth understanding of modern devops technology. In-depth understanding of JavaScript packaging technology and workflow. A passion for pushing the limits of modern componentized software development tools. + +**Goal/Deliverable:** A set of full stack components for community builders. A framework that allows new components to be hosted on their own independent repositories and be packaged into modules that can be installed over the network as needed (similar to npm model today). + +**Project Duration:** 350 hours. (Large)\ +\ +**Difficulty:** Advanced + +### Android Auto + +**Mentors:** TBD + +**Description:**\ +Create a sensible implementation of Rocket.Chat for [Android Auto](https://www.android.com/intl/en\_ca/auto/).\ +\ +**Desirable Skills:** Advanced Typescript. Android and Android Auto development experience. + +**Goal/Deliverable:** Rocket.Chat for Android Auto + +**Project Duration:** 175 hours (Medium)\ +\ +**Difficulty:** Advanced\ + + +### Enhanced Mobile App Support for Rocket.Chat Apps + +**Mentors:** TBD + +**Description:** + +Rocket.Chat Apps are the preferred way to extend Rocket.Chat's feature set, and the officially supported way of adding custom integrations to the chat rooms. While the very basic slash commands are currently supported by our mobile apps, a large portion of capabilities enjoyed by the browser and desktop apps is missing from mobile.\ +\ +This project aims to fill up part of this gap. It includes the mobile implementation of: + +* message actions +* room actions +* composer + +**Desirable Skills:** Advanced Typescript. Advanced ReactNative. Understanding of iOS and Android programming. + +**Goal/Deliverable:** Additional mobile support for Rocket.Chat apps. + +**Project Duration:** 175 hours (Medium)\ +\ +**Difficulty:** Advanced\ + + +### High Performance Windows Native Client + +**Mentors:** TBD + +**Description:**\ +Creating a high performance native desktop client for the Windows platform (Windows 10 and 11). This client should not embed a browser and should be accessing Rocket.Chat native APIs _on the wire_. It should leverage system programming languages such as rust and a platform framework (such as Tauri and others). Goal is a client with better performance characteristics, on Windows, than our current cross-platform desktop apps. + +**Desirable Skills:** Advanced rust. Advanced Windows systems development experience. + +**Goals/Deliverable:** A Windows platform native client that has great performance characteristics.\ +\ +**Project Duration:** 350 hours (Large)\ +\ +**Difficulty:** Advanced.\ + + +### Template messages Rocket.Chat app + +**Mentors:** TBD + +**Description:**\ +This project aims to develop a [Rocket.Chat](http://rocket.chat) app that allows users to create, store, and send common messages with ease (Similar to [this Slack app](https://slack.com/apps/AJGJWCYPQ-templates?tab=more\_info)). The app will have a simple interface that enables users to create templates with customized names. These templates can be triggered using a slash command (e.g., /template \) and inserted into the chat window with just one click. Users can also edit and delete their templates as needed. + +The app will be built using [the Apps-Engine framework](https://developer.rocket.chat/apps-engine/rocket.chat-apps-engine) as a Rocket.Chat app. This app will improve productivity and streamline communication in Rocket.Chat, provides a convenient way for users to send common messages and save time in their daily work routine. + +Examples of use cases include a customer support agent responding to frequently asked questions, a project manager sending a weekly status update message to the team, or a sales representative following up with potential clients. + +**Desirable Skills:** Rocket.Chat app-engine Framework. Rocket.Chat UiKit. Advanced Typescript + +**Goal/Deliverable:** A working Rocket.Chat app to send and manage template messages. + +**Project Duration:** 175 hours. (Medium)\ +\ +**Difficulty:** Easy/Medium + +### Improving Mobile Apps UX + +**Mentors:** TBD + +**Description:**\ +Improving the user experience on our current mobile apps with: + +* improved video UX (thumbnails, full screen etc) +* Set background color (instead of _rn-root-view_) - [ref](https://docs.expo.dev/versions/v47.0.0/sdk/system-ui/) +* Migrate store reveiw - [ref](https://docs.expo.dev/versions/v47.0.0/sdk/storereview/) +* Migrate screen orientation - [ref](https://docs.expo.dev/versions/v47.0.0/sdk/screen-orientation/) +* Migrate navigation color bar - [ref](https://docs.expo.dev/versions/v47.0.0/sdk/navigation-bar/) +* Migrate document picker - [ref](https://docs.expo.dev/versions/v47.0.0/sdk/document-picker/) + +**Desirable Skills:** Advanced Typescript. Advanced ReactNative. + +**Goal/Deliverable:** Improved Rocket.Chat Ux impacting millions of users. + +**Project Duration:** 175 hours. (Medium)\ +\ +**Difficulty:** Medium + +### User Actions Audit Center + +**Mentors:** TBD + +**Description:** The goal of this project is to make a service (Back end) capable of tracking user actions (role change, permission change, setting change, critical endpoint calls, etc) and then list them to admins. This will serve as a way of auditability of actions, reducing support friction (since this will make changes to system easier to track) and improve quality. Ideally, an Admin section will be shown with the list of actions, which would be filtered by type/user/level. Setting should also be in place to see if actions should be tracked or not and which actions to track + +**Desirable Skills:** Advanced Typescript and mid level React + +**Goal/Deliverable:** A working User Actions Audit Service. + +**Project Duration:** 175 hours. (Medium)\ +\ +**Difficulty:** Easy/Medium + +### Google Summer of Code Community Hub + +**Mentors:** TBD\ +**Description:**\ +Every year, Rocket.Chat's GSoC new community of 100s gather around a desperate set of servers: + +* in open.rocket.chat channels +* discussions in forums.rocket.chat topics +* listed on gsoc.rocket.chat leaderboard +* communicating over Github repositories +* gathered for meetings on Jitsi +* alumni summit +* demo day + +This project leverages two existing projects - the _RC4Community_ platform and _RC4Conferences_ components to build a one-stop hub to engage our community, incorporating all the servers into a unified hub with an easy to use Ux via single logon.\ + + +**Desirable Skills:** Advanced Typescript, advanced React. Deep knowledge of RC4Community and RC4Conferences projects.\ +\ +**Goal/Deliverable:** A working Google Summer of Code Community Hub that we will use to engage all community members starting in 2023.\ +\ +**Project Duration:** 350 hours. (Large)\ +\ +**Difficulty:** Easy/Medium + +### Big Blue Button x Rocket.Chat + +**Mentors:** TBD\ +\ +**Description:**\ +Big Blue Button has become one of the more popular open source virtual classroom platform in the world. The chat that is included is based on meteorjs (just like Rocket.Chat) but is rudimentary and chat history is lost as soon as the class session is over. This project leverages our existing _**EmbeddedChat**_ project to integrate an embedded version of Rocket.Chat into Big Blue Button - giving it a rich messaging experience with full history after class. + +**Desired Skills:**\ +React Native, MeteorJS, in-depth knowledge of EmbeddedChat project, familiarity with Big Blue Button and good understanding of Rocket.Chat core.\ +\ +**Goal/Deliverable:**\ +Big Blue Button with Rocket.Chat embedded in place of existing chat.\ +\ +**Project Duration:** 350 hours. (Large)\ +\ +**Difficulty:** Advanced + +### Integrate Miro via RC App + +**Mentors:** TBD + +**Description:** Create and share boards with coworkers inside Rocket.Chat + +**Desirable Skills:** JavaScript/TypeScript, ReactJS + +**Goal/Deliverable:** The goal of this project is to create collaborative boards that work within Rocket.Chat + +**Project Duration:** 175 (Medium)\ +\ +**Difficulty:** Easy/Medium + +### Integrate Toggl via RC App + +**Mentors:** TBD + +**Description:** Track your time on daily basics tasks + +**Desirable Skills:** JavaScript/TypeScript, ReactJS + +**Goal/Deliverable:** Start counting time inside Rocket-Chat, without having to enter the Toggl website or download the application on your computer + +**Project Duration:** 175 (Medium)\ +\ +**Difficulty:** Easy/Medium + +### Integrate Asana via RC App + +**Mentors:** TBD + +**Description:** Create and assign tasks without leaving Rocket.Chat + +**Desirable Skills:** JavaScript/TypeScript, ReactJS + +**Goal/Deliverable:** The objective of this project is to be able to manage tasks without having to enter the Asana UI + +**Project Duration**: 175 (Medium)\ +\ +**Difficulty:** Easy/Medium diff --git a/contributors/contributor-code-of-conduct.md b/contribute-to-rocket.chat/contributor-code-of-conduct.md similarity index 87% rename from contributors/contributor-code-of-conduct.md rename to contribute-to-rocket.chat/contributor-code-of-conduct.md index 64f3226ceb..ea263b1b22 100644 --- a/contributors/contributor-code-of-conduct.md +++ b/contribute-to-rocket.chat/contributor-code-of-conduct.md @@ -2,7 +2,7 @@ ## Our Pledge -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards @@ -19,7 +19,7 @@ Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Publishing other's private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities diff --git a/github-sponsorship.md b/contribute-to-rocket.chat/github-sponsorship.md similarity index 81% rename from github-sponsorship.md rename to contribute-to-rocket.chat/github-sponsorship.md index 668f23b21d..3700392b6c 100644 --- a/github-sponsorship.md +++ b/contribute-to-rocket.chat/github-sponsorship.md @@ -2,8 +2,8 @@ -You don’t have to be a coder to contribute to Rocket.Chat. In fact, you don’t even have to be technical. Many of our community contributors support the Rocket.Chat open source project directly through Github Sponsorships. - +You don’t have to be a coder to contribute to Rocket.Chat. In fact, you don’t even have to be technical. Many of our community contributors support the Rocket.Chat open source project directly through Github Sponsorships.\ +\ The following should answer the questions you may have regarding sponsorship. ### How do I become a Rocket.Chat sponsor? @@ -13,5 +13,4 @@ The following should answer the questions you may have regarding sponsorship. 3. Add a payment method 4. Click on Sponsor Rocket.Chat -Notice that plans $5 a month and above include a mobile push notification increase benefit. To apply to your workspace click [https://sponsorship.rocket.chat](https://sponsorship.rocket.chat/) and select the workspace you would like. - +Notice that plans $5 a month and above include a mobile push notification increase benefit. To apply to your workspace click [https://sponsorship.rocket.chat](https://sponsorship.rocket.chat) and select the workspace you would like. diff --git a/contribute-to-rocket.chat/how-can-i-help/README.md b/contribute-to-rocket.chat/how-can-i-help/README.md new file mode 100644 index 0000000000..1d13cb87aa --- /dev/null +++ b/contribute-to-rocket.chat/how-can-i-help/README.md @@ -0,0 +1,21 @@ +# How can I help? + +## How can I help? + +You can help in multiple ways - even if you don't write code, you can still contribute. We are always looking for assistance with creating or updating documentation, testing our web, desktop, and mobile apps and reporting bugs. + +**Developers** who wish to make contributions, please go [here](developing.md) to start. + +If you have found a **security** issue, [report it](security/). + +Rocket.Chat is currently **translated** into more than twenty languages, but we've got a long way to go. If you'd like to assist us with this, please email our [translation team](mailto:translations@rocket.chat) to be invited to our [Lingohub](https://translate.lingohub.com) project. + +Be sure to check out our [contributor's guidelines](https://developer.rocket.chat/rocket.chat/contribute-to-rocket.chat). + +To help improve our **documentation**, please see [contribution guides](documentation/). + +**Bloggers and news writers**, feel free to [spread the word](promoting.md)! + +## Contributor Covenant Code of Conduct + +This project adheres to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to team@rocket.chat diff --git a/contribute-to-rocket.chat/how-can-i-help/developing.md b/contribute-to-rocket.chat/how-can-i-help/developing.md new file mode 100644 index 0000000000..913c1129a3 --- /dev/null +++ b/contribute-to-rocket.chat/how-can-i-help/developing.md @@ -0,0 +1,34 @@ +# Developing + +First of all, thank you for your interest in contributing to Rocket.Chat. If this is the first Open Source project you will contribute to, we strongly suggest reading GitHub's excellent guide ["Contributing to Open Source"](https://guides.github.com/activities/contributing-to-open-source/). + +## Getting Started + +You can find our projects [here](https://github.com/RocketChat). Go to the Issues tab, and when you find something you would like to work on, just comment on it, and we will add an [In Progress label](https://github.com/RocketChat/Rocket.Chat/labels/stat%3A%20in%20progress). + +If you already have a work in progress pull request open for that issue, you can link that issue on your pull request or write `Closes #ISSUE_NUMBER` where the `ISSUE_NUMBER` is the number at the end of the link URL. + +**Assigned Issues:** + +Sometimes you'll stumble upon issues that have an Assignee. Assignees are trusted people that are responsible for that issue (usually core team members). + +But that doesn't mean you can't contribute! Every issue is open, and any help is welcome. Feel free to work on anything you want. You are encouraged to discuss your progress with the community in the comments, it doesn't mean other people can't work on it. Don't be discouraged from tackling something you feel like doing. + +**Where to Find Tasks:** + +Want a simple task to get you started? [We maintain a list of those](https://github.com/RocketChat/Rocket.Chat/labels/contrib%3A%20easy)! Or search for issues tagged contrib:easy + +Check our [developer guides](https://developer.rocket.chat) for more detailed information about pull requests, workflow, and API docs. + +An in-depth procedure for setting up your development environment can be found on the Rocket.Chat developers docs. + +{% embed url="https://developer.rocket.chat/rocket.chat/rocket-chat-environment-setup" %} + +{% embed url="https://developer.rocket.chat/rocket.chat/contribute-to-rocket.chat" %} + +* ### Priority Features and/or Bug fixes + +If you want a feature or bug fix to be developed with a higher priority: + +* [Contact us directly](https://rocket.chat/contact) to sponsor its development +* [Add a bounty](https://www.bountysource.com/teams/rocketchat) to it diff --git a/contribute-to-rocket.chat/how-can-i-help/documentation/README.md b/contribute-to-rocket.chat/how-can-i-help/documentation/README.md new file mode 100644 index 0000000000..e7d8ebbd66 --- /dev/null +++ b/contribute-to-rocket.chat/how-can-i-help/documentation/README.md @@ -0,0 +1,76 @@ +--- +description: >- + Here you will find all that you need to know to start contributing to + Rocket.Chat documentation. +--- + +# Documenting + +First of all, thank you for your interest in contributing to Rocket.Chat Docs. If this is the first Open Source project you will contribute to, we strongly suggest reading GitHub's excellent guide: + +{% embed url="https://opensource.guide/how-to-contribute/" %} + +## Finding something to work on + +You can find a list of issues [here](https://github.com/RocketChat/Rocket.Chat.Docs/issues). When you find something you would like to work on just comment on it and we will add an **In Progress** label. + +## Environment Setup + +Rocket.Chat uses [GitBook ](https://www.gitbook.com/)for documentation. + +You can contribute to the docs by being invited into the GitBook online workspace or directly from your local environment. Follow this guide for a simple local environment setup + +* Install any code editor of your choice, [VSCode ](https://code.visualstudio.com/)is the recommended +* Launch VSCode and install the [Auto-Open Markdown Preview](https://marketplace.visualstudio.com/items?itemName=hnw.vscode-auto-open-markdown-preview) and [markdownlint ](https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint)extensions. This will help with automatically formatting your changes and prompts for any errors +* Fork and clone the [user docs](https://github.com/RocketChat/docs) or [developers docs](https://github.com/RocketChat/developer-docs) repository +* Open the project in VSCode and start making your changes + +## Creating a new Pull Request + +### Requirements + +When you create a new pull request, we expect some requirements to be met. + +* Follow this naming convention for Pull Requests: + * When adding new documentation, add _**New Documentation:**_ before the title. E.g. `New Documentation: Authentication Guide` + * When fixing documentation, add _**Fix Documentation:**_ before the title. E.g. `Fix Documentation: Authentication Guide` + * When updating documentation, add _**Update Documentation:**_ before the title. E.g. `Update Documentation: Authentication Guide` +* If your Pull Request closes an issue you need to write `Closes #ISSUE_NUMBER` where the `ISSUE_NUMBER` is the number at the end of the link URL that will link your pull request to the issue, when merged will close that issue. +* For each pull request made, we run tests to check if there are any broken links. You can find how to run these tests locally [here](https://docs.rocket.chat/developer-guides/testing/#testing). + +### Creating Drafts + +When you create a new feature but for some reason can't create a full-fledged documentation pull request, you can create a `draft` which is a single file pull request with critical information needed to create the desired documentation, after creating the draft, the documentation team will edit the pull request to suit the documentation standards. + +* [New Feature Template](new-feature-draft.md) +* [Feature Change Template](feature-change-draft.md) + +### Testing Changes + +To test your changes you have 2 options: + +#### Using Live Preview Locally + +The [Auto-Open Markdown Preview](https://marketplace.visualstudio.com/items?itemName=hnw.vscode-auto-open-markdown-preview) installed on VSCode can help automatically preview directly in your editor. + +#### Using GitBook + +Simply fork our docs repository, [create a space](https://docs.gitbook.com/getting-started/content-structure/what-is-a-space#create-a-spacehttps://docs.gitbook.com/getting-started/content-structure/what-is-a-space#create-a-space) on GitBook, and activate the [GitHub Integration](https://docs.gitbook.com/integrations/git-sync) on your fork. This gives you a means of previewing your changes before submitting a PR. + +## Community Maintainers + +We are looking for community maintainers for the Rocket.Chat documentation. Maintainers will be added to a special team with write permissions. These permissions consist of opening, closing, tagging, and editing issues and pull requests, creating and deleting non-protected branches on the docs repository. + +The responsibilities of a maintainer are: + +### Issue Triage + +* **Labeling issues:** Label issues accordingly. +* **Finding Duplicates:** finding and closing duplicate issues. +* **Closing irrelevant/inappropriate issues:** Closing issues that are no longer needed, that are not relevant to the project, and/or don't follow the issues guidelines. +* **Doing first-level contact:** Getting more information on the issues (like version number or asking for clarification) and closing them if they aren't relevant or if a question made by the maintainer wasn't answered in 2 days. + +### Help with Contribution + +* **Help Manage Pull Requests:** help the author of the pull request with any problems (like tests failing due to markdown problems on the pull request) +* **Contributing!** Create pull requests to help maintain the documentation diff --git a/contributors/how-can-i-help/documentation/feature-change-draft.md b/contribute-to-rocket.chat/how-can-i-help/documentation/feature-change-draft.md similarity index 100% rename from contributors/how-can-i-help/documentation/feature-change-draft.md rename to contribute-to-rocket.chat/how-can-i-help/documentation/feature-change-draft.md diff --git a/contributors/how-can-i-help/documentation/markdown-styleguide.md b/contribute-to-rocket.chat/how-can-i-help/documentation/markdown-styleguide.md similarity index 85% rename from contributors/how-can-i-help/documentation/markdown-styleguide.md rename to contribute-to-rocket.chat/how-can-i-help/documentation/markdown-styleguide.md index 68d385675f..406c07aec1 100644 --- a/contributors/how-can-i-help/documentation/markdown-styleguide.md +++ b/contribute-to-rocket.chat/how-can-i-help/documentation/markdown-styleguide.md @@ -1,6 +1,6 @@ # Markdown Style Guide -The Rocket.Chat documentation supports the [Markdown Markup Language](https://en.wikipedia.org/wiki/Markdown) \(You can also find a "Cheatsheet" [here](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet)\) +The Rocket.Chat documentation supports the [Markdown Markup Language](https://en.wikipedia.org/wiki/Markdown) (You can also find a "Cheatsheet" [here](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet)) Markdown can be written in various different styles, in this document you will find the standard formatting guide for creating Rocket.Chat documentation. @@ -18,7 +18,7 @@ Headers should not be skipped, instead incremented one by one **Wrong**: -```text +``` # Header 1 ### Header 3 @@ -28,7 +28,7 @@ We skipped out a 2nd level header in this document **Correct**: -```text +```markdown # Header 1 ## Header 2 @@ -42,13 +42,13 @@ We skipped out a 2nd level header in this document ### Another Header 3 ``` -### MD002 - First header should be a top level header +### MD002 - First header should be a top-level header -The first header of the document should be a top level header \(H1\). +The first header of the document should be a top level header (H1). **Wrong**: -```text +``` ## This isn't a H1 header ### Another header @@ -56,7 +56,7 @@ The first header of the document should be a top level header \(H1\). **Correct**: -```text +``` # Start with a H1 header ## Then use a H2 for subsections @@ -68,7 +68,7 @@ The header style used on documents should be `atx`. **Wrong**: -```text +``` Setext style H1 =============== @@ -78,7 +78,7 @@ Setext style H2 **Correct**: -```text +```markdown # ATX style H1 ## ATX style H2 @@ -90,7 +90,7 @@ Lists should be created using asterisks. **Wrong**: -```text +```markdown * Item 1 + Item 2 - Item 3 @@ -98,7 +98,7 @@ Lists should be created using asterisks. **Correct**: -```text +```markdown * Item 1 * Item 2 * Item 3 @@ -110,7 +110,7 @@ Lists should have consistent indentation, usually this rule will be triggered be **Wrong**: -```text +```markdown * Item 1 * Nested Item 1 * Nested Item 2 @@ -119,11 +119,11 @@ Lists should have consistent indentation, usually this rule will be triggered be **Correct**: -```text +```markdown * Item 1 * Nested Item 1 * Nested Item 2 - * Nested Item 3 + * Nested Item 3 --->Aligned ``` ### MD006 - Consider starting bulleted lists at the beginning of the line @@ -132,7 +132,7 @@ Bulleted lists should start on the beginning of the line. **Wrong**: -```text +``` Some text * List item @@ -141,7 +141,7 @@ Some text **Correct**: -```text +```markdown Some text * List item @@ -154,14 +154,14 @@ List items should be indented using 4 spaces. **Wrong**: -```text +``` * List item * Nested list item indented by 3 spaces ``` **Correct**: -```text +```markdown * List item * Nested list item indented by 4 spaces ``` @@ -184,13 +184,13 @@ When creating links you should use the `[]` surrounding the text and `()` surrou **Wrong**: -```text +``` (Incorrect link syntax)[http://www.example.com/] ``` **Correct**: -```text +```markdown [Correct link syntax](http://www.example.com/) ``` @@ -200,7 +200,7 @@ There should not have more than one consecutive blank line on the document. **Wrong**: -```text +``` Some text here @@ -209,7 +209,7 @@ Some more text here **Correct**: -```text +```markdown Some text here Some more text here @@ -221,7 +221,7 @@ There should be a space after the hashes on atx style headers. **Wrong**: -```text +``` #Header 1 ##Header 2 @@ -229,7 +229,7 @@ There should be a space after the hashes on atx style headers. **Correct**: -```text +```markdown # Header 1 ## Header 2 @@ -241,7 +241,7 @@ There shouldn't have more than 1 space after the hash on atx style headers. **Wrong**: -```text +``` # Header 1 ## Header 2 @@ -249,7 +249,7 @@ There shouldn't have more than 1 space after the hash on atx style headers. **Correct**: -```text +```markdown # Header 1 ## Header 2 @@ -257,11 +257,11 @@ There shouldn't have more than 1 space after the hash on atx style headers. ### MD022 - Headers should be surrounded by blank lines -All headers should have a blank line both before and after \(except where the header is at the beginning or end of the document\) +All headers should have a blank line both before and after (except where the header is at the beginning or end of the document) **Wrong**: -```text +``` # Header 1 Some text @@ -271,7 +271,7 @@ Some more text **Correct**: -```text +```markdown # Header 1 Some text @@ -285,7 +285,7 @@ Some more text **Wrong**: -```text +``` Some text # Indented header @@ -293,7 +293,7 @@ Some text **Correct**: -```text +```markdown Some text # Header @@ -301,11 +301,11 @@ Some text ### MD025 - No multiple top level headers in the same document -There should only have one top level header \(`h1`\) on a document. +There should only have one top level header (`h1`) on a document. **Wrong**: -```text +``` # Top level header # Another top level header @@ -313,7 +313,7 @@ There should only have one top level header \(`h1`\) on a document. **Correct**: -```text +```markdown # Title ## Header @@ -323,18 +323,18 @@ There should only have one top level header \(`h1`\) on a document. ### MD027 - No multiple spaces after blockquote symbol -Blockquote should not have more than one space after the blockquote symbol \( `>` \). +Blockquote should not have more than one space after the blockquote symbol ( `>` ). **Wrong**: -```text +``` > This is a block quote with bad indentation > there should only be one. ``` **Correct**: -```text +```markdown > This is a block quote with good indentation > there should only be one. ``` @@ -345,7 +345,7 @@ There shouldn't have a blank line inside the same blockquote. **Wrong**: -```text +``` > This is a blockquote > which is immediately followed by @@ -355,7 +355,7 @@ There shouldn't have a blank line inside the same blockquote. **Correct**: -```text +```markdown > This is a blockquote. And Jimmy also said: @@ -365,7 +365,7 @@ And Jimmy also said: Alternatively, if they are supposed to be the same quote, then add the blockquote symbol at the beginning of the blank line -```text +``` > This is a blockquote. > > This is the same blockquote. @@ -377,7 +377,7 @@ Ordered lists should be ordered by a prefix that increases in numerical order. **Wrong**: -```text +``` 1. Do this. 1. Do that. 1. Done. @@ -385,7 +385,7 @@ Ordered lists should be ordered by a prefix that increases in numerical order. **Correct**: -```text +```markdown 1. Do this. 2. Do that. 3. Done. @@ -397,7 +397,7 @@ There should be only one space after a list marker. **Wrong**: -```text +``` *Foo *Bar *Baz @@ -409,7 +409,7 @@ There should be only one space after a list marker. **Correct**: -```text +```markdown * Foo * Bar * Baz @@ -429,37 +429,35 @@ Fenced code blocks should be surrounded by blank lines. **Wrong**: -```text +``` Some text ``` Code block -```text - +``` ``` Another code block -```text +``` Some more text ``` **Correct**: -```text +``` Some text ``` Code block -```text - +``` ``` Another code block -```text +``` Some more text ``` @@ -469,7 +467,7 @@ Lists should be surrounded by blank lines. **Wrong**: -```text +``` Some text * Some * List @@ -481,7 +479,7 @@ Some text **Correct**: -```text +```markdown Some text * Some @@ -495,27 +493,27 @@ Some text ### MD034 - No bare URLs -There should no bare urls on the document, surround the links with angle brackets \(`< >`\). +There should no bare urls on the document, surround the links with angle brackets (`< >`). **Wrong**: -```text +``` For more information, see http://www.example.com/. ``` **Correct**: -```text +``` For more information, see . ``` ### MD035 - Horizontal rule style -Horizontal rules should be created using three slashes \(`---`\). +Horizontal rules should be created using three slashes (`---`). **Wrong**: -```text +``` *** * * * @@ -525,17 +523,17 @@ Horizontal rules should be created using three slashes \(`---`\). **Correct**: -```text +``` --- ``` ### MD037 - No spaces inside emphasis markers -There shouldn't have spaces inside emphasis markers \(bold, italic\). +There shouldn't have spaces inside emphasis markers (bold, italic). **Wrong**: -```text +``` Here is some ** bold ** text. Here is some _ italic _ text. @@ -543,7 +541,7 @@ Here is some _ italic _ text. **Correct**: -```text +``` Here is some **bold** text. Here is some _italic_ text. @@ -555,7 +553,7 @@ There shouldn't have spaces inside code span elements. **Wrong**: -```text +``` ` some text ` `some text ` @@ -565,7 +563,7 @@ There shouldn't have spaces inside code span elements. **Correct**: -```text +```markdown `some text` ``` @@ -575,13 +573,13 @@ There shouldn't have spaces inside link texts. **Wrong**: -```text +``` [ a link ](http://www.example.com/) ``` **Correct**: -```text +```markdown [a link](http://www.example.com/) ``` @@ -591,17 +589,14 @@ Code blocks should be fenced. **Wrong**: -```text +``` codeblock using indentation. ``` **Correct**: -```text -```text - codeblock using indentation. -​ +````markdown ``` - -\`\`\` - +codeblock without indentation. +``` +```` diff --git a/contributors/how-can-i-help/documentation/new-feature-draft.md b/contribute-to-rocket.chat/how-can-i-help/documentation/new-feature-draft.md similarity index 100% rename from contributors/how-can-i-help/documentation/new-feature-draft.md rename to contribute-to-rocket.chat/how-can-i-help/documentation/new-feature-draft.md diff --git a/contribute-to-rocket.chat/how-can-i-help/donate.md b/contribute-to-rocket.chat/how-can-i-help/donate.md new file mode 100644 index 0000000000..1c7b9ef944 --- /dev/null +++ b/contribute-to-rocket.chat/how-can-i-help/donate.md @@ -0,0 +1,7 @@ +# Donate + +Rocket.Chat will be free forever, but you can help us speed up the development! + +![Donate to Rocket.Chat](https://camo.githubusercontent.com/361950b331ef676b7eec436a4dbe5a7ce47211a6623dcc889b1f5b7b611b27df/68747470733a2f2f7777772e70617970616c6f626a656374732e636f6d2f656e5f55532f692f62746e2f62746e5f646f6e61746543435f4c472e676966) + +Or support us on [BountySource](https://www.bountysource.com/teams/rocketchat)! diff --git a/contributors/how-can-i-help/promoting.md b/contribute-to-rocket.chat/how-can-i-help/promoting.md similarity index 100% rename from contributors/how-can-i-help/promoting.md rename to contribute-to-rocket.chat/how-can-i-help/promoting.md diff --git a/contributors/how-can-i-help/reporting-issues.md b/contribute-to-rocket.chat/how-can-i-help/reporting-issues.md similarity index 89% rename from contributors/how-can-i-help/reporting-issues.md rename to contribute-to-rocket.chat/how-can-i-help/reporting-issues.md index 0ee8468cd4..b93eb2d11e 100644 --- a/contributors/how-can-i-help/reporting-issues.md +++ b/contribute-to-rocket.chat/how-can-i-help/reporting-issues.md @@ -11,7 +11,7 @@ Examples of things that aren't considered bugs: * Can't get the server installed * Want a new widget in Rocket.Chat -If your issue falls into one of these categories, please see [Getting Support](../../getting-support.md) +If your issue falls into one of these categories, please see [Getting Support](../../resources/get-support/) New feature requests should be posted in the [forums](https://forums.rocket.chat). @@ -19,7 +19,7 @@ New feature requests should be posted in the [forums](https://forums.rocket.chat ### Before reporting a new issue -1. [Read the Documentation](https://docs.rocket.chat/) carefully all the way through. +1. [Read the Documentation](https://docs.rocket.chat) carefully all the way through. 2. Make sure you are running the latest version of Rocket.Chat. It's very likely simply updating will resolve your issue. 3. Try to narrow it down to reproducible steps. If we can reproduce it, we will be able to fix the issue a lot quicker. 4. Look at all of your logs for errors. See below for how to gather logs. @@ -33,8 +33,8 @@ Giving clear background information will help save a lot of time. Please include the following information to promote effective fixing. -* Operating System / Version / Architecture \(64 bit?\) -* Browser type and version, including any add-ons. \(e.g., AdBlocker, NoScript, etc.\) +* Operating System / Version / Architecture (64 bit?) +* Browser type and version, including any add-ons. (e.g., AdBlocker, NoScript, etc.) * Rocket.Chat version * Expected behavior * Actual behavior @@ -54,7 +54,7 @@ Here are some links to help you register your bug in the right place: It can be done in two ways: -1. `Administration` -> `Info` +1. `Administration` -> `Info` 2. Your Rocket.Chat URL followed by `/api/info` #### Gathering Logs @@ -70,4 +70,3 @@ To collect logs from your browser as an Admin, log into your Rocket.Chat. From t It is often useful to open this in another browser and reproduce the problem again, and you will see an exception pop up in the logs. Also, consider your web server logs and general system logs. - diff --git a/contribute-to-rocket.chat/how-can-i-help/security/README.md b/contribute-to-rocket.chat/how-can-i-help/security/README.md new file mode 100644 index 0000000000..79deebf380 --- /dev/null +++ b/contribute-to-rocket.chat/how-can-i-help/security/README.md @@ -0,0 +1,28 @@ +# Security + +First of all, thank you in advance for taking the time and effort to help us improve the security of Rocket.Chat! We are committed to delivering an awesome and secure chat solution for and aided by, our community. + +Given the nature of Chat, we understand each person using Rocket.Chat has some expectations about their data being secure and private. It's clear how important this is to everyone, and we work to the best of our abilities to ensure your expectations are met. + +## If you find a Security Issue + +> Please email the details to Rocket.Chat's security team at `security@rocket.chat` or report directly into our [HackerOne Program.](https://hackerone.com/rocket\_chat) + +Our security team will respond to confirm receipt of your message, review and plan the mitigation of the issue appropriately, as well as set a timeline for a new release or patch. + +We follow Monsible disclosure and will credit researchers when a security issue has been identified and mitigated while adhering to the following specifics: + +* You may not use automated tools in your research without our explicit consent. The use of automated tools may result in an investigative action or your IP(s) being blocked. +* You make a good faith effort to avoid privacy violations, destruction of data, and interruption or degradation of our service during your research. +* You give us reasonable time to respond to your report and carry out remediation. +* We credit the first researcher to report an issue. Additionally, we reserve the right to only acknowledge researchers who discover issues in Rocket.Chat projects or related services if we determine the issue to be of high or critical severity or if there has been continued research or contributions made by the reporter. +* We will credit you with your name and a "no-follow" link to your address (e.g. Twitter or personal website). As a token of our gratitude for your assistance, we also offer an [original Rocket.Chat Shirt](https://shop.spreadshirt.com/rocketchat) to every first reporter about a security problem that we have not yet known. We may limit this reward to one item per person, depending on the item's availability. Please refrain from requesting additional compensation for reporting vulnerabilities. +* If you follow these parameters, we will not bring any lawsuit or begin a law enforcement investigation. + +## What details should you include when reporting a Security Issue + +Please provide as many relevant details as you can. In particular: + +* What versions of the software are involved +* What steps can someone follow to go from an initial installation of that software to a point where they see the vulnerability +* Any patches or steps to mitigate the problem diff --git a/contributors/how-can-i-help/security/responsible-disclosure-policy.md b/contribute-to-rocket.chat/how-can-i-help/security/responsible-disclosure-policy.md similarity index 100% rename from contributors/how-can-i-help/security/responsible-disclosure-policy.md rename to contribute-to-rocket.chat/how-can-i-help/security/responsible-disclosure-policy.md diff --git a/contributors/how-can-i-help/translating.md b/contribute-to-rocket.chat/how-can-i-help/translating.md similarity index 100% rename from contributors/how-can-i-help/translating.md rename to contribute-to-rocket.chat/how-can-i-help/translating.md diff --git a/contributors/contributing/usability-testing.md b/contributors/contributing/usability-testing.md deleted file mode 100644 index b462cfcbe6..0000000000 --- a/contributors/contributing/usability-testing.md +++ /dev/null @@ -1,126 +0,0 @@ -# Usability Testing Contribution Guide - -A usability test is a UX research methodology for evaluating user interfaces, being those paper prototypes, high-fidelity prototypes, a live version of a software, and so on. The basic procedure consists of having a **moderator** or **facilitator** watching representative users performing significant tasks in the interface to understand their thoughts and reporting the results. - -Usability tests are widely recommended to have information not only about whether users are failing to complete the tasks or not, but also why are they failing, which is useful to have conclusions on how the interface should be improved. - -The user testing process consists of three main steps: - -1. Designing the test; -2. Running the test sessions; -3. Reporting test results. - -## 1. Designing the test - -Start by creating an issue in the repository to follow the test design template. - -Decide on what needs to be tested, the **objective** of the test. It can be a user journey, an application feature, or something as small as understanding what a specific button does. If you have many objectives, prefer to write more than one test instead of running one big test. Short sessions of 15 minutes or less are better so as not to tire participants. - -### Requirements - -For the test sessions to happen, there might be a few requirements that need to be described beforehand: - -* **User profile** - - the participants for the tests should be representative of the application domain; - - depending on the test goals, you may want to test with different user profiles. e.g.: users who already used your software, users who have used similar interfaces to your software or users who never got in touch with any software of this kind but are familiar to this field; - - define how many users you want for your test iteration: for each user profile you choose, you'll need the same amount of participants. Usually, 5 users are enough, 7 users are good and 10 or more users are a waste of time - if you want your test session to run with 5 participants, you'll need to run with 5 people for each profile required. -* **Environment** - - where the test should run: a paper prototype, a high fidelity prototype, the current version of the application; - - describe how should the environment be prepared (populate database, open the application in a specific screen, reset for each test); - - if necessary, provide steps to get this version of the software or prototype. - -### Tasks - -Prepare a list of significant **tasks** that the participants need to perform in the interface. A task itself does not contain details concerning context, it will be used to build the scenario tasks and can be useful as a guide to reporting results later. - -You can create one or two warm up tasks to get started that not necessarily are related to the goals of the test itself, but they can be easy for the participant to get familiarized to the interface. - -### Scenarios - -Scenarios are the test script for the participants. Using the **tasks**, describe relatable scenarios for the test session. Make sure to write them as if the user would be in the context of the application usage. Place the scenarios in an order that better helps you to extract information from the participants. - -Not giving hints while choosing the words used in the scenarios descriptions is as important as creating well described and contextualized scenarios. Avoid suggesting button names, or naming any kind of element in the interface to instigate participants to figure out themselves where should they click. - -A badly written scenario would be: - -> :x: -> -> Edit your profile picture to a newer one. - -This scenario is not well contextualized. In case the button for editing the profile picture is called "Edit", it suggests where the user should click. - -For this situation, a good example of a scenario could be: - -> :heavy_check_mark: -> -> You received an e-mail asking you to update your personal information because your profile picture is outdated. Please, look for this option in the application. - -This scenario puts a reason for doing the action on the application and does not suggest the user click on "Edit" instantly. - -For each scenario, also write down the participant's expected behavior: - -> Expected behavior: Click on your profile picture. In the dropdown menu, select "My Account". In the side menu, click "Profile" and click on the cloud with an arrow icon to select a new picture. - -Once you have finished designing your test, test the test: review it by running the test like you expect the users to do. This is important to check if the test flow and tasks make sense. - -## 2. Running the test sessions - -### Participants - -Find some participants according to the profile requirements. Collect some data from the participants, like their familiarity with similar software, or their technical background: it can be useful later to evaluate results. - -### Preparation - -Set the environment up like described on the test requirements. Run the test like it is expected from the participants, so that you'll know what you have to pay attention to. - -Start the session by providing context to the user on what the software is about and what the tests are for. It's a good idea to ask the user permission to record the session so that you can focus on observing the task execution and rewatch the session later or show the videos to the software designers. - -Encourage the user to think aloud, telling what they are looking for, what they are trying to do, to help you follow their rationale. It is common that sometimes they forget to think aloud, so you can ask questions about what they are doing to remind them. - -Explain how the session is going to be, and make it clear for the user that what is being tested is the software, not their knowledge or technology skills, so if they fail, it's the interface fault. Allow them to give up on a task if they are stuck and can't figure it out. - -Explicitly tell the participant that you expect them to be honest and that you won't be offended if the interface is not good. - -### Test execution - -For each scenario, read it aloud to the user and watch they interact with the interface. Don't give hints, let the user try on their own. If they ask questions, guide them with other questions, be careful not to bias the test result by helping the user. - -After each scenario, you can ask some follow-up questions to gather some information that may come up only when the task is finished, like "where were you expecting to find that button first?", "which icon were you looking for?". - -During the test, besides observing the participant interacting with the interface, pay attention to those other aspects to elaborate the test report later: -* Execution time; -* Number of mistakes; -* Impressions; -* Comments; -* Peculiar or dissonant behaviors; -* Spontaneous suggestions. - -### Concluding the test - -When you finish all the tests, thank the participant for their input and how valuable they were and explain about what you were testing. Some participants can start giving you other feedback that were not your focus in the test because they want to be helpful, so making it clear your goals and that the test is over is important to avoid this. - -## 3. Reporting results - -Add your results to the corresponding issue comments. Once all the tests are finished, add the conclusions to the issue description. - -Make sure to differentiate results considering user profiles, if you have more than one. - -### Result analysis - -Reporting the results well is essential for addressing usability problems and having useful insight to make improvements, especially when other people are going to read the report to work on the next design version. Write about what went well and what were the challenges, describe how the participants felt, what did they try and why. - -> What went well? -> -> All the participants were able to perform the task. Once they found the right configuration panel, they were able to change it very easily. - -> What were the challenges? -> -> When the participants were trying to change the notifications settings for mobile, they first clicked on the bell icon in the channels. They had a hard time to understand that on the Account settings they would be able to see notifications settings. - -Add your notes about the aspects mentioned above that you observed (execution time, amount of mistakes, impressions, comments, peculiar or dissonant behaviors, and spontaneous suggestions). - -Use screenshots to illustrate better your description, GIFs, or videos. - -### Summarizing results - -For each task, write down the number of participants who were able to complete the task and the number of participants who weren't. Use the raw number of users who failed or succeeded, **do not use percentages**: it is not a good measure for a small amount of participants. diff --git a/contributors/google-season-of-docs/google-season-of-docs-2019.md b/contributors/google-season-of-docs/google-season-of-docs-2019.md deleted file mode 100644 index df13ab1f40..0000000000 --- a/contributors/google-season-of-docs/google-season-of-docs-2019.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -permalink: /contributing/google-season-of-docs-2019/ -redirect_from: - - /contributing/google-season-of-docs/ ---- - -# Google Season of Docs 2019 - -[![Google Season of Docs 2019](https://github.com/Sing-Li/bbug/raw/master/images/gsodlogo.png)](https://developers.google.com/season-of-docs/) - -[Season of Docs](https://g.co/seasonofdocs) is Google's annual program that fosters collaboration between open source projects and technical writers. It's happening for the first time in 2019! - -Season of Docs is a unique program that pairs technical writers with open source mentors to introduce the technical writer to an open source community and provide guidance while the writer works on a real-world open source project. The technical writer ,in turn, provides documentation expertise to the open source organization. - -Projects can cover a wide range of fields including Cloud computing, operating systems, graphics, medicine, programming languages, robotics, science, security and many more. Season of Docs is not a recruiting program or an internship but it does provide invaluable experience and looks great on a resume! - -This year's Season of Docs is a pilot that accepts only a limited number of applications, so don't wait to the last minute to prepare! - -## How to apply - -Application for technical writers is now closed for the 2019 season. See [Google Season of Docs 2019 timeline](https://developers.google.com/season-of-docs/docs/timeline) for more details. - -Write and submit your proposal now! Check out our [list of ideas](https://docs.rocket.chat/contributing/google-season-of-docs-2019/#project-ideas) for some inspiration. - -Meet the mentors and fellow writers for GSoD 2019 and get some real-time help on next steps, please visit our 24 x 7 community server channel: - -[https://open.rocket.chat/channel/gsod2019](https://open.rocket.chat/channel/gsod2019) - -For offline discussions, we have a discussion forum: - -[https://forums.rocket.chat/c/gsod/gsod2019](https://forums.rocket.chat/c/gsod/gsod2019) - -If you have questions and prefer email, please write us at: gsod+2019@rocket.chat - -#### Update on July 10, 2019 - -Application for technical writers has closed. During the past month, technical writers have continued to approach us regarding project details. Several mentors have engaged with their prospective writer\(s\) in assisting with proposal; and several writers have already started to contribute \(typos and small fixes\) to our docs. We have received a total of TWENTY THREE proposals \(one was a submission to the wrong org\), and have started the evaluation process with the project mentors. Of the technical writers who have reached out to us, we continue to engage with them and explore project details and interim contributions. We plan to finalize our own selections by July 18th and submit them prior to the final selections deadline. - -#### Update on May 28, 2019 - -Application for technical writers has opened. Please use this [form](https://forms.gle/Fxr2nW4TCiyESHbo8) to apply. Response during this exploration month has been generally positive. Several project teams are already engaging with interested writers to discuss open source work in general and details of their projects in particular. Some of the writers have already warmed up and started to contribute documentation fix PRs to our repositories. We have created a [call-to-action blog](https://rocket.chat/2019/05/21/rocket-chat-in-season-of-docs/) for our participation in the program. Mentors of projects with interested writers have started to assist them in creating their project proposals. - -## Project Ideas - -### Application Programming Interfaces \(APIs\) Documentation - -* **Mentors**: @martin.schoeler, @marcos.defendi -* **Description**: When developing applications, developers can use a rich set of Application Programming Interfaces \(APIs\) offered by Rocket.Chat to control every aspect of Rocket.Chat's operation. The documentation for this set of APIs mixes automated generation with hand-crafted usage descriptions, application scenarios, and coding examples. By September 2019, Rocket.Chat should have a "playground" that makes this documentation comes alive. Developers will be able to visit the API page in the "playground" and actually interact with the API directly through the documentation page. We already have a hand-crafted set of API docs that is maintained by our community but they tend to become obsolete as API changes. This project will replace the legacy documentation. You will work with two mentors specialized in API coding and documentation generation for this project. -* In this project, we will **not** be creating the playground or the docs generation systems, that will be handled by the Google Summer of Code student \([See the GSoC Project](google-season-of-docs-2019.md)\). Our API docs were written without the idea of a playground to test it. The objective of this project is to improve the structure and wording of the API docs to reflect the new playground system. -* **Related Material**: [Our existing REST API documentation](https://docs.rocket.chat/developer-guides/rest-api/) - -### Administration/Settings Documentation - -* **Mentors**: @martin.schoeler, @marcos.defendi -* **Description**: Given the huge amount of features and customizability of Rocket.Chat we currently lack documentation for a great part of our admin section. This project aims at the completion of the administration documentation, and it can be broken down in two parts, the configuration, and the admin tools part: -* **Configuration**: We need to complete our settings, fortunately, we already have the skeleton for that documentation on [This Pull Request](https://github.com/RocketChat/docs/pull/1095) but will also like a professional opinion on this structure, or help to improve it. We can _cherry-pick_ each file, so no need to work on all articles at once. -* **Admin Tools**: In the administration section we have a set of tools to help admins manage their server, things like user management, permission control, mailer, etc... -* **Related Material**: [Our existing Admin documentation](https://docs.rocket.chat/administrator-guides/) - -### Security documentation - -* **Mentors**: @markus.kirsch @rodrigok -* **Description**: We at Rocket.Chat take pride in taking extra efforts in providing a true open source and secure messaging solution. Transparency and trust are key features of our products. This is an exciting opportunity to work with our team of experts to create a comprehensive documentation of the security features of Rocket.Chat and create implementation guides for configuring Rocket.Chat to follow compliance regimes such as GDPR, HIPAA and NIST. The focus is on creating a new set of documentation based on the existing material and new features that since have been deployed. -* **Related Material**: [Rocket.Chat Security Overview](https://docs.rocket.chat/contributing/security/), [Rocket.Chat GDPR features](https://docs.rocket.chat/legal/gdpr) - -### Android Kotlin Software Development Kit \(Kotlin SDK\) documentation - -* **Mentors**: @filipe.brito, @rafael.kellermann -* **Description**: Modern Android mobile developers typically use Kotlin to create their mobile apps. To make developing Rocket.Chat integrated and compatible Android apps simpler, Rocket.Chat has created a comprehensive Software Development Kit \(SDK\) in Kotlin - which can be used on Kotlin or Java applications due to its interoperability. This project will involve detailed documentation for the SDK features, application scenarios, and APIs. This documentation does not exist yet, you will be working from scratch on this. You will be working closely with Rocket.Chat mobile leads, the developers who actually coded the SDK, during your term. -* **Related Material**: [The Kotlin SDK](https://github.com/RocketChat/Rocket.Chat.Kotlin.SDK) - -### The Bot Docs - -* **Mentors**: @reetp @sing.li -* **Description**: Working with core developers and the best open source community advocates in the Rocket.Chat community this is your opportunity to join us and dive into the exciting world of Chatbots and Machine Learning \(ML\). Bots are tomorrows technology, today. Automating and simplifying life for both user and provider, the demand for this technology and how to develop and deploy is huge. Rocket.Chat has integrated support for bots created via different programming languages and deployment methods to leverage the power of Rocket.Chat. This includes leading services and frameworks such as Dialogflow, Botpress, RASA, Botkit, hubot, and bbot. Documenting this in a clear and precise manner, from bot development and usage through to more advanced deployments, is a huge task and vital to Rocket.Chat and its users. We do already have scattered docs, in the form of developers READMEs, for the subprojects. A major part of this project is to better organize, unify, and improve them for end-user consumption. -* **Related Material**: BOT projects we have ongoing that needs to be unified in the new documentation. [alexa](https://github.com/RocketChat/alexa-rocketchat), [hubot](https://github.com/RocketChat/hubot-rocketchat), [chatops-gitsy](https://github.com/RocketChat/hubot-gitsy), [botpress](https://github.com/RocketChat/botpress-channel-rocketchat), [rasa](https://github.com/RocketChat/rasa-kick-starter), [bbot](http://bbot.chat/), [botkit](https://github.com/RocketChat/botkit-rocketchat-connector), [BOTswana](https://github.com/RocketChat/botswana-snap), and [Bot in Rocket.Chat overview plus roadmap](https://rocket.chat/bots) - -### Project leadership directions and roadmaps - -* **Mentors**: @gabriel.engel @marcelo.schmidt -* **Description**: Transparency is a cornerstone value of many open source projects. Rocket.Chat aims to support this value by offering a set of frequently updated project directional documents - including roadmaps, visionary, strategy and white papers. These will incorporate input from the wider community through interactive feedback as well as regular reviews. This documentation currently exists in bits and pieces, but is not in an easy to digest/understand format. A system will be implemented to present this content in various consumable formats. You will be working with Rocket.Chat's leadership team in formulating and authoring of these documents. -* **Related Material**: [Project roadmap on our Github repository](https://github.com/RocketChat/Rocket.Chat/projects/30), [Livechat component roadmap](https://github.com/orgs/RocketChat/projects/20) - -### Rocket.Chat Experimental \(React Native client\) documentation - -* **Mentors**: @diego.mello @renato.becker -* **Description**: React Native is one of the hottest frameworks nowadays. It allows developers to write fully native mobile applications using only Javascript and inherits all the ease of development features from the ReactJS community. At Rocket.Chat we have our own client implemented using RN and it's available on App Store and Google Play as Rocket.Chat Experimental. This project aims to build user documentation for all the features we have implemented so far. This documentation does not exist today. You will be working with our lead React Native developer during this project. -* **Related Material**: [Rocket.Chat Experimental](https://github.com/RocketChat/Rocket.Chat.ReactNative), [Rocket.Chat Experimental on App Store](https://itunes.apple.com/br/app/rocket-chat-experimental/id1272915472?mt=8), [Rocket.Chat Experimental on Google Play](https://play.google.com/store/apps/details?id=chat.rocket.reactnative) - -### Apps-Engine guides - -* **Mentors**: @d-gubert @rodrigok -* **Description**: The Apps-Engine is a framework that enables developers to integrate new functionality to Rocket.Chat without having to deep dive in the code base, and makes it possible to distribute your Rocket.Chat Apps to the wide community of users! And in order to improve the developer experience when making those apps, we need to improve our docs so they guide people smoothly through the available features. You will be working with Rocket.Chat Apps leads to extend the guides and docs that already exist, focusing on the DX of the community. -* **Related Material**: [Getting Started with Rocket.Chat Apps](https://docs.rocket.chat/guides/developer/mobile-apps), [Rocket.Chat Apps-Engine API Reference](https://rocketchat.github.io/Rocket.Chat.Apps-engine/) - -### JS SDK documentation - -* **Mentors**: @rodrigok, @ggazzo -* **Description**: The JS SDK is a library of code written in JS that offers an easier interface to communicate with a Rocket.Chat server providing APIs to be called from a JS code that executes commands on the server, like send a message, or retrieve data, like get the list of rooms, abstracting all the logic necessary to handle the communication with the server side. You will be working with Rocket.Chat backend and frontend leads to improve the documentation of all JS SDK methods, from the initial setup of how to get the library and install it to the list of methods, how to use them and the expected returned data. Current documentation is under the SDK repository README. -* **Related Material**: [JS SDK repository](https://github.com/RocketChat/Rocket.Chat.js.SDK), [Mention in BOT's Docs](https://docs.rocket.chat/bots/bots-architecture/#rocketchat-js-sdk), [NPM Package](https://www.npmjs.com/package/@rocket.chat/sdk), [Documentation](https://github.com/RocketChat/Rocket.Chat.js.SDK/blob/master/README.md) - diff --git a/contributors/google-season-of-docs/google-season-of-docs-2021.md b/contributors/google-season-of-docs/google-season-of-docs-2021.md deleted file mode 100644 index 206d015795..0000000000 --- a/contributors/google-season-of-docs/google-season-of-docs-2021.md +++ /dev/null @@ -1,91 +0,0 @@ -# Google Season of Docs 2021 - -[![Google Season of Docs 2019](https://github.com/Sing-Li/bbug/raw/master/images/gsodlogo.png)](https://developers.google.com/season-of-docs/) - -[Season of Docs](https://g.co/seasonofdocs) is Google's annual program that fosters collaboration between open source projects and technical writers. - -Season of Docs is a unique program that pairs technical writers with open source mentors to introduce the technical writer to an open source community and provide guidance while the writer works on a real-world open source project. The technical writer, in turn, provides documentation expertise to the open source organization. - -Projects can cover a wide range of fields including Cloud computing, operating systems, graphics, medicine, programming languages, robotics, science, security and many more. Season of Docs is not a recruiting program or an internship but it does provide invaluable experience and looks great on a resume! - - - -## How to apply - -#### Update April 16, 2021 - -Rocket.Chat has applied, but has not been selected for the 2021 Google Season of Docs program. We intend to try again in 2022, and like to thank Google for the kind consideration this year. - -### Project Proposal - -## Developer Guides and SDK Docs Rewrite - -**Mentors:** [@reetp](https://open.rocket.chat/direct/reetp) [ @rodrigo.nascimento](https://open.rocket.chat/direct/rodrigo.nascimento) [@ggazzo](https://open.rocket.chat/direct/guilherme.gazzo) - -**Project description:** - -Working with core developers and the community team at Rocket.Chat this is an opportunity to help other developers get to the code faster, and start working on code and contributing to Rocket.Chat more easily. - -Rocket.Chat has different methods and SDKs that can be difficult to navigate for new developers and it can take a lot of time to get them up to a point where they can contribute code. - -Documentation for setting up development environments is scattered and fragmented and needs bringing together in an easy to read and understand format. - -This will include methods for setting up libraries such as the JS SDK, core server code, and mobile application development code - -In particular, our JS SDK is a library of code written in JS that offers an easier interface to communicate with a Rocket.Chat server providing APIs to be called from a JS code that executes commands on the server, like send a message, or retrieve data, like get the list of rooms, abstracting all the logic necessary to handle the communication with the server side. - -The writer will be working with Rocket.Chat backend and frontend leads to improve the documentation of all JS SDK methods, from the initial setup of how to get the library and install it to the list of methods, how to use them and the expected returned data. - -This is an exciting opportunity to work on a cutting edge project with a dynamic group of experienced developers and team members. - -Current documentation is under the[ JS SDK repository README](https://github.com/RocketChat/Rocket.Chat.js.SDK) - -**Related Material**: [Existing developers guides](https://docs.rocket.chat/guides/developer), [JS SDK repository](https://github.com/RocketChat/Rocket.Chat.js.SDK) - -### Measuring Success - -As with many open source projects, Rocket.Chat attracts a large number of young and often inexperienced developers. - -Rocket.Chat has an enormous and complex code base. New contributors often feel frustrated at being unable to get a test setup running quickly and can lose interest and look for an easier project. - -Currently the documentation on getting them started with a development environment is fragmented. Developers need to spend time on basic setup rather than coding, and it is frustrating for new users.. - -We believe that better written documentation will reduce the time existing developers need to spend on helping new developers with development setup which can then be spent on actual coding issues. - -Rocket.Chat currently hosts documentation with gitbook and analytics in the form of Pageviews and Ratings are available. As we intend to create entirely new content pulling information from a variety of sources there will be no direct comparison of usages. However, we can check an overall views count of existing page content and then compare this with the new pages. - -We will use these metrics to measure the success of this project: - -* pageviews of the rewritten docs -* percentage of rating above 4 -* total count of ratings - -We will develop a benchmark of the above metrics against both: - -* the documentation before rewrite -* other Rocket.Chat documentation pages \(admin guides, user guides, and so on\) - -Gitbook also has full text indexed searches and we will analyze search terms and results to establish additional metrics of "interest" in the new documentation. We expect to see significantly increased interest in the new documentation as we push to widen our community. - -In addition, we believe we will see a decrease in simple developer support requests, more pull requests and code contributions, and a higher retention of new developers who want to try developing with Rocket.Chat, especially for the GSoC 2022 season. We will measure and track these metrics as indicators of the project's success: - -* \(normalized\) developer support requests -* pull requests activities -* retention of developers for the GSoC 2022 season - -## Project Budget Details - -### Budget Items - -We anticipate the budget for this project to be USD $12,000 comprising of: - -* Technical writer to re-structure and re-write the technical guides, and to write the JS SDK documentation $8000 -* Stipend for 3 x Volunteers to help in proof reading and production of graphics and other assets $1500 -* Project stickers and T-Shirts x 10 $200 -* Contribution to downline non-profit for assistance with design and volunteer search $300 -* Organization's participation in administration, mentorship of doc systems and tech project, and reviewing of content $2000 - - - - - diff --git a/contributors/google-summer-of-code/google-summer-of-code-2017.md b/contributors/google-summer-of-code/google-summer-of-code-2017.md deleted file mode 100644 index b8bdf88f4d..0000000000 --- a/contributors/google-summer-of-code/google-summer-of-code-2017.md +++ /dev/null @@ -1,182 +0,0 @@ -# Google Summer of Code 2017 - -[![Google Summer of Code 2017](https://github.com/Sing-Li/bbug/raw/master/images/gsoclogo.jpg)](https://developers.google.com/open-source/gsoc/) - -## How to apply - -For general information, please visit our community server Google Summer of Code 2017 discussion group: [https://open.rocket.chat/channel/gsoc17](https://open.rocket.chat/channel/gsoc17) - -Final proposal submission is now officially closed. - -Our sincere thanks goes to every student who had worked hard in creating one of the SIXTY EIGHT proposals we have received across all projects. We are totally surprised and flattered as a first year GSoC participating organization. - -The official list of accepted students and projects is now available directly from Google: - -[https://summerofcode.withgoogle.com/organizations/6368590472151040/](https://summerofcode.withgoogle.com/organizations/6368590472151040/) - -Out of the SIXTY EIGHT proposals we received, we have painstakingly selected a short list of NINE outstanding ones. We have personally met \(video conferenced\) with every one of the students behind these NINE proposals during the last few weeks. - -Google has incredibly sponsored FOUR out of the NINE students \(first year organization typically gets 1 or 2 students/projects only\). Thank you, Google GSoC 2017 ! - -The FOUR Google sponsored students and projects for GSoC 2017 are: - -| Student | Project | Mentor\(s\) | -| :--- | :--- | :--- | -| Naman Gupta | To Create a PWA Client | Karl Prieb, Guilherme Gazzo | -| Lucas Woo | Rocket.Chat iOS SDK | Rafael Kellermann Streit, Rodrigo Nascimento | -| Pradeep Kumar | Integrated Personal Email Gateway | Rodrigo Nascimento, Diego Sampaio | -| Mrinal Dhar | E2E encryption with Signal protocol | Marcelo Schmidt, Marius | - -Team bonding and familiarization activities have started between mentors and the selected students. - -We have contacted the FIVE other students to discuss potential Rocket.Chat sponsorships. One student happily reported that he has already been selected by another GSoC 2017 mentoring organization. Another did not reply to any of our offers and queries before the deadline. THREE other students have accepted Rocket.Chat sponsorship and are currently working diligently with their mentors. - -The THREE Rocket.Chat sponsored students and projects for 2017 are: - -| Student | Project | Mentor\(s\) | -| :--- | :--- | :--- | -| Karan Batra | Automatic Channels | Mitar, Rodrigo Nascimento | -| Sachin Shinde | Rocket.Chat Android SDK | Rafael Kellermann Streit | -| Manish Kakoti | Federation Server | Gabriel Engel, Sing Li, Matthew Hodgson | - -Please keep monitoring this page for the latest Rocket.Chat GSoC 2017 updates. - -#### Coding has started - -June is finally upon us. All of our GSoC students who have had prior apprenticeship or other engagements are now free of their obligations, and have started to code for Rocket.Chat full time. The _commmunity bonding_ period has come and gone smoothly, with the mingling between our students and the core team on the 24 x 7 community chat server, on GitHub, via email, or at our weekly scheduled team video-conference. Many of our students have also made friends with our extended community - helping them and exchanging ideas for their projects. - -In fact, due to their overwhelming enthusiasm, most of our GSoC students have started coding even before the beginning of June. Here are some of the most recent contributions \(of many!\) to Rocket.Chat by our new team of GSoC recruits: - -Manish Kakoti: [https://github.com/RocketChat/Rocket.Chat.Federation/pull/5](https://github.com/RocketChat/Rocket.Chat.Federation/pull/5) - -Karan Batra: [https://github.com/RocketChat/Rocket.Chat/pull/7137](https://github.com/RocketChat/Rocket.Chat/pull/7137) - -Lucas Woo: [https://github.com/RocketChat/Rocket.Chat.iOS/pull/438](https://github.com/RocketChat/Rocket.Chat.iOS/pull/438) - -Naman Gupta: [https://github.com/RocketChat/Rocket.Chat.PWA/pull/12](https://github.com/RocketChat/Rocket.Chat.PWA/pull/12) - -Pradeep Kumar: [https://github.com/RocketChat/Rocket.Chat/pull/7088](https://github.com/RocketChat/Rocket.Chat/pull/7088) - -Congratulations to the new team members, and keep up the great work! We are all looking forward to the first evaluation milestone at the end of June. - -#### Creating open source citizens - -July is in full swing. First evaluation has completed and we're working towards our end-of-July milestone. - -We are happy to report that all _seven_ of our students have passed their first evaluation. Most are making very good pace on their projects, with some close to completion and in planning phase for extensions. We are also keeping a keen eye out on potential candidate\(s\) for full-time hire at end of their term. - -The following are the Rocket.Chat projects that our new team members are working on. Contribution and participation are welcomed immediately from the greater Rocket.Chat community: - -* [iOS SDK](https://github.com/RocketChat/Rocket.Chat.Kotlin.SDK) -* [Android SDK](https://github.com/RocketChat/Rocket.Chat.Android.SDK) -* [Java SDK](https://github.com/RocketChat/Rocket.Chat.Java.SDK) -* [PWA](https://github.com/RocketChat/Rocket.Chat.PWA) -* [Federation](https://github.com/RocketChat/Rocket.Chat.Federation/) - -After the evaluation, we have made sure that they all have received the first stipend payment - especially the students under Rocket.Chat's sponsorship. - -Working with a publicity company, we have been creating open source "hero stories" profiling every one of our new summer-term team members. Many of them have already been featured on our Blog: - -* [Mrinal Dhar](https://rocket.chat/2017/07/02/mrinal-dhar-developing-end-to-end-encryption-with-signal-protocol/) -* [Manish Kakoti](https://rocket.chat/2017/07/02/manish-kakoti-extending-communications-beyond-teams-with-rocketchat-federation/) -* [Pradeep Kumar](https://rocket.chat/2017/07/02/pradeep-kumar-bridging-the-email-and-rocketchat-divide-with-personal-email-gateway) -* [Sachin Shinde](https://rocket.chat/2017/07/05/sachin-shinde-add-rocketchat-to-any-app-with-mobile-sdk) -* [Naman Gupta](https://rocket.chat/2017/07/06/naman-gupta-smaller-faster-and-more-bandwidthefficient-client-with-pwa) - -In July, along with continued technical progress, we are focusing to help the student in development of their open source citizenship skills - something hopefully useful beyond their GSoC terms with us. - -This will include activities in: - -* promoting their open source project -* build and nurture a community around their project -* interaction with internal and external open source team members - -Over the next two months, guided by their mentor\(s\) - each student will be giving a presentation on their project to the larger Rocket.Chat team. - -We continue to be extremely optimistic going into the critical mid-term evaluation in late July. - -## Project Ideas - -### Federation of Rocket.Chat Servers - -* **Mentors:** Matthew Hodgson \([@arathorn](https://github.com/ara4n)\) Rodrigo Nascimento \([@rodrigo.nascimento](https://github.com/rodrigok)\) -* **Description:** Tens of thousands of Rocket.Chat servers are running at this very minute on the Internet. There is currently no way for users/bots/services of one instance to address or communicate with those from another. This project's mission is to make it possible. You will be working and exchanging ideas with the very best in the field - experts from Matrix.org and Rocket.Chat. -* **Desirable Skills:** Familiarity with JavaScript development. Demonstrated interest and/or passion on networking and federation protocols research and evolution. -* **Goal/Deliverable:** The foundation for all Rocket.Chat users/bots/services to optionally communicate with one another, across all connected instances. - -### Create a Progressive Web App client - -* **Mentors:** Karl Prieb \([@karl.prieb](https://github.com/karlprieb)\) -* **Description:** Create a new PWA client for Rocket.Chat using [Angular](https://angular.io/) framework, WebSocket and mobile-first approach. -* **Desirable Skills:** Some Javascript coding skills would be required to complete this task. -* **Goal/Deliverable:** A PWA client with basic chat functionality like channels and direct messages list, users status, channel messages, user preferences, etc. - -### Improved End-to-End Encryption Implementation \(currently feature-named OTR\) - -* **Mentors:** Marcelo Schmidt \([@marcelo.schmidt](https://github.com/marceloschmidt)\) Mitar \([@mitar](https://github.com/mitar)\) -* **Description:** Taking and improving our end-to-end encryption implementation. Perhaps replace with more modern protocols, such as [Signal](https://en.wikipedia.org/wiki/Signal_Protocol). -* **Desirable Skills:** Some Javascript coding skills and familiarity with cryptography. -* **Goal/Deliverable:** The ability to have end-to-end encrypted conversations between users. There are various features possible: forward secrecy, online and offline use \(do users have to be online at the same time for encryption to be possible\), do we store messages on the server, pair or group conversations, encrypted file transfer, etc. - -### File uploads and exchanges with OwnCloud - -* **Mentors:** Diego Sampaio \([@diego.sampaio](https://github.com/sampaiodiego)\) Thomas Müller \([@thomas.muller](https://github.com/DeepDiver1975)\) deepdiver1975@gmail.com -* **Description:** When you upload a file today in Rocket.Chat, your server may be configured to store it on AWS S3, Google's object storage, MongoDB's GridFS, or local filesystem. This project adds OwnCloud as an official target destination. In addition, since every user of Rocket.Chat may have her/his own OwnCloud server - some way to support file exchanges with those servers will also be interesting. You will be working with top engineers who actually designed and coded these features, from OwnCloud and Rocket.Chat, on this project. -* **Desirable Skills:** Familiarity with PHP and JavaScript development. Familiarity with \(and already a user of\) Rocket.Chat and OwnCloud definitely a plus. -* **Goal/Deliverable:** Support integrations between OwnCloud and Rocket.Chat as if it was designed-in since the very first day. - -### Use of Chromecast as Presentation Room - -* **Mentors:** Bradley Hilton \([@graywolf336](https://github.com/graywolf336)\) -* **Description:** Use Chromecast as presentation output which shows a chat room and will join any Jitsi / WebRTC meetings that are started in it, this way meetings can be started inside Rocket.Chat and the Chromecast can be on a TV/Monitor inside a conference room. -* **Desirable Skills:** Some Javascript coding skills will be required to complete this task. Students with WebRTC knowledge and/or who have already produced Chromecast apps are on a good start. A Chromecast is required for this task. -* **Goal/Deliverable:** Being able to pair a room with Chromecast, displaying it's messages. Chromecast app needs to be able to automatically join a Jitsi/WebRTC video call. - -### Integrated Personal Email Gateway - -* **Mentors:** Rodrigo Nascimento \([@rodrigo.nascimento](https://github.com/rodrigok)\) -* **Description:** Add feature to allow automated reply when offline, and forwarding of incoming messages via email. -* **Desirable Skills:** Some Javascript coding skills will be required to complete this task. An understanding of industry standard SMTP and POP protocols, and configuration of standard email servers will be required. -* **Goal/Deliverable:** Ability for each user to set an away message, and receive any offline messages - in batches per interval, via through email account. - -### Create an SDK for Mobile Apps to include a chat inside other apps - -* **Mentors:** Rafeal Kellermann \([@rafaelks](https://github.com/rafaelks)\) -* **Description:** Create an SDK \(for iOS and/or Android\) to embed in any app that wants to have a chat inside it. It could be useful for support and also for chat in enterprise apps. One example is an app that’s used by all sellers from a company to be able to communicate with each other using Rocket.Chat. Another example is something very similar to Intercom \([https://www.intercom.com/mobile](https://www.intercom.com/mobile)\) -* **Desirable Skills:** Students will be required to code in either Java for Android SDK or Swift for the iOS SDK. Students will also need to understand how Rocket.Chat communicates over websockets. -* **Goal/Deliverable:** To have an SDK that allows App Developers to embed a chat system inside their own apps using Rocket.Chat servers to deliver messages. - -### Calendar Integration for Meeting Scheduling - -* **Mentors:** Bradley Hilton \([@graywolf336](https://github.com/graywolf336)\) -* **Description:** taking and embedding a calendar inside rocket.chat, being standalone yet integrating with all the calendars out there so people can schedule meetings and be reminded of upcoming meetings that are inside Rocket.Chat -* **Desirable Skills:** Some javascript coding skills -* **Goal/Deliverable:** The ability to schedule a meeting in Rocket.Chat - -### Rocket.Chat on Mesh Network - -* **Mentors:** Mitar \([@mitar](https://github.com/mitar)\) Gabriel Engel \([@gabriel.engel](https://github.com/engelgabriel)\) -* **Description:** Modify the Rocket.Chat to work on mesh networks. There are two basic types of mesh networks which would be interesting to cover: - * A network of mostly always online off-the-shelf WiFi equipment which forms a network where all network nodes can connect directly to each other \(no NAT\). Here it would be interesting to port Rocket.Chat so that it could run served as a static resource from these limited devices \(which are often not powerful enough to run MongoDB and node.js, which Rocket.Chat otherwise uses for server-side part\). Rocket.Chat should be bundled into a static resource, served over HTTP to clients, which could then use something like WebRTC to connect to each other and communicate with each other. A very thin server-side program might be needed as well, to help with WebRTC connections for example, or discovery of other nodes to connect to. A distributed database like [Scuttlebot](http://scuttlebot.io/) could be used as well. - * A [delay tolerant mesh network](https://en.wikipedia.org/wiki/Delay-tolerant_networking) where devices do not have regular connectivity between each other, and are often even moving around. Such networks often do not even use TCP/IP. On the other hand, devices often have much more storage space and power, when they are available. The idea is to change Rocket.Chat so that it can operate in such environment as well. -* **Desirable Skills:** Javascript, WebRTC, networking, OpenWrt, and programming for embedded devices \(C, Lua, bash\) -* **Goal/Deliverable:** An OpenWrt package providing a modified Rocket.Chat to work in a mesh network. - -### Automatic Channels - -* **Mentors:** Marcelo Schmidt \([@marcelo.schmidt](https://github.com/marceloschmidt)\) Mitar \([@mitar](https://github.com/mitar)\) -* **Description:** Add a feature of creation of automatic channels to Rocket.Chat and automatic joining of users to those channels. The idea is to extend Rocket.Chat with a plugin system where plugins could classify users into channels. Then such channel would be automatically created, if it does not yet exist, and user added to it. This should also work reactively so that plugin can remove the user from a channel, and remove such channels. Use cases here are various. For example, a plugin could detect user's language and automatically add them to a channel for that language. Or, plugin could resolve user's IP into their country and add them to a channel for this country. If user changes the IP and moves to another country, they should be automatically moved to a new channel. In combination with mesh networking support, users could be automatically put into channels local to the node to which they are connected. -* **Desirable Skills:** Some javascript coding skills -* **Goal/Deliverable:** Modification to Rocket.Chat with a plugin system for automatic channels and joining with two example plugins: based on browser specified language, and country based on GeoIP of the user. - -### Enable multi-instance High Availabilty \(HA\) configuration with snaps - -* **Mentors:** Aaron Ogle \([@geekgonecrazy](https://github.com/geekgonecrazy)\) -* **Description:** Modify the Rocket.Chat snap to enable mongodb replica's and multi instance Rocket.Chat -* **Desirable Skills:** Familiarity with Linux, and bash scripting. -* **Goal/Deliverable:** A snap that can be used in a multi-instance HA setup. - -## Timeline - -{% embed url="https://developers.google.com/open-source/gsoc/timeline" %} - diff --git a/contributors/google-summer-of-code/google-summer-of-code-2018.md b/contributors/google-summer-of-code/google-summer-of-code-2018.md deleted file mode 100644 index e8286d7514..0000000000 --- a/contributors/google-summer-of-code/google-summer-of-code-2018.md +++ /dev/null @@ -1,272 +0,0 @@ ---- -permalink: /contributing/google-summer-of-code-2018/ -redirect_from: - - /contributing/google-summer-of-code/ ---- - -# Google Summer of Code 2018 - -[![Google Summer of Code 2018](https://github.com/Sing-Li/bbug/raw/master/images/gsoclogo.jpg)](https://summerofcode.withgoogle.com/) - -## How to apply - -Applications for the GSoC 2018 season have now closed. - -UPDATE September 8, 2018 - -The final list of successful 2018 GSoC Rocket.Chat projects and students/mentors is now [officially](https://summerofcode.withgoogle.com/organizations/6355544806260736/) available. - -Our own final tabulation of the status for GSoC projects is as follows: - -| Status | Student | Project | Mentors | -| :--- | :--- | :--- | :--- | -| PASS | Mikael Mello | Improve the integration of bots on Rocket.Chat | Tim Kinnane, Diego Dorgam | -| PASS | Aniket Singh | Android and wear app | Fiipe Brito, Lucio Maciel | -| PASS | Jose Renan | Rocket.Chat SDK for Javascript Clients | Guilherme Gazzo, Diego Sampaio, Renato Becker | -| PASS | Semih Serhat Karakaya | Nextcloud as Storage and User File Provider | Guilherme Gazzo | -| PASS | Karan Bedi | Rocket.Chat voice recognition APIs and built-in Speech2Text Engine integration | Pierre Lehnen, Rodrigo Nascimento | -| PASS | Nikhil Kaushik | Integration with Google Drive and Dropbox | Marcelo Schmidt, Martin Schoeler | -| PASS | Samar Sunkaria | Support for theming the Rocket.Chat iOS app | Matheus Cardoso, Filipe Alvarenga | -| WITHDREW | De Sheng Chuan | Data integrity and consistency | Diego Sampaio, Rodrigo Nascimento, Sing Li | - -UPDATE August 20, 2018 This final term has been a term full of changes. One good student - who had been doing great work up to this third term- has had health issues, been hospitalized, and is unable to complete his project. Upon advice from GSoC admin, he withdrew from the project and may resume outside of GSoC upon his recovery. The "turn around projects" in the second term continued to show major improvement this term - due mainly to the hard work of the affected students. Mentors and students are busy this term wrapping up their work, preparing for final GSoC evaluation requirements, plus scheduling presentations of their completed work to the larger Rocket.Chat team. Many of the presentations are recorded and are available [here](https://youtu.be/pnz2LCtCeMM), [here](https://www.youtube.com/watch?v=nlsTyJZbKSM) and [here](https://www.youtube.com/watch?v=kuDlwnlX67k). As a final result for 2018, one out of our eight GSoC students has withdrawn, and mentors gave final passes to the other seven GSoC projects. Of the four independently funded projects, three passed and one failed \(due to the student's disappearance\). We congratulate the students and mentors on their achievements and sincerely hope all students now have enough of a taste of open source \(and Rocket.Chat in particular\) to continue on their life-long open source contribution as they embark on their next phase of personal development. We will continue to work through the backlog of GSoC project stories on the blog this term. - -UPDATE July 15, 2018 Mentors and students continued to work towards their objectives during this second evaluation period. Due to internal organizational staff changes and other organization operational factors, three problematic projects were identified during this period. Extensive administrative intervention and turn-around was necessary to "salvage" these projects. Thankfully, the GSoC students worked with us every step of the way as we reassign mentors and realign mutually agreed project scopes. As a result, the \(new in some cases\) project mentors have decided to pass all enrolled students - both GSoC and independently funded projects for this term. Internally, the projects' blog post series is lagging significantly behind, we are working to catch up as soon as possible. - -UPDATE June 15, 2018 The first evaluation period has come and gone. Our students have been coding feverishly over the past months and many of them have already demonstrated their work to their mentors and teams. We are proud to report that during this evaluation, our mentors have decided to pass all eight of the GSoC students. Our Rocket.Chat-sponsored projects also reported all passes for the three students. We have started to create blog stories around the projects featuring our students - the first story should be available in the next week or two. Due to some internal project logistical problems, one of the students has agreed, together with his mentors and team to switch topic from the second term onwards - to another one of his accepted final proposals - our list below has been amended to reflect the change. We have, through our working partner, been able to fund an additional \(to the 11 that we already have\) highly capable but non-GSoC selected student to work on a Rocket.Chat-related topic. - -UPDATE April 25, 2018, AMENDED June 15, 2018 The list of [official GSoC 2018 accepted students and projects](https://summerofcode.withgoogle.com/organizations/6355544806260736/) is now available. First, we would like to sincerely thank every student who has submitted a proposal and many who had worked on PRs and assisted in our open source community - please continue the excellent work. Of the 93 proposals we received, there were many high quality ones. We have also interacted with many of the students in the prior month. The decision-making was difficult and mentors were competitive this year. Ultimately, EIGHT of the top students/proposals this year are accepted for GSoC 2018 \(thank you, Google!\): - -| Student | Project | Mentors | -| :--- | :--- | :--- | -| Mikael Mello | Improve the integration of bots on Rocket.Chat | Tim Kinnane, Diego Dorgam, John Szaszvari | -| Aniket Singh | Android and wear app | Fiipe Brito, Lucio Maciel | -| Jose Renan | Rocket.Chat SDK for Javascript Clients | Karl Prieb | -| Semih Serhat Karakaya | Nextcloud as Storage and User File Provider | Guilherme Gazzo, Bjoern Schiessle, John Szaszvari | -| Karan Bedi | Rocket.Chat voice recognition APIs and built-in Speech2Text Engine integration | Gabriel Delavald, Pierre Lehnen | -| Nikhil Kaushik | Integration with Google Drive and Dropbox | Marcelo Schmidt, Martin Schoeler | -| Samar Sunkaria | Support for theming the Rocket.Chat iOS app | Matheus Cardoso, Filipe Alvarenga | -| De Sheng Chuan | Data integrity and consistency | Diego Sampaio, Rodrigo Nascimento, Sing Li | - -In addition, due to the sheer number of high quality entrants, Rocket.Chat has decided to sponsor THREE additional top students for this summer: - -| Student | Project | Mentors | -| :--- | :--- | :--- | -| Pradeep Kumar | Livechat Reports and Analytics | Renato Becker | -| Nitesh Saxena | Intgration with IPFS | Sing Li, Ankit Bhatia | -| Arthur Temporim | Enhanced BOT Adapters | Diego Dorgam, John Szaszvari | - -All of the eleven students have been contacted by mentors and have started the community bonding period. - -UPDATE April 2, 2018 - 2018 is an incredible GSoC year for us, we have received a total of NINETY THREE proposals from students studying at every corner of the globe - Brazil, Turkey, USA, Armenia, India, China, Singapore, Hong Kong and more. Thank you, GSoC students, for the overwhelming interest on our project. Proposal topics covered almost all of the suggestions on our idea list - and even a few original ones. Our TWENTY FIVE Rocket.Chat core, guest, and community mentors are hard-at-work right now going through every one of the proposals, and will be contacting students for a video chat prior to deciding on proposal selection and slot assignments. Please keep in touch with us and continue to contribute to the Rocket.Chat project during this time. - -UPDATE March 24, 2018 - Students PLEASE NOTE that your final proposal is due on March 27th. It must be in PDF format and submitted via the official GSoC Dashboard. Your Rocket.Chat Core and Guest Industry mentors are looking forward to receive and review your final proposals. - -UPDATE March 12, 2018 - Proposal submission for GSoC 2018 has started! Interested students should visit the [GSoC 2018 site](https://summerofcode.withgoogle.com/) to apply and submit their proposals. See the _Project Ideas_ section below for some interesting ideas. - -You can email the mentor\(s\) directly for discussion and further information. You can also find them, most of the time, on our [community server](https://open.rocket.chat/) for real-time chat. Many of the mentors are fluent in both Portuguese and English. - -For current information on the 2018 program and general discussions, please see GSoC 2018 category on our discussion forums: - -[https://forums.rocket.chat/c/gsoc](https://forums.rocket.chat/c/gsoc) - -For some real-time help on next steps, please visit our community server Google Summer of Code 2018 discussion channel: - -[https://open.rocket.chat/channel/gsoc18](https://open.rocket.chat/channel/gsoc18) - -If you have ideas and proposals that are not on our idea list, or if a mentor is not available, please email to: - -gsoc+2018@rocket.chat - -Interested students are also encouraged to interact with our contributor community on GitHub: - -[https://github.com/RocketChat/Rocket.Chat](https://github.com/RocketChat/Rocket.Chat) - -## Project Ideas - -### Global Search - -* **Mentors:** @rodrigo.nascimento -* **Description:** Add global search to Rocket.Chat, allowing users to search across messages, rooms, files, users, etc in a single and easy to use interface. Like a macOS Spotlight search. -* **Desirable Skills:** Familiarity with JavaScript development, MongoDB or other search engine. - -### Users Directory integration plus custom fields editor and search - -* **Mentors:** @marcelo.schmidt -* **Description:** Rocket.Chat already allows for users to add custom fields through a setting that accepts a JSON. We would like to create an interface to manage these custom fields. Each custom field must be composed of label, type \(one of predefined: string, number, picklist, money, etc.\), and an option to determine if this field must be displayed on registration or not. On Users Directory, users must be able to select multiple records from the results and do one of the possible actions: add to existing channel or group and create new channel or group; if only one record is selected, it should also be possible to start a direct message with the selected user. -* **Desirable Skills:** Familiarity with JavaScript development. - -### Storage integration with Google Drive and/or Dropbox - -* **Mentors:** @marcelo.schmidt, @martin.schoeler \(co-mentor\) -* **Description:** \(1\) Enabling Rocket.Chat users to use Google Drive and/or Dropbox for storage of their uploads. \(2\) Within Rocket.Chat, allow access to Google Drive or Dropbox contents. -* **Desirable Skills:** Familiarity with JavaScript development, and with Google Drive and/or Dropbox APIs. - -### Nextcloud Integration - -* **Mentors:** @guilherme.gazzo, @bjoern.schiessle \(Nextcloud Guest Mentor\) -* **Description:** You will create a cross-platform GUI file picker interface for Nextcloud, integrated within Rocket.Chat, allowing any user to select files from a Nextcloud server \(or hosted Nextcloud account\) for utilization \(such as file-sharing upload\) within Rocket.Chat. -* **Desirable Skills:** You should already be familiar with the operation of Nextcloud and Rocket.Chat and ideally have experience programming with Nextcloud’s API. Experience working with JavaScript GUI an fullstack frameworks such as Angular and/or React is a big plus. You will get a chance to work with the creators and architects of both Nextcloud and Rocket.Chat. Upon completion of this project, you will be able to claim experience creating a modern open source software component that will be used by hundreds of thousands of Rocket.Chat and Nextcloud users. - -### NextCloud as a Storage Provider - -* **Mentors:** @guilherme.gazzo, @bjoern.schiessle \(Nextcloud Guest Mentor\) -* **Description:** \(1\) Enabling Rocket.Chat server adminstrator to use an NextCloud instance for storage of upload. \(2\) Within Rocket.Chat client user interface, allow access to the contents on a user's NextCloud instance -* **Desirable Skills:** Familiarity with both Rocket.Chat and NextCloud development. - -### Snap Crafting - -* **Mentors:** @aaron.ogle, @sing.li -* **Description:** Snap is one of the easiest and most popular method to install Rocket.Chat on Linux distributions. You can have a Rocket.Chat server up and running with database and SSL proxy fully configured with one simple command. The current snap installation build script, used by hundreds of thousands of community users, is in need of updating and enhancements. You will be crafting updates and new features for our snaps for this project. -* **Desirable Skills:** Interest in system configuration, dev ops, system operations, and operating systems. Should be competent in shell scripting on Linux and one or more programming languages. Experience with docker or snapcraft a big plus. - -### Scaling to the edge of dreams - -* **Mentors:** @diego.sampaio -* **Description:** Assist Rocket.Chat’s scalability engineers to scale Rocket.Chat to the next level. From tens of thousands of active connections, to hundreds of thousands to millions, to world-scale. -* **Desirable Skills:** We are looking for an enthusiastic undergraduate, planning to enroll or already enrolled for masters or PhD work in a cluster computing or scalability discipline to join us for an exciting summer of hands-on practical fun. Working alongside our scalability expert – you will devise and test out various performance and scalability enhancements for Rocket.Chat’s deployment configurations. You will be able to practice everything you have learnt so far in your under-graduate study, pushes beyond their limits, with a real production clustered server project – having your work impacting thousands of global users – all within the span of a single summer. - -### LiveChat Reports and Analytics - -* **Mentors:** @renato.becker -* **Description:** Add a panel to have analytical information about interactions in LiveChat. -* **Desirable Skills:** Familiarity with JavaScript development. - -### Uniting “One Rocket.Chat” with Federation - -* **Mentors:** @gabriel.engel, @matthew.hodgson \(Matrix.org Guest Mentor\), and @sing.li -* **Description:** Help Rocket.Chat to invent and implement networked federation for the next generation of collaboration platforms. -* **Desirable Skills:** Suitable for an ambitious undergraduate planning to enroll or already enrolled for masters or PhD work in a cluster computing, networking or distributed systems discipline in computer science or engineering to join us for an exciting summer of incredible brain crushing yet hands-on fun. Working alongside our federation team – you will help design and test out your hypothesis against a next generation federation mechanism optimized specifically for Rocket.Chat servers – uniting them globally across all geo-political boundaries to dynamically form “One Rocket.Chat”. This work will leverage all existing current research in this domain. You must already be familiar with the work of giants – such as matrix.org – and be ready to break all conventions to improve and innovate upon existing paradigms. You will be rewarded with production working experience on this bleeding-edge discipline, in a world-leading open source team environment with a like-minded team. An incredible and unique opportunity in 2018. - -### Built-in and server themes for iOS - -* **Mentors:** @matheus.cardoso -* **Project repository:** [https://github.com/RocketChat/Rocket.Chat.iOS](https://github.com/RocketChat/Rocket.Chat.iOS) -* **Description:** Be part of our iOS team this summer to push Rocket.Chat's native iOS App to the next level! You will - with our help - build the foundation for customizable user experience, support built-in themes for users to choose from and server-specific themes, allowing server owners to manifest the colors and feel of their communities. You will have the chance to exchange experience with our engineers and designers, plus your work will have a great impact on the experience of thousands of users! -* **Desirable Skills:** We are looking for an undergraduate student who is familiar with team work, developing iOS Apps using UIKit, Auto Layout and Swift, as well as writing maintainable code with Unit Tests. - -### Apple Watch & Siri Support - -* **Mentors:** @rafael.kellermann -* **Project repository:** [https://github.com/RocketChat/Rocket.Chat.iOS](https://github.com/RocketChat/Rocket.Chat.iOS) -* **Description:** Create an Apple Watch application that replicates the most basic features we have in our iOS mobile client, such like viewing the chat rooms and reading the messages. Let user ask Siri to read latest messages, send messages or respond to a message. -* **Desirable Skills:** Familiarity with WatchKit development on WatchOS & SiriKit. Ability to work in large multi-disciplinary teams. - -### PDF/File preview - -* **Mentors:** @rodrigo.nascimento -* **Description:** Add small previews for non image files improving the UI/UX allowing users to see a preview of the content before click to open the file, it includes PDF, Word Documents and similar, Excel Documents and similar, PowerPoint and similar, Text files, Sketch, Photoshop, etc. -* **Desirable Skills:** Familiarity with JavaScript development. Experience hacking documents conversion and/or rendering libraries is a big plus. - -### Draw \(Android\) - -* **Mentors:** @rafael.kellermann -* **Project repository:** [https://github.com/RocketChat/Rocket.Chat.Android](https://github.com/RocketChat/Rocket.Chat.Android) -* **Description:** Allow user to draw something using our Android native app and send to Rocket.Chat channel. The draw would have different colors and "brush" options \(pen, brush, pencil, etc\). User will also be able to draw on top of an image selected from library or just shot. -* **Desirable Skills:** Familiarity with Java or Kotlin development on Android. Previous experience with working on the Android App development and using open source libraries would be helpful. Ability to work in large multi-disciplinary teams. - -### Android Wear App - -* **Mentors:** @filipe.brito -* **Project repository:** [https://github.com/RocketChat/Rocket.Chat.Android](https://github.com/RocketChat/Rocket.Chat.Android) -* **Description:** Create an Android Wear application that replicates the most basic features we have in our Android app, such like viewing the chat rooms and reading the messages. -* **Desirable Skills:** Familiarity with Kotlin development on Android. Ability to work in large multi-disciplinary teams. - -### Enabling global decentralized blockchain powered crypto communities - -* **Mentors:** @sing.li , @ankit.bhatia \(Sapien Network Guest Mentor\) and other leading blockchain industry guest mentors -* **Description:** Working together with our crypto and blockchain team – you will help build the key enabler platform for the future of blockchain powered decentralized communities all over this world \(and perhaps even beyond\). Within this short summer, you will gain experience in working on a global-circulation production-grade blockchain-powered adoption-acceleration platform. You will also meet and work with leading visionaries and pioneers in the current blockchain / crypto field. Tangible potential to become an early architect of this brave new world, supported by Rocket.Chat. - -Some projects that you can submit proposals for include: - -### **Decentralized Crypto Exchange in Rocket.Chat** - -* **Description:** Starting either from scratch or utilizing one of the compatible license open source DEX code bases – create a functional Decentralized Exchange within Rocket.Chat. You will create a DEX that takes advantage of strong cryptographic identity solutions such as Blockstack ID and wallet integration such as Metamask or ARK wallet in your work. - -### **IPFS storage solution in Rocket.Chat** - -* **Description:** Integrate IPFS into Rocket.Chat as a viable storage provider. Ideally IPFS can be used as a storage provider for uploaded Rocket.Chat contents. In addition, the ability to access IPFS within Rocket.Chat, to supply files that can be shared between users of Rocket.Chat is also essential. Leveraging integration with strong cryptographic identities such as Blockstack ID, the solution should include strong data-at-rest encryption of decentralized contents. Use of decentralized storage abstraction frameworks such as Blockstack Gaia should be considered to simplify this work. Use of IPFS as a decentralized storage for Rocket.Chat’s data should also be considered within the term. - -### **Cryptocurrency Wallet and/or Portfolio Management in Rocket.Chat** - -* **Description:** Enable the integration of wallet\(s\) such as Metamask, MyEtherWallet, ARK or other wallets or crypto portfolio management system within Rocket.Chat. -* **Desirable Skills:** Looking for a unique fringe-dropout university student already committed to our inevitable decentralized future powered by Web 3.0 and continued blockchain technology innovations. While maintaining a high score on all your subjects, you should be finding your existing university education ridiculously limiting, and already have experience hacking smart contracts, minting tokens for friends and family, hacking ethereum, and trading cryptokitties. You eat truffle for breakfast and ride the open zepplin to school every day. Recent government \(perhaps your own government\) baseless advances into this area has significantly disturbed you. You already realized that you are way ahead of your time. And you will recognize this GSoC 2018 project to be the absolutely not-to-miss opportunity of your life. - -### Google Assistant - -* **Mentors:** @rafael.kellermann -* **Project repository:** [https://github.com/RocketChat/Rocket.Chat.Android](https://github.com/RocketChat/Rocket.Chat.Android) -* **Description:** Let user send messages talking to Google Assistant. - -### Performance tests - -* **Mentors:** @diego.sampaio -* **Description:** Create an initial script to run performance tests of basic functionalities, it should be able to run in our CI and should track information to allow us and the community follow the performance changes. - -### Javascript SDK - -* **Mentors:** @karl.prieb @guilherme.gazzo -* **Description:** Create a javascript SDK that can be used on our ReactNative, Livechat and our webclient projects. - -### Game platform integration - -* **Mentors:** @pierre.lehnen -* **Description:** Integrate a multiplayer-capable game engine that runs on the web browser \(eg. Unity WebGL, Phaser, Three.js\) with Rocket.Chat. Let room members start small multiplayer games and play together. -* **Desirable Skills:** Experienced with JavaScript, web browser game engines, and networking. - -### Improve Hubot Integration - -* **Mentors:** @diego.dorgam, @john.szaszvari \(Contributing Guest Mentor\) -* **Description:** Improve the internal hubot interface, by allowing users to set up their own repositories for Rocket.Chat to read and deploy a hubot instance from it. Also would be awesome if the user could just edit the scripts files, and get console logs, right from the Rocket.Chat interface. -* **Desirable Skills:** Familiarity with JavaScript development and hubot architecture. - -### Open Source Bot Frameworks Adapters - -* **Mentors:** @diego.dorgam, @timkinnnae, @john.szaszvari \(Contributing Guest Mentor\) -* **Description:** The objective is to widely open Rocket.Chat's bots ecosystem by developing connectors/adapters to open source bot frameworks available in the web, so their community can develop bots able to run on Rocket.Chat platform. The scope would include the following frameworks: -* BotKit -* Rasa.ai \(Rasa Core\) -* BotPress -* **Desirable Skills:** Familiarity with JavaScript and Python development. - -### Rich Messages and Payloads for Buttons and Cards - -* **Mentors:** @diego.dorgam, @timkinnnae, @john.szaszvari \(Contributing Guest Mentor\) -* **Description:** Create UI components and develop the handling of message payloads to support new interactions for bots, like buttons, cards, images and more. Follow existing conventions to let bot developers migrate pre-built solutions to be delivered via Rocket.Chat. This opens the door for enhanced user experience and interaction flows in automated messaging, letting bots provide a much greater variety of utility; such as business apps, team workflows, even games and interactive narratives. -* **Desirable Skills:** Familiarity with front-end design and development \(JavaScript / CSS\). - -### Use Voice Recognition APIs - -* **Mentors:** @gabriel.delavald -* **Description:** Develop a voice recognition integration feature, by building a `Settings` pane to connect some of the well-known voice recognition and speech to text APIs on the market directly from within Rocket.Chat. By configuring API's connection and usage attributes, and giving rocket.chat's UI the ability to click a button, record a message, send to the desired API and return the results to Rocket.Chat editing message box. The project scope could include the following APIs: -* IBM Watson's -* AWS Lex -* Google Assistant -* Bing - - Different APIs can be proposed as a possible change of scope. - -* **Desirable Skills:** Familiarity with JavaScript development. - -### Built-in Speech2Text Engine - -* **Mentors:** @gabriel.delavald -* **Description:** Integrate an Open Source speech to text engine to be used inside Rocket.Chat by users who prefer an On-Premise full featured installation. There are many opensource speech2text engines on the market, like CMUSphinx and pocketsphinxjs, annyang, JuliusJS, Mumble, Voix JS, voice-commands.js and Artyon.js. This project will include a feature matrix comparison between those engines and the best one to be implemented in Rocket.Chat bundle, giving the UI the ability to click a button, record a message, send it to the text2speech engine and return the results to Rocket.Chat editing message box. -* **Desirable Skills:** Familiarity with JavaScript development and speech2text techniques. - -### Calendar Integration - -* **Mentors:** Mrinal Dhar \(@mrinal.dhar\) -* **Description:** Implement a calendar within Rocket.Chat for scheduling events and reminders, offering standalone functionality as well as integration with other calendars out there \(Google Calendar, for example\). Desirable features: - * Ability to schedule events and set up alerts for them. - * Automatically detect dates and time from messages and allow creating events from them. For example: In the message "Lets meet tomorrow", "tomorrow" should be automatically highlighted and user can then schedule an event by clicking on it. - * In a conversation, allow each user to select preferred time-slots and automatically schedule an event based on everyone's preferences. - * A consolidated events view that lists all scheduled events for a particular day, week or month. - * Integration with Google Calendar - * Ability to search for an event -* **Desirable Skills:** Familiarity with JavaScript development required. Previous experience with NLP \(Natural Language Processing\) or AI \(Artificial Intelligence\) would be helpful. - -## Timeline - -{% embed url="https://developers.google.com/open-source/gsoc/timeline" caption="" %} - diff --git a/contributors/google-summer-of-code/google-summer-of-code-2019.md b/contributors/google-summer-of-code/google-summer-of-code-2019.md deleted file mode 100644 index 895c0d2482..0000000000 --- a/contributors/google-summer-of-code/google-summer-of-code-2019.md +++ /dev/null @@ -1,312 +0,0 @@ ---- -permalink: /contributing/google-summer-of-code-2019/ -redirect_from: - - /contributing/google-summer-of-code/ ---- - -# Google Summer of Code 2019 - -[![Google Summer of Code 2019](https://github.com/Sing-Li/bbug/raw/master/images/gsoclogo.jpg)](https://summerofcode.withgoogle.com/) - -## How to apply - -Applications for the GSoC 2019 season have now closed. Please see GSoC timeline for more details. - -#### Update on July 10, 2019 - -First evaluation has completed! Coding continues at a feverish pace. Progress has been smooth across the projects. Projects are ontrack based on weekly mini-milestones agreed between mentors and students. Mentors are busy making sure that every student receive his/her detailed evaluation and payment. Students have also completed evaluation for their mentor\(s\). Many students are preparing their project for interim demo and reviews by our core team. During this first evaluation, we have decided to fail one student due to no communications with mentor. We also had to remove a mentor due to lack of available participation time. - -#### Update on May 28, 2019 - -Coding has begun! This year continues to be the most active and productive GSoC year at Rocket.Chat. During the bonding period, our students continued to assist community in public channels, interact with core team, contribute to bug fixes and documenation updates. They have also worked with their mentors to add detailed schedule to their proposal, reflecting measurable goals/milestones. Coding and detailed design work have started across all active projects. In addition, we are happy to welcome a team of community mentors from Credit Suisse Singapore, already well experienced with our core and native mobile code bases, to assist us this season. - -Unfortunately, during this time, we had to remove one student from the program due to extended inactivity. - -#### Update on May 8, 2019 - -2019 is an incredible year for GSoC at Rocket.Chat. Thanks to the ethusiastic early support from students and community \(mentors\), Google has graciously granted us **SEVENTEEN** project slots. This far surpasses any record from prior years. As a result, we are delighted to welcome these 17 active community members to work with us during the GSoC 2019 season: - -| Student | Project | Mentors | -| :--- | :--- | :--- | -| Rudrank Riyam | VoiceOver Accessibility in Rocket.Chat iOS application | Matheus Cardoso, Samar Sunkaria | -| Noor Binte Amir | Theme Support for Rocket.Chat Android App | Filipe Brito, Peter Nguyen, Balaji Sanjeevi, Renji Raj | -| Aditya Bhardwaj | Service Accounts | Karen Bedi, Peter Lepeska | -| Shubham Singh | Rocket.Chat Articles | Peter Lepeska, Karen Bedi, Ramkumar KB, Jian Hou | -| Kautilya Tripath | Livechat: Real-time Visitor Monitoring | Renato Becker, Diego Mello | -| Fongang Rodrique | Interactive APIs documenation | Martin Schoeler, Marcos Defendi | -| Kapil Gautam | Integrating Google Calendar with Rocket.Chat | Douglas Gubert, Rodrigo Nascimento | -| Upendra Reddy | Improve User Experience with Bots in Android App | James Hepburn, Peter Lepeska | -| Govind Dixit | Improve Test Automation in Rocket.Chat Android Repository | Eric Rosenthal, James Hepburn | -| Jon Goodrum | Improve Rocket.Chat Auto-Translate feature | Marcelo Schmidt, Sing Li | -| Ilarion Halushk | Improve end-to-end testing infrastructure for ReactNative client | Diego Mello, Diego Sampaio | -| Amish Mittal | Implemenation of Newsfeed in Rocket.Chat | Devin Toth, Peter Lepeska | -| Djorkaeff | Implement iOS and Android share extension for React Native app \(Rocket.Chat Experimental\) | Diego Sampaio, Diego Mello | -| Pranav Pandey | Enhancing ReactNative App with new features | Guilherme Gazzo, Diego Mello | -| Utkarsh Barsaiyan | Deeper Nextcloud Integration | Tasso Evangelista, Roeland Douma, Gulherme Gazzo | -| Tuan | Apple Watch App | Samar Sunkaria, Thiago Sanchez, Balaji Sanjeevi, Renji Raj | -| Ashish Jha | Alexa Skill for Rocket.Chat | Sing Li, Gabriel Engel | - -It was a very difficult decision for many mentors to select from the large number of highly qualified students \(we were able to engage the students early on in the GSoC cycle with open source contributions via the [GSoC Leaderboard](https://gsoc.rocket.chat/) \). - -Some high calibre open source contributors were not selected for GSoC; to accomodate these exceptional students, our community member [Viasat](https://www.viasat.com/) has agreed to sponsor an additional FOUR projects this season. Rocket.Chat has in addition sponsored ONE qualified student with special circumstances to work with us for the term. - -| Student | Sponsored Project | -| :--- | :--- | -| Shloak Aggarwal | Rocket.Chat iOS Contact Sync | -| Kailash Bhalaki | ReactNative Social Features | -| Divyanshu Bhargava | Making Rocket.Chat Android native app wonderful for consumers | -| SShi-qi Mei | Performance optimizations for ReactNative Client | -| Prajval Raval | Google Action for Google Home and Server-side improvements to support VUI | - -This, in combination, allowed us to accomodate a total of **TWENTY TWO** ethusiastic students this summer season. - -All students and mentors are now busy mutually bonding and with our core team and greater community. Each mentor is also working with his/her student on refining the weekly and monthly milestones/deliverables within the proposal to better reflect achievable project objectives as well as making them measurable for the monthly evaluations. Meanwhile, all our students are continuing to contribute to the Rocket.Chat open source project\(s\) as they have been doing since the start of the GSoC 2019 cycle. - -#### Update on April 10, 2019 - -This year, Rocket.Chat received a record breaking **ONE HUNDRED AND TWO** proposals from students studying at every corner of the globe. It is the first year we attempted to build a students + mentors community prior to submission deadline. Thanks to an enthusiastic and dedicated students community, we are successful in creating a GSoC 2019 community of **TWO HUNDRED AND FIFTY** members on our dedicated community server channel: - -[https://open.rocket.chat/channel/gsoc2019](https://open.rocket.chat/channel/gsoc2019) - -Open source contributions from students have already reach an all time high, with over ONE HUNDRED AND THIRTY students signed up for our real-time contribution tracking leaderboard: - -[https://gsoc.rocket.chat/](https://gsoc.rocket.chat/) - -Our community of mentors is hard-at-work right now going through every one of the proposals, and will be contacting students for a video chat prior to deciding on proposal selection and slot assignments. All students are encouraged to continue their engagement with our community, and contribute to our open source projects. - -#### About Rocket.Chat GSoC 2019 - -For ideas, check out our [list of ideas](https://docs.rocket.chat/contributing/google-summer-of-code-2019/#project-ideas) for some inspiration. - -Come meet our global community of 200+ mentors and students for GSoC 2019 and get some real-time help on next steps, please visit our 24 x 7 community server channel: - -[https://open.rocket.chat/channel/gsoc2019](https://open.rocket.chat/channel/gsoc2019) - -For offline discussions, we have a discussion forum: - -[https://forums.rocket.chat/c/gsoc/gsoc2019](https://forums.rocket.chat/c/gsoc/gsoc2019) - -If you have ideas and proposals that are not on our ideas list, or if a mentor is not available, please email to: - -gsoc@rocket.chat - -Interested students are also encouraged to interact with our contributor community on GitHub: - -[https://github.com/RocketChat/Rocket.Chat](https://github.com/RocketChat/Rocket.Chat) - -Enthusiasm and interest are extremely high this year; over 100 candidate students have already started to interact with our community and contributing to the projects! Together, they have already contributed over 100 merged PRs to our various projects. We are maintaining a real-time updated leaderboard for at-a-glance student \(candidates\) contribution here: - -[https://gsoc.rocket.chat/](https://gsoc.rocket.chat/) - -The leaderboard project **itself** is open source, created and maintained by our student \(candidates\). All potential GSoC organizations are welcome to use and deploy it \(the project has a super friendly MIT license - just like Rocket.Chat\). - -[https://github.com/lolimay/GSoC-Contribution-Leaderboard-Node](https://github.com/lolimay/GSoC-Contribution-Leaderboard-Node) - -## Project Ideas - -### Apple Watch & Siri Support - -* **Mentors**: @sameesunkaria @thiago.sanchez -* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.iOS](https://github.com/RocketChat/Rocket.Chat.iOS) -* **Description**: Create an Apple Watch application that replicates the most basic features we have in our iOS mobile client, such as viewing the chat rooms and reading the messages. Let the user ask Siri to read the latest messages, send messages or respond to a message. -* **Desirable Skills**: Familiarity with WatchKit development on WatchOS & SiriKit. Ability to work in large multi-disciplinary teams. - -### Themes support for Rocket.Chat Android app - -* **Mentors**: @filipe.brito -* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.Android](https://github.com/RocketChat/Rocket.Chat.Android) -* **Description**: Themes are very popular and they are part of what makes Android stand out from the rest. But the current Rocket.Chat Android app lacks the feature of applying different themes. This project aims to bring different themes support like dark mode and black mode into the existing Android client. It should enable any developer to create a theme for the Rocket.Chat Android app without the need to work with our core codebase. -* **Desirable Skills:** Familiarity with Android development, Kotlin, and design patterns. - -### Google Calendar Rocket.Chat App - -* **Mentors**: @douglas.gubert @rodrigok -* **Description**: The [Rocket.Chat Apps Engine](https://github.com/RocketChat/Rocket.Chat.Apps-engine) is here to make it easier to extend Rocket.Chat's functionality without having to deep dive into the code base. The goal of this project is to leverage the Apps Engine capabilities to create an integration with Google Calendar, using Slashcommands, custom API endpoints, custom Settings, etc. -* **Desirable Skills**: Familiarity with TypeScript. - -### Deeper Nextcloud Integration - -* **Mentors**: @roeland.douma @guilherme.gazzo -* **Description**: It's already possible to share a file from Nextcloud into Rocket.Chat. But the authentication is a bit clumsy. It would be great to have a single real sign in. So you only need to sign into Rocket.Chat and are automatically signed in Nextcloud of both talks to the same directory of course. -* **Desirable Skills**: Familiarity with Rocket.Chat and Nextcloud development. - -### Improve Rocket.Chat Auto-Translate feature - -* **Mentors**: @marcelo.schmidt -* **Project repository**: [https://github.com/RocketChat/Rocket.Chat/tree/develop/packages/rocketchat-autotranslate](https://github.com/RocketChat/Rocket.Chat/tree/develop/packages/rocketchat-autotranslate) -* **Description**: One of the most popular features in Rocket.Chat is auto-translate, where users can set their language preference to have all messages translated. This feature works by translating every incoming message into the user language of choice. We would like the student to make it possible for the package also to translate every message the user sends into another language. As a plus, if the student can implement a channel language setting, it would be superb. -* **Desirable Skills:** Familiarity with Rocket.Chat development and meteor packages. - -### Livechat: Real-Time Visitor Monitoring - -* **Mentors**: @renatobecker, @diegolmello -* **Description**: The goal of Real-Time Visitor Monitoring is to provide an important feature for the Live chat team by displaying a list of visitors who are browsing the website where the Livechat widget is installed. Having this feature, it will be possible to track important information related to visitors, such as the current page, location, time on site, local time, and so on, even though the visitor has not yet started a conversation with an agent. In addition, an agent will be able to start a conversation with a specific visitor directly from the list, improving the proactivity of the Live chat team. -* **Desirable Skills**: Familiarity with Rocket.Chat/Livechat development. - -### API Playground: Interactive APIs documentation - -* **Mentors**: @martin.schoeler @marcos.defendi -* **Project repository**: [https://github.com/RocketChat/docs](https://github.com/RocketChat/docs) -* **Description**: Create an easy-to-use interface to let the user explore, test and get info about the existing endpoints of the Rocket.Chat's APIs - an API playground. The user will be able to connect and make requests directly from the UI, also being able to change the arguments of the requests and testing different flows of the APIs. Since our server APIs change constantly, it is important that the subset of API documentation within the playground is in precise synchronization with the code. This will require the integration of a documentation generation library. -* **Desirable Skills**: Familiarity with Jekyll and Rocket.Chat Rest API. - -### Service Accounts in Rocket.Chat - -* **Mentors:** @karan.bedi, @bizzbyster -* **Description:** Adding the functionality of Service accounts to Rocket.Chat. A service account is an account owned by a User \(owner\), having a basic profile \(username, avatar, description, etc.\). If any other User \(initiating user\) creates a direct messages\(DM\) session with this service account, this chat session is carried to the owner of the service account. The owner can then reply to this chat session, but to the initiating user, it would seem that the reply is coming from the service account. An authorized user should be able to create service accounts, transfer the ownership of the service account. Service accounts should be searchable; there should be a directory of service accounts. Also, users should be able to subscribe to service accounts, and a service account owner should be able to send broadcast messages to its subscribers. Automated tests should be written to cover the added functionality. -* **Desirable Skills:** Familiarity with JavaScript development & Rocket.Chat code base - -### Improved Test Automation in Rocket.Chat Repos - -* **Mentors** @eric.rosenthal @jaytat0 -* **Description:** The goal of this project is to enhance the current test infrastructure in the RocketChat repos and pipelines. Currently, there is some very minimal unit testing that needs to be expanded, and no integration or system level tests or infrastructure to support them. This project could focus on one of the repos, possibly the Android code base, or all. Once a test infrastructure and best practice is established, the goal is that no new code gets merged unless it has new tests that will be run at build time, and it passes all of the previous tests. - -### iOS Voice Over Accessibility - -* **Mentors:** @matheus.cardoso -* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.iOS](https://github.com/RocketChat/Rocket.Chat.iOS) -* **Description:** VoiceOver is a gesture-based screen reader that lets you enjoy using iPhone even if you don’t see the screen. This is especially important for those with low or no vision. We want to make Rocket.Chat for everyone. A blind user should be able to easily add servers, change servers, read messages and send messages, as well as other additional functions such as editing profile and creating channels. A minimum acceptable scope is to be determined. -* **Desirable Skills:** We are looking for an undergraduate student who is familiar with team work, developing iOS Apps using UIKit and Swift, as well as writing maintainable code with Unit Tests and having some familiarity with Voice Over and Accessibility. - -### Ability to Rebrand Android and iOS Apps - -* **Mentors:** @jaytat0, @bizzbyster -* **Description:** Implement a way for administrators to rebrand their instances of rocketchat - product name, icons, colors, etc. - for the android and ios apps, which currently do not support this. Besides adding this capability, another goal would be to make this branding across all the OS’s easy for an administrator that may not be too tech savvy. Ideally, this would only be a few easy steps. Besides this ease-of-use improvement, this would also make it less likely that people will fork rocket to put in their own branding. -* **Desirable Skills:** Familiarity with Android and/or iOS development, specifically the Rocket.Chat.Android/Rocket.Chat.iOS code bases. - -### Livechat: Voice and Video Calls - -* **Mentors**: @tasso.evangelista @guilherme.gazzo -* **Description**: We've been working on our new Livechat solution and it's time to add two great new features that will make Livechat even more powerful: voice and video calls! The idea is to integrate Livechat with the providers already supported in Rocket.Chat, such as Jitsi, WebRTC, BigBlueButton and so on. With these two new features, Livechat users will be able to initiate video and audio calls between them and Livechat agents. -* **Desirable Skills**: Familiarity with Rocket.Chat/Livechat development, ReactJS/PreactJS, Voice and Video communication - -### Alexa Skill\(s\) - -* **Mentors**: @sing.li @gabriel.engel -* **Project repository**: [https://github.com/RocketChat/alexa-rocketchat](https://github.com/RocketChat/alexa-rocketchat) -* **Description**: Bring access of Rocket.Chat into the world of 100 million+ Alexa enabled devices. The project should aim beyond the obvious TTS <-> STT "Rocket.Chat bridging" of intelligent VUI terminal devices and create innovative, high valued user experiences to the Alexa ecosystem - powered by open source Rocket.Chat. Google Home/Assistant devices support, if possible, should also be considered concurrently. -* **Desirable Skills**: Familiarity with Alexa skills development. Experience with interfacing external sources and systems into Alexa skills. Passion for global converstational interaction enablement. Familiarity with Google Action development ideal. - -### BOTs UX: Improve the User Experience with bots by adding support for persistent menus, webviews, and rich messaging features - -* **Mentors**: @bizzbyster, @eric.rosenthal -* **Description**: Rocket.Chat trails both team and consumer chat platforms like Slack and Facebook Messenger/WeChat in terms of the richness of user interface components supported by bots. The goal of this project would be to add rich messages, persistent menus, welcome pages, webviews and other components to the Android, iOS, and web clients to allow chatbots to become comparable to web apps in terms of usability and UX. -* **Desirable Skills**: Interest UI/UX and chatbots. Experience in iOS, Android, or web client front ends development. Excited to participate in the full life cycle development process in an open source community context. - -### Newsfeed - -* **Mentors:** @bizzbyster, @karan.bedi -* **Description:** Adding the functionality of newsfeed, which is similar to a customized read-only channel for every user. Every user \(follower\) can follow other users \(followed user\). Posts from the followed user appear in the newsfeed of their followers. Posts are threaded discussions, started by the followed user in any public channel \(origin channel\), their follower can or cannot be a part of the origin channel, but this post comes up in their wall with a permalink to the original post in the origin channel. This helps in discovering new conversations. Interns are encouraged to propose extensions to this like wall, where a user can post threads that show up in their follower's feed, status updates, etc. Automated tests should be written to cover the added functionality. -* **Desirable Skills:** Familiarity with JavaScript development & Rocket.Chat code base - -### Improve end-to-end testing infrastructure for React Native app \(Rocket.Chat Experimental\) - -* **Mentors**: @diegolmello, @renatobecker -* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.ReactNative](https://github.com/RocketChat/Rocket.Chat.ReactNative) -* **Description**: E2E testing is important to keep the entire app working throughout the implementation of new features. Currently there's 219 E2E tests developed and passing on iOS only and they aren't working on CI, because we need an E2E dedicated and configured server. This project aims to improve testing infrastructure by adding Android capability and making test to pass on CI. Also we need to make sure all tests are passing as fast as possible. If there's any time left, the student must add even more tests. -* **Desirable Skills:** Familiarity with React Native and Rocket.Chat.ReactNative code base. - -### Rocket.Chat Articles - -* **Mentors:** @bizzbyster, @karan.bedi -* **Description:** For every deployment of Rocket.Chat, there is a team or community that generates a lot of content. Rocket.Chat itself is the repository for much of that content but the rest typically resides in other applications such as github or jira or google docs, many of which are third party services and so the content is not owned by the community that hosts the Rocket.Chat server. In one particular scenario, a user may want to write an article and "publish" it to groups or contacts within Rocket.Chat. Today that would have to be done typically using a third party service. What if instead article creation, searching, and storage were integrated with Rocket.Chat such that each user could maintain his or her own library of articles and contacts of that user could subscribe to see new articles posted by that user and to discuss those articles using something like Rocket.Chat Threads. By default, each Rocket.Chat user would essentially hav their own "blog" which could be accessed via a permalink including links to each "article." In general, the purpose of this project is to develop a minimum integration with another open source publishing platform \(such as [https://github.com/TryGhost/Ghost](https://github.com/TryGhost/Ghost)\) that allows users \(or bots or service accounts\) to write and publish articles that get stored on a location configured by the Rocket.Chat administrator so that the community maintains ownership of more of the content it generates. -* **Desirable Skills:** Familiarity with JavaScript development & Rocket.Chat code base & interest in exploring integrations with publishing open source projects. - -### Implement iOS and Android share extension for React Native app \(Rocket.Chat Experimental\) - -* **Mentors**: @diego.sampaio, @diegolmello -* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.ReactNative](https://github.com/RocketChat/Rocket.Chat.ReactNative) -* **Description**: Share extensions enables iOS or Android OS to share content between apps. This project aims to implement a share extension for React Native client to let users share data into Rocket.Chat from other apps. For example, a user should be able to send photos from the camera roll to a Rocket.Chat channel without opening the RC client. -* **Desirable Skills:** Familiarity with React Native, iOS and Android development and Rocket.Chat.ReactNative code base. - -### Improve performance and implement slash commands on React Native app \(Rocket.Chat Experimental\) - -* **Mentors**: @guilherme.gazzo, @diegolmello -* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.ReactNative](https://github.com/RocketChat/Rocket.Chat.ReactNative) -* **Description**: In mobile apps, users must be able to do what they want in fewer taps as possible. Slash commands are faster ways to trigger trivial actions, like invite a user or archive a channel, and it should be available on React Native client. -* **Desirable Skills:** Familiarity with React Native development, specifically the Rocket.Chat.ReactNative code base. - -### Allow Rocket.Chat Apps to use their own NPM modules - -* **Mentors**: @douglas.gubert, @rodrigok -* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.Apps-engine](https://github.com/RocketChat/Rocket.Chat.Apps-engine) -* **Description**: Currently the Rocket.Chat Apps Engine does not support that apps include their own `node_modules` dependencies, which can be very limiting in some use cases. The goal of this project is to modify our engine so that it can properly install and manage an app's dependencies, enabling app developers to unleash their full potential. -* **Desirable Skills**: Solid understanding of JavaScript and some familiarity with TypeScript. Familiarity with TypeScript's compiler is definitely a plus. - -### Users Directory integration plus custom fields editor and search - -* **Mentors**: @marceloschmidt -* **Description**: Rocket.Chat already allows for users to add custom fields through a setting that accepts a JSON. We would like to create an interface to manage these custom fields. Each custom field must be composed of label, type \(one of predefined: string, number, picklist, money, etc.\), and an option to determine if this field must be displayed on registration or not. On Users Directory, users must be able to select multiple records from the results and do one of the possible actions: add to existing channel or group and create new channel or group; if only one record is selected, it should also be possible to start a direct message with the selected user. -* **Desirable Skills**: Familiarity with Rocket.Chat development. - -### BOTs Suite: starter Chatbots for Rocket.Chat - -* **Mentors**: TBD -* **Project repositories**: [hubot](https://github.com/RocketChat/hubot-rocketchat), [chatops-gitsy](https://github.com/RocketChat/hubot-gitsy), [botpress](https://github.com/RocketChat/botpress-channel-rocketchat), [rasa](https://github.com/RocketChat/rasa-kick-starter), [bbot](http://bbot.chat/), [botkit](https://github.com/RocketChat/botkit-rocketchat-connector), [BOTswana](https://github.com/RocketChat/botswana-snap) -* **Description**: Develop a suite \(5+\) of BOTs across our Chatbot support portfolio/platforms; integrating current ML, AI, NLP, CMS, CRM and big data access stacks. BOTs need to be contemporarily interesting, simple to construct, yet substantially functional. They also need to be adaptable across the bot frameworks that Rocket.Chat supports. They will be used as starter learning resources across our BOT repositories. -* **Desirable Skills**: Deep interest in ML, AI, and modern BOT technologies. Experience in developing BOTs using NodeJS or Python. Clear methodical mind plus the ability to simplify and explain complex problems in simple terms. Technologically fearless. - -### Mattermost Data Importer - -* **Mentors**: TBD -* **Description**: Rocket.Chat is currently capable of importing data exported from Slack and HipChat, but there's no importer for Mattermost data. This is a valuable feature that the application is still missing. - -### Asana Rocket.Chat App - -* **Mentors**: @douglas.gubert, @rodrigok -* **Description**: The [Rocket.Chat Apps Engine](https://github.com/RocketChat/Rocket.Chat.Apps-engine) is here to make it easier to extend Rocket.Chat's functionality without having to deep dive into the code base. The goal of this project is to leverage the Apps Engine capabilities to create an integration with Asana, using Slashcommands, custom API endpoints, custom Settings, etc. - -### Admin webview page integration on React Native app \(Rocket.Chat Experimental\) - -* **Mentors**: @diegolmello -* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.ReactNative](https://github.com/RocketChat/Rocket.Chat.ReactNative) -* **Description**: The goal of this project is integration with Rocket.Chat's admin webview page when the user has access. This helps administrators to change their servers behavior without the need to open Rocket.Chat on the web or the mobile version on their devices. -* **Desirable Skills:** Familiarity with React Native development and Rocket.Chat.ReactNative code base. - -### Improve notifications on React Native app \(Rocket.Chat Experimental\) - -* **Mentors**: @diegolmello -* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.ReactNative](https://github.com/RocketChat/Rocket.Chat.ReactNative) -* **Description**: For better user experience, we need to group notifications by channel and allow the user to reply directly from the notification. Also, we should show notifications from other channels when the user is using the app. -* **Desirable Skills:** Familiarity with React Native, iOS and Android development and Rocket.Chat.ReactNative code base. - -### Implement theming on React Native app \(Rocket.Chat Experimental\) - -* **Mentors**: @diegolmello -* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.ReactNative](https://github.com/RocketChat/Rocket.Chat.ReactNative) -* **Description**: Themes, like dark mode, are very popular and everywhere right now, but the Rocket.Chat React Native app lacks the feature of applying different themes. This project aims to bring different themes like dark mode and black mode into the existing React Native client. - -### Integration of Rocket.Chat with Existing Phone/Voice Networks - -* **Mentors**: TBD -* **Description**: Deep VoIP integration of Rocket.Chat with modern software and hardware SIP switches and VoIP SaaS. Intelligently add access to phone networks and SMS channels to the Rocket.Chat workflow. Enable multi-channel conferences with chat + phone calls + video. Empower Live chat with voice calls in workflow. -* **Desirable Skills**: Familiar with SIP development. Fluent in VoIP concepts and practices. Ability to rapidly code in JavaScript and Linux shell. Wide open mind for new ideas. - -### iOS contacts sync, invites & dynamic links - -* **Mentors**: @zi.lin, @eric.rosenthal -* **Description**: In the Rocket.Chat native iOS application, add the functionality of listing all the contacts of a user, syncing in background these contacts with the server using existing APIs and displaying the intersection with public accounts on server. Integrating the APIs to invite users that do not have an account \(via email/phone\) or inviting via other applications on the phone. Support dynamic links in iOS app, allow the creation of links such that when invited through one, after installation of the app it opens a DM with the inviter, etc. `These functionalities are already implemented for Android in a fork.` -* **Desirable Skills**: Familiarity with iOS development. - -### SNAP improvements - -* **Mentors**: @lucia.guevgeozian -* **Description**: The most popular Rocket.Chat deployment method in the world is via snaps. Snaps are containerised software packages that are simple to create and install. The aim of this project is improve our snap installation process and features, bringing better support for our ARM architecture deployment, and expand our configuration options to set up Rocket.Chat in more diverse layouts adding support for loadbalancing between instances where Rocket.Chat will only be bound to the loopback interface, regular backups for our database configured as a replicaset and possible firewall configuration. -* **Desirable Skills:** Familiarity with Linux. Good shell scripting skills. Aware of DevOps and containers based deployment technology. - -### Data Doctor: A database sanitizer tool for Rocket.Chat - -* **Mentors:** TBD -* **Description:** Rocket.Chat's data backend is MongoDB, a NoSQL database. NoSQL databases enable application developers to quickly add and change data schemas for new features without imposing rigid integrity constraints. While effective for small projects, this can create varied data inconsistency in long-lasting production server projects such as Rocket.Chat. Causes such as buggy code versions, crashes during migrations and/or schema updates, core customizations, and inadvertent DB admin modifications can all lead to a non-deterministic data schema. Some corrupted schema may break code, while others can go years without being detected. The goal of this project is to create a tool to help sanitize in production Rocket.Chat databases. Depending on the ingenuity of the tool design, the same code can one day be integrated into Rocket.Chat as a data integrity layer. -* **Desirable Skills:** Familiarity with database concepts and administration. Fluent with NodeJS and Javascript. Love hacking. - -### Open Source Office Suite Integration - -* **Mentors**: TBD -* **Description**: Add deep integration with open source word processing, spreadsheet, presentation, email and content management suite\(s\). Create a full chat-centric office team collaboration environment. -* **Desirable Skills**: Familiarity with development and extension/integration points for existing open source office suites. Ability to code and script in multiple programming languages. Preference to work with a team. - -## Timeline - -{% embed url="https://developers.google.com/open-source/gsoc/timeline" %} - diff --git a/contributors/google-summer-of-code/google-summer-of-code-2020.md b/contributors/google-summer-of-code/google-summer-of-code-2020.md deleted file mode 100644 index 76f12ccc02..0000000000 --- a/contributors/google-summer-of-code/google-summer-of-code-2020.md +++ /dev/null @@ -1,351 +0,0 @@ ---- -permalink: /contributing/google-summer-of-code-2020/ -redirect_from: - - /contributing/google-summer-of-code/ ---- - -# Google Summer of Code 2020 - -[![Google Summer of Code 2020](https://github.com/Sing-Li/bbug/raw/master/images/gsoclogo.jpg)](https://summerofcode.withgoogle.com/) - -## How to apply - -Application for Google Summer of Code 2020 is now closed. - -#### Update September 8, 2020 - -The GSoC 2020 season has completed with one of the best experience ever for many of the participating students and mentors. - -The final list of successful Google Summer of Code 2020 Rocket.Chat projects and students/mentors is now [officially](https://summerofcode.withgoogle.com/organizations/4685162459168768/#5623423331467264) available. - -Of the **seven official** GSoC projects, every student has managed to pass their final evaluation. -Congratulations to all the students of 2020 and their tireless mentors! - -Of the **five additional** sponsored projects, **one** student : the problematic one noted in the previous term, has been **failed** by his mentors. - -In this final term, we encouraged students to prepare a 30 minutes demo and presentation of their project for our community and core team. Reception was incredible! The list of invitees topped 80! Most presentations were well attended. Students showed off their work proudly alongside their mentors. - -For many students, it was the very first presentation experience in their entire life - and having it in front such a supportive audience made it extremely fulfilling. Attendees are delighted to discover the excellent work \(and exciting features\) that the student undertook. - -From the crop of excellent 2020 students, the Rocket.Chat team made an internship offer to one student and he has accepted and became a member of our team. Our long time community contributor, Viasat, has also independently made an offer to another student this year. - -#### Update August 4, 2020 - -Second evaluation has completed. Once again, all mentors have decided to pass their students for this term. Of note is one potentially problematic student, mentor agreed to monitor the situation for the final term. Another student has pre-arranged with his mentor to start the term early and has completed his work by this evaluation. - -#### Update July 12, 2020 - -First evaluation has completed! All students have passed this first term. Most projects have students that are tracking or exceeding planned schedules. There is one project that is slightly lagging and we will keep a watchful eye on it this second term. Progress has been relatively smooth across the projects. Mentors are busy making sure that every student receive his/her evaluation and payment. Students have also completed evaluation for their mentor\(s\). Some project\(s\) have decided to start mini virtual daily stand-ups to keep closer tab on progress once past GSoC mid-way mark. Two mentors have withdrawn from participation, one has left the Rocket.Chat organization/community altogether, another due to unanticipated personal obligations. - -**Update June 8, 2020** - -Coding has started on June 1st. All mentors and students are busy getting the first month milestones of the project under way. Many of them are engaged daily via our [24 x 7 community community server](https://open.rocket.chat) - -We have two community sponsored projects with students dropping out during this time, one due to family obligations and another due to prolonged funding uncertainty, and replacement students have been located for these projects. - -**Updated June 8, 2020 ; Original on May 5, 2020** - -2020 is another exciting year for GSoC at Rocket.Chat. Thanks to the enthusiastic early support from students and community, the program has managed to sustain momentum despite COVID-19 downturn and reduced participation from core. Google has graciously granted us **SEVEN** project slots. As a result, we are delighted to welcome these 7 active community members to work with us during the GSoC 2020 season: - -| Student | Project | Mentors | -| :--- | :--- | :--- | -| Ashwani Yadav | Omnichannel: Add screen sharing feature in the Livechat widget | Guilherme Gazzo, Renato Becker, Tasso Evangelista, Marcos Defendi | -| Ritwiz Sinha | Apps-CLI: Hot reload apps during development | Douglas Gubert, Shiqi Mei, Rodrigo Nascimento | -| Ezequiel Reis | Full-screen composer option to send/edit long messages on mobile apps | Djorkaeff Alexandre, Ramkumar Kalpathy, Diego Mello, Rowan Youngson | -| Govind Dixit | Create F-Droid build | Diego Mello, Djorkaeff Alexandre | -| Adarsh Naidu | Alexa Skill\(s\) Improvement | Ashish Jha, Prajval Raval, Weng Wei | -| Murtaza Patrawala | Omnichannel: Chatbot support for RASA and Dialogflow | Renato Becker, Marcos Defendi, David Lassalle, Steve Stetak | -| Taimur Azhar | Download manager on desktop app | Tasso Evangelista, Guilherme Gazzo, Eduarda Cunha, Gabriel Henriques | - -It was a very difficult decision for us to select _seven_ from the large number of highly qualified students \(we were able to engage the students early on in the GSoC cycle with open source contributions via the [GSoC Leaderboard](https://gsoc.rocket.chat/) \). - -While some high calibre open source contributors were not selected for GSoC; to accommodate these exceptional students, our community member Credit Suisse APAC has agreed to sponsor an additional THREE projects this season. - -| Student | Sponsored Project | Mentors | -| :--- | :--- | :--- | -| Neil Agarwal | Audio Improvements on mobile apps | Nathan Khoo, Diego Mello, Djorkaeff Alexandre | -| Youssef Muhamad | Add Analytics to Mobile Apps | Noorul Ameen, Diego Mello, Djorkaeff Alexandre | -| Shreyansh Singh Tomar | Content Moderation Rocket.Chat App \(Machine Learning\) | John Eric Sobrepena, Karan Bedi | - -Furthermore, Viasat, one of Rocket.Chat's long-time community supporters, has agreed to sponsor TWO projects this season. - -| Student | Sponsored Project | Mentors | -| :--- | :--- | :--- | -| Prajval Raval | Live agent and chatbot handoff app | David Lassalle, Steve Stetak, Renato Becker, Marcos Defendi | -| Kashish Jayasi | Rocket.Chat mobile site | Peter Lepeska, Eric Rosenthal, Karan Bedi | - -This, in combination, allowed us to accommodate a total of **TWELVE** enthusiastic students this summer season. - -All students and mentors are now busy mutually bonding and with our core team and greater community. Each mentor is also working with his/her student on refining the weekly and monthly milestones/deliverables within the proposal to better reflect achievable project objectives as well as making them measurable for the monthly evaluations. Meanwhile, all our students are continuing to contribute to the Rocket.Chat open source project\(s\) as they have been doing since the start of the GSoC 2019 cycle. Many are also engaging with community members on the various public channels of our 24 x 7 [community team server](https://open.rocket.chat). - -#### Update March 31st, 2020 - -First, we would like to thank all GSoC 2020 students for their ethusiastic support for Rocket.Chat. This year we have received a total of **86** proposals, including **81** final proposals. In the final pool, there are 13 proposals that are spam, without content, or not related to our projects. - -Over the next month, our mentors will be reviewing the received proposals. Google Summer of Code will be announcing the selected projects and students on May 4th, 2020. Please see [GSoC timeline](google-summer-of-code-2020.md#timeline) for more details. - -Meanwhile, we continue to introduce all active and incoming students to open source in general, and Rocket.Chat's ecosystem of open source projects in particular. Students will continue to make meaningful open source contributions in the form of issues & PR for our projects and interact with Rocket.Chat's vibrant community + team. - -#### Update March 29th, 2020 - -Enthusiasm and interest from students are all time high this year; over 112 candidate students have already started to interact with our community and contributing to the repositories! Together, they have already contributed over 100 issues and over 50 merged PRs to our various projects. We are maintaining a real-time updated leaderboard for at-a-glance student \(candidates\) contribution here: - -[https://gsoc.rocket.chat/](https://gsoc.rocket.chat/) - -The leaderboard project **itself** is open source, created and maintained by our former GSoC student \(now mentor and team member\). All potential GSoC organizations are welcome to use and deploy it \(the project has a super friendly MIT license - just like Rocket.Chat\). - -[https://github.com/lolimay/GSoC-Contribution-Leaderboard-Node](https://github.com/lolimay/GSoC-Contribution-Leaderboard-Node) - -We have recnetly arranged for the TOP 8 student contributors to meet one on one with Rocket.Chat's project lead Gabriel Engel and great remote fun was had by all. - -Mentoring interest from core team has been reduced this year, while community mentor participation is at an all time high. Proposals for projects are streaming steadily in since application open, the volume of incoming proposals is reduced compared to prior year - but the percentage of high quality propsals has increased. - -#### About GSoC 2020 - -For ideas, check out our growing [list of ideas](google-summer-of-code-2020.md#project-ideas) for some inspiration. - -Come meet our global community of potential mentors and students for GSoC 2020 and get some real-time help on next steps, please visit our 24 x 7 community server channel: - -[https://open.rocket.chat/channel/gsoc2020](https://open.rocket.chat/channel/gsoc2020) - -For offline discussions, we have a discussion forum: - -[https://forums.rocket.chat/c/gsoc/gsoc2020/70](https://forums.rocket.chat/c/gsoc/gsoc2020/70) - -If you have ideas and proposals that are not on our ideas list, or if a mentor is not available, please email to: - -gsoc@rocket.chat - -Interested students are also encouraged to interact with our contributor community on GitHub: - -[https://github.com/RocketChat/Rocket.Chat](https://github.com/RocketChat/Rocket.Chat) - -## Project Ideas - -### Advanced Rocket.Chat administrators and operations toolkit - -* **Mentors**: [@diego.sampaio](https://open.rocket.chat/direct/diego.sampaio), [@sing.li](https://open.rocket.chat/direct/sing.li) -* **Description**: Administration and management of a Rocket.Chat server is a very complex task, especially for servers that are utilized by thousdands of users on a daily basis. There exists many administrative and operational activities that require access to the system in ways that are not currently supported by our Administrative dashboard. This project creates small, standalone tools, to address this need. These tools will be immediately useful for anyone operating one-or-more large Rocket.Chat server\(s\) worldwide. -* **Desirable Skills**: Familiarity with nodeJS fullstack webapp development. Experience with ReactJS or Vue.js ideal. Must have database skills, ideally MongoDB. - -### Download Manager on Desktop App - -* **Mentors**: [@tasso.evangelista](https://open.rocket.chat/direct/tasso.evangelista) and [@guilherme.gazzo](https://open.rocket.chat/direct/guilherme.gazzo) -* **Description**: With the React/Redux/Redux-Saga stack coming to the Electron-based app, a richer user experience is achievable through [Rocket.Chat's Fuselage components](https://github.com/RocketChat/Rocket.Chat.Fuselage). A long-awaited feature is the management of file downloads with some tracking of download progress and ability to cancel/restart. -* **Desirable Skills**: Some knowledge about the concept of CSS-in-JS and popular implementations for React \(e.g. [Styled Components](https://styled-components.com/), [Emotion](https://emotion.sh/docs/introduction)\) as well basic understanding about the [Electron framework](https://www.electronjs.org/). - -### Omnichannel: Chatbot support for RASA and Dialogflow - -* **Mentors**: @renatobecker, [@marcos.defendi](https://open.rocket.chat/direct/marcos.defendi) -* **Description**: The goal of this project would be to create new integrations to interact with popular BOT frameworks - RASA and Dialogflow. Also, support and adapt rich messages to the formats of these platforms, as well as the formats supported by Rocket.Chat. -* **Desirable Skills**: Experience in working with Chatbots communication. Familiarity with Typescript and, ideally, experience with Javascript. - -### Omnichannel: Live Agent and Chatbot Handoff App - -* **Mentors**: @steve.stetak, @dlassalle, @renatobecker -* **Description**: Enhance Omnichannel Rocket.Chat with an app to support the use of Chatbots, powered by NLP such as Dialogflow, in front of a larger existing infrastructure of Care Live Agents. The focus of this app being the seamless transfer between Bot, Live Agent, and Bot again. If the Chatbot is unable to solve their issue, the app will seamlessly route them to a Live Agent through a third-party queue system such as Salesforce. At the end of the conversation, the customer will be reconnected back to the chatbot for additional support or CSAT survey purposes, all within the same chat client window for the customer. -* **Desirable Skills**: Familiarity with Rocket.Chat development, Salesforce, and NLP or Chatbot experience - -### Omnichannel: Add screen sharing feature in the Livechat widget - -* **Mentors**: @renatobecker, [@marcos.defendi](https://open.rocket.chat/direct/marcos.defendi) -* **Description**: Add a new interface between Rocket.Chat and the Omnichannel Livechat widget, allowing Agents to get real-time screenshare on customer's devices. For this initial version, we will also create an integration with the Cobrowse.io, which will be the first screen sharing supplier supported. -* **Desirable Skills**: Experience with Javascript and React.JS. - -### Alexa Skill\(s\) Improvement - -* **Mentors**: @ashish.jha @prajval.raval1 -* **Project repository**: [https://github.com/RocketChat/alexa-rocketchat](https://github.com/RocketChat/alexa-rocketchat) -* **Description**: Bring access of Rocket.Chat into the world of 100 million+ Alexa enabled devices. The project should aim beyond the obvious TTS <-> STT "Rocket.Chat bridging" of intelligent VUI terminal devices and create innovative, high valued user experiences to the Alexa ecosystem - powered by open source Rocket.Chat. Google Home/Assistant devices support, if possible, should also be considered concurrently. The focus will be on devoting more time to improve the features which add more advantage and serve a frictionless experience when used via voice compared to features which have a limited use and are better performed using a GUI. -* **Desirable Skills**: Familiarity with Alexa skills development and conversational design. NodeJS Server Development and Rocket.Chat source code. Experience with interfacing external sources and systems into Alexa skills. Passion for global conversational interaction enablement. Familiarity with Google Action development ideal. - -### Apps-CLI: Hot reload apps during development - -* **Mentors**: @douglas.gubert @shiqi.mei -* **Description**: Add the option to the Rocket.Chat Apps-CLI to support apps development by hot-reloading the app in the development server on file saving. -* **Desirable Skills**: Experience with Javascript and familiarity with Typescript. - -### Add Analytics to Mobile Apps - -* **Mentors**: @noorul.ameen @djorkaeff.alexandre @diego.mello -* **Description**: We use Firebase to track some analytics, now we want to know data like 'how many people clicked on login?'. You need to add firebase analytics to our app and add track analytics of the most important features and events. -* **Desirable Skills**: Familiarity with React Native and Firebase Analytics. - -### Audio improvements on mobile apps - -* **Mentors**: @nathan.khoo @djorkaeff.alexandre @diego.mello -* **Description**: A new UI component to be rendered outside the room view allowing users to listen to the room’s audios when navigating to other rooms. Additions like listening speed are welcome. -* **Desirable Skills**: Familiarity with React Native and Rocket.Chat codebase. - -### Full-screen composer option to send/edit long messages on mobile apps - -* **Mentors**: @rowan.work @ramkumar.kb @diego.mello -* **Description**: A full-screen composer that could be opened from the current composer to provide a larger area for text input or edition, good to send or edit large texts. -* **Desirable Skills**: Familiarity with React Native and Rocket.Chat codebase. - -### Create F-Droid build - -* **Mentors**: @djorkaeff.alexandre @diego.mello -* **Description**: Create a build for the other store for Android apps: [https://f-droid.org/](https://f-droid.org/) -* **Desirable Skills**: Familiarity with Android development, React Native and Rocket.Chat codebase. - -### Image/Video Content Moderation Rocket.Chat App using Machine Learning - -* **Mentors**: @johnathan.handoyo @jethro.lam @matheus.cardoso -* **Description**: Create a Rocket.Chat App that can classify videos and images as SFW or NSFW and block them based on user or admin settings. -* **Desirable Skills**: Familiarity with Rocket.Chat Apps and Machine Learning/Deep Learning or existing image classification services. - -### Uber Rocket.Chat App - -* **Mentors**: [@marcos.defendi](https://open.rocket.chat/direct/marcos.defendi), @renatobecker -* **Description**: The goal of this project is allow users to call their Uber rides directly from Rocket.Chat. -* **Desirable Skills**: Familiarity with Typescript and OOP concepts. - -### Vocabulary Booster Rocket.Chat App - -* **Mentors**: [@marcos.defendi](https://open.rocket.chat/direct/marcos.defendi), @renatobecker -* **Description**: The goal of this project is to provide the user a way to improve his vocabulary in a certain language \(English, for now\), by sending him a message with a "new" word in certain periods of time \(configurable\). After that, the app should validate if the user has learned the meaning of the word, sending the definition and some word options, or some sentence with the word and a gap to fill. Also the app would show the user's performance. There are some API's to get the words and the meanings. e.g \([WordsAPI](https://www.wordsapi.com/), [Datamuse](https://www.datamuse.com/api/), [Oxford](https://developer.oxforddictionaries.com/), etc\) \(needs to be evaluated deeply\) -* **Desirable Skills**: Familiarity with Typescript and OOP concepts. - -### Rocket.Chat Mobile site - -* **Mentors**: @karan.bedi @eric.rosenthal -* **Description**: A client build for mobile-web, lite in size and functionality to bring down the site load time, with a better UI/UX customized for mobile screens. -* **Desirable Skills**: Familiarity with Rocket.Chat and Responsive Design - -### OAuth/Account integration - -* **Mentors**: [@shiqi.mei](https://open.rocket.chat/direct/shiqi.mei) and [@douglas.gubert](https://open.rocket.chat/direct/douglas.gubert) -* **Description**: Enable Apps to provide custom OAuth providers for Rocket.Chat - -### Assets installation \(emoji and sounds\) - -* **Mentor**: [@rodrigo.nascimento](https://open.rocket.chat/direct/rodrigo.nascimento) and [@douglas.gubert](https://open.rocket.chat/direct/douglas.gubert) -* **Description**: Enable Apps to provide custom assets as emojis and sounds for use on the various related features on Rocket.Chat - -### Federation Whitelisting - -* **Mentor**: [@alan.sikora](https://open.rocket.chat/direct/alan.sikora) -* **Description**: Enable Federation-enabled servers to whitelist other servers, avoiding unwanted chat requests and improving security - -### Permissions system - Feature Manifest - -* **Mentors**: [@douglas.gubert](https://open.rocket.chat/direct/douglas.gubert) and [@rodrigo.nascimento](https://open.rocket.chat/direct/rodrigo.nascimento) -* **Description**: Currently there is no way for an admin to know during the installation of an App which Apps-Engine features are going to be used and what kind of access the app will have to the workspace's data. The idea is for the App to provide a manifest with the features and access it is going to require, and the Apps-Engine will only allow the defined features to be used by the App. - -### Improve test coverage and enable visual regression tests - -* **Mentors**:[@guilherme.gazzo](https://open.rocket.chat/direct/guilherme.gazzo) and [@tasso.pinto](https://open.rocket.chat/direct/tasso.evangelista) -* **Description**: Re-enable all current skipped tests, start a visual regression test for each relevant UI part using the same tooling \(Cypress\) and add tests to features without tests. - -### Lightweight UI for single room access \(embedded UI\) - -* **Mentors**:[@guilherme.gazzo](https://open.rocket.chat/direct/guilherme.gazzo) and [@tasso.pinto](https://open.rocket.chat/direct/tasso.evangelista) -* **Description**: Rocket.Chat already has an option to load the UI as embedded layout, although it still loads a lot of unnecessary data, the objective here is to find the most efficient way to render a single room UI with the minimum data possible in a way that the UI can be embedded in a website using an iframe and be performatic when reloading within the site navigation - -### UI to see videos outside the room, using popouts - -* **Mentors**: [@guilherme.gazzo](https://open.rocket.chat/direct/guilherme.gazzo) and [@tasso.pinto](https://open.rocket.chat/direct/tasso.evangelista) -* **Description**: A new UI component to be rendered outside the room view allowing users to listen to the room’s videos when navigating to other rooms. - -### UI to listen to audio files outside the room \(like telegram\) + "user is recording audio" indicator \(as the typing one\) - -* **Mentors**: [@tasso.pinto](https://open.rocket.chat/direct/tasso.evangelista) and [@guilherme.gazzo](https://open.rocket.chat/direct/guilherme.gazzo) -* **Description**: A new UI component to be rendered outside the room view allowing users to listen to the room’s audios when navigating to other rooms. Additions like listening speed are welcome. - -### Pre-installed apps - -* **Mentors**: [@douglas.gubert](https://open.rocket.chat/direct/douglas.gubert) and [@shiqi.mei](https://open.rocket.chat/direct/shiqi.mei) -* **Description**: Make Rocket.Chat have a list of default apps that are going to be installed during the first run of the server. - -### Improve Documentation Framework \(Versioning\) - -* **Mentors**: [@martin.scholeler](https://open.rocket.chat/direct/martin.schoeler), [@guilherme.cruz](https://open.rocket.chat/direct/guilherme.cruz) -* **Description**: The main objective of this project is to add a versioning capacity to the documentation, while maintaining a relatively simple file structure and ease of use. In addition, add support for multi-lingual documentation and increase the ease of use of the documentation generation and hosting framework to ease the barrier of entry for contributors trying to run the environment on their own machines, making it more contributor friendly. -* **Desirable Skills**: Familiarity with Javascript development. Working knowledge of Jekyll and documentation generation framework highly useful. - -### Google Action Improvement - -* **Mentors**: @ashish.jha @prajval.raval1 -* **Project repository**: [https://github.com/RocketChat/google-action-rocketchat](https://github.com/RocketChat/google-action-rocketchat) -* **Description**: Bring access of Rocket.Chat into the world of 1 Billion+ Google Assistant enabled devices. The project should aim beyond the obvious TTS <-> STT "Rocket.Chat bridging" of intelligent VUI terminal devices and create innovative, high valued user experiences to the Google Assistant ecosystem - powered by open source Rocket.Chat. The project will aim towards making current action compaitable with Multisever proxy and publishing of Google Action of on its store, of course while adding more features to it such as Interactive Canvas, App Actions etc. This project will also focus on making current documentation more streamlined and "easy to refer" for newcomers. -* **Desirable Skills**: Familiarity with Google Actions development, Dialogflow, NodeJS Server Development and Rocket.Chat source code. Experience with interfacing external sources and systems into Google Action. Passion for global converstational interaction enablement. - -### Use Lingohub on mobile apps - -* **Mentors**: @djorkaeff.alexandre @diego.mello -* **Description**: Share Lingohub keys with the web client. -* **Desirable Skills**: Familiarity with React Native and Rocket.Chat codebase. - -### Share Location on Mobile Apps - -* **Mentors**: @djorkaeff.alexandre @diego.mello -* **Description**: We have this feature on our web client, server has an implementation about this, you only need to implement this feature on our Mobile Client and ability to select and share a location \(based or not on user's location\), custom message to show the location shared and need to be able to open this location on maps apps. -* **Desirable Skills**: Familiarity with React Native and Rocket.Chat codebase. - -### Mobile Apps Accessibility - -* **Mentors:** [@matheus.cardoso](https://open.rocket.chat/direct/matheus.cardoso) -* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.ReactNative](https://github.com/RocketChat/Rocket.Chat.ReactNative) -* **Description:** Android and iOS both support gesture-based screen readers that let you enjoy using the phone even if you don’t see the screen. This is especially important for those with low or no vision. We want to make Rocket.Chat for everyone. A blind user should be able to easily add servers, change servers, read messages and send messages, as well as other additional functions such as editing profile and creating channels. The proposal should contain a per-screen study of the current App's state of accessibility \(what is missing and what needs to be improved\), and a roadmap to take it to a delightful state. -* **Desirable Skills:** We are looking for a student who is familiar with team work, developing mobile Apps using React Native and JavaScript, as well as writing maintainable code with Unit Tests and having some familiarity with Voice Over \(iOS\), TalkBack \(Android\) and Accessibility. Knowledge of Swift/Objective-C and Kotlin/Java may be needed for some of the trickier tasks. - -### Omnichannel: Create integration with Zoho Desk CRM - -* **Mentors**: @renatobecker -* **Description**: In order to have a complete customer service experience, it is essential to have quick access to customer data, create service tickets, etc. The aim of this project is to provide that experience by creating an integration between Rocket.Chat and Zoho CRM, a complete CRM platform that will bring an even richer experience to the Omnichannel Customer Service. -* **Desirable Skills**: REST, Experience with Javascript and familiarity with Typescript. - -### Omnichannel: Support for Voice and Video Calls - -* **Mentors**: @gazzo, @tazzo -* **Description**: We've been working on our new Omnichannel solution and it's time to add two great new features that will make Omnichannel even more powerful: voice and video calls! The idea is to integrate Omnichannel with the providers already supported in Rocket.Chat, such as Jitsi, WebRTC, BigBlueButton and so on. With these two new features, Omnichannel users will be able to initiate video and audio calls between them and Omnichannel agents. -* **Desirable Skills**: Familiarity with Rocket.Chat/Omnichannel development, ReactJS/PreactJS, Voice and Video communication - -### Houston Improvements - Rocket.Chat release/changelog generator - -* **Mentors**: [@diego.sampaio](https://open.rocket.chat/direct/diego.sampaio) and [@rodrigo.nascimento](https://open.rocket.chat/direct/rodrigo.nascimento) -* **Project repository**: [https://github.com/RocketChat/Rocket.Chat.Houston](https://github.com/RocketChat/Rocket.Chat.Houston) -* **Description**: Huston is the CLI tooling we use to release new versions of Rocket.Chat and to generate our change logs from merged pull requests. We want to: - * Rewrite the tooling in TypeScript; - * ~Improve the changelog generation getting more information from the PRs like description, images, etc;~ \(already done\) - * Accept a new format of PR titles \(conventional changelog\); - * Add a validation system for PRs titles via GitHub Actions; - * Add a tooling to preview the generated changelog for the PR - * Add new top level of separation for product type \(like Enterprise and Community\) based on labels - -### Add Support for Bixby - -* **Mentors**: @ashish.jha @prajval.raval1 -* **Project repository**: [https://github.com/RocketChat/alexa-rc-multiserver-client](https://github.com/RocketChat/alexa-rc-multiserver-client) -* **Description**: Last year we explored the possibilities of having a Rocket.Chat Amazon Alexa Skill and a Rocket.Chat Action on Google. This project should aim to explore adding a Samsung Bixby Capsule for Rocket.Chat. Bixby is a next-generation, conversational assistant platform that was created to help users get things done in a more efficient, personalized and natural way. The way Bixby focuses on a multimodal approach from the very start could help eliminate the nuances involved in building an intricate voice-only experience. -* **Desirable Skills**: Familiarity with VUI/Bixby development. Experience with interfacing external sources and systems into Alexa skills. Passion for global conversational interaction enablement. Familiarity with Javascript ideal. - -### Apps-CLI: Generate boilerplate components - -* **Mentors**: @douglas.gubert @shiqi.mei -* **Description**: Add commands to the Rocket.Chat Apps-CLI that generate the boilerplate needed to add new components to the app being developed, such as Slash commands, API endpoints, etc. -* **Desirable Skills**: Experience with Javascript and familiarity with Typescript. - -### Nextcloud Video Management - -* **Mentors**: @guilherme.gazzo -* **Description**: Add the ability to manage and access recorded and previously live streamed video within the Rocket.Chat integrated Nextcloud environment. Similar to Youtube but with a chat-centric access interface. -* **Desirable Skills**: Familiarity with Rocket.Chat and Nextcloud development. Deep understanding of current digital streaming and recorded media standards a big plus. - -### Apple Watch App - -* **Mentors**: @djorkaeff.alexandre @diego.mello -* **Description**: Create an Apple Watch application that replicates the most basic features we have in our iOS mobile client, such as viewing the chat rooms and reading the messages. Let the user ask Siri to read the latest messages, send messages or respond to a message. -* **Desirable Skills**: Familiarity with WatchKit development on WatchOS & SiriKit, Familiarity with React Native. - -### Target official/experimental Mobile apps using GitHub Actions \(CI\) - -* **Mentors**: @djorkaeff.alexandre @diego.mello -* **Description**: Create build of our 4 apps on GitHubCI, 2 Android Apps and 2 iOS Apps \(Official and Experimental\). -* **Desirable Skills**: Familiarity with React Native, FastLane, Android & iOS build apps. - -## Timeline - -{% embed url="https://developers.google.com/open-source/gsoc/timeline" caption="" %} - diff --git a/contributors/google-summer-of-code/google-summer-of-code-2021.md b/contributors/google-summer-of-code/google-summer-of-code-2021.md deleted file mode 100644 index 18fa6fc745..0000000000 --- a/contributors/google-summer-of-code/google-summer-of-code-2021.md +++ /dev/null @@ -1,334 +0,0 @@ -# Google Summer of Code 2021 - -[![Google Summer of Code 2020](https://github.com/Sing-Li/bbug/raw/master/images/gsoclogo.jpg)](https://summerofcode.withgoogle.com/) - -### Update August 21, 2021 - -All 15 of our projects continued smoothly during these final weeks of the GSoC 2021 program. Students and mentors worked hard together to finalize the \(now it has become a tradition\) [ Rocket.Chat GSoC 2021 Project Demos](https://www.youtube.com/playlist?list=PLee3gqXJQrFXGRepCnOATldI6q-bCsaLB) This is the very first time for some students, to present in front of a group. And the audience this year is up to **120** Rocket.Chat community and team members, as well as fellow GSoC 2021 colleagues and mentors. - -This week, students are preparing for their final GSoC submission and final mentor evaluation. Next week, mentors will start their final evaluation. - -### Update July 11, 2021 - -Due to sudden departure of an active mentor, we are in jeopardy of losing two key projects for the year. Thankfully two heroines from Rocket.Chat's own Agile Planning and UI/UX team came forward and, together with mentors from our front-end team, saved the day for these projects. The new mentors assignments are now reflected on these two projects. - -| Student | Project | Mentors | -| :--- | :--- | :--- | -| Ghulam Ghous | Omnichannel Project: Live Chat Widget - Accessible ModeL | Leticia Peuser, Tasso Evangelista | -| Dhruv Jain | Introduce Audio calls to LiveChat | Murtaza Patrawala, Gabriel Henriquesz | - -The unsung heroine here is Aline Nunes, our senior Agilist, without whose help the last minute mentors re-assignment would not have been possible. - -### Update June 25th 2021 - - -Community bonding period is now officially over. Coding has officially began on all projects. Students are working towards the July 12 first evaluations. - -To accommodate another highly qualified student, and keen interests from mentors, our long time community partner Credit Suisse APAC has sponsored an additional project. This brings our total number of projects this season to **15**. - -| Student | Project | Mentors | -| :--- | :--- | :--- | -| Priya Bihani | Image Manipulation: Editing / Cropping on Upload | Gabriel Henriques, Tasso Evangelista, Vibha Chawla | - -### Update May 20th 2021 - -2021 is an incredible year for GSoC at Rocket.Chat. Thanks to the enthusiastic early support from students and community \(mentors\), Google has graciously granted us **TWELVE** project slots. The [official listing](https://summerofcode.withgoogle.com/organizations/5243748067311616/?sp-page=2) of students selected for these 12 projects is now published. - -We are delighted to welcome these 12 active community members to work with us during the GSoC 2021 season: - -| Student | Project | Mentors | -| :--- | :--- | :--- | -| Ghulam Ghous | Omnichannel Project: Live Chat Widget - Accessible Mode | Leticia Peuser | -| Kartik Gupta | Speech-to-Text | Marcelo Schmidt | -| Darshil Patel | Introducing Ephemeral Channels in Rocket.Chat | Kevin Aleman | -| Yash Rajpal | App: Bad-Words Filter | Douglas Guebert | -| Dhruv Jain | Introduce Audio calls to LiveChat | Murtaza Patrawala | -| Anant Bhasin | E2E Testing for Android in Rocket.Chat.ReactNative | Diego Mello | -| Rahul Halder | Voice Channels | Douglas Fabris | -| Aditya Mitra | Out Of Office Settings with an Assigning Deputy | Amol Babu, Asrar Zaman | -| Jean Staquet | Task Channels | Pierre Lehnen | -| Adithya Vardhan | Channels Discovery | Martin Schoeler | -| Rohan Lekhwani | Poll App Mega Extensions | Ramkumar KB | -| Allan Juan | Language Power Tools | Rodrigo Nascimento | - -Even with the generous slot assignment this year, it is still a very difficult decision for many mentors to select from the large number of highly qualified students \(we were able to engage the students early on in the GSoC cycle with open source contributions via the [GSoC Leaderboard](https://gsoc.rocket.chat) ; with **219 participating students**, **61 students with contributions**, **21 code committers**, working on **196 Merged PRs**, **231 Open PRs**, and **290 Issues** so far\). Several high calibre open source contributors were left out and not selected for GSoC; to accommodate these exceptional students, Rocket.Chat has arranged to sponsor an **additional TWO** projects this season. - -| Student | Sponsored Project | -| :--- | :--- | -| Sumukha Hegde | New statuses for user actions/events \(Typing 2.0\) | -| Deepak Agarwal | Introduce Video calls to LiveChat | - -All verified students are now interacting with their mentors and the greater Rocket.Chat community during the community bonding phase of the 2021 GSoC season. - -### Update April 15th 2021 - -We are having a phenomenal Google Summer of Code season this year, participation from students is at an all-time-high. The enthusiasm and aptitude of student applicants have also improved over prior years. - -In our [24 x 7 GSoC 2021 channel ](https://open.rocket.chat/channel/gsoc2021)- we have over **473 mentors, alumni and students** collaborating actively on GSoC projects. On our[ GSoC leaderboard](https://gsoc.rocket.chat), we are tracking **219 students** actively contributing code to the Rocket.Chat open source ecosystem. As of today, we have welcomed **17 new code committers** to our projects. With a total of **138 merged PRs**, **182 open PRs,** and **246 issues** raised by GSoC 2021 students so far. - -To rally student spirit and assist them in creating their proposal, we organized an [Alumni Re-union Summit](https://community.rocket.chat/events/gsoc2021.html) where we invited former Rocket.Chat GSoC Alumni from all previous years to share tips with this year's GSoC students. More than **20 students** attended throughout the day to enjoy the talks from **10 alumni and mentors**. Highlight talks included one from a Facebook engineer and a Brazilian open source movement champion. - -As of student application deadline on April 13th, Rocket.Chat has received a total of **98 proposals** from interested students. Mentors are now busy reviewing the proposals and continuing to keep the students engaged on contributing to the Rocket.Chat open source ecosystem. - -## How to apply - -Application for GSoC 2021 is now closed. - -Accepted student projects will be announced on **May 17th , 2021** - -Please see the [Official GSoC 2021 schedule ](https://developers.google.com/open-source/gsoc/timeline)for more timeline details. - -Students continue to interact with mentors actively on our 24 x 7 GSoC 2021 community channel: - -[https://open.rocket.chat/channel/gsoc2021](https://open.rocket.chat/channel/gsoc2021) - -## About GSoC 2021 - -For project ideas, check out our growing [list of ideas ](google-summer-of-code-2021.md#project-ideas)for some inspiration. - - Meet our global **community of 470+ mentors and students** for GSoC 2021 and get some real-time help on the next steps. Please visit our 24 x 7 community server channel: - -[https://open.rocket.chat/channel/gsoc2021](https://open.rocket.chat/channel/gsoc2021) - -For offline discussions, we have a discussion forum: - -[https://forums.rocket.chat/t/about-the-gsoc2021-category/10335](https://forums.rocket.chat/t/about-the-gsoc2021-category/10335) - -If you have ideas and proposals that are not on our ideas list, or if a mentor is not available, please email to: - -gsoc@rocket.chat - -Interested students are also encouraged to interact with our core team and contributor community on GitHub: - -[https://github.com/RocketChat/Rocket.Chat](https://github.com/RocketChat/Rocket.Chat) - -[https://github.com/RocketChat/Rocket.Chat.ReactNative](https://github.com/RocketChat/Rocket.Chat.ReactNative) - -[https://github.com/RocketChat/Rocket.Chat.Electron](https://github.com/RocketChat/Rocket.Chat.Electron)[ ](https://github.com/RocketChat/Rocket.Chat.ReactNative) - -## Project Ideas - -### Out of office settings with assigning deputy - -* **Mentors:** [@amol.babu](https://open.rocket.chat/direct/amol.babu), [@asrar](https://open.rocket.chat/direct/asrar) -* **Description:** The project's focus is to solve a very common but problem relating to Out of office functionality in Chat. - - **The goal:** - - * Any user can create out-of-office settings in Rocket.Chat by giving from and to date with the auto-reply message. - * User should be able to select the channels which would receive the out of office notification. - * The out-of-office notification should only be sent once for the first incoming message. - * The user can also define his deputy from the list of eligible users. - * At the time of out of office, the selected deputy will be automatically added to channel and can reply on behalf of main user. - * After the out-of-office time ends, the deputy should be auto removed from the channel. - -* **Desirable Skills:** Familiarity with Rocket.Chat, nodeJS, Experience with ReactJS. Must have database skills, ideally MongoDB. - -### Ephemeral messages - -* **Mentors:** [@kevin.aleman](https://open.rocket.chat/direct/kevin.aleman) -* **Description:** This project aims to create a channel in which the messages sent will vanish after a configured amount of time. This would be a room \(channel\) setting where you can define how long the messages will last. Messages from here cannot be retrieved after its deletion, and the deletion cannot be deactivated, just postponed. -* **Desirable skills:** Familiarity with JS Full Stack web app development. Experience with MongoDB and PM2 are ideal. - -### Voice Channels - -* **Mentors**: [@douglas.fabris](https://open.rocket.chat/direct/douglas.fabris), [@pierre.lehnen](https://open.rocket.chat/direct/pierre.lehnen) -* **Description**: The ability to create voice channels would allow users to quickly enter and leave pre-existing voice calls from Rocket.Chat's own UI, enabling a more practical usage of audio features for team collaboration. This project would add the UI elements and integrate them with an established audio platform to handle the calls. -* **Desirable Skills**: Familiarity with nodeJS full-stack web app development. - -### Decentralized Storage Integration - -* **Mentors:** [@murtaza.patrawala](https://open.rocket.chat/direct/murtaza.patrawala) -* **Description:** The goal of this project is to add new decentralized P2P-based storage providers within [Rocket.Chat](http://rocket.Chat). Decentralized solutions not only provide more security but are also more cost-effective. Some examples of decentralized solutions include Filecoin, Saicoin, Storj, etc. Via this project, the files uploaded on Rocket.Chat should be stored on the decentralized network, and the uploaded files should be accessible within Rocket.Chat. -* **Desirable Skills**: Familiarity with nodeJS full-stack web app development. Experience with [Rocket.Chat](http://rocket.Chat) codebase and/or with any of the decentralized solution providers is ideal. - -### Omnichannel: Help Center - -* **Mentors:** [@murtaza.patrawala](https://open.rocket.chat/direct/murtaza.patrawala) -* **Description:** This project aims to add a Help Center within the Omnichannel Domain of Rocket.Chat. This will allow the creation of content that will answer people’s simple questions faster. This project's focus would be to provide an interface to create content \(similar to how we can create an article on a Blogging platform like Medium\) and then allow users/agents and customers to search within these contents, quickly answering their questions. This project will add a self-serve support layer that will help with scaling by automatically resolving repetitive questions with the help of such articles and guides, leading to faster answers for the customers and fewer questions to users/agents. -* **Desirable Skills**: Familiarity with nodeJS full stack web app development. Experience with ReactJS is ideal. - -### Apps-Engine E2E Testing - -* **Mentors:** [@lolimay](https://open.rocket.chat/direct/shiqi.mei), [@govind.dixit](https://github.com/GOVINDDIXIT) -* **Description:** This project aims to improve Apps-Engine end-to-end testing by adding more testing cases. The Apps-Engine APIs should be covered as much as possible to ensure that APIs tested are working. This project requires you to work across multiple repos \([Rocket.Chat](https://github.com/RocketChat/Rocket.Chat) and [Apps-Engine](https://github.com/RocketChat/Rocket.Chat.Apps-engine)\). - - Checkout these links for the context: - - * [Apps-Engine E2E Testing GitHub Workflow](https://github.com/RocketChat/Rocket.Chat.Apps-engine/pull/366) - * [Apps-Engine E2E Testing Folder on Rocket.Chat side](https://github.com/RocketChat/Rocket.Chat/tree/develop/tests/end-to-end/apps) - -* **Desirable Skills:** Familiarity with JavaScript. Experience with TypeScript and end-to-end testing is better. - -### Poll App Mega Extensions - -* **Mentors:** [@ramkumar.kb](https://open.rocket.chat/direct/ramkumar.kb), [@diego.sampaio](https://open.rocket.chat/direct/diego.sampaio) -* **Description:** The[ poll app](https://github.com/RocketChat/rocket.chat.app-poll) already allows anyone to create engaging rich interaction polls within any chat room. This project aims to expand its scope and capabilities hugely: making it a tool for enhancing participant's engagement with interactive quizzes/trivia / live-polls. - - Some initial ideas include: - - * Better bar-graph visualization for the responses \(with a switch for anonymous responses - so 3 types: Open / Confidential / Mixed\) - * Ability to add user options in the poll response and show the response of those responses in a visual way \(e.g., word-cloud\) - * Ability to create different types of polls \(e.g., 1-to-5, Agree/Disagree, Overrated/Underrated\) - * Ability to add emoticons on the response options - * Ability to create `/poll live` or `/live-poll` feature - it has 2 parts \(prepare a set of questions beforehand and retrieve it just before the live poll starts. During the live-poll, a countdown timer for each question is shown, and upon completion, the responses are shown visually\) a.k.a. multi-question version of the single poll feature - * \(Stretch Goal\) Ability to download the `live-poll` response, once the poll is over - * Enhance[ UIKit](https://docs.rocket.chat/apps-development/uikit) if needed to meet the above goals - -* **Desirable Skills:** The sky is _not even the limit_ for this project. We will need a hot-shot all round challenge-loving student already familiar with JavaScript, TypeScript, React,[ current poll-app codebase](https://github.com/sampaiodiego/rocket.chat.app-poll) and [Rocket.Chat + Fuselage codebase](https://github.com/RocketChat/Rocket.Chat.Fuselage). - -### **Language Power Tools** - -* **Mentors:** [@rodrigo.nascimento](https://open.rocket.chat/direct/rodrigo.nascimento) -* **Project Channel:** [https://open.rocket.chat/channel/88mhz95ppbsncn4pk](https://open.rocket.chat/channel/88mhz95ppbsncn4pk) -* **Project Repository:** [https://github.com/RocketChat/Rocket.Chat](https://github.com/RocketChat/Rocket.Chat) -* **Desirable Skills:** JavaScript / TypeScript -* **Description:** Create internal scripts to extract translation strings from the source code and give some options: - * Check if all strings are translated in the target languages \(en by default\) - * List strings present in the target language that are not in the code anymore - * Option to render a completion chart for all languages - * Option to remove strings from all languages based on a target one - * Option to import missing strings into the target language to easily add translations - * Integrate the script on CI to block PR from merge if there are new strings without translations - -### Introduce Video and Audio calls to LiveChat - -* **Mentors**: [@rafaelferreira](https://open.rocket.chat/direct/rafaelferreira), [@murtaza.patrawala](https://open.rocket.chat/direct/murtaza.patrawala) -* **Description:** The outcome expected from this project is to support Video and Audio calls in one of the native Omnichannel entry points called [LiveChat](https://github.com/RocketChat/Rocket.Chat.Livechat). LiveChat is a small and lightweight application designed to provide B2C communication between Agents and website visitors. It is developed with [PreactJS](https://preactjs.com/), which means that any ReactJS developer will be able to implement the new features using [WebRTC](https://webrtc.org/) framework. -* **Desirable Skills**: Experience with JavaScript, ReactJS and WebRTC, and WebSocket API. - -### **App: Speech-to-Text** - -* **Mentors:** [@marcelo.schmidt](https://open.rocket.chat/direct/marcelo.schmidt) -* **Description:** This project aims to save a text version of audio in the file metadata. This should be done server-side upon receiving the audio. -* **Desirable Skills**: Familiarity with JavaScript and TypeScript. Knowledge in how to build Rocket.Chat Apps is a plus. - -### Channel Discovery - -* **Mentors:** [@martin.schoeler](https://open.rocket.chat/direct/martin.schoeler) -* **Description:** The idea is to add a page where you can discover new channels. This will allow users to find channels based on: Total number of users, number of messages, search for specific topics, if the channel has been trending lately, and any more ideas we can think of. The whole idea of this project is to improve communities using Rocket.Chat and add a sprinkle of social aspects to Rocket.Chat. -* **Desirable Skills**: Familiarity with JavaScript, React, and TypeScript. Knowledge in how to use Rocket.Chat fuselage is a plus. - -### Task Channels - -* **Mentors**: [@pierre.lehnen](https://open.rocket.chat/direct/pierre.lehnen), [@guilherme.gazzo](https://open.rocket.chat/direct/guilherme.gazzo) -* **Description**: This project aims to create a new kind of channel where instead of sending messages, users would be able to create task cards with several custom fields. Those tasks would then work as a thread header, allowing comments in the format of a thread. The basic additional information for a task message would be an assigned user and a status. The channel header should also list options to filter the tasks by those fields. -* **Desirable Skills**: Familiarity with nodeJS full stack web app development. Experience with ReactJS is ideal. - -### Image **Manipulation:** Editing/Cropping on Upload - -* **Mentors:** [@gabriel.henriques](https://open.rocket.chat/direct/gabriel.henriques) -* **Description:** This project aims to improve the Image upload feature, allowing users to crop images before sending it to a channel. Adding text and the possibility to draw on images could be implemented too. -* **Desirable Skills:** Experience with Javascript and React + Hooks. TypeScript is a plus. - -### App: Bad-Words Filter - -* **Mentors:** [@marcelo.schmidt](https://open.rocket.chat/direct/marcelo.schmidt) and [@douglas.gubert](https://open.rocket.chat/direct/douglas.gubert) -* **Description:** Rocket.Chat currently uses a third-party package to filter bad words. This poses a few problems, such as having to update the package every so often, having to check which words have been added or excluded in newer versions, and deciding if we would like to keep blocking or allowing words. This project is for building an App that can be enabled in our Marketplace to filter out a list of default bad words but will allow admins to add or delete words from that list. The app will need to cover the following requirements: - * Create a UI for managing the App settings - * Load a list of words from a URL - * Add/Remove words from a list - * Add/Remove channels where the bad words filtering is enabled \(with a toggle for "all channels"\) - * Provide statistics on blocked words and offending users - * Automatically deactivate users that go above a certain threshold -* **Desirable Skills**: Familiarity with JavaScript and TypeScript. Knowledge in how to build Rocket.Chat Apps is a plus. - -### **Houston Improvements - Rocket.Chat release/changelog generator** - -* **Mentors:** [@rodrigo.nascimento](https://open.rocket.chat/direct/rodrigo.nascimento) -* **Project Channel:** [https://open.rocket.chat/channel/2dxywf7577zxgzark](https://open.rocket.chat/channel/2dxywf7577zxgzark) -* **Project Repository:** [https://github.com/RocketChat/Rocket.Chat.Houston](https://github.com/RocketChat/Rocket.Chat.Houston) -* **Desirable Skills:** TypeScript, Git, Shell -* **Description:** Houston is the CLI tooling we use to release new versions of Rocket.Chat and generate our changelogs from merged pull requests. We want to: - * Rewrite the tooling in TypeScript - * Accept a new format of PR titles \(conventional changelog\) - * Add a validation system for PRs titles via GitHub Actions - * Add tooling to preview the generated changelog for the PR - * Add new top level of separation for product type \(like Enterprise and Community\) based on labels - * Support dependent repositories to import their changelogs, for example, import the changelogs of apps engine - -### Add a bundler to the Apps-Compiler - -* **Mentors**: [@douglas.gubert ](https://open.rocket.chat/douglas.gubert) -* **Description**: Currently, the Apps-Compiler package uses the bare TypeScript compiler to process apps' code and generate the JS version. This has some limitations, e.g. we can't "simply" bundle the whole app in a single file, we can't bundle npm packages, and so on. By changing this compiler into a proper bundler \(Webpack, Rollup, etc.\), we would have access to a richer ecosystem of tooling to handle the compilation process of Rocket.Chat Apps. -* **Desirable Skills**: JS/TS, familiarity with bundlers \(using them, not necessarily writing one\) would be interesting - -### **Stop notifications and Notifications schedule** - -* **Mentors:** [@rodrigo.nascimento](https://open.rocket.chat/direct/rodrigo.nascimento) -* **Project Channel:** [https://open.rocket.chat/channel/9nlxzwlfpcgzbfzl3](https://open.rocket.chat/channel/9nlxzwlfpcgzbfzl3) -* **Project Repository:** [https://github.com/RocketChat/Rocket.Chat](https://github.com/RocketChat/Rocket.Chat) -* **Desirable Skills:** JavaScript/TypeScript, React, React Native,, Rocket.Chat codebase -* **Description:** This feature consists of two new options for the end-users: - * **Stop Notifications:** A list of options to stop notifications for a certain time \(30min, 1h, 2h, 24h, custom date/hour\). - * **Notifications Schedule:** Option to configure \(in user's settings\) the availability time where notifications will be sent: - * With the option to configure for every day from X time to Y time - * With the option to configure for weekdays from X time to Y time - * With the option to configure X and Y times for each day of the week manually - * The same settings should be available for the workspace admin to configure a default value for all users - * The implementation should cover the web and mobile applications - -### **New statuses for user actions/events \(Typing 2.0\)** - -* **Mentors:** [@rodrigo.nascimento](https://open.rocket.chat/direct/rodrigo.nascimento), [@guilherme.gazzo](https://open.rocket.chat/direct/guilherme.gazzo) -* **Project Channel:** [https://open.rocket.chat/channel/mzbtnxgzodrofkxw8](https://open.rocket.chat/channel/mzbtnxgzodrofkxw8) -* **Project Repository:** [https://github.com/RocketChat/Rocket.Chat](https://github.com/RocketChat/Rocket.Chat) -* **Desirable Skills:** JavaScript/TypeScript, React, React Native,, Rocket.Chat codebase -* **Description:** Improve the current \`Typing\` functionality to support, on web and mobile applications, two new things: - * New properties to allow define new actions like \`recording\` or \`uploading\`, changing the current implementations to support and send those 2 new events and improve the end-user experience - * Support specifies a context for the typing, allowing it to be shown inside a thread when users are typing in that context instead of in the main room. - -### App: Global Translation - -* **Mentors:** [@marcelo.schmidt](https://open.rocket.chat/direct/marcelo.schmidt) -* **Description:** Rocket.Chat currently uses a package to provide message translations. This project aims to build that functionality on an app, thus reducing the codebase of Rocket.Chat and allowing for easier configuration. -* **Desirable Skills**: Familiarity with JavaScript and TypeScript. Knowledge in how to build Rocket.Chat Apps is a plus. - -### Community Collaboration Platform: Improvements - -* **Mentors:** [@sing.li](https://open.rocket.chat/direct/sing.li) [@murtaza.patrawala](https://open.rocket.chat/direct/murtaza.patrawala) -* **Description:** This is a chat and networking platform that helps to manage, grow and connect communities through messaging, content and discovery. This platform's aim to is to provide an easier way to collaborate over any Github, Gitlab, and other repository hosting services. The focus will be to add new features like User Management, Administration Module, etc. - also improve the current features, which add more advantages and provide a frictionless experience to all the fellow developers. -* **Desirable Skills**: Familiarity with nodeJS full stack web app development. Experience with ReactJS and ExpressJS is ideal. - -### Community Collaboration Platform: Discourse integration - -* **Mentors:** [@sing.li](https://open.rocket.chat/direct/sing.li) [@murtaza.patrawala](https://open.rocket.chat/direct/murtaza.patrawala) -* **Description:** This is a chat and networking platform that helps manage, grow and connect communities through messaging, content and discovery. The platform aims to provide an easier way to build a massive community collaborating over any Github, Gitlab, and other repository hosting services. The focus of this project will be to add tightly integrated support for Discourse, the leading open-source forum \(civilized discussion\) platform. -* **Desirable Skills**: Familiarity with nodeJS full stack web app development, and Ruby on Rails. Experience with Discourse and Discourse API programming a big plus. - -### **UiKit Playground** - -* **Mentors:** [@guilherme.gazzo](https://open.rocket.chat/direct/guilherme.gazzo), [@tasso.evangelista](https://open.rocket.chat/direct/tasso.evangelista) -* **Description:** Develop an application/playground that allows developers to test UiKit Blocks and Interactions. Should allow developers to generate code used by Rocket.Chat apps and edit the content to preview the result -* **Desirable Skills:** JavaScript/TypeScript - -### **Omnichannel: Livechat Widget Accessible Mode** - -* **Mentors:** [@rafaelferreira](https://open.rocket.chat/direct/rafaelferreira) -* **Project repository:** [https://github.com/RocketChat/Rocket.Chat.Livechat](https://github.com/RocketChat/Rocket.Chat.Livechat) -* **Desirable Skills:** Accessibility, React, SCSS -* **Description:** Omnichannel users, including users with visual disabilities, must be able to perceive content at the Livechat widget. The main idea here is to give some options to Livechat widget users to active "Accessible mode", which means: - * High contrast colors. - * Icons accompanying text. - * Bigger highlight over selected text or cursor active/hover using the "tab" key. - * Show a better solution when an Agent is typing. - * Etc - -### **Matrix Interoperability: migrating to native support** - -* **Mentors:** [@sing.li](https://open.rocket.chat/direct/sing.li) [@gabriel.engel](https://open.rocket.chat/direct/gabriel.engel) -* **Desirable Skills:** Familiarity with matrix.org protocol; skilled in rust, golang, and TypeScript development -* **Description:** Explore and improve existing Rocket.Chat to Matrix.org bridge\(s\) Investigate the current state of development in dendrite and hydrogen. Start the work on migrating to native support of the matrix protocols. - -### **Big Blue Button: replace embedded chat with Rocket.Chat** - -* **Mentors:** [@fcecagno](https://open.rocket.chat/direct/fcecagno) [@sing.li](https://open.rocket.chat/direct/sing.li) [@gabriel.engel](https://open.rocket.chat/direct/gabriel.engel) -* **Desirable Skills:** Familiarity with Big Blue Button; skilled in JavaScript, nodeJS and Meteor development -* **Description:** The embedded chat in Big Blue Button is already a Meteor based chat with a similar structure to Rocket.Chat. However, other components in Big Blue Button also depend on the same Meteor stack working against the same MongoDB instance for proper operations. This project aims to create the ability to integrate an existing Rocket.Chat server into Big Blue Button, replacing the existing embedded chat component. - -### **Channel's Calendar View** - -* **Mentors:** [@pierre.lehnen](https://open.rocket.chat/direct/pierre.lehnen) -* **Desirable Skills:** Familiarity with nodeJS full stack web app development. Experience with ReactJS is ideal. -* **Description:** Create a new option to see your activity in a channel in the format of a calendar, listing any action you had on each day. The listed actions would be things like: "joined discussion X", "created discussion Y", "sent messages on thread Z". This will help users find messages that they know they read/sent on a specific day but don't remember where. - diff --git a/contributors/how-can-i-help/README.md b/contributors/how-can-i-help/README.md deleted file mode 100644 index bd5352c672..0000000000 --- a/contributors/how-can-i-help/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# How can I help? - -## How can I help? - -There can help in multiple ways - even if you don't write code, you can still contribute. We are always looking for assistance with creating or updating documentation, testing our web, desktop, and mobile apps, and reporting bugs. - -**Developers** who wish to make contributions, please go [here](developing.md) to start. - -If you have found **security**, issue [report it](security/). - -Rocket.Chat is currently **translated** into more than twenty languages, but we've got a long way to go. If you'd like to assist us with this, please email our [translation team](mailto:translations@rocket.chat) to be invited to our [Lingohub](https://translate.lingohub.com) project. - -To help improve our **documentation**, please see [contribution guides](documentation/). - -**Bloggers and news writers**, feel free to [spread the word](promoting.md)! - -## Contributor Covenant Code of Conduct - -This project adheres to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to team@rocket.chat - diff --git a/contributors/how-can-i-help/developing.md b/contributors/how-can-i-help/developing.md deleted file mode 100644 index 0f7cf18ded..0000000000 --- a/contributors/how-can-i-help/developing.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -permalink: /contributing/developing/ -official: true ---- - -# Developing - -First of all, thank you for your interest in contributing to Rocket.Chat. If this is the first Open Source project you will contribute to, we strongly suggest reading GitHub's excellent guide ["Contributing to Open Source"](https://guides.github.com/activities/contributing-to-open-source/). - -## Getting Started - -You can find our projects [here](https://github.com/RocketChat). Go to the Issues tab, and when you find something you would like to work on, just comment on it, and we will add an [In Progress label](https://github.com/RocketChat/Rocket.Chat/labels/stat%3A%20in%20progress). - -If you already have a work in progress pull request open for that issue, you can link that issue on your pull request or write `Closes #ISSUE_NUMBER` where the `ISSUE_NUMBER` is the number at the end of the link URL. - -**Assigned Issues:** - -Sometimes you'll stumble upon issues that have an Assignee. Assignees are trusted people that are responsible for that issue \(usually core team members\). - -But that doesn't mean you can't contribute! Every issue is open, and any help is welcome. Feel free to work on anything you want. You are encouraged to discuss your progress with the community in the comments, it doesn't mean other people can't work on it. Don't be discouraged from tackle something you feel like doing. - -**Where to Find Tasks:** - -Want a simple task to get you started? [We maintain a list of those](https://github.com/RocketChat/Rocket.Chat/labels/contrib%3A%20easy)! Or search for issues tagged contrib:easy - -Check our [developer guides]() for more detailed information about pull requests, workflow, and API docs. - -## Priority Features and/or Bug fixes - -If you want a feature or bug fix to be developed with a higher priority: - -* [Contact us directly](https://rocket.chat/contact) to sponsor its development -* [Add a bounty](https://www.bountysource.com/teams/rocketchat) to it - diff --git a/contributors/how-can-i-help/documentation/README.md b/contributors/how-can-i-help/documentation/README.md deleted file mode 100644 index db31b14348..0000000000 --- a/contributors/how-can-i-help/documentation/README.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -description: >- - Here you will find all that you need to know to start contributing to - Rocket.Chat documentation. ---- - -# Documenting - -First of all, thank you for your interest in contributing to Rocket.Chat Docs. If this is the first Open Source project you will contribute to, we strongly suggest reading GitHub's excellent guide: - -{% embed url="https://opensource.guide/how-to-contribute/" %} - -## Finding something to work on - -You can find a list of issues [here](https://github.com/RocketChat/Rocket.Chat.Docs/issues). When you find something you would like to work on just comment on it and we will add an **In Progress** label. - -## Creating a new Pull Request - -### Requirements - -When you create a new pull request, we expect some requirements to be met. - -* Follow this naming convention for Pull Requests: - * When adding new documentation, add _**New Documentation:**_ before the title. E.g. `New Documentation: Authentication Guide` - * When fixing documentation, add _**Fix Documentation:**_ before the title. E.g. `Fix Documentation: Authentication Guide` - * When updating documentation, add _**Update Documentation:**_ before the title. E.g. `Update Documentation: Authentication Guide` -* If your Pull Request closes an issue you need to write `Closes #ISSUE_NUMBER` where the `ISSUE_NUMBER` is the number at the end of the link URL that will link your pull request to the issue, when merged will close that issue. -* For each pull request made, we run tests to check if there are any broken links. You can find how to run these tests locally [here](https://docs.rocket.chat/developer-guides/testing/#testing). - -### Creating Drafts - -When you create a new feature but for some reason can't create a full-fledged documentation pull request, you can create a `draft` with is a single file pull request with critical information needed to create the desired documentation, after creating the draft, the documentation team will edit the pull request to suit the documentation standards. - -* [New Feature Template](new-feature-draft.md) -* [Feature Change Template](feature-change-draft.md) - -### Testing Changes - -To test your changes you have 2 options: - -#### OPTION 1: Fork and use GitBook - -Simply fork our docs repository, [create a space](https://docs.gitbook.com/getting-started/quick-start) and activate the [GitHub Integration](https://docs.gitbook.com/integrations/github) on your fork. - -#### OPTION 2: Run it locally - -{% hint style="info" %} -We do not recommend this method since GitBook CLI is deprecated and it takes a long time to build. -{% endhint %} - -When making small changes like typos and such, there is no problem editing the file directly on GitHub, but if you are making bigger changes or adding new files to the docs, we recommend following this workflow - -Install GitBook's client package using NPM. - -``` -npm install -g gitbook-cli -``` - -After that you need to build the documentation, from the root of the docs folder do: - -``` -gitbook build . -``` - -This will generate a folder called "\_book" with the built docs. - -Then serve the buildt book using: - -```text -gitbook serve . -``` - -This will serve the book to the url `http://localhost:4000/` - -Find out more on [GitBook Cli's repository](https://github.com/GitbookIO/gitbook-cli) - -## Community Maintainers - -We are looking for community maintainers for the Rocket.Chat documentation. Maintainers will be added to a special team with write permissions. These permissions consist of opening, closing, tagging, and editing issues and pull requests, create and delete non-protected branches on the docs repository. - -The responsibilities of a maintainer are: - -### Issue Triage - -* **Labeling issues:** Label issues accordingly. -* **Finding Duplicates:** finding and closing duplicate issues. -* **Closing irrelevant/inappropriate issues:** Closing issues that are no longer needed, that are not relevant to the project, and/or don't follow the issues guidelines. -* **Doing first-level contact:** Getting more information on the issues \(like version number or asking for clarification\) and closing them if they aren't relevant or if a question made by the maintainer wasn't answered in 2 days. - -### Help with Contribution - -* **Help Manage Pull Requests:** help the author of the pull request with any problems \(like tests failing due to markdown problems on the pull request\) -* **Contributing!** Create pull requests to help maintain the documentation - diff --git a/contributors/how-can-i-help/documentation/documentation-map/README.md b/contributors/how-can-i-help/documentation/documentation-map/README.md deleted file mode 100644 index 34b96edfe4..0000000000 --- a/contributors/how-can-i-help/documentation/documentation-map/README.md +++ /dev/null @@ -1,510 +0,0 @@ ---- -description: Documentation Status Map ---- - -# Status Map - -This is a map of all of the Rocket.Chat Documentation articles - -Here you can also find what articles are incomplete and missing. - -Red Colored Text means that this article is missing from the documentation and need to be added. - -Orange Colored Text means that this article is in the documentation but is incomplete or outdated. - -span.missing { color: red; } - -span.missing a { color: red; } - -span.incomplete { color: orange; } - -span.incomplete a { color: orange; } - -* Contributing - * Developing - * Google Summer of Code - * Promoting - * Reporting Issues - * Security: - * Responsible Disclosure Policy - * Translating -* Getting Support -* Installation: - * Rocket.Chat Cloud - * PaaS Deployments: - * Aliyun - * AWS - * Cloudron.io - * Digital Ocean - * DPlatform - * Galaxy - * Google Computer Engine - * Heroku - * IBM Bluemix - * IndieHosters - * Koozali - * Layershift - * OpenShift - * Oracle - * ReadySpace - * Sandstorm.io - * Scalingo - * Sloppy.io - * Docker containers: - * Generic Linux - * systemd - * High Availability Install - * Available Images - * Docker Compose - * Manual Installation: - * CentOS - * Debian - * MacOSX - * Multiple Instances to Improve Performance - * Migrating Meteor Mongo - * OpenSUSE - * [RedHat](missing-and-outdated-list.md#redhat) - * Ubuntu: - * Snaps: - * AutoSSl - * Mongo Options - * Configuring SSL Reverse Proxy - * PM2, Systemd, Upstart - * Running in a sub folder - * Automation tools: - * Ansible - * Openshift - * Vagrant - * Mobile and Desktop Apps - * [Updating](missing-and-outdated-list.md#updating) - * From 0.x.x to 0.40.0 - * Minimum Requirements - * Community Supported Install: - * FreeBSD - * Universal - * Windows 10 Pro - * Windows Server: -* User guides: - * Connecting to a Server - * Registration - * Login - * Channels - * Messaging - * Channel Actions - * Managing your Account - * Voice and Video Calls -* Administrator guides: - * Account Settings - * [Analytics](missing-and-outdated-list.md#analytics) - * [Auto Translation](missing-and-outdated-list.md#auto-translation) - * Authentication: - * CAS - * Ldap - * [Oauth](missing-and-outdated-list.md#oauth) - * SAML - * [WordPress](missing-and-outdated-list.md#wordpress) - * [Custom Oauth](missing-and-outdated-list.md#custom-oauth) - * [Using Rocket.Chat as an Oauth provider](missing-and-outdated-list.md#using-rocketchat-as-an-oauth-provider) - * [oauth2 o365](missing-and-outdated-list.md#oauth2-o365) - * [Customizing the UI](missing-and-outdated-list.md#customizing-the-ui): - * [Layout](missing-and-outdated-list.md#layout) - * [Assets](missing-and-outdated-list.md#assets) - * Custom Emoji - * Custom Fields - * Custom Sounds - * Database-Migration - * Email: - * Setup - * Editing Emails Content - * Mailer - * Direct Reply - * File Upload: - * Amazon S3 - * Google Cloud Storage - * Minio - * [GridFS](missing-and-outdated-list.md#gridfs) - * [Local File System](missing-and-outdated-list.md#local-file-system) - * [General Settings](missing-and-outdated-list.md#general-settings) - * [General Section](missing-and-outdated-list.md#general-section) - * [Message Section](missing-and-outdated-list.md#message-section) - * Hubot - * Import: - * HipChat: - * CSV - * [Cloud](https://github.com/RocketChat/docs/tree/2aa90e0523ba4de4b8aa76d85bc6694671de8a03/contributing/documentation/missing-and-outdated-list/index.html) - * Enterprise - * Slack: - * SlackBridge - * Integrations: - * Zapier: - * Using Zaps - * Azure Alerts - * BitBucket - * Giphy - * GitHub - * GitLab - * Google-Calendar - * Guggy - * Jenkins - * Jira - * NewRelic - * nixstats - * Osticket - * PagerDuty - * Prometheus - * ReviewBoard - * RunDeck - * Sentry - * Telegram - * Travis CI - * Trello - * uptimerobot - * Jitsi Video Bridge - * Livechat: - * Livechat Queues - * Notifications: - * Push Notifications - * Permissions - * Plug-ins: - * Drupal - * Pidgin - * Create the First Admin - * Restoring an Admin - * Settings Via Env Vars -* Developer guides: - * Quick Start - * Branches and Releases - * Client Compatibility Matrix - * Code Styleguide: - * [Less](missing-and-outdated-list.md#less) - * Deeplink - * Deprecation - * Iframe Integration: - * [Authentication](missing-and-outdated-list.md#authentication) - * Commands - * Events - * Embedded Layout - * [Internationalization](missing-and-outdated-list.md#internationalization) - * Livechat API - * Mobile Apps - * Supporting SSL - * Realtime-API: - * Method Calls: - * Login - * Logout - * Register User - * Get User Roles - * List Custom Emoji - * Load History - * Get Room Roles - * Get Subscriptions - * Get Rooms - * Get Public Settings - * Get Permissions - * User Presence - * Notify Room Stream - * Create Direct Message - * Send Message - * Delete Message - * Update Message - * Pin Message - * Unpin Message - * Set Reaction - * Create Channels - * Create Private Groups - * Delete Rooms - * Archive Rooms - * Unarchive Rooms - * Joining Channels - * Leaving Rooms - * Hiding Rooms - * Opening Rooms - * Favoriting Rooms - * Save Room Settings - * Subscriptions: - * Stream Notify All - * Stream Notify User - * Stream Notify Room - * Stream Room Messages - * The Message Object - * The Room Object - * Livechat API: - * getInitialData - * registerGuest - * sendMessageLivechat - * sendOfflineMessage - * Rest API: - * Assets: - * setAsset - * unsetAsset - * Authentication: - * facebook - * forgotPassword - * google - * login - * logout - * me - * twitter - * AutoTranslate: - * getSupportedLanguages - * saveSettings - * translateMessage - * Channels: - * addAll - * addLeader - * addModerator - * addOwner - * anonymousread - * archive - * close - * counters - * create - * delete - * files - * getAllUserMentionsByChannel - * getIntegrations - * history - * info - * invite - * join - * kick - * leave - * list.joined - * list - * members - * moderators - * messages - * online - * open - * removeLeader - * removeModerator - * removeOwner - * rename - * roles - * setAnnouncement - * setCustomFields - * setDefault - * setDescription - * setJoinCode - * setPurpose - * setReadOnly - * SetTopic - * setType - * unarchive - * Chat: - * delete - * followMessage - * getDeletedMessages - * getDiscussions - * getMentionedMessages - * getMessage - * getMessageReadReceipts - * getPinnedMessages - * getSnippetedMessages - * getSnippetedMessageById - * getStarredMessages - * getThreadMessages - * getThreadsList - * pinMessage - * postMessage - * react - * reportMessage - * search - * starMessage - * sendMessage - * syncThreadMessages - * syncThreadsList - * unfollowMessage - * unPinMessage - * unStarMessage - * update - * ignoreUser - * Commands: - * get - * list - * run - * Custom Sounds: - * list - * Custom User Status: - * list - * Emoji Custom: - * create - * delete - * list - * update - * Groups: - * addAll - * addLeader - * addModerator - * addOwner - * archive - * close - * counters - * create - * delete - * files - * getIntegrations - * history - * info - * invite - * kick - * leave - * list - * listAll - * members - * messages - * moderators - * open - * removeLeader - * removeModerator - * removeOwner - * rename - * roles - * setAnnouncement - * setCustomFields - * setDescription - * setPurpose - * setReadOnly - * SetTopic - * setType - * unarchive - * Im: - * close - * counters - * create - * files - * history - * list.everyone - * list - * members - * messages - * messages.others - * open - * setTopic - * Integration: - * create - * get - * history - * list - * remove - * Invites: - * findOrCreateInvite - * listInvites - * removeInvite - * useInviteToken - * validateInviteToken - * Livechat: - * agent - * appearance - * config - * custom-fields - * department - * inquiries - * integrations.settings - * message - * office-hours - * room - * rooms - * sms-incoming - * triggers - * users - * video-call - * Miscellaneous: - * directory - * info - * shield.svg - * spotlight - * statistics - * statistics.list - * OAuthApps: - * get - * list - * Permissions: - * list-all - * update - * Roles: - * addUserToRole - * create - * getUsersInRole - * list - * sync - * Push: - * push.token - * deletePushToken - * Rooms: - * adminRooms - * cleanHistory - * createDiscussion - * favorite - * get - * getDiscussions - * info - * leave - * saveNotification - * upload - * Settings: - * get - * update - * oauth - * Subscriptions: - * get - * getOne - * read - * unread - * Users: - * presence - * create - * createToken - * deactivateIdle - * delete - * deleteOwnAccount - * forgotPassword - * generatePersonalAccessToken - * getAvatar - * getPersonalAccessTokens - * getPresence - * get-preferences - * getStatus - * getUsernameSuggestion - * info - * list - * regeneratePersonalAccessToken - * register - * removeOtherTokens - * removePersonalAccessToken - * requestDataDownload - * resetAvatar - * setAvatar - * set-preferences - * setActiveStatus - * setStatus - * update - * updateOwnBasicInfo - * Video Conference: - * jitsi-update-timeout - * Webdav: - * getMyAccounts - * Offset and Count and Sort Info - * Rate Limiter - * Query and Fields Info - * Personal Access Tokens - * [Schema Definition](missing-and-outdated-list.md) - * [Testing](missing-and-outdated-list.md) - * Troubleshooting - * UI and Theming: - * Colors - * Components - * Themes -* Bots: - * Bots FAQ - * Bots Architecture - * Creating Bot Users - * Configure Bot Environment - * Running a bBot Bot - * Running a Hubot Bot - * Running a Botkit Bot - * Running a Rasa Bot - * Running a Botpress Bot -* Community Cookbook: - * Remote Video Monitoring - diff --git a/contributors/how-can-i-help/documentation/documentation-map/missing-and-outdated-list.md b/contributors/how-can-i-help/documentation/documentation-map/missing-and-outdated-list.md deleted file mode 100644 index 993a16452e..0000000000 --- a/contributors/how-can-i-help/documentation/documentation-map/missing-and-outdated-list.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -description: In depth missing articles list ---- - -# Missing Articles - -This list is a complement of the [Documentation Map](./). - -All the missing and outdated articles on the documentation map will be listed and linked to here. - -These items are not in any particular order. - -## Internationalization - -This article is empty. There we should explain how to use the `i18n` system to handle the translations of Rocket.Chat. - -## Testing - -In this article we explained how to start the end to end and unit tests in Rocket.Chat. We need to add instructions on how to create new tests for new features. - -## Less - -This style guide needs to be converted to CSS, since the base is almost the same. - -## GridFS - -Tell how the GridFS file storage mode works and how to configure it. - -## Local File System - -Tell how the GridFS file storage mode works and how to configure it. - -## Updating - -Add more updating guides for different environments. - -## RedHat - -This section should be completed with the details on how to install Rocket.Chat on RedHat. - -## Releases - -Decide to either remove or complete this article. - -## Hipchat Cloud - -Add instructions on how to import data from a cloud hosted hipchat. - -## Schema Definition - -Add more details on what is this doc about. - -## Wordpress - -Explain how the Wordpress Authentication works and how to set it up. - -## Authentication - -Add a little introduction and a list of links for the articles inside this folder. - -## Analytics - -Add instructions on how to set up analytics on Rocket.Chat using the `Analytics` section of settings. - -## Customizing the UI - -Create a new section containing all the guides about customizing the ui using Rocket.Chat settings. - -## Layout - -Create a guide on how to use the `Layout` setting section to customize some ui aspects of Rocket.Chat. - -## Assets - -Create a guide on how to add assets \(images, like favico and logos across the app\) to Rocket.Chat. - -Also Explain what each asset size will change. - -## General Settings - -Create a new section Containing all the new guides about settings that alter the general behavior of Rocket.Chat. - -## General Section - -Create a guide on how to use the `General` setting section. - -## Message Section - -Create a guide on how to use the `Message` setting section. - -## Oauth - -Missing meteor Oauth section. - -## Auto Translation - -Create a guide on how to set up auto translation and use it. - -## Custom Oauth - -Create a guide on how to create custom oauth apps. - -## Using Rocket.Chat as an Oauth provider - -Create a guide on how to use Rocket.Chat as an Oauth provider. - -## Oauth2 O365 - -Create documentation on how to use oauth2 o365 authentication service with Rocket.Chat. You can find info on this issue [https://github.com/RocketChat/Rocket.Chat/issues/6809](https://github.com/RocketChat/Rocket.Chat/issues/6809) - diff --git a/contributors/how-can-i-help/donate.md b/contributors/how-can-i-help/donate.md deleted file mode 100644 index 69b8bbd085..0000000000 --- a/contributors/how-can-i-help/donate.md +++ /dev/null @@ -1,8 +0,0 @@ -# Donate - -Rocket.Chat will be free forever, but you can help us speed up the development! - -[![Donate](https://camo.githubusercontent.com/361950b331ef676b7eec436a4dbe5a7ce47211a6623dcc889b1f5b7b611b27df/68747470733a2f2f7777772e70617970616c6f626a656374732e636f6d2f656e5f55532f692f62746e2f62746e5f646f6e61746543435f4c472e676966)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9MT88JJ9X4A6U&source=url) - -Or support us on [BountySource](https://www.bountysource.com/teams/rocketchat)! - diff --git a/contributors/how-can-i-help/security/README.md b/contributors/how-can-i-help/security/README.md deleted file mode 100644 index b9660438ae..0000000000 --- a/contributors/how-can-i-help/security/README.md +++ /dev/null @@ -1,65 +0,0 @@ -# Security - -First of all, thank you in advance for taking the time and effort to help us improve the security of Rocket.Chat! We are committed to delivering an awesome and secure chat solution for, and aided by, our community. - -Given the nature of Chat, we understand each person using Rocket.Chat has some expectation about their data being secure and private. It's clear how important this is to everyone, and we work to the best of our abilities to ensure your expectations are met. - -## If you find a Security Issue - -> Please email the details to Rocket.Chat's security team at `security@rocket.chat` or report directly into our [HackerOne Program.](https://hackerone.com/rocket_chat) - -Our security team will respond to confirm receipt of your message, review and plan the mitigation of the issue appropriately, as well as set a timeline for a new release or patch. - -We follow responsible disclosure and will credit researchers when a security issue has been identified and mitigated while adhering to the following specifics: - -* You may not use automated tools in your research without our explicit consent. Use of automated tools may result in investigative action or your IP\(s\) being blocked. -* You make a good faith effort to avoid privacy violations, destruction of data and interruption or degradation of our service during your research. -* You give us reasonable time to respond to your report and carry out remediation. -* We credit the first researcher to report an issue. Additionally, we reserve the right to only acknowledge researchers who discover issues in Rocket.Chat projects or related services, if we determine the issue to be of a high or critical severity, or if there has been continued research or contributions made by the reporter. -* We will credit you with your name and a "no-follow" link to the address of your choosing \(e.g. Twitter or personal website\). As a token of our gratitude for your assistance, we also offer an [original Rocket.Chat Shirt](https://shop.spreadshirt.com/rocketchat) to every first reporter of a security problem that was not yet known to us. We may limit this reward to one item per person and depending on the availability of the item. Please refrain from requesting additional compensation for reporting vulnerabilities. -* We will not bring any lawsuit or begin law enforcement investigation into you if you follow these parameters. - -## What details should you include when reporting a Security Issue - -Please provide as many relevant details as you can. In particular: - -* What versions of software are involved -* What steps someone can follow to go from an initial installation of that software to a point where they see the vulnerability -* Any patches or steps to mitigate the problem - -## WhiteHat Hall-of-Fame - -Rocket.Chat is very grateful for the following people who have responsibly disclosed vulnerabilities to us: - -* [Matt Austin](http://m-austin.com), October/2015. -* [Kamran Saifullah](https://pk.linkedin.com/in/kamransaifullah786), November/2015. -* [Sabri Haddouche](https://github.com/pwnsdx), November/2015. -* [Dennis Brakhane](https://inoio.de), February/2016. -* Jeandre Le Roux, April/2016. -* [Matthias Brun](https://redguard.ch), May/2016. -* [Michal Marek](https://github.com/ecneladis), May/2016. -* [Sam Whited](https://github.com/SamWhited), July/2016. -* [Ketankumar B. Godhani](https://twitter.com/KBGodhani), August/2016 -* [Sachin Wagh\(@tiger\_tigerboy\)](https://secur1tyadvisory.wordpress.com), September/2016 -* [Yury Maryshev, Mikhail Klyuchnikov, Alexandr Shvetsov](https://www.ptsecurity.com), October/2016 -* [Matthew Bryant](https://thehackerblog.com), October/2016 -* Joe DeMesy, October/2016 -* [Shubham Shah](https://shubs.io), October/2016 -* [Steeve Barbeau](https://twitter.com/steevebarbeau), October/2017 -* [Johann Helbling](https://mobile.twitter.com/jhelblinghh), August 2019 -* [Maik Stegemann](https://twitter.com/sectex_), November 2019 -* [Dipmalya Pyne](https://www.linkedin.com/in/dipmalya-pyne/), November 2019 -* [Karthik](https://twitter.com/86Karthik86?s=03), May 2020 -* [ALK Surya Teja](https://www.linkedin.com/in/alk-surya-teja-59b677146/), June 2020 -* [Virendra Yadav](https://www.linkedin.com/in/virendra-yadav-9232b115a/), June 2020 -* Pawel Wylecial of [REDTEAM.PL](https://redteam.pl), July 2020 -* [Robert Grösser](https://github.com/qchn), August 2020 -* [Vladica Savic](https://twitter.com/vsavic), August 2020 -* Ivars Vids, September 2020 -* [Nikhil Mittal](https://twitter.com/c0d3g33k), Oktober 2020 -* [Kunal Narsale](http://linkedin.com/in/kunal-n-3b9587135), December 2020 -* [Shubham Panchal](https://www.linkedin.com/in/shubham-panchal-636744161/), December 2020 -* [Jorge Cardona](https://jorge-cardona.github.io), November 2020 - -Thank you all very much! - diff --git a/deploy-rocket.chat/installing-client-apps/README.md b/deploy-rocket.chat/installing-client-apps/README.md new file mode 100644 index 0000000000..05bb447643 --- /dev/null +++ b/deploy-rocket.chat/installing-client-apps/README.md @@ -0,0 +1,9 @@ +# Installing Client Apps + +You can find a variety of client apps to use with a Rocket.Chat server, apart from using a browser. + +To use these apps, make sure you meet the [minimum-requirements-for-using-rocket.chat.md](minimum-requirements-for-using-rocket.chat.md "mention") + +{% content-ref url="rocket.chat-desktop-and-mobile-apps.md" %} +[rocket.chat-desktop-and-mobile-apps.md](rocket.chat-desktop-and-mobile-apps.md) +{% endcontent-ref %} diff --git a/deploy-rocket.chat/installing-client-apps/minimum-requirements-for-using-rocket.chat.md b/deploy-rocket.chat/installing-client-apps/minimum-requirements-for-using-rocket.chat.md new file mode 100644 index 0000000000..518715c23c --- /dev/null +++ b/deploy-rocket.chat/installing-client-apps/minimum-requirements-for-using-rocket.chat.md @@ -0,0 +1,32 @@ +# Minimum Requirements + +If you’re curious about the technical requirements needed to run Rocket.Chat, read on to learn which operating systems (OS) and browsers we support. + +## **Desktop Applications** + +| **Operating System** | **Requirements** | +| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **macOS** | **OS X 10.11 or above** | +| **Windows** | **Windows 8 or above** | +| **Linux** |

Fedora 28 or above

Ubuntu LTS releases 18.04 or above

Red Hat Enterprise Linux 7.0 or above

| + +## **Mobile Applications** + +| **Operating System** | **Requirements** | +| -------------------- | ------------------------ | +| **iOS** | **iOS 11** **or above** | +| **Android** | **Android 6.0 or above** | + +## **Web Browsers** + +| **Browser** | **Requirements** | +| ------------------------------- | ----------------------- | +| **Google Chrome** | **Latest 3 versions** | +| **Mozilla** **Firefox** | **Latest 3 versions** | +| **Safari** | **Latest 2 versions** | +| **Microsoft Edge** | **Latest 2 versions** | +| **Microsoft Internet Explorer** | **Latest version only** | + +### **Unsupported browsers and operating systems** + +To deliver the best possible Rocket.Chat experience, and we keep our list of supported browsers and operating systems short. We don’t fix bugs or issues for unsupported browsers, so we do our best to block them from accessing Rocket.Chat. diff --git a/deploy-rocket.chat/installing-client-apps/rocket.chat-desktop-and-mobile-apps.md b/deploy-rocket.chat/installing-client-apps/rocket.chat-desktop-and-mobile-apps.md new file mode 100644 index 0000000000..9b424e431c --- /dev/null +++ b/deploy-rocket.chat/installing-client-apps/rocket.chat-desktop-and-mobile-apps.md @@ -0,0 +1,79 @@ +# Rocket.Chat Desktop & Mobile Apps + +## Desktop Apps + +Here you can find the Electron-based Desktop Apps: + +{% embed url="https://rocket.chat/install" %} + +### Windows + +Can be found [here](https://releases.rocket.chat/desktop/latest/download) + +{% embed url="https://releases.rocket.chat/desktop/latest/download" %} + +### macOS + +Can be found in the App Store [here](https://itunes.apple.com/app/rocket.chat/id1086818840) + +It can also be downloaded [here](https://github.com/RocketChat/Rocket.Chat.Electron) + +### Linux + +If you are on Ubuntu, we recommend you install our snap via: + +``` +sudo snap install rocketchat-desktop +``` + +Snaps auto update so you no longer need to worry about manually keeping the client up to date. + +Snaps are also available on other platforms. More information is available [here](https://snapcraft.io/docs/core/install). + +There is also a Flatpak [package available on Flathub](https://flathub.org/apps/details/chat.rocket.RocketChat). + +Alternatively, you can download and manually install: + +You can find the download for the latest releases [here](https://github.com/RocketChat/Rocket.Chat.Electron/releases). + +## Mobile Apps + +![](<../../.gitbook/assets/ic\_launcher-web (2).png>) + +### Rocket.Chat Official + +This is the official version of our mobile apps both on Google Play and App Store. + +[Rocket.Chat on App Store](https://apps.apple.com/us/app/rocket-chat/id1148741252) + +{% embed url="https://apps.apple.com/us/app/rocket-chat/id1148741252" %} + +[Rocket.Chat on Google Play](https://play.google.com/store/apps/details?id=chat.rocket.android) + +{% embed url="https://play.google.com/store/apps/details?id=chat.rocket.android" %} + +#### Rocket.Chat Beta + +Beta versions of our apps are available on Google Play beta and TestFlight. Help us test new features! + +[Rocket.Chat Beta on TestFlight](https://testflight.apple.com/join/3gcYeoMr) + +[Rocket.Chat Beta on Google Play](https://play.google.com/store/apps/details?id=chat.rocket.android) + +![](<../../.gitbook/assets/ic\_launcher-web (1).png>) + +### Rocket.Chat Experimental + +The Experimental version of our mobile apps is developed using the same technologies and code as the official version. We use it to try new features and get feedback from our users. Only stable features land the official version. + +[Rocket.Chat Experimental on Google Play](https://play.google.com/store/apps/details?id=chat.rocket.reactnative) + +_Note: iOS version isn't available on App Store anymore._ + +#### Rocket.Chat Experimental Beta + +Beta versions of our apps are available on Google Play beta and TestFlight. Help us test new features! + +[Rocket.Chat Experimental Beta on TestFlight](https://testflight.apple.com/join/7I3dLCNT) + +[Rocket.Chat Experimental Beta on Google Play](https://play.google.com/store/apps/details?id=chat.rocket.reactnative) diff --git a/deploy-rocket.chat/prepare-for-your-deployment/README.md b/deploy-rocket.chat/prepare-for-your-deployment/README.md new file mode 100644 index 0000000000..dc0c5efd52 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-deployment/README.md @@ -0,0 +1,120 @@ +# Prepare for your Deployment + +{% hint style="info" %} +[ **👉 Trouble installing or deploying Rocket.Chat?** Join our Weekly Technical Helpline to get real-time help from our team!](https://app.livestorm.co/rocket-chat/rocketchats-weekly-technical-helpline?type=detailed) +{% endhint %} + +Rocket.Chat can be hosted on our Cloud, installed from a variety of marketplaces, or manually installed on your own server. + +## Prerequisites + +Regardless of the platform you wish to deploy on or the method of deployment, you may want to make the best choices in either case. See in this section our official recommendations, the necessary requirements to run a Rocket.Chat instance and the various properties we judge on to choose a deployment method better. + +## Official Recommendation + +{% hint style="success" %} +We offer a variety of Deployment methods, and we recommend you set up using our [Docker & Docker Compose](../../quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/) guide for several reasons mentioned below. +{% endhint %} + +In order to obtain official support from our team, we have a minimum set of requirements. These requirements are necessary for us to access essential system information, provide an SLA, answer questions, or provide a solution for the problem. + +Only installations matching these minimum requirements can be covered by our SLAs and our paid Support Policy. Some requirements may vary depending on the installation size, as described in the following sections. + +### Environment + +#### Docker Container + +In order to eliminate environmental issues of missing, outdated, or mismatching dependencies, specific operating system issues, or problems during manual installations, we strongly recommend using our official Docker images. + +{% hint style="info" %} +Rocket.Chat's own cloud uses our official Docker images, which makes this installation method the most tested. +{% endhint %} + +[Docker](https://www.docker.com) is widely used for packaging applications in containers and distributing them as images, providing abstraction and isolation layers from the OS (operational system). It allows the application to be shipped with a specific version of the OS compatibility layer and its own dependencies already installed and configured. + +{% content-ref url="../prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/" %} +[docker-containers](../prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/) +{% endcontent-ref %} + +### Why Docker? + +#### Considerations + +**Scalability** + +Scaling your Rocket.Chat deployment using Docker with Docker Compose is quite easy as editing the compose file. + +#### Ease of Deployment + +An instance of Rocket.Chat can be up and running easily by using our images or making use of the compose `yml` file. + +#### **Ease of Maintenance and Support** + +Maintaining a docker instance is pretty straightforward. Rocket.Chat offers both official and community support for all Docker-related issues. + +### Multiple processes + +We recommend running multiple application processes to maximize the usage of all available cores. Although you can use either Virtual Machines or containers, we recommend and only support the usage of Docker containers. + +Virtual machines and containers differ in several ways, but the primary difference is that containers provide a way to virtualize an OS so that multiple workloads can run on a single OS instance. With VMs, the hardware is virtualized to run multiple OS instances. The containers’ speed, agility, and portability make them offer definite performance advantages for our use case. + +{% hint style="info" %} +In some cases, it is acceptable to run containers inside a VM, as most PaaS only offer Virtual Private Servers. +{% endhint %} + +### Performance benefits of containers + +#### **Faster startup time** + +A containerized application usually starts in a couple of seconds. Virtual machines could take a couple of minutes. + +#### **Better resource distribution** + +Containers use up only as many system resources as they need at a given time. Virtual machines usually require some resources to be permanently allocated before the virtual machine starts. For this reason, virtual machines tie up resources on the host, even if they are not actually using them. Containers allow host resources to be distributed in an optimal way. + +#### **Direct hardware access** + +Applications running inside virtual machines generally cannot access hardware like graphics cards on the host in order to speed processing. containerized applications can. + +#### **Less redundancy** + +With virtual machines, you have to install an entire guest operating system, which duplicates a lot of the components already running on your host server. Containers don't require this. + +{% embed url="https://www.backblaze.com/blog/vm-vs-containers/" %} + +### Containers orchestration + +The usage of Docker-compatible containers orchestration/management systems such as Kubernetes, Rancher, or OpenShift can facilitate the scaling of containerized Rocket.Chat instances make it possible to distribute load among different physical bare-metal servers or virtual machines. + +Rocket.Chat's own cloud uses this approach to manage cloud-hosted instances with a high level of reliability and flexibility, we leverage the same expertise to provide documentation on how to configure and deploy scaled installations. + +We require, **scaled installations** (with more than **one instance** or more than **2000 users**), to be orchestrated and/or managed with one of the following: + +1. SUSE Rancher +2. Red Hat Openshift +3. Kubernetes and Helm _(Managed by a cloud platform such as AWS, Google Cloud, etc, or self-managed)_ +4. docker-compose + +At this time, no other container orchestration/management technologies will be supported by our Support team for any issues related to **scaled installations**. + +## Hardware + +The minimum hardware requirements are described on the page below. + +{% content-ref url="../prepare-for-your-rocket.chat-deployment/hardware-requirements.md" %} +[hardware-requirements.md](../prepare-for-your-rocket.chat-deployment/hardware-requirements.md) +{% endcontent-ref %} + +## Monitoring + +Production deployments should continually collect metrics regarding the installation's instances and database. Rocket.Chat supports and recommends the industry-standard Prometheus + Grafana monitoring stack. Grafana dashboards are available in the [Metrics](https://github.com/RocketChat/Rocket.Chat.Metrics) repository. + +{% embed url="https://github.com/RocketChat/Rocket.Chat.Metrics" %} + +## Versions + +Rocket.Chat cuts a new release every month. Please check the link below for more information about the release cycles and make sure you are running a supported version. + +{% content-ref url="../../resources/get-support/" %} +[get-support](../../resources/get-support/) +{% endcontent-ref %} diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/choosing-a-deployment-method.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/choosing-a-deployment-method.md new file mode 100644 index 0000000000..560b2b1fab --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/choosing-a-deployment-method.md @@ -0,0 +1,63 @@ +# Choosing a Deployment Method + +{% hint style="info" %} +[ **👉 Trouble installing or deploying Rocket.Chat?** Join our Weekly Technical Helpline to get real-time help from our team!](https://app.livestorm.co/rocket-chat/rocketchats-weekly-technical-helpline?type=detailed) +{% endhint %} + +## Choosing a Deployment Method + +Rocket.Chat offers a series of deployment methods, and making a choice on which to use can get a little conflicting. Although we recommend using [Docker and Docker Compose](https://app.gitbook.com/o/-M41dOPtnjO7qK6KCyrt/s/-M418Ul0aSTwf2PYsyPW/quick-start/deploying-rocket.chat/rapid-deployment-methods/docker-and-docker-compose), you may want to know when best to consider any other deployment methods. + +* **Deployment Methods**: Docker, Snap, Manual, Ansible, etc +* **Deployment Platforms**: AWS, Digital Ocean, GCP, etc + +{% hint style="danger" %} +The Rocket.Chat architecture does not support serverless deployment models such as AWS Fargate. +{% endhint %} + +### Considerations + +There are a few characteristics to be considered before deploying Rocket.Chat. Let us take a look at these points for better evaluation and scoring. + +#### Scalability + +Scalability simply refers to the ability of a system to handle an increasing amount of work or resources. In this case, we are talking about which deployment method can be easily scaled. For example: Say you have a single instance of Rocket.Chat server running which can handle thousands of simultaneous online users, what happens when the number of users increases by a multiple of a thousand? Do you terminate and get a bigger instance or get more Rocket.Chat servers to handle the extra users? + +#### Ease of Deployment + +This determines how easily a deployment method can be followed. With the aim of data ownership and privacy, Rocket.Chat can be deployed easily without any technical knowledge. + +#### Ease of Maintenance + +Just like the ease of deployment, ease of maintenance is also a factor to consider before choosing a deployment method. By maintaining, we refer to the activities to be performed, like updating their instances, patching security fixes, updating components as needed, and changing configurations and community support. + +#### Official Support + +Rocket.Chat offers a variety of official support. This factor is based on update frequency, bug resolutions, and feature implementations. + +#### Community Support + +A lot of the time, problems faced with deployment are not about the application itself misbehaving but rather some wrong configurations made by the user. Such configurations can be related directly to a dependency, the deployment method, and/or the platform. In such cases, it’d be much easier to overcome that and be successful by visiting the problem tools' guide or community page and request for support. This is something that’s ignored very frequently but should be considered for a long-term commitment. + +### Scorecard + +This scorecard shows a rating(on 05) of each deployment method against each consideration. + +| Text | Docker | Snaps | One Click Deployment | +| ----------------------- | ------------------ | ------------------ | ------------------------------------------------------------- | +| **Scalability** | **`3.75`** | **`1.0`** | **`2.0`** | +| **Ease of Deployment** | **`3.75`** | **`4.5`** | **`5.0`** | +| **Ease of Maintenance** | **`4.0`** | **`5.0`** | **`1.0`** | +| **Official Support** | **`5.0`** | **`5.0`** | Digital Ocean: **`5.0.`** Linode: **`0.0`** | +| **Community Support** | **`5.0`** | **`2.0`** | **`4.0`** | +| Comments | See comments below | See comments below | All one click deployment methods have the same score ranking. | + +#### Comments + +DockerSnapOne Click Installs + +* Scaling your Rocket.Chat deployment using Docker, more specifically, Docker Compose is relatively easy. As easy as editing a text file can be. +* To install using Docker Compose, we just needed a single `YAML` file, namely a compose file. How easier can it really be? But, even though the Rocket.Chat deployment is easy, the initial setup needs a little more work. Configuring and securing docker can get even more complicated. Although worth it, isn’t the easiest, especially compared to some of the other options we have on this list. +* Maintaining the installation using Docker is also very easy. From changing configurations, and data backups to updating components, it is very straightforward and easy to do. +* Docker deployment is officially supported by Rocket.Chat. +* Docker has a large following and a massive community around it. It is one of the easiest tools to get help from the community. diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/cloud-deployments/README.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/cloud-deployments/README.md new file mode 100644 index 0000000000..12d113fd73 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/cloud-deployments/README.md @@ -0,0 +1,33 @@ +# Cloud Deployments + +{% hint style="info" %} +[**👉 Trouble installing or deploying Rocket.Chat?** Join our Weekly Technical Helpline to get real-time help from our team!](https://app.livestorm.co/rocket-chat/rocketchats-weekly-technical-helpline?type=detailed) +{% endhint %} + +There are multiple deployment options for Rocket.Chat. + +## Quick Deployments + +If you are interested in quickly deploying an instance, you can try one of these options below: + +* [Linode](https://apps.sandstorm.io/app/vfnwptfn02ty21w715snyyczw0nqxkv3jvawcah10c6z7hj1hnu0) +* [Cloudron](https://cloudron.io/appstore.html#chat.rocket.cloudronapp), you can install and receive automatic updates on your Cloudron Smartserver. +* [Scalingo](../other-deployment-methods/nonofficial-methods/scalingo.md) +* [Jelastic](../other-deployment-methods/nonofficial-methods/jelastic.md) + +## Managed Deployments + +If you need full control of your deployment, here are some guides for specific environments: + +* [Aliyun](../other-deployment-methods/nonofficial-methods/aliyun.md) +* [Amazon Web Services](aws.md) +* [Digital Ocean](digitalocean.md) +* [Meteor Galaxy](../other-deployment-methods/nonofficial-methods/galaxy.md) +* [Google Compute Engine](../../../quick-start/installing-and-updating/paas-deployments/broken-reference/) +* [IBM Cloud](ibm-cloud.md) +* [Syncloud.org](../other-deployment-methods/nonofficial-methods/syncloud.md) + +## Automation Tools + +* [Ansible](../../scaling-rocket.chat/automation-tools/ansible.md) +* [Vagrant](../../scaling-rocket.chat/automation-tools/vagrant.md) diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/cloud-deployments/aws.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/cloud-deployments/aws.md new file mode 100644 index 0000000000..7bcefc1ffa --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/cloud-deployments/aws.md @@ -0,0 +1,186 @@ +--- +description: Deploying Rocket.Chat on Amazon Web Services +--- + +# AWS + +{% hint style="info" %} +[**👉 Trouble installing or deploying Rocket.Chat?** Join our Weekly Technical Helpline to get real-time help from our team!](https://app.livestorm.co/rocket-chat/rocketchats-weekly-technical-helpline?type=detailed) +{% endhint %} + +This guide covers the following: + +* Hosting Rocket.Chat on an Amazon EC2 instance +* Hosting a domain name with Amazon Route 53 +* Securing your server with a free SSL certificate from [Let's Encrypt](https://letsencrypt.org/) + +## Launch an EC2 Instance + +{% hint style="info" %} +The minimum requirement to successfully run Rocket.Chat is 2Gb 2 cores. + +It is not recommended to use this method for large production. Instead, check how to deploy with [helm.md](../rapid-deployment-methods/helm.md "mention") +{% endhint %} + +To create a new EC2 instance: + +1. Log into your [AWS Console](https://console.aws.amazon.com), and open the **EC2 Service** +2. Click on **Instances** in the left sidebar and then click on **Launch Instances** to set up a new EC2 instance. + * Set the instance name and select at least _Ubuntu Server 18.04 LTS_" with "_64-bit (x86)_ architecture as the OS image + * Select an instance type of your choice according to our recommendation above + * Choose an existing key pair or create a new one for ssh connections + * Adjust the instance details as needed or keep the defaults + * Adjust the storage size and configuration as required + * Make sure to add a tag called **Name** and assign a value. + * Allow **SSH, HTTP,** and **HTTPS** in the security group configuration, and proceed with **Review and Launch**. +3. Review your instance configuration and when confirmed, **Launch Instance**. + +## Allocate an Elastic IP + +Back in the [EC2 Service](https://signin.aws.amazon.com/signin?redirect\_uri=https%3A%2F%2Fconsole.aws.amazon.com%2Fec2%2Fv2%2Fhome%3Fstate%3DhashArgs%2523%26isauthcode%3Dtrue\&client\_id=arn%3Aaws%3Aiam%3A%3A015428540659%3Auser%2Fec2\&forceMobileApp=0\&code\_challenge=9eFrxS4u\_-ut1PIoNw1-Cx5EmHMwRGaqLYRat\_RnBGE\&code\_challenge\_method=SHA-256) dashboard, click on **Elastic IPs** to get started + +1. Click on **Allocate Elastic IP address.** +2. Select **Amazon's pool of IPv4 addresses** and click on **Allocate.** +3. After successfully creating, click and open up the newly created IP address and select **Associate Elastic IP address.** +4. Select your instance and click **Associate.** +5. In the details below, copy the **Public DNS**. You will need it in the DNS step. + + (It should be in a format like this: `ec2-18-XXX-XXX-XXX.eu-central-1.compute.amazonaws.com`) + +## Configure DNS w/ AWS Route 53 + +Open the **Route 53** service dashboard: + +* Create a new hosted zone by clicking on **Create Hosted Zone.** +* Enter your domain name and select _Public Hosted Zone_ as type, then click on **Create hosted zone** +* Select your newly created zone and click on **Create Record Set** +* Enter "_www_" as subdomain (if desired), select Type _CNAME_, enter the Public DNS name from the above step to the value field, and click "**Create**" + +## Get an SSL Certificate from Let's Encrypt + +We use Let's Encrypt to get a free & open-source SSL certificate: + +1. SSH to your instance: + + ```bash + ssh -i ubuntu@ + ``` + + Note: You may replace it with your domain name if your DNS has resolved. +2. Install `certbot` using `apt`: + + ```bash + sudo apt update + sudo apt install certbot + ``` +3. Obtain certificate from Let's Encrypt: + + ```bash + sudo certbot certonly --standalone --email -d -d + ``` + + + +**Note:** Second (or more) domain is optional. + +{% hint style="info" %} +Optional Step: Restrict access using security groups + +If you would like to restrict traffic to your AWS instance, you may adjust the security groups again. Make sure you allow "_TCP/22_" from your current location for the SSH connection, as well as "_TCP/443_" from the location you wish to use to access from. +{% endhint %} + +## Configure Nginx Web Server with TLS/SSL + +1. Install Nginx web server: + + ```bash + sudo apt-get install nginx + ``` +2. Backup the default config file for reference: + + ```bash + cd /etc/nginx/sites-available + sudo mv default default.reference + ``` +3. Create a new site configuration for Rocket.Chat: + + ```bash + sudo nano /etc/nginx/sites-available/default + ``` + + ```nginx + server { + listen 443 ssl; + + server_name ; + + ssl_certificate /etc/letsencrypt/live//fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live//privkey.pem; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_prefer_server_ciphers on; + ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; + + root /usr/share/nginx/html; + index index.html index.htm; + + # Make site accessible from http://localhost/ + server_name localhost; + + location / { + proxy_pass http://localhost:3000/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto http; + proxy_set_header X-Nginx-Proxy true; + proxy_redirect off; + } + } + + server { + listen 80; + + server_name ; + + return 301 https://$host$request_uri; + } + ``` + + Make sure to replace `ABC.DOMAIN.COM` with your domain (it appears 4 times). Make sure to update it in the path to your key files as well: +4. Test the Nginx configuration to make sure there are no syntax errors: + + ```bash + sudo nginx -t + ``` +5. If the syntax test went successful, restart Nginx: + + ```bash + sudo systemctl restart nginx + ``` + +Confirm that it is running properly by opening a web browser and going to your domain name. You will get a page stating "_502 Bad Gateway_". This is expected, since the Rocket.Chat backend is not yet running. Make sure the SSL connection is working properly by clicking the lock icon next to the address bar, make sure it's valid and issued by "_Let's Encrypt Authority X3_". + +## Install Rocket.Chat + +The process to install Rocket.Chat involves + +1. Installing [Docker](https://docs.docker.com/install) and [Docker-compose](https://docs.docker.com/compose/install/) (v2 is required) +2. Fetching the Rocket.Chat compose file +3. Configuring environmental variables and installing + +Follow this guide to get Rocket.Chat installed with Docker & Docker Compose. + +{% content-ref url="../../../quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/" %} +[docker-and-docker-compose](../../../quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/) +{% endcontent-ref %} + +## Use it + +Log in to your site at `https://ABC.DOMAIN.COM.` + +{% hint style="info" %} +**Note:** the first user to log in will be an administrator user. +{% endhint %} diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/cloud-deployments/digitalocean.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/cloud-deployments/digitalocean.md new file mode 100644 index 0000000000..eb73724d39 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/cloud-deployments/digitalocean.md @@ -0,0 +1,47 @@ +--- +description: Deploying Rocket.Chat on DigitalOcean +--- + +# DigitalOcean + +{% hint style="info" %} +[**👉 Trouble installing or deploying Rocket.Chat?** Join our Weekly Technical Helpline to get real-time help from our team!](https://app.livestorm.co/rocket-chat/rocketchats-weekly-technical-helpline?type=detailed) +{% endhint %} + +You can now install Rocket.Chat on DigitalOcean using a 1-Click install from the DigitalOcean Marketplace. + +[![do-btn-blue](https://user-images.githubusercontent.com/51996/58146107-50512580-7c1a-11e9-8ec9-e032ba387c2a.png)](https://marketplace.digitalocean.com/apps/rocket-chat?action=deploy\&refcode=1940fe28bd31) + +After you create your 1-Click install using the Rocket.Chat app in DigitalOcean Marketplace, you'll likely want a registered domain name to access Rocket.Chat. + +We recommend setting up an A record from your domain to your servers IP address. Ex: chat.mycompany.com + +Rocket.Chat will not work with HTTPS out of the box because certificates are unique for each installation, but with this setup HTTPS will be available using Let's Encrypt certificates. + +After the Rocket.Chat One-Click is finished and your domain is setup. You will need to login to your droplet to finish setup. + +``` +ssh root@your_droplet_ip +``` + +Once you are connected you should see something like: + +``` +################################################################################################################################################################## +Rocket.Chat is the leading open source team chat software solution. Free, unlimited and completely customizable with on-premises and SaaS cloud hosting. +Replace email, HipChat & Slack with the ultimate team chat software solution. + +This Rocket.Chat image uses docker under the hood. To learn more, please read our docker documentation - https://docs.rocket.chat/deploy/prepare-for-your-deployment/rapid-deployment-methods/docker-and-docker-compose + +You can find the compose project in /root/rocketchat directory. + +Looking for how to use Rocket.Chat? Be sure to check our docs: https://docs.rocket.chat +Need some help? Join our community forums https://forums.rocket.chat and https://open.rocket.chat +################################################################################################################################################################## +``` + +Besides the recommended setup you can out of the box access Rocket.Chat server at: [http://Droplet-IP:3000](http://droplet-ip:3000) + +## Backend + +Under the hood, the image uses docker for managing the deployment. Please read our documentation on [docker](../../../quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/) to learn more about managing it. diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/cloud-deployments/google-compute-engine.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/cloud-deployments/google-compute-engine.md new file mode 100644 index 0000000000..c8cb5df870 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/cloud-deployments/google-compute-engine.md @@ -0,0 +1,68 @@ +--- +description: Deploying Rocket.Chat on Google Compute Engine +--- + +# Google Compute Engine + +{% hint style="info" %} +[**👉 Trouble installing or deploying Rocket.Chat?** Join our Weekly Technical Helpline to get real-time help from our team!](https://app.livestorm.co/rocket-chat/rocketchats-weekly-technical-helpline?type=detailed) +{% endhint %} + +## 1. Create a Compute Instance + +1. Click create VM instance in google cloud console. +2. Select a preferred Machine Type (Default : 1cpu, 3.75GB Memory). +3. Select a Linux image (Default Debian/ ubuntu). +4. Allow HTTP/S Traffic. + +## 2. SSH to the Instance + +Connect to the instance by SSH or connect via browser on port other than 80. + +## 3. Run the following to install Docker + +`sudo wget -qO- https://get.docker.com/ | sh` + +## 4. Create a container network + +`docker network create chatNetwork` + +## 5. Install a docker image for MongoDB + +```bash +sudo docker run --name mongo --network chatNetwork -d mongo \ +--smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1 +``` + +## 6. Configure a MongoDB Replica set + +`ssh` in to the `mongodb` docker container `sudo docker exec -it mongo mongo` + +Execute this following script to create a replica set `rs.initiate({ _id: 'rs0', members: [ { _id: 0, host: 'localhost:27017' } ]})` + +Exit docker container + +## 7. Install a Docker Image for Rocket.Chat + +`ROOT_URL` should be substituted for your own domain: + +```bash +docker run --name rocketchat -d -p 80:3000 \ +--network chatNetwork --env PORT=3000 \ +--env ROOT_URL=https://www.test.com \ +--env MONGO_URL=mongodb://mongo:27017/rocketchat \ +--env MONGO_OPLOG_URL=mongodb://mongo:27017/local rocket.chat:latest +``` + +You are now running Rocket.Chat on compute engine. You can open a browser with the external IP of the instance. + +If you want the containers to start each time the instance reboots configure the following to the instance. + +* Click on the instance in the and hit **edit**. +* Under "Custom metadata" add an item with: + +``` +key: "startup-script" +value "sudo docker start mongo; +sudo docker start rocketchat" +``` diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/cloud-deployments/ibm-cloud.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/cloud-deployments/ibm-cloud.md new file mode 100644 index 0000000000..cdca209cba --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/cloud-deployments/ibm-cloud.md @@ -0,0 +1,53 @@ +--- +description: Deploying Rocket.Chat on IBM Cloud +--- + +# IBM Cloud + +{% hint style="info" %} +[**👉 Trouble installing or deploying Rocket.Chat?** Join our Weekly Technical Helpline to get real-time help from our team!](https://app.livestorm.co/rocket-chat/rocketchats-weekly-technical-helpline?type=detailed) +{% endhint %} + +IBM Cloud have various options for hosting Rocket.Chat, Docker container on a Kubernetes cluster, VMWare, Bare Metal Server, but the instructions below will focus in creating a Cloud Foundry Rocket.Chat app. + +## Prerequisites + +* An IBM Cloud account +* The IBM Cloud command line client (ibmcloud) installed +* git + +## Deploying Rocket.Chat + +First, logon to the [IBM Cloud dashboard](https://cloud.ibm.com/) and then select in the Apps box, `Create an app`. + +Then give the Rocket.Chat server a unique app name, select as `Starting point` + +Create a new app, and as `Platform` select Node.js. Finish by clicking `Create`. + +After creation is finished, select `Create service` from the App Details tab, select Databases from the list of services, and Databases for MongoDB. + +Configure MongoDB to enable oplog tailing and intiate a replicaset. + +All remaining steps will be preformed at the command line. + +Git clone the latest Rocket.Chat: + +``` +git clone https://github.com/RocketChat/Rocket.Chat.git +``` + +Log in to the IBM Cloud command-line interface: + +``` +ibmcloud cf login +``` + +Push Rocket.Chat to the app you created early in the dashboard using meteor-buildpack-horse: + +``` +cf push -m 512M -b https://github.com/RocketChat/meteor-buildpack-horse.git +``` + +Go to `https://.mybluemix.net/` in your browser to access your instance of Rocket.Chat + +If you encounter any problem check the IBM Cloud Creating Apps instructions [here](https://cloud.ibm.com/docs/apps/tutorials?topic=creating-apps-tutorial-starterkit). diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/hardware-requirements.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/hardware-requirements.md new file mode 100644 index 0000000000..d887076ddb --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/hardware-requirements.md @@ -0,0 +1,56 @@ +--- +description: Minimum Requirements for Server Deployment +--- + +# Hardware Requirements + +{% hint style="info" %} +[**👉 Trouble installing or deploying Rocket.Chat?** Join our Weekly Technical Helpline to get real-time help from our team!](https://app.livestorm.co/rocket-chat/rocketchats-weekly-technical-helpline?type=detailed) +{% endhint %} + +To get a Rocket.Chat instance running, you need to pay attention to the properties of the machine/hardware you have. + +These requirements vary significantly with: + +* Number of concurrently active users +* Number of actually connected devices per user +* Activities of the users - solely text-based messaging takes minimal resources; while file sharing and jpg uploads will consume more resources, this is because a set of computations has to be done on these files. +* Bot or integration activity level; different bots and/or integrations have different requirements + +## Bare-metal Server + +The following are sized for the minimal cost deployment unit available for bare-metal server and cloud VPS. + +* Intel Xeon E5-2603 v4 (or equivalent) \[1.7 GHz, 6 cores, $213 USD] +* 4 GB RAM +* 500 GB hard disk or larger + +The above minimal hardware configuration is ideal for corporate or groups with up to 1,000 users, up to 300 concurrently active, and moderate levels of mixed uploads, sharing, and bot activities. + +## VPS(Virtual Private Server) + +A virtual private server is a virtual machine sold as a service by an Internet hosting service or cloud provider. + +### VPS (minimal) + +* Single-core (2 GHz) +* 1 GB RAM +* 30 GB of SSD + +The above minimal virtual configuration, when not over-provisioned by the provider, is ideal for small deployments of up to 200 users, up to 50 concurrently active, and a minimal level of mixed uploads, sharing, and bot activities. + +### VPS (recommended) + +* Dual-core (2 GHz) +* 2 GB RAM +* 40 GB of SSD + +The above virtual configuration, when not over-provisioned by the provider, can accommodate small deployments of up to 500 users, up to 100 concurrently active, and moderate levels of mixed uploads, sharing, and bot activities. + +## Really Small Office Server + +* Raspberry Pi 3 or Pi 2 +* 4 cores 1 GB memory +* 32 GB SD card ($15) + +The above minimal configuration can accommodate a small office or group of up to 50 users and up to 25 concurrently active and moderate levels of mixed uploads, sharing, and bot activities. This is based on a managed MongoDB service (such as [mlab.com](https://mlab.com)). Running mongo locally to a Pi is not recommended at this time. diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/README.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/README.md new file mode 100644 index 0000000000..6d206941cf --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/README.md @@ -0,0 +1,17 @@ +# Other Deployment Methods + +{% content-ref url="manual-installation/" %} +[manual-installation](manual-installation/) +{% endcontent-ref %} + +{% content-ref url="nonofficial-methods/" %} +[nonofficial-methods](nonofficial-methods/) +{% endcontent-ref %} + +{% content-ref url="../../../deploy/prepare-for-your-deployment/other-deployment-methods/plug-in-deployments.md" %} +[plug-in-deployments.md](../../../deploy/prepare-for-your-deployment/other-deployment-methods/plug-in-deployments.md) +{% endcontent-ref %} + +{% content-ref url="windows-10-pro.md" %} +[windows-10-pro.md](windows-10-pro.md) +{% endcontent-ref %} diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/README.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/README.md new file mode 100644 index 0000000000..b6cab9d7f4 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/README.md @@ -0,0 +1,19 @@ +# Manual Installation + +{% hint style="info" %} +[**👉 Trouble installing or deploying Rocket.Chat?** Join our Weekly Technical Helpline to get real-time help from our team!](https://app.livestorm.co/rocket-chat/rocketchats-weekly-technical-helpline?type=detailed) +{% endhint %} + +Here you can find guides on how to manually install and manage Rocket.Chat server in different Operational systems: + +{% content-ref url="debian-based-distros/debian.md" %} +[debian.md](debian-based-distros/debian.md) +{% endcontent-ref %} + +{% content-ref url="debian-based-distros/ubuntu.md" %} +[ubuntu.md](debian-based-distros/ubuntu.md) +{% endcontent-ref %} + +{% content-ref url="debian-based-distros/kali-linux.md" %} +[kali-linux.md](debian-based-distros/kali-linux.md) +{% endcontent-ref %} diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/debian-based-distros/README.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/debian-based-distros/README.md new file mode 100644 index 0000000000..43697fd111 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/debian-based-distros/README.md @@ -0,0 +1,2 @@ +# Debian Based Distros + diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/debian-based-distros/debian.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/debian-based-distros/debian.md new file mode 100644 index 0000000000..cb9a2b6477 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/debian-based-distros/debian.md @@ -0,0 +1,205 @@ +# Rocket.Chat on Debian + +This installation guide was tested in the following environment: + +* Rocket.Chat 4.6.0 +* OS: Debian 11, 10, 9 +* Mongodb 5.0 +* NodeJS 14.18.3 + +## Requirements + +* **Install MongoDB:** Please refer to the official MongoDB documentation on [how to install MongoDB on Debian](https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/). For the list of supported versions, see our documentation [here](../../../../../resources/get-support/#mongodb-versions). +* **Install NodeJS:** Follow the [official guide](https://github.com/nodesource/distributions/blob/master/README.md#debinstall) to install NodeJS on a Debian system. Check out our page on [supported node versions](../../../../rocket.chat-environment-configuration/node-configuration/supported-nodejs-version.md) for your specific version. You can also use third-party tools like [nvm](https://github.com/nvm-sh/nvm#installing-and-updating) or [n](https://www.npmjs.com/package/n). + +## Install Rocket.Chat + +* Update your system by running + +```bash +sudo apt -y update +sudo apt -y upgrade +``` + +* Install required packages/dependencies + +```bash +sudo apt install -y curl build-essential graphicsmagick +``` + +* To download the latest Rocket.Chat version run the following command: + +```bash +curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz +``` + +You can also use `wget`. + +``` +wget https://releases.rocket.chat/latest/download -O /tmp/rocket.chat.tgz +``` + +You can also download a specific version by replacing `latest` by the version number. E.g. + +``` +wget https://releases.rocket.chat/4.1.2/download -O /tmp/rocket.chat.tgz +``` + +* Extract the archive with `tar`: + +```bash +tar xzf /tmp/rocket.chat.tgz -C /tmp +``` + +You should now see a new directory under `/tmp` named `bundle`. + +* Next, install all the node dependencies: + +```bash +(cd /tmp/bundle/programs/server; npm i) +``` + +If you're doing all this under the `root` user, which is not recommended, you'll need to pass the `--unsafe-perm` flag to npm along with `sudo`. + +`/tmp` has been a temporary non-root user-writable location to prepare the bundle. For this guide, we're going to use `/opt` to be the final location but you can choose any other. Whatever may it be, if not`/opt`, make sure you change the location in all the other places it is specified. + +```bash +sudo mv /tmp/bundle /opt/Rocket.Chat +``` + +## Configure the Rocket.Chat service + +Add the rocketchat user, set the right permissions on the Rocket.Chat folder and create the Rocket.Chat service file: + +```bash +sudo useradd -M rocketchat && sudo usermod -L rocketchat +``` + +```bash +sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat +``` + +Depending on how you install NodeJs, the path to the binary can be different. Save the current path in a variable + +```bash +NODE_PATH=$(which node) +``` + +Now create the systemd service file + +```bash +cat << EOF |sudo tee -a /lib/systemd/system/rocketchat.service +[Unit] +Description=The Rocket.Chat server +After=network.target remote-fs.target nss-lookup.target nginx.service mongod.service +[Service] +ExecStart=$NODE_PATH /opt/Rocket.Chat/main.js +StandardOutput=syslog +StandardError=syslog +SyslogIdentifier=rocketchat +User=rocketchat +[Install] +WantedBy=multi-user.target +EOF +``` + +The command above will create a barebone service file, this service file is what systemd will use to start your Rocket.Chat daemon/process. + +### Passing environment variables + +Next you need to pass some environment variables to the running process. For more information of configuring via environment variables read [this article](../../../../rocket.chat-environment-configuration/environment-variables.md). + +Run: + +``` +sudo systemctl edit rocketchat +``` + +It should open up a text editor. Now write down the following, + +``` +[Service] +Environment=ROOT_URL=http://localhost:3000 +Environment=PORT=3000 +Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 +Environment=MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 +``` + +Change the values as you need. Save and exit. + +### MongoDB Configuration + +Open the MongoDB config file (`/etc/mongod.conf`) in your favorite text editor. It is a simple YAML file. + +Set the storage engine to `wiredTiger`. + +```yaml +storage: + engine: wiredTiger +``` + +Enable replication, and name the replicaset `rs01`. + +```yaml +replication: + replSetName: rs01 +``` + +MongoDB replicaset is mandatory for Rocket.Chat > 1.0.0. + +Your MongoDB config file should look something like the following: + +```yaml +storage: + dbPath: /var/lib/mongodb + journal: + enabled: true + engine: wiredTiger + +systemLog: + destination: file + logAppend: true + path: /var/log/mongodb/mongod.log + +net: + port: 27017 + bindIp: 127.0.0.1 + +processManagement: + fork: true + timeZoneInfo: /usr/share/zoneinfo + +replication: + replSetName: rs01 +``` + +For a full list of available MongoDB config options read their [official documentation](https://docs.mongodb.org/manual/reference/configuration-options/). + +Start MongoDB with the following command: + +```bash +sudo systemctl enable --now mongod +``` + +Create the replicaset: + +```bash +mongo --eval "printjson(rs.initiate())" +``` + +You can start Rocket.Chat now. + +```bash +sudo systemctl enable --now rocketchat +``` + +## Optional configurations + +* [Configure firewall rule](../../../../rocket.chat-environment-configuration/optional-configurations.md) +* [Configure a HTTP reverse proxy to access Rocket.Chat server](../../../../rocket.chat-environment-configuration/configuring-ssl-reverse-proxy.md) +* [Configure mongo access control](../../../../rocket.chat-environment-configuration/mongodb-configuration/mongodb-uri-authentication.md) +* [Configure production values for mongodb](../../../../rocket.chat-environment-configuration/mongodb-configuration/mongo-options.md) + +## Configure your Rocket.Chat server + +Open a web browser and access the configured ROOT\_URL (`http://your-host-name.com-as-accessed-from-internet:3000`), follow the configuration steps to set up an admin account and your organization and server info. diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/debian-based-distros/kali-linux.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/debian-based-distros/kali-linux.md new file mode 100644 index 0000000000..4c4bf3a99a --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/debian-based-distros/kali-linux.md @@ -0,0 +1,156 @@ +# Rocket.Chat on Kali Linux + +Since Kali is a [Debian ](debian.md)distribution, the installation process is quite similar. + +## Requirements + +Depending on the version of [Rocket.Chat](https://rocket.chat/) you want to install, check the [release notes](https://github.com/RocketChat/Rocket.Chat/releases) to see the supported engine versions for MongoDB and NodeJs, and install as recommended. + +* **MongoDB** + + Please refer to the official MongoDB documentation on installing [MongoDB on Debian](https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-debian/). +* **NodeJS** + + Follow the [official guide](https://github.com/nodesource/distributions/blob/master/README.md#debinstall) to install NodeJS on Debian. You can also use third-party tools like [nvm](https://github.com/nvm-sh/nvm#installing-and-updating) or [n](https://www.npmjs.com/package/n). + +This installation guide was tested in the following environment: + +* Rocket.Chat 3.9.0 +* OS: Kali Rolling 2020.2 +* Mongodb 4.0.19 +* NodeJS 12.18.4 + +## Install necessary dependency packages + +* Update the package list and configure apt to install the official MongoDB packages with the following repository file: + +```bash +sudo apt-get -y update +``` + +```bash +sudo apt-get install -y dirmngr gnupg && sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 +``` + +```bash +echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list +``` + +* Configure Node.js to be installed via the package manager. + +```bash +sudo apt-get -y update && sudo apt-get install -y curl && curl -sL https://deb.nodesource.com/setup_12.x | sudo bash - +``` + +* Install build tools, MongoDB and dependencies (libcurl3 and MongoDB server), NodeJS, and graphicsmagick. + +```bash +sudo apt-get install -y build-essential libcurl3 mongodb-org-server mongodb-org nodejs graphicsmagick +``` + +* Using npm install inherits and n, and the node version required by Rocket.Chat. + +```bash +sudo npm install -g inherits n && sudo n 12.18.4 +``` + +## Install Rocket.Chat + +* Download the latest Rocket.Chat version. + +```bash +curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz +``` + +```bash +tar -xzf /tmp/rocket.chat.tgz -C /tmp +``` + +* Install NPM. + +{% hint style="info" %} +This guide uses /opt but feel free to choose a different directory. +{% endhint %} + +```bash +cd /tmp/bundle/programs/server && npm install +``` + +```bash +sudo mv /tmp/bundle /opt/Rocket.Chat +``` + +## Configure the Rocket.Chat service + +* Add the rocketchat user and set the right permissions on the Rocket.Chat folder. + +```bash +sudo useradd -M rocketchat && sudo usermod -L rocketchat +``` + +```bash +sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat +``` + +* Create the Rocket.Chat service file. + +```bash +cat << EOF |sudo tee -a /lib/systemd/system/rocketchat.service +[Unit] +Description=The Rocket.Chat server +After=network.target remote-fs.target nss-lookup.target nginx.service mongod.service +[Service] +ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js +StandardOutput=syslog +StandardError=syslog +SyslogIdentifier=rocketchat +User=rocketchat +Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 ROOT_URL=http://localhost:3000/ PORT=3000 +[Install] +WantedBy=multi-user.target +EOF +``` + +* Open the service file (`/lib/systemd/system/rocketchat.service`) using sudo and update the `ROOT_URL` environmental variable to reflect the URL you are using to access the server. Optionally, you can change `MONGO_URL`, `MONGO_OPLOG_URL` and `PORT`. + +```bash +MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 +MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 +ROOT_URL=http://your-host-name.com-as-accessed-from-internet:3000 +PORT=3000 +``` + +* Set up storage engine and replication for MongoDB. + +```bash +sudo sed -i "s/^# engine:/ engine: wiredTiger/" /etc/mongod.conf +``` + +```bash +sudo sed -i "s/^#replication:/replication:\n replSetName: rs01/" /etc/mongod.conf +``` + +Then, enable and start MongoDB and Rocket.Chat. + +```bash +sudo systemctl enable mongod && sudo systemctl start mongod +``` + +```bash +mongo --eval "printjson(rs.initiate())" +``` + +```bash +sudo systemctl enable rocketchat && sudo systemctl start rocketchat +``` + +## Optional configurations + +You might also want to add the following optional configurations: + +* [Configure firewall rule](../../../../rocket.chat-environment-configuration/optional-configurations.md) +* [Configure a HTTP reverse proxy to access Rocket.Chat server](../../../../rocket.chat-environment-configuration/configuring-ssl-reverse-proxy.md) + +## Configure your Rocket.Chat server + +Open a web browser and access the configured ROOT\_URL (`http://your-host-name.com-as-accessed-from-internet:3000`). Follow the configuration steps to [set up an admin account and your organization and server info](../../../../../setup-and-administer-rocket.chat/accessing-your-workspace/rocket.chat-setup-wizard.md#setup-wizard). diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/debian-based-distros/ubuntu.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/debian-based-distros/ubuntu.md new file mode 100644 index 0000000000..4ceb7016e3 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/debian-based-distros/ubuntu.md @@ -0,0 +1,189 @@ +# Rocket.Chat on Ubuntu + +## Recommended Server Install + +We recommend installing Rocket.Chat using our[ Docker and Docker Compose](../../../../../quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/) or [Snaps](../../../rapid-deployment-methods/snaps/) guide, as they are the easiest way to get your server up and running on all supported Linux distributions (Ubuntu, etc.). To enable TLS on your site like this `https://yoursite.com` when using the snap, see [this guide](../../../rapid-deployment-methods/snaps/auto-ssl-with-snaps.md). + +## Manual installation of Rocket.Chat on Ubuntu + +### Requirements + +{% hint style="info" %} +We recommend installing your workspace on any Ubuntu version with LTS. +{% endhint %} + +Depending on the version of [Rocket.Chat](https://rocket.chat/) you want to install, check the [release notes](https://github.com/RocketChat/Rocket.Chat/releases) to see the supported engine versions for MongoDB and NodeJs, and install as recommended. + +* **MongoDB** + + Please refer to the official MongoDB documentation on [how to install MongoDB on Ubuntu](https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-ubuntu/). +* **NodeJS** + + Follow the [official guide](https://github.com/nodesource/distributions/blob/master/README.md#debinstall) to install NodeJS on Ubuntu. You can also use third-party tools like [nvm](https://github.com/nvm-sh/nvm#installing-and-updating) or [n](https://www.npmjs.com/package/n). + +### Install Rocket.Chat + +* Install the required packages/dependencies. + +```bash +sudo apt install -y curl build-essential graphicsmagick +``` + +* Download and extract the [latest release ](https://github.com/RocketChat/Rocket.Chat/releases/latest)of Rocket.Chat. + +```bash +curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz +``` + +* Extract the Rocket.Chat server files. + +```bash +tar -xzf /tmp/rocket.chat.tgz -C /tmp +``` + +```bash +cd /tmp/bundle/programs/server && npm install --production +``` + +If you're using the `root` account (not recommended), use `sudo npm install --unsafe-perm --production` instead of the above. + +* Move the extracted files to the _/opt_ directory. + +```bash +sudo mv /tmp/bundle /opt/Rocket.Chat +``` + +{% hint style="info" %} +This guide uses the _/opt directory_. However, you can choose your preferred directory. +{% endhint %} + +## Configure the Rocket.Chat service + +* Add the rocketchat user and set the right permissions on the Rocket.Chat folder. + +```bash +sudo useradd -M rocketchat && sudo usermod -L rocketchat +``` + +```bash +sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat +``` + +* Depending on how you install NodeJS, the binary path may be different. Save the path to a variable. + +```bash +NODE_PATH=$(which node) +``` + +* Now, save the systemd service file, + +```bash +cat << EOF |sudo tee -a /lib/systemd/system/rocketchat.service +[Unit] +Description=The Rocket.Chat server +After=network.target remote-fs.target nss-lookup.target nginx.service mongod.service +[Service] +ExecStart=$NODE_PATH /opt/Rocket.Chat/main.js +StandardOutput=syslog +StandardError=syslog +SyslogIdentifier=rocketchat +User=rocketchat +[Install] +WantedBy=multi-user.target +EOF +``` + +The command above will create a barebone service file; this service file is what systemd will use to start your Rocket.Chat daemon/process. + +### Passing environment variables + +* Next, pass some environment variables to the running process. More information can be found at [Rocket.Chat environmental variables](https://docs.rocket.chat/deploy-rocket.chat/rocket.chat-environment-configuration/environment-variables). +* To update the Rocket.Chat file, run the following command : + +``` +sudo systemctl edit rocketchat +``` + +Update the text editor with the information below and save. + +``` +[Service] +Environment=ROOT_URL=http://localhost:3000 +Environment=PORT=3000 +Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 +Environment=MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 +``` + +### MongoDB Configuration + +* Open the MongoDB config file (`/etc/mongod.conf`) in your preferred text editor. It is a simple YAML file. +* Set the storage engine to `wiredTiger`. + +```yaml +storage: + engine: wiredTiger +``` + +* Enable replication, and name the replicaset `rs01`. + +```yaml +replication: + replSetName: rs01 +``` + +{% hint style="warning" %} +The MongoDB replica set is mandatory for Rocket.Chat > 1.0.0. +{% endhint %} + +Your MongoDB config file should look something like the following: + +```yaml +storage: + dbPath: /var/lib/mongodb + journal: + enabled: true + engine: wiredTiger + +systemLog: + destination: file + logAppend: true + path: /var/log/mongodb/mongod.log + +net: + port: 27017 + bindIp: 127.0.0.1 + +processManagement: + fork: true + timeZoneInfo: /usr/share/zoneinfo + +replication: + replSetName: rs01 +``` + +Read the [official documentation](https://docs.mongodb.org/manual/reference/configuration-options/) for a complete list of available MongoDB config options. + +* Start MongoDB with the following command: + +```bash +sudo systemctl enable --now mongod +``` + +* The replicaset: + +```bash +mongo --eval "printjson(rs.initiate())" +``` + +You can start your Rocket.Chat workspace now using this command: + +```bash +sudo systemctl enable --now rocketchat +``` + +Open a web browser and access the configured ROOT\_URL (`http://your-host-name.com-as-accessed-from-internet:3000`), follow the prompts to set up an admin account and your organization server info. + +## Optional Configurations + +* [Configure firewall rule](../../../../rocket.chat-environment-configuration/optional-configurations.md) +* [Configure an HTTP reverse proxy to access Rocket.Chat server](../../../../rocket.chat-environment-configuration/configuring-ssl-reverse-proxy.md) diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/rocket.chat-in-centos.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/rocket.chat-in-centos.md new file mode 100644 index 0000000000..47dd368953 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/rocket.chat-in-centos.md @@ -0,0 +1,146 @@ +# Rocket.Chat in CentOS + +### Requirements + +Depending on the version of [Rocket.Chat](https://rocket.chat/) you want to install, check the [release notes](https://github.com/RocketChat/Rocket.Chat/releases) to see the supported engine versions for MongoDB and NodeJs, and install as recommended. + +* **MongoDB** + + Please refer to the official MongoDB documentation on [installing MongoDB on CentOS](https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-red-hat/). +* **NodeJS** + + Follow the [official guide](https://nodejs.org/en/download/package-manager/#centos-fedora-and-red-hat-enterprise-linux) to install NodeJS on CentOS. You can also use third-party tools like [nvm](https://github.com/nvm-sh/nvm#installing-and-updating) or [n](https://www.npmjs.com/package/n). + +### Install Rocket.Chat + +* Install the required dependency packages. + +```bash +sudo yum install -y GraphicsMagick +``` + +* Download and extract the [latest release ](https://github.com/RocketChat/Rocket.Chat/releases/latest)of Rocket.Chat. + +```bash +curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz +``` + +* Extract the Rocket.Chat server files. + +```bash +tar -xzf /tmp/rocket.chat.tgz -C /tmp +``` + +```bash +cd /tmp/bundle/programs/server && npm install +``` + +* Move the extracted files to the _/opt_ directory. + +```bash +sudo mv /tmp/bundle /opt/Rocket.Chat +``` + +{% hint style="info" %} +This guide uses the _/opt directory_. However, you can choose your preferred directory. +{% endhint %} + +## Configure the Rocket.Chat service + +* Add the Rocket.Chat user and set the proper permissions on the Rocket.Chat folder. + +```bash +sudo useradd -M rocketchat && sudo usermod -L rocketchat +``` + +```bash +sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat +``` + +* Create the Rocket.Chat service file. + +``` +cat << EOF |sudo tee -a /lib/systemd/system/rocketchat.service +[Unit] +Description=The Rocket.Chat server +After=network.target remote-fs.target nss-lookup.target nginx.service mongod.service +[Service] +ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js +StandardOutput=syslog +StandardError=syslog +SyslogIdentifier=rocketchat +User=rocketchat +Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 ROOT_URL=http://localhost:3000/ PORT=3000 +[Install] +WantedBy=multi-user.target +EOFash +``` + +* Using `sudo` and your preferred text editor, open the Rocket.Chat service file just created (`/usr/lib/systemd/system/rocketchat.service`). Change the `ROOT_URL` environmental variable to reflect the URL you want to access the server with. Optionally, you can change the `MONGO_URL`, `MONGO_OPLOG_URL` and `PORT` variables. + +``` +MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 +MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 +ROOT_URL=http://your-host-name.com-as-accessed-from-internet:3000 +PORT=3000 +``` + +* Set up the storage engine and replication for MongoDB. + +``` +sudo sed -i "s/^# engine:/ engine: mmapv1/" /etc/mongod.conf +``` + +``` +sudo sed -i "s/^#replication:/replication:\n replSetName: rs01/" /etc/mongod.conf +``` + +{% hint style="warning" %} +The MongoDB replica set is mandatory for Rocket.Chat > 1.0.0. +{% endhint %} + +* Enable and start MongoDB. + +``` +sudo systemctl enable mongod && sudo systemctl start mongod +``` + +``` +mongo --eval "printjson(rs.initiate())" +``` + +* Enable and start Rocket.Chat + +``` +sudo systemctl enable rocketchat && sudo systemctl start rocketchat +``` + +## Configure your Rocket.Chat server + +Open a web browser, and go to the configured ROOT URL (http://your-host-name.com-as-accessed-from-internet:3000). Follow the configuration prompts to [set up an admin account, your server info, and your organization info.](https://docs.rocket.chat/setup-and-configure/accessing-your-workspace/rocket.chat-setup-wizard#setup-wizard) + +## Troubleshooting + +### **502 Bad Gateway** + +When installing Rocket.Chat on CentOS or RHEL, you may encounter a `502 Bad Gateway` error after setting up a reverse proxy with Nginx. To fix this, enable loopback for your upstream in SELinux. + +``` +setsebool -P httpd_can_network_connect 1 +``` + +### ZLIB version problem + +Some users had experienced problems starting Rocket.Chat server in CentOS because their zlib version is not compatible with Rocket.Chat. + +If you find an error message similar to the following in the logs: + +```bash +Exception in callback of async function: Error: /lib64/libz.so.1: version `ZLIB_1.2.9' not found +``` + +Add this environmental variable to the Rocket.Chat service file `(/usr/lib/systemd/system/rocketchat.service)`: + +``` +Environment=LD_PRELOAD=/opt/Rocket.Chat/programs/server/npm/node_modules/sharp/vendor/lib/libz.so +``` diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/README.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/README.md new file mode 100644 index 0000000000..d0ac0624e1 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/README.md @@ -0,0 +1,19 @@ +--- +description: Community Supported Installation Methods +--- + +# Nonofficial Methods + +{% hint style="warning" %} +The installation methods under this section are not officially supported by Rocket.Chat, so we can't assure that these are working or always up to date. +{% endhint %} + +As we know, there are people who use these methods, so we will leave them open for contributions from the community. + +You can also check their respective forum pages under [Community Guides](https://forums.rocket.chat/c/community-guides) category. + +* [FreeBSD](freebsd/) +* [Windows 10 Pro](../windows-10-pro.md) +* [Windows Server 2012](windows-server.md) +* [OpenSUSE](opensuse.md) +* [Kali](../manual-installation/debian-based-distros/kali-linux.md) diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/aliyun.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/aliyun.md new file mode 100644 index 0000000000..368186701c --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/aliyun.md @@ -0,0 +1,188 @@ +--- +description: Deploying Rocket.Chat on Aliyun +--- + +# Aliyun + +You can install Rocket.Chat to Ubuntu VPS on Aliyun. + +The recommended VPS configuration is: + +* 2 GB RAM +* 10 GB disk +* 2 or 4 cores + +However, lower performance configuration has been tested on a VPS with: + +* 1 GB RAM +* 10 GB disk +* 1 core + +Follow these steps to install Rocket.Chat. + +## Update Ubuntu repo lists and Install curl + +After you ssh to the VPS: + +![aliyun shell](https://raw.githubusercontent.com/Sing-Li/bbug/master/images/aliyun1.png) + +Run the command: + +``` +apt-get update +``` + +followed by: + +``` +apt-get install curl +``` + +## Install docker + +Run this command: + +``` +curl -sSL https://get.docker.com/ | sh +``` + +Docker should be installed, verify it: + +``` +docker ps +``` + +![aliyun docker verify](https://raw.githubusercontent.com/Sing-Li/bbug/master/images/aliyun2.png) + +## Install docker-compose + +Install docker-compose, follow the [latest release instructions](https://github.com/docker/compose/releases) + +For release 1.5.0, you can use: + +``` +curl -L https://github.com/docker/compose/releases/download/1.5.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose +``` + +_(if or when this is blocked, you'll have to obtain Linux-x86\_64 docker-compose binary via other means)_ + +Next, allow execution of docker-compose: + +``` +chmod +x /usr/local/bin/docker-compose +``` + +## Create directories for Rocket.Chat + +First, + +``` +mkdir /home/rocketchat +``` + +Then, + +``` +cd /home/rocketchat +``` + +Make two more directories for the mongodb database: + +``` +mkdir data +mkdir dump +``` + +## Create customized docker-compose.yml + +Create a `docker-compose.yml` file with the following content: + +``` +version: '2' + +services: + rocketchat: + image: rocket.chat:latest + restart: unless-stopped + volumes: + - ./uploads:/app/uploads + environment: + - PORT=3000 + - ROOT_URL=http://chat.inumio.com + - MONGO_URL=mongodb://mongo:27017/rocketchat + - MONGO_OPLOG_URL=mongodb://mongo:27017/local + - Accounts_UseDNSDomainCheck=True + depends_on: + - mongo + ports: + - 8818:3000 + + mongo: + image: mongo + restart: unless-stopped + volumes: + - $PWD/data:/data/db + - $PWD/dump:/dump + command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1 + + # this container's job is just run the command to initialize the replica set. + # it will run the command and remove himself (it will not stay running) + mongo-init-replica: + image: mongo + command: 'bash -c "for i in `seq 1 30`; do mongo mongo/rocketchat --eval \"rs.initiate({ _id: ''rs0'', members: [ { _id: 0, host: ''localhost:27017'' } ]})\" && s=$$? && break || s=$$?; echo \"Tried $$i times. Waiting 5 secs...\"; sleep 5; done; (exit $$s)"' + depends_on: + - mongo +``` + +Make sure you customize the file with `your-ip-address` in the `MONGO_URL` env variable. + +## Pull the required docker images + +This will download the required docker images, and may take some time. + +This is done only the first time, or when you want to update Rocket.Chat. + +``` +docker pull mongo +docker pull registry.rocket.chat/rocketchat/rocket.chat +``` + +## Start the mongodb database + +Run: + +``` +docker-compose up -d mongo +``` + +Mongo supports 24 x 7 operations and live backup. You should not need to restart it too frequently. See [mongodb documentations](https://docs.mongodb.org/manual/) for proper operation and management of a mongo server. + +Wait a couple of minute for mongo to start properly. + +## Start the mongodb replica + +Run: + +``` +docker-compose up -d mongo-init-replica +``` + +This container's job is just to run the command to initialize the replica set. It will run the command and remove itself (it will not stay running) + +## Start your Rocket.Chat server + +Now start the Rocket.Chat server: + +``` +docker-compose up -d rocketchat +``` + +Rocket.Chat should be ready in a minute or two. + +## Access your Rocket.Chat on Aliyun + +Your Rocket.Chat server can now be accessed over the Internet via: + +``` +http://your-ip-address:8818/ +``` diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/cloudron-io.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/cloudron-io.md new file mode 100644 index 0000000000..9e31f8a8ae --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/cloudron-io.md @@ -0,0 +1,15 @@ +--- +description: Deploying Rocket.Chat on Cloudron.io +--- + +# Cloudron.io + +Cloudron is a complete solution for running apps on your server and keeping them up-to-date and secure. + +Rocket.Chat can be installed on [Cloudron](https://cloudron.io) from the [Cloudron Store](https://cloudron.io/store/chat.rocket.cloudronapp.html). + +[![Install](https://cloudron.io/img/button.svg)](https://cloudron.io/button.html?app=chat.rocket.cloudronapp) + +The source code for the Rocket.Chat package can be found [here](https://git.cloudron.io/cloudron/rocketchat-app). + +There is a demo at [https://my.demo.cloudron.io](https://my.demo.cloudron.io) (username: cloudron password: cloudron). diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/freebsd/README.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/freebsd/README.md new file mode 100644 index 0000000000..df6b5ef501 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/freebsd/README.md @@ -0,0 +1,241 @@ +--- +description: Deploying Rocket.Chat on FreeBSD +--- + +# FreeBSD + +_Note: This is a community supported installation method. You can discuss about this in the_ [_forum thread_](https://forums.rocket.chat/t/freebsd-installation-guide/651)_._ + +## Prerequisites + +Valid for: + +* FreeBSD 10.3-RELEASE + +(64bit, meteor's development scripts will not compile under 32bit) + +_Please use a fresh system without traces of node or npm. Most of my initial problems came from old and/or special versions of node/npm/meteor_ + +## Packages + +You need to install the following packages either as root or via sudo: + +``` +$ sudo pkg install git scons python gcc48 gmake npm bash wget +``` + +Also install mongodb if you will be running the database setup on this server as well. + +If you get the following output: + +``` +The package management tool is not yet installed on your system. +Do you want to fetch and install it now? [y/N]: +``` + +It's just because the pkg-ng binary package system have not been setup / bootstraped yet. Simply choose yes (y) here. And press enter. + +### Installing pm2 + +We need pm2 later to daemonize or Rocket.Chat build. + +Now, install pm2: + +``` +$ sudo npm install pm2 -g +$ sudo pm2 startup freebsd +``` + +## Add user for Rocket.Chat + +This user will be the one used for running Rocket.Chat server. + +``` +$ adduser +Username: rocketchat +Full name: User used for running rocket chat +Uid (Leave empty for default): *press enter* +Login group [rocketchat]: *press enter* +Login group is rocketchat. Invite rocketchat into other groups? []: *press enter* +Login class [default]: *press enter* +Shell (sh csh tcsh git-shell bash rbash nologin) [sh]: bash +Home directory [/home/rocketchat]: *press enter, or pick where you want your Rocket.Chat installation to be* +Home directory permissions (Leave empty for default): *press enter* +Use password-based authentication? [yes]: *press enter* +Use an empty password? (yes/no) [no]: *press enter* +Use a random password? (yes/no) [no]: yes +Lock out the account after creation? [no]: *press enter* +Username : rocketchat +Password : +Full Name : User used for running Rocket.Chat +Uid : 1001 +Class : +Groups : rocketchat +Home : /home/rocketchat +Home Mode : +Shell : /usr/local/bin/bash +Locked : no +OK? (yes/no): yes +adduser: INFO: Successfully added (rocketchat) to the user database. +adduser: INFO: Password for (rocketchat) is: qGn&j9nXBx&j*C#u +Add another user? (yes/no): no +``` + +Be sure to save the password somewhere safe if you will need to login as the Rocket.Chat user in the future. + +### Switch to the newly created user + +``` +$ su -l rocketchat +``` + +(Or what ever username you picked). + +## Building the dev\_bundle + +### Setting up the environment + +Set some environment Variables to make the build work under FreeBSD: + +``` +$ export MAKE_CMD=gmake +$ export CXX=clang++ +$ export CC=clang +``` + +`MAKE_CMD=gmake` is important, because meteor requires GNU make to build. The fork we will be building lets us set `MAKE_CMD` so we don't have to do nasty stuff to our BSD make. + +### Building meteor + +We need a fork of meteor which allows us to set `MAKE_CMD` as mentioned before: + +``` +$ cd $HOME +$ git clone -b freebsd https://github.com/williambr/meteor +``` + +Meteor comes with scripts to build it: + +``` +$ cd meteor +$ ./scripts/build-mongo-for-dev-bundle.sh +$ ./scripts/build-node-for-dev-bundle.sh +$ ./scripts/generate-dev-bundle.sh +``` + +(These commands might take a long time to run depending on your hardware) + +After compiling the development bundles above test out the meteor setup + +``` +$ ./meteor --version +``` + +This should give you output: + +``` +It's the first time you've run Meteor from a git checkout. +I will download a kit containing all of Meteor's dependencies. +Skipping download and installing kit from /usr/home/rocketchat/meteor2/dev_bundle_FreeBSD_amd64_0.5.16.tar.gz +*** SNIPPED HERE *** +Unreleased, running from a checkout at 9719021 (HEAD -> freebsd, origin/freebsd) +``` + +This should output no errors (Also version numbers might change). + +#### Troubleshooting + +That should run without problems. If you run into issues check the following: + +* is the Environment setup right? +* Are the scripts running in bash? +* do I have `gmake` installed? + +## Running Rocket.Chat + +First, we need the `meteor` binary in our `$PATH` + +``` +$ export PATH=$PATH:$HOME/meteor +``` + +Next, we need to download Rocket.Chat: + +``` +$ cd $HOME +$ git clone https://github.com/RocketChat/Rocket.Chat.git +$ cd Rocket.Chat +``` + +We need to install bcrypt separately. + +``` +$ npm install --clang=1 bcrypt +``` + +After that: Go ahead and start Rocket.Chat! + +``` +$ meteor +``` + +The first launch of Rocket.Chat might take some time as its installing dependencies. If all goes well you would see output like this: + +``` +=> App running at: http://localhost:3000/ +I20160422-21:52:50.733(2)? ➔ System ➔ startup +I20160422-21:52:50.734(2)? ➔ +----------------------------------------+ +I20160422-21:52:50.735(2)? ➔ | SERVER RUNNING | +I20160422-21:52:50.735(2)? ➔ +----------------------------------------+ +I20160422-21:52:50.736(2)? ➔ | | +I20160422-21:52:50.737(2)? ➔ | Version: 0.27.0 | +I20160422-21:52:50.737(2)? ➔ | Process Port: 21690 | +I20160422-21:52:50.738(2)? ➔ | Site URL: http://localhost:3000/ | +I20160422-21:52:50.739(2)? ➔ | | +I20160422-21:52:50.739(2)? ➔ +----------------------------------------+ +``` + +If you would like to have the Rocket.Chat daemon running while signed out. You could use tmux to keep it running. + +### Install tmux (optional) + +``` +$ sudo pkg install tmux +``` + +Start a tmux session and run Rocket.Chat + +``` +$ tmux (when tmux is running) +$ meteor +``` + +This will run Rocket.Chat inside a tmux session allowing you to disconnect from the terminal and let the daemon running. + +* Press `ctrl+b d` to exit the tmux session. +* And use `tmux a` to access the session again. + +To read more about using tmux see this page: + +[http://man.openbsd.org/OpenBSD-current/man1/tmux.1](http://man.openbsd.org/OpenBSD-current/man1/tmux.1) + +Or look up one of the many tmux guides online. + +### Troubleshooting tmux + +If you run into any troubles with bcrypt, try this: `cp -R ~/meteor/packages/non-core/npm-bcrypt ~/Rocket.Chat/packages/*` + +If you run into problems with `fibers` check your `node` and `npm` version. Then try to build it again. + +### Notes + +* This guide is tested in a FreeBSD 10.3-RELEASE jail. +* Ensure you don't expose the mongoDB instance to the internet without setting up security for it! + +## Thanks + +* Filias Heidt +* Matt Olander +* William Grzybowski +* Cory Smelosky +* Sing Li diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/freebsd/universal.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/freebsd/universal.md new file mode 100644 index 0000000000..6fea0800e2 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/freebsd/universal.md @@ -0,0 +1,70 @@ +# Deploying Rocket.Chat Server Binaries on a FreeBSD system + +**Note: This deployment method is not officially supported by Rocket.Chat, you might need to build your own or find a community version of the tar file.** + +This is the recommended production deployment method on and is based on the excellent [Meteor Universal fork](http://meteor-universal.tumblr.com/) by Tom Freudenberg. + +As `root`: + +``` +# pkg install bash git GraphicsMagick mongodb python scons gmake +# sysrc mongod_enable=YES +# service mongod start +# pw groupadd rocketchat +# pw useradd rocketchat -g rocketchat -s /usr/local/bin/bash -m +# su -l rocketchat +``` + +As user running Rocket.Chat: + +``` +$ git clone --depth 1 -b release-1.2.1-universal https://github.com/4commerce-technologies-AG/meteor +$ cd meteor +$ ./meteor --version +$ cd $HOME +$ tar xf rocket.chat-freebsd-develop.tgz +$ cd $HOME/bundle/programs/server +$ $HOME/meteor/dev_bundle/bin/npm install +$ cd $HOME/bundle +$ export MONGO_URL=mongodb://localhost:27017/rocketchat +$ export Accounts_UseDNSDomainCheck=false +$ export ROOT_URL=http://your.host:3000 +$ export PORT=3000 +$ export ADMIN_PASS=supersecret +$ export ADMIN_USER=admin +$ $HOME/meteor/dev_bundle/bin/node $HOME/bundle/main.js +``` + +A very crude startup file for the server, (very ugly, does not fork, don't set rocketchat\_enable=YES): + +``` +#!/bin/sh + +# PROVIDE: rocketchat +# REQUIRE: LOGIN mongod +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf.local or /etc/rc.conf +# to enable this service: +# +# rocketchat_enable (bool): Set to "NO" by default. +# rocketchat_env (str): List of environment variables passed to rocketchat +# + +. /etc/rc.subr + +name="rocketchat" +rcvar=rocketchat_enable + +load_rc_config $name + +: ${rocketchat_enable="NO"} +: ${rocketchat_env="MONGO_URL=mongodb://localhost:27017/rocketchat PORT=3000"} +: ${rocketchat_user="rocketchat"} +: ${rocketchat_group="rocketchat"} + +command=/home/rocketchat/meteor/dev_bundle/bin/node +command_args="/home/rocketchat/Rocket.Chat/.meteor/local/build/main.js" + +run_rc_command "$1" +``` diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/galaxy.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/galaxy.md new file mode 100644 index 0000000000..a7eb8f0d1e --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/galaxy.md @@ -0,0 +1,52 @@ +--- +description: Deploying Rocket.Chat on Galaxy +--- + +# Galaxy + +Galaxy is a platform-as-a-service built specifically for Meteor apps. Built using the latest Docker and AWS cloud infrastructure. + +You will need to sign up for [Galaxy](https://www.meteor.com/hosting/). + +## Get Rocket.Chat code + +Download the source code first to be able to deploy to Galaxy + +``` +git clone https://github.com/RocketChat/Rocket.Chat.git +cd Rocket.Chat +``` + +### Set your MongoDB URL + +You will need a Mongo database configured for your Rocket.Chat application, for better performance, as meteor hosting uses AWS. It is advised that you setup your database in the same AWS region. + +Create a settings.json file to set the environmental variable as follows: + +``` +{ + "galaxy.meteor.com": { + "env": { + "MONGO_URL": "mongodb://:@:/?replicaSet=rs01", + "MONGO_OPLOG_URL": "mongodb://:@:/?authSource=admin&replicaSet=rs01", + "ROOT_URL": "...", + "MAIL_URL": "...", + + } + } +} +``` + +### Deploy to Galaxy servers + +Execute this from the root of the source code: + +``` +DEPLOY_HOSTNAME=[region] meteor deploy [hostname] --settings [filepath.json] +``` + +* region is ‘galaxy.meteor.com’ for US East, ‘eu-west-1.galaxy.meteor.com’ for EU West, and ‘ap-southeast-2.galaxy.meteor.com’ for Asia-Pacific. +* hostname is the fully qualified domain name where you’re planning to host your application (using the .meteorapp.com hostname format, in this example). +* filepath.json is the path to your settings file (for example, ‘./settings.json’). + +For more information on these steps check out [galaxy's doc](https://galaxy-guide.meteor.com/migrate-app.html) diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/jelastic.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/jelastic.md new file mode 100644 index 0000000000..b24cdd91bd --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/jelastic.md @@ -0,0 +1,41 @@ +--- +description: Deploying Rocket.Chat on Jelastic +--- + +# Jelastic + +Rocket.Chat is installed automatically as an application based on prebuilt Docker containers on Jelastic PaaS which supports Java, PHP, Node.js, Ruby, Python, Docker, and Kubernetes, available as public, private on-premise, virtual private, hybrid, and multi-cloud. + +## Rocket.Chat Deployment to the Cloud + +Get your Jelastic account at any of the available [hosting provider](https://jelastic.cloud/). + +Click the **DEPLOY TO JELASTIC** button, specify your email address within the widget, and press **Install**. + +[![Deploy to Jelastic](https://github.com/jelastic-jps/git-push-deploy/raw/master/images/deploy-to-jelastic.png)](https://jelastic.com/install-application/?manifest=https://raw.githubusercontent.com/jelastic-jps/rocket-chat/master/manifest.jps) + +> **Note:** If you are already registered at Jelastic, you can deploy this application by [importing](https://docs.jelastic.com/environment-import) the [package manifest raw link](https://raw.githubusercontent.com/jelastic-jps/rocket-chat/master/manifest.jps) or find Rocket.Chat application in the [Marketplace](https://docs.jelastic.com/marketplace) within the [dashboard](https://docs.jelastic.com/dashboard-guide). + +## Installation Process + +In the opened confirmation window at Jelastic dashboard, if required change: + +* **Environment** name +* **Display Name** +* destination [**Region**](https://docs.jelastic.com/environment-regions) if several are available + +and click on **Install**. + +![](https://github.com/jelastic-jps/rocket-chat/raw/master/images/install.png) + +Once the deployment is finished, you’ll see an appropriate success pop-up. + +![](https://github.com/jelastic-jps/rocket-chat/raw/master/images/success.png) + +The application is ready to use just press **Open in Browser** button and proceed to admin account setup and to configuration and customization. + +For production mode, the installation will require a custom domain and traffic encryption with a valid SSL certificate which can be installed with [Let's Encrypt SSL Add-On](https://jelastic.com/blog/free-ssl-certificates-with-lets-encrypt/). Learn more on how to [install Rocket.Chat in Jelastic](https://jelastic.com/blog/install-rocketchat-server/). + +The installation process itself looks simple. + +![](https://github.com/jelastic-jps/rocket-chat/raw/master/images/rocketchat.gif) diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/linode.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/linode.md new file mode 100644 index 0000000000..0238606eee --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/linode.md @@ -0,0 +1,5 @@ +# Linode + +Deploy Rocket.Chat on Linode from the marketplace with just a click. + +{% embed url="https://www.linode.com/marketplace/apps/linode/rocket-chat-platform" %} diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/openshift.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/openshift.md new file mode 100644 index 0000000000..bb9dead4ae --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/openshift.md @@ -0,0 +1,66 @@ +--- +description: Deploying Rocket.Chat on OpenShift +--- + +# OpenShift + +This guide covers how to host Rocket.Chat on OpenShift Online Next Gen. + +OpenShift Online Next Gen is a completely rewritten PaaS solution based on Docker and Kubernetes that allows developers to quickly develop, host and scale applications in a cloud environment. OpenShift provides a CLI based tool that allows managing your projects and applications. + +Please refer to [Getting Started with the CLI](https://docs.openshift.com/container-platform/4.7/cli\_reference/openshift\_cli/getting-started-cli.html) documentation on OpenShift website. + +## Table of Contents + +1. [Login](openshift.md#1-login) +2. [Create a project](openshift.md#2-create-a-project) +3. [Import the ImageStream and templates](openshift.md#3-import-the-imagestream-and-templates) +4. [Create the app](openshift.md#4-create-the-app) + +## 1. Login + +First of all, we need to log in to OpenShift API URL to create our project. The command to log in to OpenShift Online Next Gen is shown below: + +```bash +# oc login https://api.preview.openshift.com --token= +``` + +You can find the API Token to login to OpenShift Online Next Gen in the about page of the Web console. + +## 2. Create a project + +After login to OpenShift Online Next Gen, we need to create a project to host our Rocket.Chat application: + +```bash +$ oc new-project rocket-chat +``` + +## 3. Import the ImageStream and templates + +Clone the Rocket.Chat GitHub repository and import the templates to your OpenShift project: + +```bash +# git clone https://github.com/RocketChat/Rocket.Chat +# cd Rocket.Chat +# oc create -f .openshift/rocket-chat-ephemeral.json +# oc create -f .openshift/rocket-chat-persistent.json +``` + +## 4. Create the app + +Create the application using the newly created templated and pass the `MONGODB_DATABASE`,`MONGODB_USER` and `MONGODB_PASSWORD` parameters: + +```bash +# oc new-app rocket-chat -p MONGODB_DATABASE=rocketchat -p MONGODB_USER=rocketchat-admin -p MONGODB_PASSWORD=rocketchat +``` + +* Rocket.Chat uses a domain check code to verify the validity of the e-mail address. To disable it, run the following commands: + +```bash +# oc port-forward 27017 +# mongo localhost:27017 + +> use rocketchat +> db.auth('rocketchat-admin','rocketchat') +> db.rocketchat_settings.update({_id:'Accounts_UseDNSDomainCheck'},{$set:{value:false}}) +``` diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/opensuse.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/opensuse.md new file mode 100644 index 0000000000..165a3b6530 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/opensuse.md @@ -0,0 +1,417 @@ +--- +description: Install and Run Rocket.Chat on OpenSUSE Leap 42.2 +--- + +# OpenSUSE Leap 42.2 + +_Note: This is a community supported installation method. You can discuss about this in the_ [_forum thread_](https://forums.rocket.chat/t/opensuse-installation-guide/657)_._ + +_Last updated 2017-08-26_ + +Node.js version: 8.9.3 + +Rocket.Chat version: 0.60.0 + +These are barebones instructions for how to set up a Rocket.Chat server on OpenSUSE Leap 42.2 using nginx as a reverse proxy. These will help you set up a system you can experiment with. **THEY ARE NOT INTENDED FOR SETUP OF A PRODUCTION SYSTEM!** They are oriented on using a VM from AWS, but should work for any Leap 42.2 system. + +## Overview + +You will install and configure: + +1. Node.js +2. MongoDB +3. Let's Encrypt SSL certificates +4. nginx +5. Rocket.Chat and its dependencies + +To do this, you will: + +1. Acquire a VM to install on +2. Install all the packages you'll need +3. Start and configure MongoDB +4. Install Let's Encrypt SSL certificates +5. Configure and start nginx +6. Install and start Rocket.Chat + +Things you'll need to do afterwards on your own, **especially if you want a production-worthy system**: + +* Create a `systemctl` script to restart Rocket.Chat if the server is rebooted +* Configure email on the server (so Rocket can request account validation) +* Secure the server (e.g. get rid of the default user on a VM, etc.) +* Monitor the server so you can respond if it goes down + * Rocket.Chat availability + * MongoDB availability + * nginx availability +* Configure MongoDB for production use + * Use an XFS volume + * Use persistent (e.g. non-local) storage if you're using a VM + * Configure replica sets + * Consider setting /sys/kernel/mm/transparent\_hugepage/enabled to "never" as recommended by Mongo at startup +* Set up periodic updates for the system + +## Acquire a VM with OpenSUSE Leap 42.2 + +I like to use AWS spot instances as a very cheap way to experiment with things. I find I can usually get an m3.medium (1 vCPU, 3.75GB RAM) for \~$0.01/hour, or \~$7/month if run continuously. Pick the right region and you'll rarely if ever be shut down. + +There's a `spot_instance.json` below that I generally use to set up an instance. I already have a few security groups to lock down all but the ports I need, an IAMS profile to allow just the privileges I want, and an SSH keypair generated; I'm not going to tackle those here, so if you want to do this, you probably should do some quick research and set those up yourself. + +I also use the AWS CLI, so it's preconfigured for my favorite region, credentials, etc. If you don't have that set up, you'll want to. + +When you've got those set, getting an instance is really straightforward: + +``` +aws ec2 request-spot-instances --cli-input-json file://spot_instance.json +``` + +Note: if you get an error saying that you must subscribe to the AMI before using it, copy the URL in the error message and open it in a browser. The "subscription" costs $0.00/hour, so it's just a formality. + +## Configure the Box + +The default user in the Leap 42.2 image is `ec2-user`. You'll ssh into the box using that user, and immediately become root. + +``` +> ssh ec2-user@IP-OR-HOSTNAME-FOR-YOUR-BOX +> sudo su - +``` + +### Update and Install Packages using zypper + +1. Add the repo for MongoDB +2. Refresh metadata for all repos +3. Update all the packages on the box +4. Install the new packages we need + +``` +zypper addrepo http://download.opensuse.org/repositories/server:database/openSUSE_Leap_42.2/server:database.repo +zypper refresh +zypper -n update +zypper -n install mongodb nodejs4 npm4 nginx GraphicsMagick gcc-c++ +``` + +### Start and Configure MongoDB + +1. Enable and start MongoDB +2. Create the admin user +3. Create the DB and user for Rocket.Chat + +In a shell: + +``` +systemctl enable mongodb +systemctl start mongodb +``` + +Now start a MongoDB shell and add the admin user: + +``` +> mongo +use admin + +db.createUser({ + user: "root", + pwd: "fl!bb3rtyJ!bb3tt", + roles: [ "root" ] +}) + +exit +``` + +Now re-open a MongoDB shell as your admin user and create the Rocket.Chat db and admin user. You'll use these later to tell Rocket how to access its DB. + +Note: Don't use `:` or `@` in this user's password or you'll need to URL escape them later. It's easier to avoid those characters. + +``` +> mongo --authenticationDatabase admin -u root -p + +use rocketchat + +db.createUser({ + user: "rocket", + pwd: "4rgl3b4rgl3", + roles: [ "readWrite", "dbAdmin" ] +}) + +exit +``` + +### Install Let's Encrypt SSL Certificates + +This is so crazy easy. Remember when this was hard, and when it cost $20-$200 per year? Please consider using one of the donation links given afterwards as a way to support continued development of CertBot. + +* [https://letsencrypt.org/donate](https://letsencrypt.org/donate) +* [https://eff.org/donate-le](https://eff.org/donate-le) + +Replace `YOUR.SERVER.NAME` below with the hostname your server will be accessed from, e.g. `chat.example.com`, and replace `YOUR@EMAIL.ADDRESS` with your email address, e.g. `admin@example.com` + +``` +git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt +cd /opt/letsencrypt && ./letsencrypt-auto certonly --standalone --email YOUR@EMAIL.ADDRESS -d YOUR.SERVER.NAME +``` + +### Configure and Start nginx + +1. Set up a more modern site config management scheme +2. Set the base `nginx` config +3. Add the config needed for Rocket.Chat +4. Enable and start nginx + +``` +cd /etc/nginx +mkdir sites-enabled sites-available +``` + +Now do two things: + +1. Replace the contents of `/etc/nginx.conf` with the `nginx.conf` below. +2. Copy the contents of `rocket_chat.conf` below to `/etc/nginx/sites-available/rocket_chat.conf` + +Now you can enable the Rocket.Chat config, then enable and start nginx + +``` +cd /etc/nginx/sites-enabled +ln -s ../sites-available/rocket_chat.conf . + +systemctl enable nginx +systemctl start nginx +``` + +### Install and Configure Rocket.Chat + +1. Add a `rocket` user and group +2. Download the latest Rocket.Chat +3. Install all the node.js dependencies for Rocket.Chat using `npm` +4. Set the required environment variables +5. Start the Rocket.Chat server + +Replace `YOUR.SERVER.NAME` below with the hostname your server will be accessed from, e.g. `chat.example.com` + +``` +groupadd -g 2000 rocket +useradd -g rocket -u 2000 rocket + +cd /opt +curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz +tar zxvf rocket.chat.tgz +mv bundle Rocket.Chat +chown -R rocket:rocket /opt/Rocket.Chat + +su - rocket +cd /opt/Rocket.Chat/programs/server +npm install +cd ../.. + +# TODO: Make a script for this for systemctl +export ROOT_URL=http://YOUR.SERVER.NAME/ +export MONGO_URL=mongodb://rocket:4rgl3b4rgl3@localhost:27017/rocketchat +export PORT=3000 + +node main.js +``` + +If everything is working as planned, you'll see something like: + +``` +Will load cache for users +0 records load from users +Will load cache for rocketchat_room +0 records load from rocketchat_room +Will load cache for rocketchat_subscription +0 records load from rocketchat_subscription +Will load cache for rocketchat_settings +0 records load from rocketchat_settings +Updating process.env.MAIL_URL +Will load cache for rocketchat_permissions +0 records load from rocketchat_permissions +Will load cache for rocketchat_roles +0 records load from rocketchat_roles +LocalStore: store created at +LocalStore: store created at +Setting default file store to GridFS +Updating process.env.MAIL_URL +Using GridFS for custom sounds storage +Using GridFS for custom emoji storage +ufs: temp directory created at "/tmp/ufs" +➔ System ➔ startup +➔ +--------------------------------------------------------+ +➔ | SERVER RUNNING | +➔ +--------------------------------------------------------+ +➔ | | +➔ | Rocket.Chat Version: 0.60.0 | +➔ | NodeJS Version: 8.9.3 - x64 | +➔ | Platform: linux | +➔ | Process Port: 3000 | +➔ | Site URL: http://YOUR.SERVER.NAME:3000/ | +➔ | ReplicaSet OpLog: Disabled | +➔ | Commit Hash: 988103d449 | +➔ | Commit Branch: HEAD | +➔ | | +➔ +--------------------------------------------------------+ +``` + +... and that's Rocket.Chat all set. Direct a browser to `https://YOUR.SERVER.NAME` and register a yourself as new user. The first user you register will be made the server admin. + +## Sources + +These are docs and snippets I used to figure all of this out. + +[https://en.opensuse.org/MongoDB](https://en.opensuse.org/MongoDB) + +[https://docs.rocket.chat/installation/manual-installation/ubuntu/](https://docs.rocket.chat/installation/manual-installation/ubuntu/) + +[https://docs.rocket.chat/installation/paas-deployments/aws/](https://docs.rocket.chat/installation/paas-deployments/aws/) + +[https://www.digitalocean.com/community/tutorials/how-to-install-configure-and-deploy-rocket-chat-on-ubuntu-14-04](https://www.digitalocean.com/community/tutorials/how-to-install-configure-and-deploy-rocket-chat-on-ubuntu-14-04) + +## Config Files + +### `/etc/nginx.conf` + +This config relies on you creating `/etc/nginx/sites-available` and `/etc/nginx/sites-enabled` + +``` +user rocket; +worker_processes auto; +pid /run/nginx.pid; + +events { + worker_connections 768; + # multi_accept on; +} + +http { + + ## + # Basic Settings + ## + + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 65; + types_hash_max_size 2048; + # server_tokens off; + + # server_names_hash_bucket_size 64; + # server_name_in_redirect off; + + include /etc/nginx/mime.types; + default_type application/octet-stream; + + ## + # SSL Settings + ## + + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE + ssl_prefer_server_ciphers on; + + ## + # Logging Settings + ## + + access_log /var/log/nginx/access.log; + error_log /var/log/nginx/error.log; + + ## + # Gzip Settings + ## + + gzip on; + gzip_disable "msie6"; + + # gzip_vary on; + # gzip_proxied any; + # gzip_comp_level 6; + # gzip_buffers 16 8k; + # gzip_http_version 1.1; + # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; + + ## + # Virtual Host Configs + ## + + include /etc/nginx/conf.d/*.conf; + include /etc/nginx/sites-enabled/*; +} + + +#mail { +# # See sample authentication script at: +# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript +# +# # auth_http localhost/auth.php; +# # pop3_capabilities "TOP" "USER"; +# # imap_capabilities "IMAP4rev1" "UIDPLUS"; +# +# server { +# listen localhost:110; +# protocol pop3; +# proxy on; +# } +# +# server { +# listen localhost:143; +# protocol imap; +# proxy on; +# } +#} +``` + +### `/etc/nginx/sites-available/rocket_chat.conf` + +Replace `YOUR.SERVER.NAME` below with the hostname your server will be accessed from, e.g. `chat.example.com` + +``` +server { + listen 443 ssl; + server_name YOUR.SERVER.NAME; + ssl_certificate /etc/letsencrypt/live/YOUR.SERVER.NAME/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/YOUR.SERVER.NAME/privkey.pem; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_prefer_server_ciphers on; + ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; + root /usr/share/nginx/html; + index index.html index.htm; + # Make site accessible from http://localhost/ + server_name localhost; + location / { + proxy_pass http://localhost:3000/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header X-Nginx-Proxy true; + proxy_redirect off; + } +} +server { + listen 80; + server_name YOUR.SERVER.NAME; + return 301 https://$host$request_uri; +} +``` + +### `spot_instance.json` + +Replace `Subnet-Id`, `Arn`, and `SecurityGroupIds` content below with your own. The `ImageId` given is for the OpenSUSE Leap 42.2 AMI. + +``` +{ + "InstanceCount": 1, + "SpotPrice": "0.015", + "LaunchSpecification": + { + "ImageId": "ami-49570529", + "InstanceType": "m3.medium", + "SubnetId": "subnet-########", + "KeyName": "tinyjoy", + "IamInstanceProfile": { + "Arn": "arn:aws:iam::############:instance-profile/IAMS-PROFILE-NAME" + }, + "SecurityGroupIds": ["sg-########"] + }, + "Type": "one-time" +} +``` diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/scalingo.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/scalingo.md new file mode 100644 index 0000000000..bb69135530 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/scalingo.md @@ -0,0 +1,9 @@ +--- +description: Deploying Rocket.Chat on Scalingo +--- + +# Scalingo + +Deploy your own Rocket.Chat server instantly on [Scalingo](https://scalingo.com) + +[![Deploy on Scalingo](https://cdn.scalingo.com/deploy/button.svg)](https://my.scalingo.com/deploy?source=https://github.com/RocketChat/Rocket.Chat#master) diff --git a/installing-and-updating/paas-deployments/syncloud.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/syncloud.md similarity index 83% rename from installing-and-updating/paas-deployments/syncloud.md rename to deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/syncloud.md index c017ffc269..8f755aeefd 100644 --- a/installing-and-updating/paas-deployments/syncloud.md +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/syncloud.md @@ -12,5 +12,4 @@ description: Run Rocket.Chat on your easy to use personal device Read more at [syncloud.org](https://syncloud.org) -[![Syncloud](https://syncloud.org/images/logo_min.svg)](https://syncloud.org) - +[![Syncloud](https://syncloud.org/images/logo\_min.svg)](https://syncloud.org) diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/windows-server.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/windows-server.md new file mode 100644 index 0000000000..77fbf2bdd8 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/nonofficial-methods/windows-server.md @@ -0,0 +1,169 @@ +--- +description: Rocket.Chat Windows Installation Guide +--- + +# Windows Server + +_Note: This is a community supported installation method. You can discuss about this in the_ [_forum thread_](https://forums.rocket.chat/t/broken-windows-server-2012-r2-installation-guide/413/2)_._ + +## How to install Rocket.Chat on Windows Server 2012 R2 + +The following guide will step through the various steps for installing Rocket.Chat on Windows Server 2012 R2. + +**Important**: Production deployment using any client versions of Windows, such as Windows 7, 8, or 10 is not supported. However, beta deployment for Windows 10 Pro (or Enterprise or Education) version is available via Docker for Windows see [Installing on Windows 10 Pro 64bit with Docker for Windows](../windows-10-pro.md). + +Mobile clients (iOS and Android) are currently not supported using this method of deployment. However, [Windows 10 Pro 64bits with Docker for Windows](../windows-10-pro.md) based deployment should support mobile clients. + +**Note**: The steps will include all dependencies. If a particular dependency has already been installed, please skip to any relevant configuration section. + +### Binary Dependencies + +To start, go to `Control Panel -> Programs and Features` and uninstall each of the following (if present): + +* Microsoft Visual C++ 2010 x64 Redistributable +* Microsoft Visual C++ 2010 x86 Redistributable + +Then, download and install each of the following **in order**: + +1. [Python 2.7.3](https://www.python.org/ftp/python/2.7.3/python-2.7.3.msi) (if you have Python 3.x already installed, just leave it, both can coexist) +2. [Visual C++ 2010 Express](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) or Visual Studio 2010 +3. [Windows SDK 7.1](http://www.microsoft.com/en-us/download/details.aspx?id=8279) +4. [Visual Studio 2010 SP1](https://www.microsoft.com/en-us/download/details.aspx?id=34677) +5. [Visual C++ 2010 SP1 Compiler Update for the Windows SDK 7.1](http://www.microsoft.com/en-us/download/details.aspx?id=4422) +6. [GraphicsMagick](http://www.graphicsmagick.org/INSTALL-windows.html#prerequisites) +7. [Ghostscript](https://www.ghostscript.com/releases/index.html) (Optional for PDF rendering) + +### MongoDB + +* Download [MongoDB](https://www.mongodb.org/downloads#production). (Note: This can be done on a separate computer) +* Run the installer and choose `Custom` +* Click the `Browse` button to select desired install path, such as `C:\MongoDB` +* Continue through the rest of the installer. +* Now open NotePad and enter the following, replacing \[Data Path] with where the database will be stored, such as `C:\MongoDB\data` + +``` +systemLog: + destination: file + path: [Data Path]\logs\mongod.log +storage: + dbPath: [Data Path]\data +replication: + replSetName: rs1 +``` + +* Save the file as `[Installation Path]\mongod.cfg` where \[Installation Path] is the location you installed Mongo +* Open the Command Prompt by pressing `Windows Key + R` and then entering `cmd`, right click on Command Prompt and select `Run as administrator` +* Now enter the following: + +``` +> mkdir [Data Path] +> cd [Data Path] +> mkdir [Data Path]\db +> mkdir [Data Path]\logs + +> cd [Installation Path]\bin +> mongod.exe --config "[Installation Path]\mongod.cfg" --install +> net start MongoDB + +> mongo.exe +> rs.initiate() +> exit +``` + +> _Note: Do not include the `>`_ + +### Rocket.Chat files + +1. Download the latest Rocket.Chat **Windows Release** from the Rocket.Chat releases page (not available anymore) +2. Using an archive utility such as [7zip](http://www.7-zip.org) or [tar for Windows](http://gnuwin32.sourceforge.net/packages/gtar.htm), extract the tar.gz file +3. Place the files in the desired install path, such as `C:\RocketChat` + +### Node.js + +As of the time of this writing, Rocket.Chat is built on top of Node.js v14.0.0. So we need to install this first. + +1. Download [Node.js v14.0.0](https://nodejs.org/download/release/v14.0.0/) +2. Run the installer with all default options. + +### Node Packages + +1. Open the _Windows SDK 7.1 Command Prompt_ by pressing Start, typing its name, and clicking on it in the search results (Note: It needs to be the SDK Command Prompt) +2. Now enter the following, replacing: + * \[Installation Path] with the location you placed the Rocket.Chat files + * \[Port to Use] with the port for the Rocket.Chat server to use, such as `3000` + * \[Rocket.Chat URL] with the URL you will use for Rocket.Chat, such as `rocketchat.example.com` + * \[Address to MongoDB] with the IP Address of your MongoDB. (NOTE: If you didn't install Mongo on another computer, use `localhost`) + * \[MongoDB Database] with the name of the database you would like to use, such as `rocketchat` + +``` +> SetEnv /x86 +> cd [Installation Path] +> npm install nave -g +> npm install node-windows + +> npm config set python /Python27/python.exe --global +> npm config set msvs_version 2010 --global + +> set PORT=[Port to Use] +> set ROOT_URL=[Rocket.Chat URL] +> set MONGO_URL=mongodb://[Address to Mongo]:27017/[MongoDB Database] +> set MONGO_OPLOG_URL=mongodb://[Address to Mongo]:27017/local +> set SCRIPT_PATH=[Installation Path]\main.js + +> cd programs\server +> npm install + +> cd ../.. +> node rocket.service.js install +> net start Rocket.Chat +``` + +> Note: If missing, rocket.service.js can be found [here](https://github.com/Sing-Li/bbug/blob/master/images/rocket.service.js) _Note: Do not include the `>`_ + +### Verifying the Install + +1. View the installed services by pressing `Windows Key + R` and then entering `services.msc` +2. Find `Rocket.Chat` in the list. Its status should be `Running` +3. Open a browser and, in the address bar, enter `http://localhost:[Port Used]` +4. Rocket.Chat should load. + +### Mobile Support + +In order to use Rocket.Chat on mobile devices, you must also configure your installation to support SSL with a valid certificate. + +### IIS Configuration (Optional) + +The following steps will detail integrating Rocket.Chat with IIS. + +#### Get UrlRewrite and ARR + +1. Open IIS, click on your server, and then click on `Get New Web Platform Components` in the right hand menu +2. Install the Web Platform Installer if prompted +3. Once open, search for `Routing` in the upper right search box +4. Click on the `Add` button for Application Request Routing 3.0 and then `Install` +5. Once ARR and UrlRewrite are installed, close and reopen IIS + +#### Adding the SSL Certificate + +1. Click on your server in the left menu and then click on `Server Certificates` +2. In the right hand menu, click on `Import...` +3. Find your SSL Certificate and enter your password +4. Click `Ok` + +#### Setting up the Rocket.Chat site + +1. Create a new Web Site and bind it to the \[Rocket.Chat Url] previously specified. + + **NOTE: If you plan on using the Rocket.Chat mobile apps, you must use HTTPS. HTTP is optional only for PCs** +2. For the physical path, point it to an empty folder in your webroot. (Note: There will be no default document here, just the web.config.) +3. Press `Ok` +4. Select the new Rocket.Chat site and click on `Url Rewrite` +5. In the upper right hand menu, select `Add Rule(s)...` and then `Reverse Proxy` +6. Enter `http://localhost:[Port Used]` in the top box and hit `Ok` (Note: This must remain HTTP even if you are using HTTPS) + +#### Troubleshooting + +* If the Rocket.Chat service isn't running, check the Event Viewer under `Windows Logs\Application` for errors from the Rocket.Chat service. +* If the page didn't load, check the log files in \[Data Path]\logs for clues. +* If that doesn't help, or if you had any other problems during the process, try searching our [GitHub Issues](https://github.com/RocketChat/Rocket.Chat/issues) +* If you are still having problems, visit the [#support](https://open.rocket.chat/channel/support) channel and we'll be happy to help. diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/windows-10-pro.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/windows-10-pro.md new file mode 100644 index 0000000000..c07ddac1bd --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/other-deployment-methods/windows-10-pro.md @@ -0,0 +1,31 @@ +--- +description: Installing on Windows 10 Pro 64-bit with Docker for Windows +--- + +# Windows 10 + +{% hint style="info" %} +_This is a community-supported installation method. To learn more, see this_ [_forum thread_](https://forums.rocket.chat/t/windows-10-pro-installation-guide/408)_._ +{% endhint %} + +## Requirements + +* Minimum of 4 GB of memory on your Windows 10 Pro machine. +* A 64-bit edition of Windows 10 Pro. +* The latest updates have been installed on your Windows. +* Enabled Hyper-V (requires a reboot). Navigate to **Control Panel > Add Windows Components > Hyper-V.** +* Minimum of 20 GB of disk space, preferably SSD. + +## Install Rocket.Chat + +* Download and install [Docker for Windows](https://docs.docker.com/desktop/install/windows-install/). +* Create or open a directory you want to hold the content of your server. +* Create a file named `docker-compose.yml` based on [this example](https://github.com/RocketChat/Docker.Official.Image/blob/master/compose.yml). +* Run the following command in the same directory as the above file and wait for the server to start. + +``` +docker-compose up +docker-compose logs -f rocketchat +``` + +* Access your Rocket.Chat server via `http://localhost:3000.` diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/README.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/README.md new file mode 100644 index 0000000000..25add1a6a1 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/README.md @@ -0,0 +1,27 @@ +# Rapid Deployment Methods + +{% hint style="info" %} +[**👉 Trouble installing or deploying Rocket.Chat?** Join our Weekly Technical Helpline to get real-time help from our team!](https://app.livestorm.co/rocket-chat/rocketchats-weekly-technical-helpline?type=detailed) +{% endhint %} + +Whether you are a newbie, developer, or nontechnical person, Rocket.Chat offers a variety of deployment methods you can get started with regardless of the platform you intend to use. + +{% hint style="info" %} +Our recommended choice is to use [Docker and Docker Compose](../../../quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/) +{% endhint %} + +Before we dive into deployment, make sure you meet the [hardware-requirements.md](../hardware-requirements.md "mention") + +Some of our most popular and simple deployment methods are + +{% content-ref url="../../../quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/" %} +[docker-and-docker-compose](../../../quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/) +{% endcontent-ref %} + +{% content-ref url="snaps/" %} +[snaps](snaps/) +{% endcontent-ref %} + +{% content-ref url="rocketchatctl.md" %} +[rocketchatctl.md](rocketchatctl.md) +{% endcontent-ref %} diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/README.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/README.md new file mode 100644 index 0000000000..2dbbe9a072 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/README.md @@ -0,0 +1,510 @@ +# Docker Containers + +## Introduction + +This guide will walk you through the installation and configuration of a Docker-based Rocket.Chat instance, using Nginx as a reverse SSL proxy. + +[Docker ](https://www.docker.com/)provides the ability to package and run an application in a loosely isolated environment called a container. This isolation and security allow you to run many containers simultaneously on a given host. [Docker containers](https://www.docker.com/resources/what-container/) are instances of [Docker Image](https://docs.docker.com/engine/reference/commandline/images/). + +## What we'll cover in this guide + +1. [Securing the server: Firewall basics (optional)](https://docs.rocket.chat/quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/docker-containers#1.-securing-the-server-firewall-basics-optional-recommended) +2. [Securing the server: Fail2Ban IDS (optional)](./#2.-securing-the-server-fail2ban-optional-recommended) +3. [Installing Docker and Docker-Compose](./#3.-installing-docker-and-docker-compose) +4. [Editing the hosts file](./#4.-editing-the-hosts-file) +5. [Installing Nginx SSL Reverse Proxy](./#5.-installing-nginx-and-ssl-certificate) +6. [Creating docker-compose.yml](./#6.-create-the-docker-compose.yml-file-and-local-directories) +7. [Automatic start-up, and crash recovery](./#7.-automatic-startup-and-crash-recovery) +8. [Reboot & Status check](./#8.-reboot-and-status-check) +9. [Registering & Configuring Hubot, the chat robot](./#9.-registering-and-configuring-hubot-the-chat-robot) +10. [FAQ](./#faq) [& Troubleshooting](./#troubleshooting) +11. [Known Issues](./#11.-known-issues) + +## Prerequisites + +This guide is written assuming that you're starting with: + +* A clean machine workable Linux machine +* properly configured DNS that resolves requests to your domain name + +## 1. Securing the server: Firewall basics (optional, recommended) + +First, make sure [UFW](https://en.wikipedia.org/wiki/Uncomplicated\_Firewall) (Uncomplicated FireWall) is installed. It should be installed by default in Ubuntu, but if it’s not, you can check if it is installed by running. + +``` +apt -qq list ufc +``` + +It will return simple information about the package if it is found. Otherwise, install the package by running + +``` +sudo apt-get install ufw +``` + +{% hint style="info" %} +**IMPORTANT**: We're going to add a firewall rule to permit your default SSH connection port on port 22/tcp. +{% endhint %} + +In case you have the port changed on your device, be sure to use the corresponding port.\ +Failure to do so will break your SSH connection and log you out of the server as soon as you enable the firewall! + +**Set the default access rules:** + +``` +sudo ufw default deny incoming + +sudo ufw default allow outgoing +``` + +**Set the service rules (SSH / HTTPS):** + +``` +sudo ufw allow 22/tcp + +sudo ufw allow 443/tcp +``` + +**Enable the firewall:** + +``` +sudo ufw enable +``` + +**Check the Firewall status:** + +``` +sudo ufw status +``` + +**If you ever add or delete rules you should reload the firewall:** + +``` +sudo ufw reload +``` + +**If you ever need to turn off the firewall:** + +``` +sudo ufw disable +``` + +## 2. Securing the server: Fail2ban (optional, recommended) + +Fail2ban is an intrusion prevention software framework that protects computer servers from brute-force attacks. + +**Install:** + +``` +sudo apt-get update + +sudo apt-get install fail2ban +``` + +Press **Y** when prompted to proceed with the install. + +## 3. Installing Docker and Docker-Compose + +**Install Docker** + +Follow this guide [https://docs.docker.com/linux/step\_one/](https://docs.docker.com/linux/step\_one/) to get Docker installed. + +{% hint style="info" %} +Docker compose `v2.x.x` is required. +{% endhint %} + +**Install Docker-Compose version 2.9.0 (64 bit) via cURL** + +{% code overflow="wrap" %} +```bash +sudo curl -SL https://github.com/docker/compose/releases/download/v2.9.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose +``` +{% endcode %} + +**Set the executable permissions** + +``` +sudo chmod +x /usr/local/bin/docker-compose +``` + +{% hint style="info" %} +**Notes:** We're using version 1.24.0 for this guide. If you wish to try a newer version, you will need to edit the cURL command to reflect the alternate version number. If you get a "Permission denied" error, your `/usr/local/bin` directory probably isn't writable and you'll need to install Compose as the superuser. Run `sudo -i`, then the two commands above, then `exit`. (credit: docker compose docs) +{% endhint %} + +**Confirm docker-compose is properly installed** + +``` +sudo docker-compose --version +``` + +**Notes:** For minimal distributions, or systems where `/usr/local/bin` is not part of the `$PATH` env you might need to symlink the binary into `/usr/bin` as well: + +``` +sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose +``` + +## 4. Editing the hosts file + +If your hostname.domain.tld is mapped to a publicly routable IP, it needs to be set to your local address, for example, 127.0.0.1. Please note that the order in which localhost and your hostname are placed in this file is important; make sure localhost is first. + +**Edit the hosts file** + +``` +sudo nano /etc/hosts +``` + +``` +127.0.0.1 localhost.localdomain localhost +127.0.0.1 chat.inumio.com chat +``` + +Save and Exit. (Press **CTRL-X** to save, **Y** for yes, then **ENTER** to save as current filename.) + +## 5. Installing Nginx & SSL certificate + +**Install Nginx** + +``` +sudo apt-get install nginx +``` + +### 5a. Using a commercial SSL cert (recommended) + +If you don't have a certificate already, you can grab one for free at [Let's Encrypt](https://letsencrypt.org). + +Or, if you want to use a self-signed SSL cert instead, skip ahead to [Self-Signed SSL](./#5b-self-signed-ssl). + +**Install the private key (created when you generated the CSR)** + +``` +sudo nano /etc/nginx/certificate.key +``` + +Open the private key and Copy the entire private key text-block from the file that was generated when you created the CSR. Right click on the terminal window and select paste to paste it into nano. Alternatively, if you have a tool such as FileZilla, you can use it via SSH over FTP to upload your cert and key files instead of copy or paste. + +Save and Exit. + +**Install the SSL certificate (note that this goes in certificate.**_**crt**_**, not .**_**key**_**)** + +``` +sudo nano /etc/nginx/certificate.crt +``` + +Open the SSL Certificate provided by the SSL vendor (will probably have a .crt or .pem extension) and copy the entire text-block. Right click on the terminal window and select paste to paste it into nano. + +Save and Exit. + +### 5b. Self-Signed SSL + +If you acquired an SSL cert and installed it via the steps above, skip this step. + +**Create and install a self-signed SSL certificate:** + +``` +sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/certificate.key -out /etc/nginx/certificate.crt +``` + +**Follow the prompts.** + +Tip: It is **IMPORTANT** that the **Common Name** be set properly. Enter your fully qualified domain name (FQDN) here or, if you don’t have a FQDN, use your public IP address. For example, my FQDN for the chat server is `chat.inumio.com`. + +Save and Exit. + +### 5c. Set Key Permissions, Dhparams, Configure NGINX + +**Set permissions:** + +``` +sudo chmod 400 /etc/nginx/certificate.key +``` + +**Generate Strong Diffie Helman group** + +``` +sudo openssl dhparam -out /etc/nginx/dhparams.pem 2048 +``` + +**Configure Nginx:** + +``` +sudo nano /etc/nginx/sites-available/default +``` + +Delete the example in this file, and paste in the following: + +```apacheconf +# HTTPS Server + server { + listen 443 ssl; + server_name chat.inumio.com; + + error_log /var/log/nginx/rocketchat_error.log; + + ssl_certificate /etc/nginx/certificate.crt; + ssl_certificate_key /etc/nginx/certificate.key; + ssl_dhparam /etc/nginx/dhparams.pem; + ssl_protocols TLSv1.2; + ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; + ssl_prefer_server_ciphers on; + ssl_session_cache shared:SSL:20m; + ssl_session_timeout 180m; + + location / { + proxy_pass http://chat.inumio.com:3000/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header X-Nginx-Proxy true; + proxy_redirect off; + } + } +``` + +**Edit the config** Change the server name and proxy\_pass to reflect your own details. + +Save and Exit. + +**Test the config & Restart nginx:** + +``` +sudo service nginx configtest && sudo service nginx restart +``` + +**Note:** You can pinpoint problems in your nginx config using the following command: + +``` +sudo nginx -t +``` + +## 6. Create the docker-compose.yml file & local directories + +#### Create docker-compose.yml file: + +To create a docker-compose file, please follow the instructions [here](../../../../../quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/). + +**Create the directories:** + +```bash +sudo mkdir -p /var/www/rocket.chat/data/runtime/db +sudo mkdir -p /var/www/rocket.chat/data/dump +``` + +**Create the docker-compose.yml file:** + +* Edit the ROOT\_URL value to be your FQDN. +* Edit the ROCKETCHAT\_URL to be your _public_ IP address. Keep the port (3000) the same. +* Edit ROCKETCHAT\_USER, ROCKETCHAT\_PASSWORD, and BOT\_NAME. +* If your Rocket.Chat docker instance is behind a proxy, set the additional env-variable "Accounts\_UseDNSDomainCheck" to "false" (this only works, if these is a completely new deployment) + +Save and Exit. + +Start the services by: + +```bash +docker-compose up -d +``` + +## 7. Automatic Startup & Crash Recovery + +**Create the upstart job for MongoDB** + +``` +sudo nano /etc/init/rocketchat_mongo.conf +``` + +```bash +description "MongoDB service manager for rocketchat" + +# Start MongoDB after docker is running +start on (started docker) +stop on runlevel [!2345] + +# Automatically Respawn with finite limits +respawn +respawn limit 99 5 + +# Path to our app +chdir /var/www/rocket.chat + +script + # Showtime + exec /usr/local/bin/docker-compose up mongo +end script +``` + +Save and Exit. + +**Create the upstart job for Rocket.Chat** + +```bash +sudo nano /etc/init/rocketchat_app.conf +``` + +```bash +description "Rocket.Chat service manager" + +# Start Rocket.Chat only after mongo job is running +start on (started rocketchat_mongo) +stop on runlevel [!2345] + +# Automatically Respawn with finite limits +respawn +respawn limit 99 5 + +# Path to our app +chdir /var/www/rocket.chat + +script + # Bring up rocketchat app and hubot + exec /usr/local/bin/docker-compose up rocketchat hubot +end script +``` + +Save and Exit. + +## 8. Reboot and Status check + +We're ready to start the show! With luck, you should be able to reboot, and the chat system will come online by itself. The first time the system runs, it will have to download a bunch of docker image files. You won't see this occurring when you log back in. It's important to allow the downloads to be complete without interruption. + +After the downloads are extracted, the total combined installation is around 800 MB, so this initial downloading may take a while. On a commercial server with a fast connection, this will typically take a few minutes. + +**Restart the server:** + +``` +sudo reboot +``` + +**Reconnect via SSH, and do a systems check by viewing the docker containers:** + +``` +sudo docker ps -a +``` + +![](<../../../../../.gitbook/assets/image (677) (1) (1).png>) + +As you can see, our three docker containers are up and running: Rocket.Chat, MongoDB, and Hubot. NOTE: You may see only one, or none at all if the downloads are still in progress. Be patient, and check it periodically. Eventually, it should look similar to our sample screenshot. If it does, congratulations, you did it! GREAT JOB! + +Next, let's try opening the web browser and going to your new chat room. Provided that your DNS is properly configured, you should be able to simply type your chatroom URL into the browser and open it up. + +**First try with HTTPS:** + +``` +https://chat.inumio.com +``` + +**If for some reason that fails, try HTTP:** **Open port 3000/tcp in the firewall, and reload to set the new policy.** + +``` +sudo ufw allow 3000/tcp + +sudo ufw reload +``` + +**Try accessing in your web browser via HTTP** + +``` +http://chat.inumio.com:3000 +``` + +**PROBLEM?** See [Section 10: Troubleshooting](./#10-troubleshooting--faq) + +Once you've successfully reached your chat room login page, you need to register your admin account. By default, the first account to register on Rocket.Chat becomes the admin, so if your chat room is public, do this immediately in order to prevent someone else from registering and becoming the administrator. + +_Great! I'm in, but the bot is nowhere to be seen!_ + +No worries! In order to get your bot up and running, we must register it… + +## 9. Registering & Configuring Hubot, the chat robot + +Previously, we created the docker-compose.yml file. It's this file where we defined the basic attributes for Hubot. We set the bot name, password, room to join, and scripts to run. Before the bot can join the chat room, we must manually create the bot using the configuration details we provided in docker-compose.yml. + +[https://github.com/RocketChat/hubot-rocketchat#creating-a-user-on-the-server](https://github.com/RocketChat/hubot-rocketchat#creating-a-user-on-the-server) + +You can now optionally log in and set some of the preferences, such as bot avatar. When finished, log out of the bot account. + +With the bot account created, you can force it to join by simply rebooting the server, upon which the init script should automatically launch your chat room, and the bot should join the “General” room. + +For basic command help, in the chat message box, type BOTNAME help (where BOTNAME is your bot's name). + +## 10. Troubleshooting & FAQ + +### FAQ + +Q: _It works! But how do I add more functionality to the bot?_ A: You can add more scripts to the bot by adding them to the EXTERNAL\_SCRIPTS definitions: `nano /var/www/rocket.chat/docker-compose.yml` + +Find out more about Hubot scripts here: [https://github.com/RocketChat/hubot-rocketchat](https://github.com/RocketChat/hubot-rocketchat) and here: [https://github.com/hubot-scripts](https://github.com/hubot-scripts). Some of the available scripts for example: hubot-help, hubot-isup, hubot-4chan, hubot-strawpoll, hubot-seen, hubot-weather, hubot-hackerman, hubot-links, hubot-greetings, hubot-tell, hubot-geo, hubot-decides, hubot-praise, hubot-hello-ninja, hubot-thank-you, hubot-cool-ascii-faces, hubot-insulter, hubot-reddit + +Q: _How do I get email working?_ A: You need to configure SMTP parameters via the Administration UI (from inside rocketchat). + +### TROUBLESHOOTING + +**PROBLEM:** _I can't bring up my chat page in the browser using HTTPS!_ + +**POSSIBLE SOLUTIONS:** If you're able to resolve HTTP, but not HTTPS, you need to re-visit sections 4 & 5 of this guide. Make sure you've correctly entered the data in the hosts file, as well as in the /etc/nginx/sites-available/default file. + +**Check the nginx logs for any errors or other clues** + +``` +sudo cat /var/log/nginx/error.log +``` + +**Check the Firewall policy to make sure port 443 is open** + +``` +sudo ufw status +``` + +**Check your SSL installation** [https://www.digicert.com/help/](https://www.digicert.com/help/) + +**PROBLEM:** _I rebooted and waited forever for docker to download everything and start the chat room. NOTHING happened. It's like it didn't even try!_ + +**POSSIBLE SOLUTION:** If there are errors in the docker-compose.yml file, it will fail to bring up the Rocket.Chat app. Improperly formatted .yml will cause problems. + +**Check upstart jobs for log errors** + +``` +cd /var/log/upstart + +sudo cat rocketchat_mongo.log + +sudo cat rocketchat_app.log +``` + +Look for any errors in the output of those last two commands, which show the log contents of the upstart jobs we created in step 7. + +**Test your YML** [http://www.yamllint.com/](http://www.yamllint.com) simply copy the contents of docker-compose.yml and paste them into the tool. + +**Try to start it manually** + +``` +cd /var/www/rocket.chat + +/usr/local/bin/docker-compose up +``` + +If docker-compose doesn't throw an error and instead launches the job, then the problem is possibly in the upstart script. + +**PROBLEM:** _When I upload a file the server crashes!_ + +**POSSIBLE SOLUTION:** If you're running low on system resources, such as RAM, this can cause problems with not just performance, but stability. Make sure that you're not running out of memory, or have any other choke points, like not enough CPU, etc. One way to check is to issue the following command via SSH (or console) which runs TOP, a utility that will show valuable information about system resources and processes. + +``` +sudo top +``` + +With TOP running, try to replicate the problem while watching TOP for high loads, overloaded CPU, etc. While Rocket.Chat can be run on a single core with 512MB of memory, that's really not enough for stable performance. If you're seeing high values in TOP, consider upgrading your server to at least 1GB or RAM, or more. + +## 11. KNOWN ISSUES + +* \[FIXED] Issue #978: Avatars not saving, or crashing the server. [https://github.com/RocketChat/Rocket.Chat/issues/978](https://github.com/RocketChat/Rocket.Chat/issues/978) +* If you are saving your avatars inside the container, they will be lost after a "docker pull" update job + +## See Also + +You can also deploy using Docker and Docker Compose by following one of these guides: + +* [Docker Compose](../../../../../quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/) +* [Available Images](available-images.md) diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/available-images.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/available-images.md new file mode 100644 index 0000000000..87bbebf2ec --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/available-images.md @@ -0,0 +1,47 @@ +# Available Images + +Rocket.Chat is a rapidly-moving FOSS project. We maintain 3 Docker images for the diverse needs of our global user community. To use these images you will need to have [Docker](https://docs.docker.com/install/) installed and operational. + +Discovering existing releases: You can select the release you need from our [GitHub Release Page](https://github.com/RocketChat/Rocket.Chat/releases). Here's a description of our [current branching strategy](https://developer.rocket.chat/rocket.chat/contribute-to-rocket.chat/development-workflow). + +## Official image (stable and tested) + +The [Official Docker Images Repository](https://docs.docker.com/docker-hub/official\_images/) is where Rocket.Chat's Official, stable image is maintained and controlled by Docker, and reviewed by the Docker committee. + +```bash +docker pull registry.rocket.chat/rocketchat/rocket.chat +``` + +## Latest Release Image + +This is an image that is maintained at Rocket.Chat's own docker repository. The release may be from the develop or master branch. + +```bash +docker pull registry.rocket.chat/rocketchat/rocket.chat:latest +``` + +## Preview Image + +The Rocket.Chat preview image deploys a container with a database inside, it's useful for quickly trying or running tests, not requiring a dedicated database installation + +{% embed url="https://hub.docker.com/r/rocketchat/rocket.chat.preview" %} + +## Specific Release Image + +This is an image that is maintained at Rocket.Chat's own docker repository. It is associated with a release build. + +```bash +docker pull registry.rocket.chat/rocketchat/rocket.chat:X.X.X +``` + +### Discovering existing releases + +You can select the release you need from our [DockerHub Tags](https://hub.docker.com/r/rocketchat/rocket.chat/tags/). + +#### Bleeding-edge untested develop build image + +This is an image that is maintained at Rocket.Chat's own docker repository. It is updated from our `develop` (untested) branch which is the absolute latest, for those who need to work with the newest code. + +```bash +docker pull registry.rocket.chat/rocketchat/rocket.chat:develop +``` diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/docker-mongo-backup-and-restore.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/docker-mongo-backup-and-restore.md new file mode 100644 index 0000000000..0a2077d8e1 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/docker-mongo-backup-and-restore.md @@ -0,0 +1,39 @@ +# Docker Mongo Backup and Restore + +This guide shows how you can perform backup and restore of your Rocket.Chat's mongo database in docker. + +### Docker Mongo Backup + +To back up your MongoDB database in docker follow these steps: + +* Run the following command on your terminal to list out the label of the container running mongo + +``` +docker ps -a +``` + +You see a list of containers running, note the name of the mongo container in this case `rocketchat_mongo_1` + +![List of running docker containers](<../../../../../.gitbook/assets/List of running docker containers>) + +* Run this to dump the database into a binary file `db.dump` + +``` +docker exec sh -c 'mongodump --archive' > db.dump +``` + +When successful, you should see `db.dump` file in the current directory. + +### Docker Mongo Restore + +To restore the backup, run the following command + +``` +docker exec -i sh -c 'mongorestore --archive' < db.dump +``` + +{% hint style="info" %} +You can export your database dump directly to MongoDB Atlas by simply running + +`mongorestore --uri mongodb+srv://:@cluster0.w2btl.mongodb.net --archive=db.dump` +{% endhint %} diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/high-availability-install.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/high-availability-install.md new file mode 100644 index 0000000000..ece276d01d --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/high-availability-install.md @@ -0,0 +1,48 @@ +--- +description: Install Rocket.Chat as HA with mongodb replicaset as backend +--- + +# High Availability + +## Install MongoDB Replicaset + +* Use [this blog](https://medium.com/@gargar454/deploy-a-mongodb-cluster-in-steps-9-using-docker-49205e231319#.8dfln7n8c) on how to set up the mongodb replicaset. +* Create a user called oploguser with rights on local oplog database: + + `db.createUser({user: "oploguser", pwd: "password", roles: [{role: "read", db: "local"}, {role: "clusterMonitor", db: "admin"}]}).` +* Create rocket user to authenticate with rocketchat database: + + `db.createUser({user: "rocket", pwd: "password", roles: [{role: "readWrite", db: "rocketchat"}, {role: "clusterMonitor", db: "admin"}]}).` + +## Create Rocket.Chat Docker Container + +* Use example `docker-compose.yaml` in the [repo](https://github.com/RocketChat/Docker.Official.Image). +* Fill the `INSTANCE_IP` env with the local IP of the docker-host (in a 3 node setup this is unique on every host). +* Fill in the passwords from rocket and oplogger. +* Change the IP of every host in the example docker-compose.yaml -> extra\_hosts inserts host entries so each rocketchat-container could resolve the others by the name. +* Be sure that the instances could communicate on port 3000 with each other, this is important to see messages on other hosts directly. + +{% code title="docker-compose.yml" %} +```yaml +rocketchat: + image: registry.rocket.chat/rocketchat/rocket.chat:latest + environment: + - PORT=3000 + - ROOT_URL=https://chat.domain.de + - MONGO_URL=mongodb://rocket:password@rocket-1:27017,rocket-2:27017,rocket-3:27017/rocketchat?authSource=admin&replicaSet=rs0&w=majority + - MONGO_OPLOG_URL=mongodb://oploguser:password@rocket-1:27017,rocket-2:27017,rocket-3:27017/local?authSource=admin&replicaSet=rs0 + - INSTANCE_IP= + ports: + - 3000:3000 + extra_hosts: + - "rocket-1:10.250.250.13" + - "rocket-2:10.250.250.14" + - "rocket-3:10.250.250.17" +``` +{% endcode %} + +### Create a Load Balancer + +* Now, setup up a [reverse proxy](../../../../rocket.chat-environment-configuration/configuring-ssl-reverse-proxy.md) on each host to terminate SSL on each rocket.chat node or terminate SSL on the load balancer, this is up to you. +* See [Nginx multi-instance reverse proxy example](https://docs.rocket.chat/installation/manual-installation/multiple-instances-to-improve-performance#update-your-nginx-proxy-config). +* Set up a load balancer to reach each instance on `443` or `3000` (depends on the choice above). diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/mongodb-mmap-to-wiredtiger-migration.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/mongodb-mmap-to-wiredtiger-migration.md new file mode 100644 index 0000000000..82580d1cb2 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/mongodb-mmap-to-wiredtiger-migration.md @@ -0,0 +1,135 @@ +--- +description: >- + Migrate your existing MMAP based MongoDB instance into a WiredTiger one + without with as little downtime as possible. +--- + +# MongoDB MMAP to WiredTiger Migration + +Starting with the major release 4.X.Y of Rocket.Chat, MongoDB has to be setup with a _WiredTiger_ storage engine rather than the deprecated MMAP __ one. This is mandatory, if you plan to upgrade to one of the future Rocket.Chat versions and has to be prepared before initiating the application upgrade. + +[This project/repository](https://github.com/RocketChat/docker-mmap-to-wiredtiger-migration) aims to help out people migrating their existing dockerized, _MMAP_ based MongoDB installation into a _WiredTiger_ one. + +### Requirements + +* Docker-based Rocket.Chat deployment +* MongoDB instance with _MMAP_ storage engine + +### Quick usage + +1. Make sure you have met all requirements listed above. +2. Create a database dump to ensure a backup is in place in case anything goes south! +3. Stop running Rocket.Chat system. +4. Update `docker-compose.yml` to include the migration container/logic. +5. Start up containers, wait for the migration to be completed. +6. Once finished, Rocket.Chat should be up again - just running with a WiredTiger MongoDB storage engine now. + +### Detailed usage + +#### Assumptions + +* Your existing `docker-compose.yml` file is located within `/opt/rocketchat` +* Your "mongo" container has a `/data/db` volume mapped, that holds the existing (mmap) data files of MongoDB +* Your "mongo" container has a `/dump` volume mapped, that is accessible from the host and can be used to store the backup/dump + +#### Step-by-step guide + +1. Create a database dump of your existing MongoDB, save it on the host to have a backup just in case: + + ```bash + cd /opt/rocketchat + docker-compose exec mongo mongodump --archive=/dump/mmap --gzip + cp /data/dump/mmap ~/mongo-mmap-dump.gzip + ``` +2. Stop your existing Rocket.Chat system including all its services (especially MongoDB). + + ```bash + docker-compose stop + ``` +3. [Download the repository](https://github.com/RocketChat/docker-mmap-to-wiredtiger-migration/archive/main.zip) or clone it using `git` and extract it to `/opt/rocketchat-migration`: + + ```bash + git clone https://github.com/RocketChat/docker-mmap-to-wiredtiger-migration /opt/rocketchat-migration + ``` +4. Copy the `docker/` folder that holds the Dockerfile of the custom migrator image into your existing compose folder: + + ```bash + cp -r /opt/rocketchat-migration/docker /opt/rocketchat/docker + ``` +5. Backup and rename your current `docker-compose.yml` file to `docker-compose.mmap.yml`: + + ```bash + mv /opt/rocketchat/docker-compose.yml /opt/rocketchat/docker-compose.mmap.yml + ``` +6. Copy the new `docker-compose.yml` file into your compose folder: + + ```bash + cp /opt/rocketchat-migration/docker-compose.yml /opt/rocketchat/docker-compose.yml + ``` +7. Apply any possible customizations that you had in your old `docker-compose.mmap.yml` file to the new one (volume, port mappings, service names, etc.) +8. Run `diff` and make sure it looks (more or less) like the output below when you compare your old and new `docker-compose.yml` files: + + ```bash + diff /opt/rocketchat/docker-compose.mmap.yml /opt/rocketchat/docker-compose.yml + ``` + + ```diff + 8c8 + < "for i in `seq 1 30`; do + --- + > "for (( ; ; )); do + 11c11 + < echo \"Tried $$i times. Waiting 5 secs...\"; + --- + > echo \"Could not start Rocket.Chat. Waiting 5 secs...\"; + 37c37,45 + < command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1 + --- + > command: > + > bash -c + > "while [ ! -f /data/db/WiredTiger ]; do + > echo \"wiredTiger migration hasn't started yet. Waiting 30 secs...\"; + > sleep 30; + > done; + > docker-entrypoint.sh mongod --oplogSize 128 --replSet rs0 --storageEngine=wiredTiger;" + > depends_on: + > - migrator + 40a49,53 + > migrator: + > build: ./docker/ + > volumes: + > - ./data/db:/data/db + > + 45c58 + < "for i in `seq 1 30`; do + --- + > "for (( ; ; )); do + 51c64 + < echo \"Tried $$i times. Waiting 5 secs...\"; + --- + > echo \"Could not reach MongoDB. Waiting 5 secs ...\"; + ``` + + All changes above, summarized: + + * `for` loops slightly adjusted for both "rocketchat" and "mongo-init-replica" to run them endlessly + * Adjusted `command` property for "mongo" service: + * `while` loop to check for initiated WiredTiger migration (in `$MONGO_DATA_DIR/WiredTiger`) + * Use custom `Entrypoint` that applies the migration + * Use `--storageEngine=wiredTiger` switch instead of `--storageEngine=mmapv1` + * Added "migrator" service +9. Build the "migrator" image and start up the containers again: + + ```bash + docker-compose up --build -d + ``` +10. Wait for the migration to be completed - optionally check logs of "migrator" and "mongo" containers: + + ```bash + docker-compose logs -f migrator # once that one has completed the migration ... + docker-compose logs -f mongo # ... check if the mongo one already took over + ``` + +### Help and Support + +If you encounter any problems during the migration or in case you have general feedback or improvement ideas, feel free to create an issue in [the GitHub repository](https://github.com/RocketChat/docker-mmap-to-wiredtiger-migration). diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/systemd.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/systemd.md new file mode 100644 index 0000000000..99be953713 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/systemd.md @@ -0,0 +1,114 @@ +--- +description: Deploy Rocket.Chat to Linux that run on systemd +--- + +# systemd + +## Prerequisite + +You need to have [docker](https://docs.docker.com/linux/started/) installed. + +## How to run Rocket.Chat on systemd + +1. Create a docker network `docker network create rocketchat_default` +2. Create two service files: mongo.service and rocketchat.service +3. Enable the service files +4. Run the mongo.service +5. Create the mongo-init-replica to enable opolog +6. Run the rocketchat.service + +If you reboot the server, the services will start automatically in the right order. + +## Service Files + +mongo.service: + +``` +[Unit] +Description=mongo +Requires=docker.service +After=docker.service + +[Service] +EnvironmentFile=/etc/environment +User=dockeruser +Restart=always +TimeoutStartSec=0 +ExecStartPre=-/usr/bin/docker kill mongo +ExecStartPre=-/usr/bin/docker rm mongo +ExecStartPre=-/usr/bin/docker pull mongo:3.2 + + +ExecStart=/usr/bin/docker run \ + --name mongo \ + -v .../path/to/data/db:/data/db \ + -v .../path/to/data/dump:/data/dump \ <--optional + --net=rocketchat_default \ + mongo:3.2 \ + mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1 + +ExecStop=-/usr/bin/docker kill mongo +ExecStop=-/usr/bin/docker rm mongo +``` + +rocketchat.service: + +``` +[Unit] +Description=rocketchat +Requires=docker.service +Requires=mongo.service +After=docker.service +After=mongo.service + +[Service] +EnvironmentFile=/etc/environment +User=dockeruser +Restart=always +TimeoutStartSec=0 +ExecStartPre=-/usr/bin/docker kill rocketchat +ExecStartPre=-/usr/bin/docker rm rocketchat +ExecStartPre=-/usr/bin/docker pull registry.rocket.chat/rocketchat/rocket.chat:latest + +ExecStart=/usr/bin/docker run \ + --name rocketchat \ + -v .../path/to/uploads:/app/uploads \ + -e MONGO_OPLOG_URL=mongodb://mongo:27017/local \ + -e MONGO_URL=mongodb://mongo:27017/rocketchat \ + -e ROOT_URL=https://sub.domain.xx \ + --link mongo:mongo \ + --net=rocketchat_default \ + --expose 3000 \ + registry.rocket.chat/rocketchat/rocket.chat:latest + +ExecStop=-/usr/bin/docker kill rocketchat +ExecStop=-/usr/bin/docker rm rocketchat +``` + +## Build the mongo-init-replica container (only run once) + +Execute: + +``` +docker run \ + --name mongo-init-replica \ + --link mongo:mongo \ + --rm \ + --net=rocketchat_default \ + mongo:3.2 \ + mongo mongo/rocketchat --eval "rs.initiate({ _id: 'rs0', members: [ { _id: 0, host: 'localhost:27017' } ]})" +``` + +## Reverse Proxy + +If you are running a reverse proxy make sure it is joining the rocketchat\_default network. Add `ExecStartPre=-/usr/bin/docker network connect rocketchat_default Nginx` to the rocketchat.service if you Proxy container is named `Nginx` and be sure to configure it correctly. + +If you choose to use a non-dockerized nginx as a reverse proxy, please not that you then have to add `-p your-host-port:3000` to the `ExecStart` command of `rocketchat.service` and then configure your vhost to pass to `your-host-port`. + +## Backup + +All data will be hourly backed up to `/data/domains/example.org/data` folder. We advise to copy this folder to a remote location in case of hardware failure. + +## Questions + +If you have any questions, don't hesitate to open issues. diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/helm.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/helm.md new file mode 100644 index 0000000000..920be6503c --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/helm.md @@ -0,0 +1,241 @@ +--- +description: Deploy on a kubernetes cluster using our official helm chart. +--- + +# Kubernetes with Helm + +Using the [Helm](https://helm.sh/) package manager, the [helm chart](https://github.com/RocketChat/helm-charts/tree/master/rocketchat) bootstraps a Rocket.Chat deployment on a [Kubernetes](https://kubernetes.io/) cluster. It provisions a fully featured Rocket.Chat installation. Additionally, this chart supports the scaling of Rocket.Chat for increased server capacity and high availability (requires enterprise license). + +## Prerequisites Details + +The chart has an optional dependency on the [MongoDB](https://github.com/bitnami/charts/tree/master/bitnami/mongodb) chart. By default, the MongoDB chart requires PV support on underlying infrastructure which may be disabled. + +## Installing the Chart + +Confirm that you have helm3 binary insalled, then add the chart repository with the following command: + +``` +helm repo add rocketchat https://rocketchat.github.io/helm-charts +``` + +To install the chart ,you can either define your configuration options in a values file or pass the configuration parameters via command line arguments. + +### Define the configuations value in a file + +We recommend defining the configuration parameters inside a `Values.yaml` file with at least the non-root user's password and the root password before passing it to helm. You must set at least the database and root password in the values file. + +``` +mongodb: + auth: + passwords: + - rocketchat + rootPassword: rocketchatroot +``` + +Now, install with the following command: + +``` +helm install rocketchat -f Values.yaml rocketchat/rocketchat +``` + +### Set the configurations parameters via command line arguments + +Optionally, you can use the `--set` flag to pass the configuration parameters to helm. + +``` +helm install rocketchat rocketchat/rocketchat --set mongodb.auth.passwords={$(echo -n $(openssl rand -base64 32))},mongodb.auth.rootPassword=$(echo -n $(openssl rand -base64 32)) +``` + +> Starting from chart version 5.4.3, username, password, and database entries must be arrays of the same length due to MongoDB dependency. Rocket.Chat will use the first entries of those arrays for its own use. `mongodb.auth.usernames` array defaults to `{rocketchat}` and `mongodb.auth.databases` array defaults to `{rocketchat}.` + +## Uninstalling the Chart + +To uninstall/delete the `rocketchat` deployment: + +``` +helm delete rocketchat +``` + +### Configuration + +The following table lists the configurable parameters of the Rocket.Chat chart and their default values. + +| Parameter | Description | Default | +| -------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | +| `image.repository` | Image repository | `registry.rocket.chat/rocketchat/rocket.chat` | +| `image.tag` | Image tag | `3.18.3` | +| `image.pullPolicy` | Image pull policy | `IfNotPresent` | +| `host` | Hostname for Rocket.Chat. Also used for ingress (if enabled) | `""` | +| `replicaCount` | Number of replicas to run | `1` | +| `smtp.enabled` | Enable SMTP for sending mails | `false` | +| `smtp.existingSecret` | Use existing secret for SMTP account | `""` | +| `smtp.username` | Username of the SMTP account | `""` | +| `smtp.password` | Password of the SMTP account | `""` | +| `smtp.host` | Hostname of the SMTP server | `""` | +| `smtp.port` | Port of the SMTP server | `587` | +| `extraEnv` | Extra environment variables for Rocket.Chat. Used with `tpl` function, so this needs to be a string | `""` | +| `extraVolumes` | Extra volumes allowing inclusion of certificates or any sort of file that might be required (see bellow) | `[]` | +| `extraVolumeMounts` | Where the aforementioned extra volumes should be mounted inside the container | `[]` | +| `podAntiAffinity` | Pod anti-affinity can prevent the scheduler from placing RocketChat replicas on the same node. The default value "soft" means that the scheduler should _prefer_ to not schedule two replica pods onto the same node but no guarantee is provided. The value "hard" means that the scheduler is _required_ to not schedule two replica pods onto the same node. The value "" will disable pod anti-affinity so that no anti-affinity rules will be configured. | `""` | +| `podAntiAffinityTopologyKey` | If anti-affinity is enabled sets the topologyKey to use for anti-affinity. This can be changed to, for example `failure-domain.beta.kubernetes.io/zone` | `kubernetes.io/hostname` | +| `affinity` | Assign custom affinity rules to the RocketChat instance [https://kubernetes.io/docs/concepts/configuration/assign-pod-node/](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/) | `{}` | +| `minAvailable` | Minimum number / percentage of pods that should remain scheduled | `1` | +| `existingMongodbSecret` | An already existing secret containing MongoDB Connection URL | `""` | +| `externalMongodbUrl` | MongoDB URL if using an externally provisioned MongoDB | `""` | +| `externalMongodbOplogUrl` | MongoDB OpLog URL if using an externally provisioned MongoDB. Required if `externalMongodbUrl` is set | `""` | +| `mongodb.enabled` | Enable or disable MongoDB dependency. Refer to the [stable/mongodb docs](https://github.com/bitnami/charts/tree/master/bitnami/mongodb#configuration) for more information | `true` | +| `persistence.enabled` | Enable persistence using a PVC. This is not necessary if you're using the default [GridFS](https://rocket.chat/docs/administrator-guides/file-upload/) file storage | `false` | +| `persistence.storageClass` | Storage class of the PVC to use | `""` | +| `persistence.accessMode` | Access mode of the PVC | `ReadWriteOnce` | +| `persistence.size` | Size of the PVC | `8Gi` | +| `persistence.existingClaim` | An Existing PVC name for rocketchat volume | `""` | +| `resources` | Pod resource requests and limits | `{}` | +| `securityContext.enabled` | Enable security context for the pod | `true` | +| `securityContext.runAsUser` | User to run the pod as | `999` | +| `securityContext.fsGroup` | fs group to use for the pod | `999` | +| `serviceAccount.create` | Specifies whether a ServiceAccount should be created | `true` | +| `serviceAccount.name` | Name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname template | `""` | +| `ingress.enabled` | If `true`, an ingress is created | `false` | +| `ingress.pathType` | Sets the value for pathType for the created Ingress resource | `Prefix` | +| `ingress.annotations` | Annotations for the ingress | `{}` | +| `ingress.path` | Path of the ingress | `/` | +| `ingress.tls` | A list of [IngressTLS](https://kubernetes.io/docs/reference/kubernetes-api/service-resources/ingress-v1/#IngressSpec) items | `[]` | +| `license` | Contents of the Enterprise License file, if applicable | `""` | +| `prometheusScraping.enabled` | Turn on and off /metrics endpoint for Prometheus scraping | `false` | +| `prometheusScraping.port` | Port to use for the metrics for Prometheus to scrap on | `9458` | +| `serviceMonitor.enabled` | Create ServiceMonitor resource(s) for scraping metrics using PrometheusOperator (prometheusScraping should be enabled) | `false` | +| `serviceMonitor.interval` | The interval at which metrics should be scraped | `30s` | +| `serviceMonitor.port` | The port name at which container exposes Prometheus metrics | `metrics` | +| `livenessProbe.enabled` | Turn on and off liveness probe | `true` | +| `livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | `60` | +| `livenessProbe.periodSeconds` | How often to perform the probe | `15` | +| `livenessProbe.timeoutSeconds` | When the probe times out | `5` | +| `livenessProbe.failureThreshold` | Minimum consecutive failures for the probe | `3` | +| `livenessProbe.successThreshold` | Minimum consecutive successes for the probe | `1` | +| `microservices.enabled` | Use [microservices](https://docs.rocket.chat/quick-start/installing-and-updating/micro-services-setup-beta) architecture | `false` | +| `microservices.presence.replicas` | Number of replicas to run for the given service | `1` | +| `microservices.ddpStreamer.replicas` | Idem | `1` | +| `microservices.streamHub.replicas` | Idem | `1` | +| `microservices.accounts.replicas` | Idem | `1` | +| `microservices.authorization.replicas` | Idem | `1` | +| `microservices.nats.replicas` | Idem | `1` | +| `readinessProbe.enabled` | Turn on and off readiness probe | `true` | +| `readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | `10` | +| `readinessProbe.periodSeconds` | How often to perform the probe | `15` | +| `readinessProbe.timeoutSeconds` | When the probe times out | `5` | +| `readinessProbe.failureThreshold` | Minimum consecutive failures for the probe | `3` | +| `readinessProbe.successThreshold` | Minimum consecutive successes for the probe | `1` | +| `registrationToken` | Registration Token for [Rocket.Chat Cloud](https://cloud.rocket.chat/) | "" | +| `service.annotations` | Annotations for the Rocket.Chat service | `{}` | +| `service.labels` | Additional labels for the Rocket.Chat service | `{}` | +| `service.type` | The service type to use | `ClusterIP` | +| `service.port` | The service port | `80` | +| `service.nodePort` | The node port used if the service is of type `NodePort` | `""` | +| `podDisruptionBudget.enabled` | Enable or disable PDB for RC deployment | `true` | +| `podLabels` | Additional pod labels for the Rocket.Chat pods | `{}` | +| `podAnnotations` | Additional pod annotations for the Rocket.Chat pods | `{}` | + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. Alternatively, you can update the YAML file that specifies the values for the parameters to be provided while installing the chart. + +## Database Setup + +Rocket.Chat uses a MongoDB instance to presist its data. By default, the [MongoDB](https://github.com/bitnami/charts/tree/master/bitnami/mongodb) chart is deployed, and a single MongoDB instance is created as the primary in a replicaset.\ +Please refer to [this chart](https://artifacthub.io/packages/helm/bitnami/mongodb) for additional MongoDB configuration options. If you are using chart defaults, set the `mongodb.auth.rootPassword` and `mongodb.auth.passwords`. + +### **Using an External Database** + +This chart supports using an existing MongoDB instance. Use the [configuration ](helm.md#configuration)options and disable the chart's MongoDB with `--set mongodb.enabled=false` + +### Configuring Additional Environment Variables + +``` +extraEnv: | + - name: MONGO_OPTIONS + value: '{"ssl": "true"}' +``` + +### Specifying aditional volumes + +Sometimes, it's necessary to include extra sets of files by means of exposing them to the container as a mountpoint. The most common use case is the inclusion of SSL CA certificates. + +``` +extraVolumes: + - name: etc-certs + hostPath: + - path: /etc/ssl/certs + type: Directory +extraVolumeMounts: + - mountPath: /etc/ssl/certs + name: etc-certs + readOnly: true +``` + +### Increasing Server Capacity and HA Setup ![](<../../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (27).jpg>) + +To increase the server's capacity, you can increase the number of Rocket.Chat server instances across available computing resources in your cluster. For example, + +``` +kubectl scale --replicas=3 deployment/rocketchat +``` + +By default, the chart creates one MongoDB instance as a Primary in a replicaset. You can also scale up the capacity and availability of the MongoDB cluster independently. + +> See [MongoDB chart](https://github.com/bitnami/charts/tree/master/bitnami/mongodb) for configuration information. To learn more on running Rocket.Chat in scaled configurations, visit the [Install MongoDB Replicaset](docker-and-docker-compose/docker-containers/high-availability-install.md#install-mongodb-replicaset) guide. + +### Manage MongoDB secrets + +The chart provides several ways to manage the connection for MongoDB apart from the primary `mongodb.auth` values. They include: + +* Values passed to the chart (externalMongodbUrl, externalMongodbOplogUrl) +* An ExistingMongodbSecret containing the MongoURL and MongoOplogURL + +``` +apiVersion: v1 +kind: Secret +metadata: + name: my-secret +type: Opaque +data: + mongo-uri: mongodb://user:password@localhost:27017/rocketchat + mongo-oplog-uri: mongodb://user:password@localhost:27017/local?replicaSet=rs0&authSource=admin +``` + +### Upgrading + +### To 5.4.3 + +Due to changes on the upstream MongoDB chart, some deprecated variables have been renamed, which changed how this chart generates its manifests. Here are the values that need updates: + +* `mongodb.auth.username` is no longer supported and has been changed to `mongodb.auth.usernames` array. If you set it to something custom (defaults to `rocketchat`), make sure you update it to an array, and the entry is the **first** entry in that array, as that's what Rocket.Chat will use to connect to the database. +* `mongodb.auth.password` is no longer supported and has been changed to `mongodb.auth.passwords` array. Update your values file to make it an array, and ensure it's the first entry of that array. +* `mongodb.auth.database` is no longer supported and has been changed to `mongodb.auth.databases`. Update your values file, convert it to an array, and ensure it's the first entry of that array. +* `mongodb.auth.rootUsername` and `mongodb.auth.rootPassword` remain the same. + +> _`usernames`, `passwords` and `databases` arrays must be of the same length. Rocket.Chat chart will use the first entry for its mongodb connection string in `MONGO_URL` and `MONGO_OPLOG_URL`._ + +The used image tag gets updated **in most cases** on each chart update. The same is true for the MongoDB chart we use as our dependency. Before version 5.4.3, we used the chart version 10.x.x. Starting from 5.4.3, the dependency chart version has been updated to the latest available version, 13.x.x. This chart defaults to MongoDB 6.0.x at the moment. + +> As a warning, this chart will not handle MongoDB upgrades and will depend on the user to ensure the supprted version is runnning. + +The upgrade will fail if any of the following requirements are not met : + +* Must not skip a MongoDB release. For example, 4.2.x to 5.0.x will fail. +* Current `featureCompatibilityVersion` must be compatible with the version the user is trying to upgrade to. For example—if the current database version and feature compatibility is 4.4 and 4.2, respectively, but the user is trying to upgrade to 5.0, it'll fail. + +The chart will not check if the mongodb version is supported by the Rocket.Chat version considering deployments that might occur in an airgapped environment. You can check the[ release notes](https://github.com/RocketChat/Rocket.Chat/releases) to confirm that. + +To get the currently deployed MongoDB version, the easiest method is to get into the mongo shell and run `db.version()`. You are advised to pin your MongoDB dependency in the values file. + +``` +mongodb: + image: + tag: # find from https://hub.docker.com/r/bitnami/mongodb/tags +``` + +To learn more about the Rocket.Chat helm chart, visit the [Github repository](https://github.com/RocketChat/helm-charts/blob/master/rocketchat/README.md). + +### References + +* [Run a shell inside a container (to check mongodb version)](https://kubernetes.io/docs/tasks/debug/debug-application/get-shell-running-container/) +* [MongoDB upgrade official documentation](https://www.mongodb.com/docs/manual/tutorial/upgrade-revision/) +* [MongoDB helm chart options](https://artifacthub.io/packages/helm/bitnami/mongodb) diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/rocketchatctl.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/rocketchatctl.md new file mode 100644 index 0000000000..935e3851f7 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/rocketchatctl.md @@ -0,0 +1,116 @@ +# RocketChatCTL + +`rocketchatctl` is a command line tool written in bash to help you install and configure a Rocket.Chat server in a Linux host, it will take care of everything needed for the server to run, configure extra repositories and install needed libraries to install the correct node version and mongo server, and it will also set up directories and permissions, and configure the systemd files for these new services. + +Once you have your rocketchat server installed and running, you can use the same command to easily keep that Rocket.Chat server installation up to date, rocketchatctl can check for Rocket.Chat updates available and update it to the latest release. + +Furthermore, rocketchatctl optionally installs a loadbalancer/proxy with auto SSL provided by Let's Encrypt. + +Check it out here: [https://github.com/RocketChat/install.sh](https://github.com/RocketChat/install.sh) + +## Environment + +Currently, `rocketchatctl` is supported in these Linux distributions: + +**Supported OS:** + +* Ubuntu 18.04, 19.04, 20.04 +* CentOS 7, 8 +* Debian 9, 10, 11 + +`rocketchatctl` automatically install the latest supported node and MongoDB versions (CentOS Support WIP). + +We understand that some users could already have node, mongo, or even a webserver already installed in their servers, `rocketchatctl install` will check for previously installed versions of node and mongo in your system. + +## Options and Flags + +Run `rocketchatctl help` and check options and flags: + +``` +rocketchatctl command line tool to install and update Rocket.Chat server + +Usage: rocketchatctl [options] [--root-url=ROOT_URL --port=PORT --letsencrypt-email=EMAIL --webserver=WEBSERVER --version=VERSION --install-node --use-mongo] +Installs node, mongo, Rocket.Chat server and optionally a webserver (Caddy or Traefik), sets up directories and permissions to use Let's Encrypt certificates. +In case node or mongo already installed, it uses already installed versions though confirmation is required. +For node it set v8.11.4 as default in your system, for mongo mmapv1 storage engine and no authentication enabled is required during installation. +If you wish this script to run unattended, provide extra flags to the install option, server URL is required (--root-url). + +OPTIONS + -h help Display this message + install Install latest Rocket.Chat server version + update Update Rocket.Chat server from current version to latest version + check-updates Check for updates of Rocket.Chat server + upgrade-rocketchatctl Upgrade the rocketchatctl command line tool. + +FOR UNATTENDED INSTALLATION + --root-url=ROOT_URL the public URL where Rocket.Chat server will be accessible on the Internet (REQUIRED) + --port=PORT port for the Rocket.Chat server, default value 3000 + --webserver=WEBSERVER webserver to install as reverse proxy for Rocket.Chat server, options are caddy/traefik/none (REQUIRED) + --letsencrypt-email=EMAIL e-mail address to use for SSL certificates (REQUIRED if webserver is not none) + --version=VERSION Rocket.Chat server version to install, default latest + --install-node in case node installed, sets node to Rocket.Chat server recommended version, default behavoir cancel Rocket.Chat server installation + --use-mongo in case mongo installed, and storage engine configured is mmapv1, skip mongo installation but uses systems mongo for Rocket.Chat server database, default database name rocketchat +``` + +## How to use it + +### Install Rocket.Chat + +You can run `rocketchatctl install` directly curling the install.sh script from our website, `install.sh` will download rocketchatctl save it in `/usr/local/bin` and call `rocketchatctl` with the install option, this installation will be interactive: + +```bash +bash -c "$(curl https://install.rocket.chat)" +``` + +In case you want to have an unattended install, use unattended install flags with install.sh script like this: + +```bash +bash -c "$(curl https://install.rocket.chat)" -s --root-url=https://www.example.com --webserver=traefik --letsencrypt-email=myemail@mydomain.com +``` + +If you already have rocketchatctl installed just run: + +```bash +rocketchatctl install +``` + +Or if you want to use your mongo server, change node to the current needed version for Rocket.Chat, listen in a different port, and install another release, you can for example use these command: + +```bash +rocketchatctl install --root-url=https://www.example.com --webserver=none --use-mongo --install-node --port=4000 --version=3.9.0 +``` + +### Update Rocket.Chat + +Check for release updates: + +```bash +rocketchatctl check-updates +Current update available for Rocket.Chat server: from 3.8.0 to 3.9.0 +``` + +And update to the latest release: + +```bash +rocketchatctl update +``` + +The update option creates a temporary backup directory, downloads the latest rocketchat release, starts it, and checks that it is healthy by querying the info api. In case something goes wrong in the startup process, the previously installed version from the backup is restored and an error message is displayed. + +### Upgrade `rockectchatctl` + +This option will download the latest version available for rocketchatctl in the install repo, compare it to your current rocketchatctl and upgrade to the latest version if needed, be sure to check that you are running the latest rocketchactl. + +```bash +rocketchatctl upgrade-rockectchatctl +``` + +### **Backup `rocketchatctl`** + +Backup `rocketchatctl` data by running + +``` +rocketchatctl backup +``` + +By default, a backup will be made in the `/tmp` directory. You can specify where using the `--backup-dir` flag. See more help in the help section `rocketchatctl --help` diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/README.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/README.md new file mode 100644 index 0000000000..fab04760c6 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/README.md @@ -0,0 +1,47 @@ +# Snaps + +## Installation + +Snap is pre-installed in most modern distributions. If it is not, please read snap's [official documentation](https://snapcraft.io/docs/installing-snapd) on how to install snap. + +Installing Rocket.Chat with snap on Ubuntu is as easy as executing: + +``` +sudo snap install rocketchat-server +``` + +Then browse to `http://localhost:3000` and setup Rocket.Chat. + +The above command should install the latest version available. You can also specify install by track. + +Snaps are secure. Rocket.Chat and all of its dependencies are isolated from the rest of your system. Snaps also auto-update when we release a new version. So no need for more hassle updating. + +To move between different major releases, from 2.x to 3.x or from 3.x to 4.x, take a look at [snap tracks](https://forums.rocket.chat/t/introducing-snap-tracks/5890). + +## Configuration + +**To configure snap variables for your Rocket.Chat server:** + +To see the list of snap variables to configure for your Rocket.Chat server, run: + +```shell +snap get rocketchat-server +``` + +A list of variables is displayed + +``` +Key Value +backup-on-refresh disable +ignore-errors false +mongo-oplog-url mongodb://localhost:27017/local +mongo-url mongodb://localhost:27017/parties +port 3000 +siteurl http://localhost:3000 +``` + +Setting one is done by simply executing + +```bash +sudo snap set rocketchat-server = +``` diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/auto-ssl-with-snaps.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/auto-ssl-with-snaps.md new file mode 100644 index 0000000000..6da30efba5 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/auto-ssl-with-snaps.md @@ -0,0 +1,220 @@ +# Auto SSL with Snaps + +We now include the option to enable Caddy in your snap. Caddy makes use of [Let's Encrypt](https://letsencrypt.org) to automatically provide you TLS protection for your communications. + +Starting from release 0.73 you can easily configure everything related to Caddy using snap hooks to ensure your DNS configuration is set up correctly before starting Caddy and Let's Encrypt support. + +## Configure everything using snap + +{% hint style="info" %} +For 4.x latest AMD64 snaps or 3.x latest ARM64 snaps +{% endhint %} + +Set the `SiteUrl` to your domain, make sure it is prefixed with `https`. + +``` +sudo snap set rocketchat-server siteurl=https:// +``` + +Now start Caddy and restart the snap services. + +``` +sudo systemctl enable --now snap.rocketchat-server.rocketchat-caddy +sudo snap restart rocketchat-server +``` + +{% hint style="info" %} +For older snaps +{% endhint %} + +If you want to enable TLS and Let's Encrypt certificates you should: + +1. Input a URL starting with HTTPS +2. Own the domain name you would like to use +3. Have the correct DNS record set up to resolve your domain name to your public IP (remember DNS records could take some time to propagate). + +These next commands will check that configuration is set up correctly before starting the services: + +```bash +sudo snap set rocketchat-server caddy-url=https:// +sudo snap set rocketchat-server caddy=enable +sudo snap set rocketchat-server https=enable +sudo snap run rocketchat-server.initcaddy +``` + +If no errors were found, it is safe to restart Rocket.Chat and Caddy: + +```bash +sudo systemctl restart snap.rocketchat-server.rocketchat-server.service +sudo systemctl restart snap.rocketchat-server.rocketchat-caddy.service +``` + +In case you don't want to configure TLS for your site, or want to remove TLS configuration: + +```bash +sudo snap set rocketchat-server https=disable +sudo snap set rocketchat-server caddy-url=http:// +sudo snap set rocketchat-server caddy=enable +sudo snap run rocketchat-server.initcaddy +``` + +If no errors were found, it is safe to restart Rocket.Chat and Caddy: + +```bash +sudo systemctl restart snap.rocketchat-server.rocketchat-server.service +sudo systemctl restart snap.rocketchat-server.rocketchat-caddy.service +``` + +### Check Caddy's logs + +```bash +sudo snap logs -f rocketchat-server.rocketchat-caddy +``` + +## Configure Caddy yourself or use another HTTP Proxy + +{% hint style="info" %} +For 4.x latest AMD64 snaps or 3.x latest ARM64 snaps +{% endhint %} + +{% hint style="info" %} +Both caddy v2 and caddy v1 (EOL) is delivered in the snap, v2 is prioritized over v1. +{% endhint %} + +If you want to configure Caddy yourself, place the Caddyfile in `/var/snap/rocketchat-server/current/` directory and restart rocketchat-server. + +``` +sudo snap restart rocketchat-server +``` + +If you want to use some other reverse proxy, just disable Caddy by running. + +``` +sudo systemctl disable snap.rocketchat-server.rocketchat-caddy +``` + +{% hint style="info" %} +For older versions +{% endhint %} + +In case you plan to use another https proxy or you prefer other options in Caddy configuration, you can disable caddy: + +```bash +sudo snap set rocketchat-server caddy=disable +``` + +Then, edit the Caddyfile found at `/var/snap/rocketchat-server/current/Caddyfile` and write your configuration. + +Replace `_caddy-url_` and `_port_` with your site information. For instance, let's say I have example-domain.com pointing at my server. + +First, be sure that your DNS has finished resolving **before** attempting to enable TLS. If your DNS is not working yet, you could be instantly [throttled by Let's Encrypt](https://caddyserver.com/docs/automatic-https#testing) for _up to a week_. To test your DNS you can use http: + +```bash +http://example-domain.com + +reverse_proxy localhost:3000 +``` + +and restart Caddy: + +```bash +sudo systemctl reload snap.rocketchat-server.rocketchat-caddy +``` + +You can check that the Caddy service started correctly by running: + +```bash +sudo systemctl status snap.rocketchat-server.rocketchat-caddy +``` + +Once that is tested and resolved, to get secured communications, you can remove the `http://`: + +```bash +example-domain.com + +reverse_proxy localhost:3000 +``` + +**Please note: using an IP address will not work for automatically enabling TLS with a publicly-trusted certificate. You must use a valid hostname for a trusted certificate (**[**here's why**](https://caddyserver.com/docs/automatic-https)**).** If you use an IP address, Caddy will still serve your site over TLS, but using a self-signed certificate. + +Now you can restart the Caddy service by running: + +```bash +sudo systemctl reload snap.rocketchat-server.rocketchat-caddy +``` + +You can check that the Caddy service started correctly by running: + +```bash +sudo systemctl status snap.rocketchat-server.rocketchat-caddy +``` + +If everything went well, the site will be accessible at `https://example-domain.com`. + +## Testing with an Untrusted Self-Signed Certificate + +Simply add the `tls internal` directive to your Caddyfile like so: + +```bash +https://example-domain.com + +reverse_proxy localhost:3000 +tls internal +``` + +Remember to reload the Caddy service: + +```bash +sudo systemctl reload snap.rocketchat-server.rocketchat-caddy +``` + +This will enable TLS with an untrusted, self-signed certificate for testing purposes. + +For details on the Caddy TLS directive, visit [https://caddyserver.com/docs/tls](https://caddyserver.com/docs/caddyfile/directives/tls) + +## Disabling TLS or Listening on Custom Ports + +This configuration will listen **without TLS** on the default port 80: + +```bash +http://example-domain.com + +reverse_proxy localhost:3000 +``` + +This configuration will listen **without TLS** on port 8080: + +```bash +http://example-domain.com:8080 + +reverse_proxy localhost:3000 +``` + +This configuration will listen **with TLS** on port 8080: + +```bash +example-domain.com:8080 + +reverse_proxy localhost:3000 +``` + +Note that you can use an IP address and Caddy will serve it with TLS using a self-signed certificate: + +```bash +192.168.1.1:8080 + +reverse_proxy localhost:3000 +``` + +Remember to reload the Caddy service: + +```bash +sudo systemctl reload snap.rocketchat-server.rocketchat-caddy +``` + +## Opening ports when running Rocket.Chat Server from behind router + +For Caddy to be able to work from behind a router, the following ports need to be opened between the internet and the server. This is usually achieved through router software or web-interface. + +* HTTP: port **80** +* HTTPS: port **443** diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/configuring-mongodb.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/configuring-mongodb.md new file mode 100644 index 0000000000..36b57f6299 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/configuring-mongodb.md @@ -0,0 +1,5 @@ +# Configuring MongoDB + +Starting track 4.x, you can configure MongoDB by yourself. The configuration file is located in `/var/snap/rocketchat-server/current/mongod.conf`. + +For all the configuration options, see [MongoDB's Official Documentation.](https://www.mongodb.com/docs/) diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/snap-backup-and-restore.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/snap-backup-and-restore.md new file mode 100644 index 0000000000..18ea516d74 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/snap-backup-and-restore.md @@ -0,0 +1,106 @@ +# Snap Backup and Restore + +This guide shows how you can perform backup and restore of your data. + +## Backup Rocket.Chat Snap Data + +{% hint style="success" %} +You can enable automatic backup on each snap refresh by executing `sudo snap set rocketchat-server backup-on-refresh=enable` +{% endhint %} + +To backup the data on your snap installation, follow these steps + +* Stop your rocketchat-server by running + +``` +sudo service snap.rocketchat-server.rocketchat-server stop +``` + +{% hint style="info" %} +Note that while the `rocketchat-server service` should be stopped, the `rocketchat-mongo service` should be kept running! +{% endhint %} + +``` +sudo service snap.rocketchat-server.rocketchat-mongo status | grep Active + Active: active (running) (...) +``` + +* Run the backup command + +``` +sudo snap run rocketchat-server.backupdb +``` + +* If all goes well, you get an output like below + +``` +[+] A backup of your data can be found at /var/snap/rocketchat-server/common/backup/rocketchat_backup_.tar.gz +``` + +* Start your rocketchat-server + +``` +sudo service snap.rocketchat-server.rocketchat-server start +``` + +Copy your backup to a different system for safekeeping. + +## Restore Rocket.Chat Snap Data + +Follow these steps to restore your previously backed up data. + +* Stop your rocketchat-server by running + +``` +sudo service snap.rocketchat-server.rocketchat-server stop +``` + +{% hint style="info" %} +Note that while the `rocketchat-server service` should be stopped, the `rocketchat-mongo service` should be kept running! +{% endhint %} + +``` +sudo service snap.rocketchat-server.rocketchat-mongo status | grep Active + Active: active (running) (...) +``` + +* Copy your backup file to the snap's common folder: + +``` +sudo cp rocketchat_backup.tgz /var/snap/rocketchat-server/common/ +``` + +* Run the restore command + +``` +sudo snap run rocketchat-server.restoredb /var/snap/rocketchat-server/common/rocketchat_backup.tgz +``` + +If you are replacing an existing database, you get a warning message + +{% hint style="danger" %} +**ATTENTION** + +* Your current database WILL BE DROPPED prior to the restore! +* Would you like to make a backup of the current database before proceeding? +* (y/n/Q)> +{% endhint %} + +* Choose the option you want + * Press `y` and `Enter` to make a backup of the database in its current state. + * Press `n` and `Enter` to continue _without a backup_ of the database in its current state. + * Press any key and/or `Enter` to quit the restore process without making any changes. +* If you choose to proceed and all goes well, you will see an output similar to: + +``` +[*] Extracting backup file... +[*] Restoring data... +[*] Preparing database... +[+] Restore completed! Please restart the snap.rocketchat services to verify. +``` + +* Start your rocketchat-server + +``` +sudo service snap.rocketchat-server.rocketchat-server start +``` diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/snap-faq.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/snap-faq.md new file mode 100644 index 0000000000..6f67177f79 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/snap-faq.md @@ -0,0 +1,349 @@ +# Snap FAQ + +If you have questions about snaps best place to ask them is at the [#ubuntu-snap](https://open.rocket.chat/channel/ubuntu-snap) channel. + +### When will my snap installation get the latest release? + +Snaps are one of our biggest install base. They are also auto updating. As a result we like to spend more time testing before releasing. Updated Snaps are usually released around the 15th of the month - around 2 weeks after a new release. This gives us time to look for issues so you don't have to. + +If you have special requirements and really need to use the latest release immediately then please consider another installation method e.g docker + +### How do I access my site at a different port? How do I enable TLS/SSL with my snap? + +You can change the default port (port 3000) to something else by changing the `port` configuration option. For example, if you wanted to change the HTTP port to 8080 instead of 3000: + +``` +sudo snap set rocketchat-server port=8080 +``` + +Make sure you restart the `rocketchat-service` service afterward for the change to take effect. Read [here](https://docs.rocket.chat/installing-and-updating/snaps#i-need-to-restart-rocket-chat-how-do-i-do-this) for more information on that. **Your only need to restart the Rocket.Chat application itself, not the database or Caddy**. + +For enabling TLS/SSL, check out our guide for enabling caddy [here](auto-ssl-with-snaps.md). + +### Ubuntu 18.04 LTS gives the message "snap not found", what's wrong? + +Make sure you're using x64 or amd64 (or armhf) images, especially on VPS or VMs. x86 (32-bit) is not supported. + +### How do I manually update to a new release? + +While updates happen automatically usually within 6 hours from the time of release, you can update manually by issuing this command: + +``` +sudo snap refresh rocketchat-server +``` + +### How do I revert to the previous version of Rocket.Chat? + +``` +sudo snap revert rocketchat-server +``` + +### How do I list the services shipped with Rocket.Chat snap? + +The Rocket.Chat snap provides three services. Outside of the snap context, globally, each service is named like `snap..`. Look at the table down below to have a better understanding. + +| Service | Snap Service Name | Systemd Service Name | +| ----------- | ----------------- | ---------------------------------------- | +| MongoDB | rocketchat-mongo | snap.rocketchat-server.rocketchat-mongo | +| Caddy | rocketchat-caddy | snap.rocketchat-server.rocketchat-caddy | +| Rocket.Chat | rocketchat-server | snap.rocketchat-server.rocketchat-server | + +You can check the list of services yourself with: + +``` +snap info rocketchat-server +``` + +Look for the `services` section. + +### How do I tell if Rocket.Chat is actually running? + +You can check whether either or all of them are running or not with the following command: + +```bash +snap services rocketchat-server +``` + +Look into the third column (`Current`) that logs the current state of the services. + +Another option is to use the `systemctl` command. To quickly check if a service is active or not, use the `is-active` subcommand or the more well-known `status` subcommand. See the above table to know the name of the service you want to inspect. + +``` +systemctl is-active snap.rocketchat-server.rocketchat-mongo +systemctl is-active snap.rocketchat-server.rocketchat-caddy +systemctl is-active snap.rocketchat-server.rocketchat-server +``` + +Or use the `status` subcommand: + +``` +systemctl status snap.rocketchat-server.rocketchat-mongo +systemctl status snap.rocketchat-server.rocketchat-caddy +systemctl status snap.rocketchat-server.rocketchat-server +``` + +### How can I view the logs? + +You can either use the `snap logs` command, or the systemd alternative, `journalctl`. Always refer to [this table](https://docs.rocket.chat/installing-and-updating/snaps#how-do-i-list-the-services-shipped-with-rocket-chat-snap) to know which service name to use where. + +Using `snap logs`: + +``` +sudo snap logs -f rocketchat-server.rocketchat-server +sudo snap logs -f rocketchat-server.rocketchat-mongo +sudo snap logs -f rocketchat-server.rocketchat-caddy +``` + +To see the logs from Rocket.Chat using `journalctl`: + +``` +sudo journalctl -fu snap.rocketchat-server.rocketchat-server +``` + +To see the logs from Mongo or Caddy: + +``` +sudo journalctl -fu snap.rocketchat-server.rocketchat-mongo +sudo journalctl -fu snap.rocketchat-server.rocketchat-caddy +``` + +### How do I schedule updates? + +If you don't want snaps just updating when available you can set when your snaps will update. + +The following example asks the system only to update snaps between 4.00am and 7.00am, and 7.00pm and 10:10pm: + +``` +sudo snap set system refresh.timer=4:00-7:00,19:00-22:10 +``` + +You can find more about your options in the [snapcraft documentation](https://snapcraft.io/docs/keeping-snaps-up-to-date#heading--controlling-updates). + +### I need to restart Rocket.Chat, how do I do this? + +This follows the similar structure as many of the previous questions. You can use both the `snap` command or `systemctl` to restart RocketChat. + +With `snap` you get the added benefit of restarting all of the services with a single command: + +``` +sudo snap restart rocketchat-server +``` + +You can also restart each service individually: + +``` +sudo snap restart rocketchat-server.rocketchat-server +sudo snap restart rocketchat-server.rocketchat-mongo +sudo snap restart rocketchat-server.rocketchat-caddy +``` + +To restart Rocket.Chat using `systemctl`: + +``` +sudo systemctl restart snap.rocketchat-server.rocketchat-server +``` + +Mongo and Caddy can similarly be restarted: + +``` +sudo systemctl restart snap.rocketchat-server.rocketchat-mongo +sudo systemctl restart snap.rocketchat-server.rocketchat-caddy +``` + +### What is the Restart Policy? + +The snap's policy is to restart on failure. + +### How do I back up my Snap data? + +#### 1. Stop your rocketchat-server: + +``` +sudo snap stop rocketchat-server.rocketchat-server +``` + +_Please note: while the rocketchat-server service should be stopped, the rocketchat-mongo service should be kept running!_ + +``` +systemctl is-active snap.rocketchat-server.rocketchat-mongo +``` + +You should get `active` as a response. + +#### 2. Issue this backup command: + +``` +sudo snap run rocketchat-server.backupdb +``` + +If all goes well, you will see some output similar to: + +``` +[+] A backup of your data can be found at /var/snap/rocketchat-server/common/backup/rocketchat_backup_.tar.gz +``` + +#### 3. Start your rocketchat-server: + +``` +sudo snap start rocketchat-server.rocketchat-server +``` + +#### 4. Copy your backup file to a different location or system for safekeeping! + +### How do I restore backup data to my Snap? + +#### 1. Stop your rocketchat-server: + +``` +sudo snap stop rocketchat-server.rocketchat-server +``` + +_Please note: while the rocketchat-server service should be stopped, the rocketchat-mongo service should be kept running!_ + +``` +systemctl is-active snap.rocketchat-server.rocketchat-mongo +``` + +You should get `active` as a response. + +#### 2. Copy your backup file to the snap's common folder: + +``` +sudo cp rocketchat_backup.tar.gz /var/snap/rocketchat-server/common/ +``` + +#### 3. Issue this restore command: + +``` +sudo snap run rocketchat-server.restoredb /var/snap/rocketchat-server/common/rocketchat_backup.tgz +``` + +#### 4. If you are replacing an existing database, you will be warned: + +``` +*** ATTENTION *** +* Your current database WILL BE DROPPED prior to the restore! +* Do you want to continue? +1) Yes +2) No +#? +``` + +Select 1 or 2 according to your need. + +#### 5. If you choose to proceed and all goes well, you will see some output similar to: + +``` +[*] Extracting backup file... +[*] Restoring data... +[*] Preparing database... +[+] Restore completed! Please restart the snap.rocketchat services to verify. +``` + +_If something goes wrong, you will instead be presented with a path to the relevant log file to help remedy errors. In this case, the database may not be usable until a restore is successfully performed._ + +#### 6. Start your rocketchat-server: + +``` +sudo snap start rocketchat-server.rocketchat-server +``` + +### How do I access the MongoDB Shell? + +You might want to access the mongo shell shipped with our Rocket.Chat snap. To do so, run: + +``` +rocketchat-server.mongo +``` + +### How do I edit MongoDB configuration? + +You can find the mongod configuration file in `/var/snap/rocketchat-server/current/mongod.conf`. + +## How do I add an option to mount media? + +Note that the interface providing the ability to access removable media is not automatically connected upon installation, so if you'd like to use external storage (or otherwise use a device in `/media` for data), you need to give the snap permission to access removable media by connecting that interface: + +``` +sudo snap connect rocketchat-server:removable-media +``` + +### What folders do snaps use? + +* Your actual snap files for each version of Rocket.Chat are copied to: `/var/lib/snapd/snaps` and they are mounted in read-only mode. +* Your snap common directory is: `/var/snap/rocketchat-server/common/`; file uploads to disk and the database are stored here. +* Your snap data directory is `/var/snap/rocketchat-server/`; this is a versioned folder. +* You can access the current snap data directory at `/var/snap/rocketchat-server/current`. + +### How do I remove a specific previous version of Rocket.Chat? + +You can do this by issuing the following command, where `N` is the desired version: + +``` +snap remove --revision=N rocketchat-server +``` + +### How do I add a tool like strace to debug what's happening in my snap? + +``` +snapcraft prime +snap try prime --devmode +cp /usr/bin/strace prime +snap run --shell +sudo ./strace +``` + +### How do I change Rocket.Chat PORT, MONGO\_URL, and MONGO\_OPLOG\_URL in my snap? + +Starting from release 0.73, it is possible to configure these environmental variables through snap hooks like this: + +```bash +sudo snap set rocketchat-server port= +sudo snap set rocketchat-server mongo-url=mongodb://:/ +sudo snap set rocketchat-server mongo-oplog-url=mongodb://:/local +``` + +Remember to restart rocket.chat service after setting new values: + +```bash +sudo systemctl restart snap.rocketchat-server.rocketchat-server.service +``` + +This is an example to run rocket.chat on port 4000 instead of 3000 and set database name to rocketchat instead of parties: + +```bash +sudo snap set rocketchat-server port=4000 +sudo snap set rocketchat-server mongo-url=mongodb://localhost:27017/rocketchat +sudo systemctl restart snap.rocketchat-server.rocketchat-server.service +``` + +### How do I change other environmental variables in my snap? + +Starting from release 0.73, it is possible to overwrite any Rocket.Chat environmental variables dropping files ending in `.env` in $SNAP\_COMMON directory (`/var/snap/rocketchat-server/common/`), for example, you can create a file to change SMTP settings: + +```bash +cat /var/snap/rocketchat-server/common/overwrite-smtp.env +OVERWRITE_SETTING_SMTP_Host=my.smtp.server.com +``` + +Remember to restart rocket.chat service after creating .env files: + +```bash +sudo systemctl restart snap.rocketchat-server.rocketchat-server.service +``` + +More than one .env file is allowed, and more than one environmental variable defined per file is allowed. + +### How do I set Rocket.Chat Registration Token on Snap + +To set a registration token for your server, create any file ending in `.env` under `/var/snap/rocketchat-server/current/` with content: + +``` +REG_TOKEN= +``` + +Then restart your server + +``` +sudo systemctl restart snap.rocketchat-server.rocketchat-server +``` diff --git a/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/starting-and-stopping.md b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/starting-and-stopping.md new file mode 100644 index 0000000000..1eed25de35 --- /dev/null +++ b/deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/starting-and-stopping.md @@ -0,0 +1,23 @@ +# Starting & Stopping Docker Compose + +Following our Rapid deployment methods, you can start/stop your Rocket.Chat instance by running + +### Docker & Docker Compose + +#### Start + +``` +docker-compose up -d +``` + +#### Stop + +``` +docker-compose down +``` + +#### Status/Logs + +``` +docker-compose logs -f rocketchat +``` diff --git a/deploy-rocket.chat/rocket.chat-environment-configuration/README.md b/deploy-rocket.chat/rocket.chat-environment-configuration/README.md new file mode 100644 index 0000000000..bfc98097e0 --- /dev/null +++ b/deploy-rocket.chat/rocket.chat-environment-configuration/README.md @@ -0,0 +1,25 @@ +# Rocket.Chat Environment Configuration + +{% content-ref url="node-configuration/" %} +[node-configuration](node-configuration/) +{% endcontent-ref %} + +{% content-ref url="mongodb-configuration/" %} +[mongodb-configuration](mongodb-configuration/) +{% endcontent-ref %} + +{% content-ref url="optional-configurations.md" %} +[optional-configurations.md](optional-configurations.md) +{% endcontent-ref %} + +{% content-ref url="extras/" %} +[extras](extras/) +{% endcontent-ref %} + +{% content-ref url="configuring-ssl-reverse-proxy.md" %} +[configuring-ssl-reverse-proxy.md](configuring-ssl-reverse-proxy.md) +{% endcontent-ref %} + +{% content-ref url="environment-variables.md" %} +[environment-variables.md](environment-variables.md) +{% endcontent-ref %} diff --git a/deploy-rocket.chat/rocket.chat-environment-configuration/configuring-ssl-reverse-proxy.md b/deploy-rocket.chat/rocket.chat-environment-configuration/configuring-ssl-reverse-proxy.md new file mode 100644 index 0000000000..72e9b0cf66 --- /dev/null +++ b/deploy-rocket.chat/rocket.chat-environment-configuration/configuring-ssl-reverse-proxy.md @@ -0,0 +1,177 @@ +# Configuring SSL Reverse Proxy + +Rocket.Chat is a middle tier application server, by itself it does not handle SSL. However, Rocket.Chat works well with several industrial grade, battle-tested reverse proxy servers (see nginx below, for example) that you can configure to handle SSL. + +**Note:** You must use the outside https address for the value at `ROOT_URL` in \[\[Section 3|Deploy-Rocket.Chat-without-docker#3-download-rocketchat]] above. This includes the `https://` and leave off the port number. So instead of `ROOT_URL=http://localhost:3000` use something like `https://your_hostname.com` + +**Note:** When setting up a reverse proxy in front of your Rocket.Chat server you need to configure Rocket.Chat to use the correct clientAddress. The rate limiter (and maybe other features) will not work properly if this is not done. Set `HTTP_FORWARDED_COUNT` Environment variable to the correct number of proxies in front of Rocket.Chat. If you are using snap there's a documentation how to do it [here](https://docs.rocket.chat/installation/manual-installation/ubuntu/snaps/#how-do-i-change-other-environmental-variables-in-my-snap) + +## Running behind a nginx SSL Reverse Proxy + +**Note:** These instructions were written for Ubuntu. For Amazon Linux, the conf file for the proxy goes in `/etc/nginx/conf.d/` and needs to have a discrete name ending in `.conf` and nginx is installed using `yum -y install nginx`. + +Run this as root: + +``` +apt-get install nginx +``` + +Add your private key to `/etc/nginx/certificate.key` + +Lock down permissions: `chmod 400 /etc/nginx/certificate.key` + +Add your certificate to `/etc/nginx/certificate.crt` + +Edit `/etc/nginx/sites-enabled/default` or if you use nginx from docker `/etc/nginx/conf.d/default.conf` and be sure to use your actual hostname in lieu of the sample hostname "your\_hostname.com" below. + +``` +# Upstreams +upstream backend { + server 127.0.0.1:3000; +} + +# HTTPS Server +server { + listen 443; + server_name your_hostname.com; + + # You can increase the limit if your need to. + client_max_body_size 200M; + + error_log /var/log/nginx/rocketchat.access.log; + + ssl on; + ssl_certificate /etc/nginx/certificate.crt; + ssl_certificate_key /etc/nginx/certificate.key; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don’t use SSLv3 ref: POODLE + + location / { + proxy_pass http://backend; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header Host $http_host; + + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header X-Nginx-Proxy true; + + proxy_redirect off; + } +} +``` + +Restart Nginx: `service nginx restart` + +## Running under Plesk Onyx behind Nginx + +Plesk Onyx has now a docker installation and Nginx proxy docker rule generator built in, that doesn't support adding custom directives. Disable it and add the rules manually in the additional Nginx directives space. A scheme follows (replace 30000 with your external docker mapped port). + +``` +#manual extension docker with socket upgrade begin +location ~ ^/.* { + proxy_pass http://0.0.0.0:3000; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header X-Forwarded-Proto http; + proxy_set_header X-Nginx-Proxy true; + proxy_http_version 1.1; + + proxy_redirect off; +} + +#extension docker end +``` + +## Running behind an Apache SSL Reverse Proxy + +**Note:** You must use the outside https address for the value at `ROOT_URL` in \[\[Section 3|Deploy-Rocket.Chat-without-docker#3-download-rocketchat]] above. This includes the `https://` and leave off the port number. So instead of `ROOT_URL=http://localhost:3000` use something like `https://your_hostname.com` + +Run this as root: + +``` +apt-get update +apt-get install apache2 +a2enmod proxy_http +a2enmod proxy +a2enmod ssl +a2enmod proxy_wstunnel +a2enmod rewrite +``` + +Add your private key to `/etc/ssl/private/chat.domain.com.key` + +Lock down permissions: `chmod 400 /etc/ssl/private/chat.domain.com.key` + +Add your certificate to `/etc/ssl/certs/chat.domain.com.crt` + +Add your intermediate to `/etc/ssl/certs/intermediate.ca.pem` + +Edit `/etc/apache2/sites-enabled/rocketchat.conf` and be sure to use your actual hostname in lieu of the sample hostname "your\_hostname.com" below. + +``` + + ServerAdmin it@domain.com + ServerName chat.domain.com + + LogLevel info + ErrorLog /var/log/chat.domain.com_error.log + TransferLog /var/log/chat.domain.com_access.log + + SSLEngine On + SSLCertificateFile /etc/ssl/certs/chat.domain.com.crt + SSLCertificateKeyFile /etc/ssl/private/chat.domain.com.key + SSLCertificateChainFile /etc/ssl/certs/intermediate.ca.pem + + + Require all granted + + + RewriteEngine On + RewriteCond %{HTTP:CONNECTION} Upgrade [NC] + RewriteCond %{HTTP:Upgrade} =websocket [NC] + RewriteRule /(.*) ws://localhost:3000/$1 [P,L] + RewriteCond %{HTTP:Upgrade} !=websocket [NC] + RewriteRule /(.*) http://localhost:3000/$1 [P,L] + + ProxyPassReverse / http://localhost:3000/ + +``` + +Restart Apache: `service apache2 restart` + +## Running behind a Caddy Reverse Proxy with Free SSL + +First, download [Caddy](https://caddyserver.com) + +`curl https://getcaddy.com | bash` + +Now Caddy is installed, but you still need a service to run Caddy http server on the background. + +You can find services backed by the community [here](https://github.com/mholt/caddy/tree/master/dist/init) + +You must have at least the port **443** opened so the Caddy server will request an SSL certificate from Let's Encrypt + +You can also open the port 80 to redirect http requests to https. + +Open `/etc/caddy/Caddyfile` + +Insert + +``` +yourdomain.com { + reverse_proxy localhost:3000 + header Access-Control-Allow-Methods "POST, GET, OPTIONS" + header Access-Control-Allow-Headers "*" + import cors https://sub.domain.livechat +} +``` + +## Multi Instance Nginx reverse proxy + +Here is a link to a [Nginx multi instance reverse proxy example](broken-reference) diff --git a/deploy-rocket.chat/rocket.chat-environment-configuration/environment-variables.md b/deploy-rocket.chat/rocket.chat-environment-configuration/environment-variables.md new file mode 100644 index 0000000000..53a655fed9 --- /dev/null +++ b/deploy-rocket.chat/rocket.chat-environment-configuration/environment-variables.md @@ -0,0 +1,50 @@ +--- +description: Configuring Rocket.Chat via environment variables +--- + +# Environment Variables + +Rocket.Chat can be configured on deployment with a set of environment variables. Setting those environment variables (the how to's) depends on the deployment method of choice. + +Some of these environment variables are mandatory, those are kept separate to the optional ones. + +### Mandatory Environment Variables + +| Name | Description | Comment | +| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ROOT\_URL | The URL where your Rocket.Chat instance will be hosted on. In other words the URL you will enter on your browser to access Rocket.Chat. | Format is `[protocol]://[domain or ip][: optional port]/[optional path]` | +| PORT | Port your Rocket.Chat instance will bind to. | If served under a FQDN (which is recommended) this doesn't matter much, as long as the configured one is not in reserved range and doesn't collide with any other services. | +| MONGO\_URL | MongoDB connection string. | Read the [official documentation](https://www.mongodb.com/docs/manual/reference/connection-string/) of MongoDB to understand better. This also somewhat depends on your deployment method of choice. | +| MONGO\_OPLOG\_URL | MongoDB connection string to the `local` database. | Similar to the above, except this one points directly to the `local` database. E.g. `mongodb://localhost:27017/local` | + +### Optional Environment Variables + +| Name | Description | Comment | +| --------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| BIND\_IP | Which IP the node (or main Rocket.Chat) process will bind to. | If intended to be accessed under a domain, which is recommended, users should set this to the loopback address (i.e. `127.0.0.1`) or any **private** IP in the host that's accessible via a reverse proxy or load balancer. This will ensure the instance isn't accessible via any IP that isn't intended. | +| ADMIN\_USERNAME | Admin user's username. |

Admin user can be created automatically on deployment. Set this to your admin user's desired username.

Mandatory if any of the other ADMIN_* variables are passed for a successful account creation.

| +| ADMIN\_NAME | Admin user's name. |

Self explanatory.

Mandatory if any of the other ADMIN_* variables are passed for a successful account creation.

| +| ADMIN\_PASS | Admin user's password (in plaintext). |

Self explanatory.

Mandatory if any of the other ADMIN_* variables are passed for a successful account creation.

| +| ADMIN\_EMAIL | Admin user's email address. |

Self explanatory.

Mandatory if any of the other ADMIN_* variables are passed for a successful account creation.

| + +### Other Environment Variables + +#### Overriding Settings + +You can override your Rocket.Chat settings directly from environment variables. + +Settings capable of this can be seen when hovered upon in the **Administration** > **Workspace** > **Settings** section. + +![Example Settings code](<../../.gitbook/assets/Example Settings code>) + +This is done by using the environment variable `OVERWRITE_SETTING_` + +To override the value of setup wizard for example: + +``` +OVERWRITE_SETTING_Show_Setup_Wizard=completed +``` + +#### Hide and Block Settings + +You can choose to hide or block Rocket.Chat settings using environment variables. This is done by specifying `SETTINGS_HIDDEN` and `SETTINGS_BLOCKED` values. diff --git a/deploy-rocket.chat/rocket.chat-environment-configuration/extras/README.md b/deploy-rocket.chat/rocket.chat-environment-configuration/extras/README.md new file mode 100644 index 0000000000..8610245c28 --- /dev/null +++ b/deploy-rocket.chat/rocket.chat-environment-configuration/extras/README.md @@ -0,0 +1,2 @@ +# Extras + diff --git a/deploy-rocket.chat/rocket.chat-environment-configuration/extras/pm2-systemd-upstart.md b/deploy-rocket.chat/rocket.chat-environment-configuration/extras/pm2-systemd-upstart.md new file mode 100644 index 0000000000..84eaf0ba03 --- /dev/null +++ b/deploy-rocket.chat/rocket.chat-environment-configuration/extras/pm2-systemd-upstart.md @@ -0,0 +1,157 @@ +# Setting up Process Managers and Init Systems + +## PM2 + +## Systemd + +Deploy [Rocket.Chat](https://github.com/RocketChat/Rocket.Chat) to Linux that run on systemd (RedHat, Centos, Ubuntu, CoreOS and so on). + +### How to run Rocket.Chat on systemd. + +First we need to create the unit file. + +`vi /etc/systemd/system/rocketchat.service` + +With the contents: + +``` +[Unit] +Description=Rocket.Chat Server +After=network.target remote-fs.target nss-lookup.target mongod.target nginx.target # Remove or Replace nginx with your proxy + +[Service] +ExecStart=/usr/local/bin/node /var/www/rocketchat/main.js # Specify the location of node and location of main.js +Restart=always # If set to always, the service will be restarted regardless of whether it exited cleanly or not, got terminated abnormally by a signal, or hit a timeout. +RestartSec=10 # Restart service after 10 seconds if node service crashes +StandardOutput=syslog # Output to syslog +StandardError=syslog # Output to syslog +SyslogIdentifier=nodejs-example +#User= +#Group= +Environment=NODE_ENV=production PORT=3000 ROOT_URL=https://rocketchat.domain.com MONGO_URL=mongodb://localhost:27017/rocketchat + +[Install] +WantedBy=multi-user.target +``` + +Then you need to enable the service `systemctl enable rocketchat.service` + +To start the service `systemctl start rocketchat.service` + +To verify it is running `systemctl status rocketchat.service` + +### Backup + +All data will be hourly backed up to `/data/domains/example.org/data` folder. We advise to copy this folder to a remote location in case of hardware failure. + +## Upstart - Ubuntu + +**Note: Upstart is no longer supported. We no longer support Ubuntu 14.04. If upgrading please see systemd or Ubuntu 18.04** + +The following examples are upstart jobs which control automatic start-up and, if necessary, respawning of your Rocket.Chat app, as well as management of an optional hubot chat-bot. + +In order to use the examples, simply copy each example and save into a file, paying attention to the fact that the filenames should be preserved unless you edit the examples to reflect any filename changes you make. Be sure to edit the environment variables, and possibly paths, according to your particular installation. Once you've saved the files to the proper directory (/etc/init) usage is as simple as rebooting. + +Which upstart management jobs that you use depend on what type of Rocket.Chat deployment you are using (Docker-compose, non-docker, etc). A race-condition exists with docker-compose which requires that mongo and the Rocket.Chat application be started independently, thus a slightly modified upstart job is required compared to non-docker instances. + +### Non-Docker-Compose + +Save as: `/etc/init/rocketchat.conf` + +``` +description "rocketchat application server" + +# Wait for mongod before starting rocketchat app +start on (started mongod) +stop on runlevel [!2345] + +# Automatically attempt to restart with finite limits +respawn +respawn limit 99 5 + +# Export necessary variables and start the Applications / Services +script + export MONGO_URL=mongodb://localhost:27017/rocketchat + export ROOT_URL=https://host.yourdomain.tld + export PORT=3000 + exec /usr/local/bin/node /home/administrator/Rocket.Chat/main.js +end script +``` + +Save as: `/etc/init/rocketchat_hubot.conf` + +``` +description "hubot launcher" + +# Wait for the rocketchat upstart job before starting hubot +start on started rocketchat +stop on runlevel [!2345] + +# Automatically Respawn with finite limits +respawn +respawn limit 99 5 + +script + # Wait until Rocket.Chat is up and listening to port tcp 3000 + until nc -z localhost 3000; do + sleep 1 + done + + # Export necessary variables + export ROCKETCHAT_ROOM=GENERAL + export ROCKETCHAT_USER=bot_username + export ROCKETCHAT_PASSWORD=bot_password + + # Change to the hubot directory + cd /home/administrator/myhubot + + # Launch Hubot + exec bin/hubot -a rocketchat +end script +``` + +### Docker-Compose + +Save as: `/etc/init/rocketchat_mongo.conf` + +``` +description "MongoDB service manager for rocketchat" + +# Start MongoDB after docker is running +start on (started docker) +stop on runlevel [!2345] + +# Automatically Respawn with finite limits +respawn +respawn limit 99 5 + +# Path to our app +chdir /var/www/rocket.chat + +script + # start mongoDB + exec /usr/local/bin/docker-compose up db +end script +``` + +Save as: `/etc/init/rocketchat_app.conf` + +``` +description "Rocket.Chat service manager" + +# Start Rocket.Chat after mongo upstart job is running +start on (started rocketchat_mongo) +stop on runlevel [!2345] + +# Automatically Respawn with finite limits +respawn +respawn limit 99 5 + +# Path to our app +chdir /var/www/rocket.chat + +script + # Bring up rocketchat app and hubot + exec /usr/local/bin/docker-compose up rocketchat hubot +end script +``` diff --git a/deploy-rocket.chat/rocket.chat-environment-configuration/extras/running-in-a-sub-folder.md b/deploy-rocket.chat/rocket.chat-environment-configuration/extras/running-in-a-sub-folder.md new file mode 100644 index 0000000000..88b3762a12 --- /dev/null +++ b/deploy-rocket.chat/rocket.chat-environment-configuration/extras/running-in-a-sub-folder.md @@ -0,0 +1,48 @@ +# Running in a sub folder with Apache + +{% hint style="warning" %} +**NOTE**: Running in a subfolder has been officially deprecated. It will no longer be supported in the upcoming 4.0 release. See our [April 2020 announcement](https://forums.rocket.chat/t/support-for-installation-in-subdirectory-will-be-discontinued/6371) +{% endhint %} + +If you want to run your server in a subfolder like `https://your.domain.com/chat/` you have to set up a reverse proxy. See [Run Rocket.Chat behind a SSL Reverse Proxy](../configuring-ssl-reverse-proxy.md) + +If you are using apache you will have to tweak the configuration. First you have to put the `Rewrite/Proxy` into a `Location-tag`. For example, if you want to provide the service under the "chat" subfolder, your config should look like this: + +```apacheconf + + Order allow,deny + Allow from all + + RewriteEngine On + RewriteCond %{HTTP:Upgrade} =websocket [NC] + RewriteRule /var/www/(.*) ws://localhost:3000/$1 [P,L] + RewriteCond %{HTTP:Upgrade} !=websocket [NC] + RewriteRule /var/www/(.*) http://localhost:3000/$1 [P,L] + + ProxyPassReverse http://localhost:3000 + +``` + +The main difference to the standard reverse proxy configuration is an additional RewriteRule, `/var/www` in the example, which must be changed to your DocumentRoot (if it's not already your DocumentRoot). + +If you pass the whole path, including the DocumentRoot to the Rocket.Chat server, you'll get a 404 response and an `Unknown path` server error. + +In our example, we used the `/chat` as a subfolder (it's parsed out of the `ROOT_URL` provided) but the Rocket.Chat server gets a request for `/var/www/chat`, detects a mismatch and returns the above-mentioned error. + +**Additional notes:** + +* Using the RewriteBase Directive won't work. +* The ProxyPassReverse can be used inside a `Location` tag and the first parameter must be omitted in this case. +* You don't need to configure a Location for the root folder `/` when using Rocket.Chat in a subfolder (it's likely configured for other stuff already in this case). +* For those curious about the details: the mentioned path-handling is in `webapp.js`, search for `Unknown path`. +* Please make sure that the modules `rewrite`, `proxy_http` and `proxy_wstunnel` are enabled in the apache configuration. Otherwise, the WebSocket calls will return a 500 http response. + +## Running the application + +To run in a subfolder you should pass the environment variable `ROOT_URL` to the process. For example: + +``` +ROOT_URL=https://your.domain.com/chat/ node main.js +``` + +If you followed the manual installation guide, you may already have configured (and persisted) this environment variable - in this case, you can ignore this advice. diff --git a/deploy-rocket.chat/rocket.chat-environment-configuration/extras/univention-corporate-server-ucs.md b/deploy-rocket.chat/rocket.chat-environment-configuration/extras/univention-corporate-server-ucs.md new file mode 100644 index 0000000000..ea0c45bb53 --- /dev/null +++ b/deploy-rocket.chat/rocket.chat-environment-configuration/extras/univention-corporate-server-ucs.md @@ -0,0 +1,28 @@ +# Univention Corporate Server (UCS) + +{% hint style="info" %} +[ **👉 Trouble installing or deploying Rocket.Chat?** Join our Weekly Technical Helpline to get real-time help from our team!](https://app.livestorm.co/rocket-chat/rocketchats-weekly-technical-helpline?type=detailed) +{% endhint %} + +[Univention Corporate Server (UCS)](https://www.univention.com/products/ucs/) is an enterprise Linux distribution derived from Debian GNU/Linux with a strong focus on identity and infrastructure management. It provides an Active Directory compatible domain and allows deployment in Microsoft Active Directory based infrastructure. Furthermore, it supports authentication protocols LDAP, SAML and OpenID Connect. + +Rocket.Chat is available as app in Univention App Center. + +## Deployment via Univention App Appliance + +The fastest and easiest way to run a deployment of Rocket.Chat on UCS is to download and run a virtual machine with Rocket.Chat and UCS pre-installed, called app appliance. The app appliance is available for VMware, VirtualBox and KVM. + +1. Download the app appliance from the [Univention App Catalog](https://www.univention.com/products/univention-app-center/app-catalog/rocketchat/) or with the direct links below: + * [VirtualBox image](https://appcenter.software-univention.de/univention-apps/current/rocketchat/Univention-App-rocketchat-virtualbox.ova) + * [VMware ESXi image](https://appcenter.software-univention.de/univention-apps/current/rocketchat/Univention-App-rocketchat-ESX.ova) + * [VMware Workstation image](https://appcenter.software-univention.de/univention-apps/current/rocketchat/Univention-App-rocketchat-vmware.zip) + * [KVM image](https://appcenter.software-univention.de/univention-apps/current/rocketchat/Univention-App-rocketchat-KVM.qcow2) +2. [Import the app appliance](https://www.univention.com/downloads/ucs-download/guide-for-virtual-appliance-import/) to the desired hypervisor. +3. Follow the instructions in the setup wizard. +4. [Register](https://help.univention.com/t/how-to-register-a-univention-app-appliance/11294) your app appliance. + +## Installation via Univention App Center + +If there is already a deployment of UCS running, Rocket.Chat can easily be installed directly via the App Center. + +Alternatively, the above mentioned app appliance can be setup and joined into an existing UCS deployment, called domain. diff --git a/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/README.md b/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/README.md new file mode 100644 index 0000000000..721aa0e91d --- /dev/null +++ b/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/README.md @@ -0,0 +1,2 @@ +# MongoDB Configuration + diff --git a/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/migrating-meteor-mongo.md b/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/migrating-meteor-mongo.md new file mode 100644 index 0000000000..21c10eca6b --- /dev/null +++ b/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/migrating-meteor-mongo.md @@ -0,0 +1,23 @@ +# Migrating database from Meteor built in MongoDB + +This guide will help you migrate from the built-in Meteor mongo server to an external mongo server. + +{% hint style="info" %} +We do not advise running Rocket.Chat in production from source using the meteor command. Instead we recommend using a separate mongo database and using a compiled meteor bundle. Either our official release or your own. + +See our [recommended deployment methods](../../prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/). +{% endhint %} + +Before starting make sure meteor is running. + +Then run: `mongodump -h 127.0.0.1 --port 3001 -d meteor` + +It'll dump the database in a folder called dump. + +Then install mongodb on your system. Please see the [mongo section](../../prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/) in one of our guides for your current OS + +Once Mongo is installed restore the data using: `mongorestore -d meteor dump/meteor` + +If you want to use a different database, you'd take this as your opportunity to change the database name. Replacing -d meteor with your desired database name. + +Then follow the remainder of the guide on [setting up Rocket.Chat](../../prepare-for-your-rocket.chat-deployment/other-deployment-methods/manual-installation/) for your current OS. diff --git a/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongo-options.md b/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongo-options.md new file mode 100644 index 0000000000..d73719b727 --- /dev/null +++ b/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongo-options.md @@ -0,0 +1,26 @@ +# Passing extra options to the Mongo driver + +It's possible to provide extra [connection settings](http://mongodb.github.io/node-mongodb-native/3.5/reference/connecting/connection-settings/) to the Mongo driver by setting the `MONGO_OPTIONS` environment variable to a JSON string, e.g.: + +``` +# we need to pass the contents of PEMs, etc in a format compatible with JSON, so add '\n' to the end of each line. +export TLS_CRT=$(cat /pems/tls.crt | awk '{printf "%s\\n",$0} END {print ""}') +export PEM=$(cat /pems/mongo.pem | awk '{printf "%s\\n",$0} END {print ""}') +export KEY=$(cat /pems/mongo.key | awk '{printf "%s\\n",$0} END {print ""}') +# now insert all the credentials into the JSON OPTIONS string +export MONGO_OPTIONS='{"sslCA":["'${TLS_CRT}'"],"sslCert":"'${PEM}'","sslKey":"'${KEY}'"}' +``` + +You might want to do this, for example, if you're backing Rocket.Chat with a TLS-secured Mongo [replica set](https://docs.mongodb.com/manual/replication/) and need to pass certificates/PEM files, etc. to connect to it. + +If you see the following error during startup: + +``` +MongoTimeoutError: Server selection timed out after 10000 ms +``` + +You can try increasing server selection time adding the following property to `MONGO_OPTIONS` to change the default value of `10000` to `20000`: + +``` +MONGO_OPTIONS='{ "serverSelectionTimeoutMS": 20000 }' +``` diff --git a/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongo-replicas.md b/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongo-replicas.md new file mode 100644 index 0000000000..3cc2984652 --- /dev/null +++ b/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongo-replicas.md @@ -0,0 +1,103 @@ +# Configure a replica set for MongoDB + +Rocket.Chat uses the [MongoDB replica set](http://docs.mongodb.org/manual/replication/) to improve performance via Meteor Oplog tailing. + +{% hint style="info" %} +**Note** please check release notes to ensure you are using a compatible version of Mongo +{% endhint %} + +To configure the replica set add this section into `mongod.conf`: + +```yaml +replication: + replSetName: "rs01" +``` + +for example by running this command: + +```bash +echo -e "replication:\n replSetName: \"rs01\"" | sudo tee -a /etc/mongod.conf +``` + +## Restart MongoDB and initiate the replica set + +Restart MongoDB service: + +``` +sudo systemctl restart mongod +``` + +Start the MongoDB shell and initiate the replica set: + +``` +mongo +> rs.initiate() +``` + +The output of the command should look like this: + +``` +{ + "info2" : "no configuration specified. Using a default configuration for the set", + "me" : "127.0.0.1:27017", + "ok" : 1, + "operationTime" : Timestamp(1538772048, 1), + "$clusterTime" : { + "clusterTime" : Timestamp(1538772048, 1), + "signature" : { + "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), + "keyId" : NumberLong(0) + } + } +} +rs01:SECONDARY> +``` + +Note the "ok" value should be 1. Any other value, i.e. 93, means something is wrong. + +Hit enter, you should see your prompt turn into `rs01:PRIMARY>`, this indicates the replica set is being used. Type exit to get back to your regular shell: + +``` +rs01:PRIMARY> exit +bye +``` + +Depending on your network settings, including /etc/hosts and DNS, if you have configured Rocket.Chat to use localhost:27017 you may see an error similar to this: + +`[conn1] created this configuration for initiation : { _id: "rs0", version: 1, members: [ { _id: 0, host: "test:27017" } ] }` + +rs.initiate() may be defaulting to the host name e.g. 'test' + +You can force a different hostname as follows: + +``` +rs.initiate({ _id: 'rs01', members: [ { _id: 0, host: 'localhost:27017' } ]}) +``` + +You should get a response similar to: + +``` +> rs.initiate({ _id: 'rs01', members: [ { _id: 0, host: 'localhost:27017' } ]}) +{ "ok" : 1 } +rs0:OTHER> +``` + +## Reconfigure and restart Rocket.Chat service + +After you configured the replica set, you **MUST** add the `MONGO_OPLOG_URL` environment variable to the service definition and restart Rocket.Chat server. + +In CentOS open file `/usr/lib/systemd/system/rocketchat.service` + +In Ubuntu or Debian open file `/lib/systemd/system/rocketchat.service` + +and add this to the Environment line: + +``` +MONGO_OPLOG_URL=mongodb://localhost:27017/local?replSet=rs01 +``` + +Reload systemd state and restart Rocket.Chat: + +``` +sudo systemctl daemon-reload && sudo systemctl restart rocketchat +``` diff --git a/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongo-versions.md b/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongo-versions.md new file mode 100644 index 0000000000..06bf9c12d4 --- /dev/null +++ b/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongo-versions.md @@ -0,0 +1,86 @@ +# Supported Mongo Versions + +Required MongoDB versions can change across different major versions. It is very important that you choose the correct database version when deploying and also to make sure your existing installation is using a supported version. + +### Using release notes + +You can always check the supported version list on our GitHub releases page. + +Use the following "template" link to inspect the release notes and supported MongoDB releases. + +{% hint style="success" %} +https://github.com/RocketChat/Rocket.Chat/releases/\ +{% endhint %} + +For example, if you want to check what are the supported MongoDB versions for release 4.5.0, you can go to [https://github.com/RocketChat/Rocket.Chat/releases/4.5.0](https://github.com/RocketChat/Rocket.Chat/releases/4.5.0) and look for "Engine versions". + +![Required MongoDB](<../../../.gitbook/assets/image (676).png>) + +### Using releases API + +The other option is to use our releases API. + +{% hint style="info" %} +This is a fairly new addition, information on old versions can't be viewed by this API +{% endhint %} + +This one is a very quick way of getting the list and is also ideal if you want to get this information dynamically for some kind of automation or script. + +If you want to see the supported MongoDB versions for the latest release, you can perform a GET against the following endpoint + +[https://releases.rocket.chat/latest/info](https://releases.rocket.chat/latest/info) + +You can change `latest` with any version number and get more specific information. The key you're looking for is `compatibleMongoVersions`. + +Using `curl` with `jq` would look something like: + +``` +{ + "tag": "4.8.1", + "commit": "0b106e3645c313592a99610e60f7bcca5b99cf93", + "key": "build/rocket.chat-4.8.1.tgz", + "etag": "c4aa635572aa83ce4b45cbdb116ceba4-25", + "count": 1215, + "nodeVersion": "14.18.3", + "compatibleMongoVersions": [ + "3.6", + "4.0", + "4.2", + "4.4", + "5.0" + ] +} +``` + +### Recommended MongoDB version + +If it is an existing deployment, being fairly in the middle of the supported list is a good idea. We know how hard it is to update our databases, especially if it's a large deployment. + +If you're going to deploy fresh, we recommend choosing the latest version that is supported. For example, in case of Rocket.Chat version 4.5.0, for new deployments the recommended version would be 5.0. This will make sure you don't have to update the DB anytime soon. + +One way you can get the latest MongoDB version that is supported by the current latest Rocket.Chat, is by using `curl` with `jq`: + +``` +~ via  v12.22.11 +➜ curl https://releases.rocket.chat/latest/info -s | jq '.compatibleMongoVersion +s | sort_by(.) | reverse | .[0]' -r +5.0 +``` + +{% hint style="info" %} +We don't remove MongoDB support overnight. A version marked to be removed from support is first deprecated and you should see a deprecation warning not only in your Rocket.Chat logs but also the server admins should see a deprecation notice banner on their instances. +{% endhint %} + +## Deprecation archive + +* [Support of MongoDB 3.2 will has been removed from Rocket.Chat 2.0.0 and MongoDB 3.4 has been removed from Rocket.Chat 4.x](https://github.com/RocketChat/Rocket.Chat/pull/15199). + +**Note** Without the MongoDB version we can't ensure you are running a compatible version. If you are running your mongodb with auth enabled and a **user different from admin** you may need to grant permissions for this user to check cluster data. You can do it via mongo shell running the following command replacing the string _YOUR\_USER_ by the correct user\\'s name: + +``` +db.runCommand({ grantRolesToUser: "YOUR_USER" , roles: [{role: "clusterMonitor", db: "admin"}]}) +``` + +## Supported Storage Engines + +Mmapv1 is no longer supported in MongoDB since version 4.2. So to make sure you update your Rocket.Chat installations easily in the future, use the [WiredTiger](https://docs.mongodb.com/manual/core/wiredtiger/) storage engine. If you're already running mmapv1, please [migrate to wiredTiger](mongodb-mmap-to-wiredtiger-migration.md) as soon as possible. diff --git a/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongodb-backup-and-restore.md b/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongodb-backup-and-restore.md new file mode 100644 index 0000000000..41ee2f4cd2 --- /dev/null +++ b/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongodb-backup-and-restore.md @@ -0,0 +1,79 @@ +# MongoDB Backup and Restore + +Maintaining backups of your workspace data is a very important practice. These data backups can act as a safety measure where data can be recovered or restored in case of an emergency. + +Rocket.Chat uses MongoDB as its database. With MongoDB, you have multiple inbuilt backup options depending on the deployment method.\ +In this guide, we are going to focus on how to: + +1. [Perform a backup of your Rocket.Chat workspace data](mongodb-backup-and-restore.md#mongodb-backup-with-mongodump) +2. [Restore your Rocket.Chat workspace data](mongodb-backup-and-restore.md#mongodb-restore-with-mongorestore) + +## MongoDB Backup with mongodump + +We are going to see how to backup our MongoDB database, using [`mongodump`](https://www.mongodb.com/docs/database-tools/mongodump/). + +{% hint style="info" %} +* `mongodump` allows you to create backups from standalone, replica sets or sharded cluster deployments. +* As from MongoDB server 4.4, you are required to install the `mongodump` utility separately.\ + Read more at the MongoDB Database tools docs [https://www.mongodb.com/docs/database-tools/mongodump](https://www.mongodb.com/docs/database-tools/mongodump/) +{% endhint %} + +* The command to backup a simple MongoDB standalone instance is of the format + +```bash +mongodump +``` + +{% hint style="success" %} +* Running `mongodump` alone from the command line without any options will assume the database is located on `localhost` at port `27017` with no authentication. +* When the backup is completed, a `/dump` directory is created. +{% endhint %} + +* Backing up a Remote MongoDB instance can be done with the command + +```bash +mongodump --uri="mongodb://:" [additional options] +``` + +See more options and how to use `mongodump` on [MongoDB Database tools docs](https://www.mongodb.com/docs/database-tools/mongodump/). + +You should see something like the image below when the command is running + +

mongodump command executing

+ +## MongoDB Restore with mongorestore + +After backing up your instance, you may need to restore the data at some time. That can be done using [`mongorestore`](https://www.mongodb.com/docs/database-tools/mongorestore/)`` + +{% hint style="info" %} +* `Make sure you drop first any existing rocketchat schema in your database with same name as the one you are restoring.` +* `mongorestore` allows you to load data from either a binary database dump created by [`mongodump`](https://www.mongodb.com/docs/database-tools/mongodump/#mongodb-binary-bin.mongodump) or the standard input into MongoDB instance. +* As from MongoDB server 4.4, you are required to install the `mongorestore` utility separately.\ + Read more at the MongoDB Database tools docs [https://www.mongodb.com/docs/database-tools/mongorestore/](https://www.mongodb.com/docs/database-tools/mongorestore/) +{% endhint %} + +* The syntax for the `mongorestore` command is + +```bash +mongorestore +``` + +* The simple command below restores from a `dump` directory to a local [`mongod`](https://www.mongodb.com/docs/manual/reference/program/mongod/#mongodb-binary-bin.mongod) instance running on port `27017` + +```bash +mongorestore dump/ +``` + +* You can restore to a remote instance by running + +``` +mongorestore --uri="mongodb://:" /dump +``` + +{% hint style="info" %} +You have the ability to also restore a specific collection or collections from the `dump/` directory. [See MongoDB docs ](https://www.mongodb.com/docs/database-tools/mongorestore/) +{% endhint %} + +In a successful command execution, you should see a screen like the one below + +

mongorestore command executed

diff --git a/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongodb-mmap-to-wiredtiger-migration.md b/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongodb-mmap-to-wiredtiger-migration.md new file mode 100644 index 0000000000..e0d67b4ad8 --- /dev/null +++ b/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongodb-mmap-to-wiredtiger-migration.md @@ -0,0 +1,80 @@ +--- +description: Migrate your existing mmap based MongoDB instance into a wiredTiger manually. +--- + +# MongoDB mmap to wiredTiger migration + +Starting with the major release 4.X.Y of Rocket.Chat, MongoDB has to be setup with a _WiredTiger_ storage engine rather than the deprecated _mmapv1_ one. This is mandatory, if you plan to upgrade to one of the future Rocket.Chat versions and has to be prepared before initiating the application upgrade. + +If you are using a Docker setup, [click here to find an alternative article](https://docs.rocket.chat/installation/docker-containers/mongodb-mmap-to-wiredtiger-migration) in our docs about migration. + +## Requirements + +* MongoDB instance with _mmap_ storage engine + +## Quick usage + +1. Stop running Rocket.Chat +2. Create a database dump from the _mmapv1_ MongoDB (also to have a backup in place) +3. Stop _mmapv1_ MongoDB service, drop existing data files, start up with _wiredTiger_ +4. Import the dump into the new _wiredTiger_ MongoDB +5. Start Rocket.Chat + +## Detailed usage + +1. Stop Rocket.Chat service to ensure a consistent database dump: + + ``` + systemctl stop rocketchat + ``` +2. Create a database dump from the current _mmapv1_ MongoDB: + + ``` + mongodump --archive=~/mmapdump.gz --gzip + ``` +3. Stop MongoDB service: + + ``` + systemctl stop mongod + ``` +4. Delete the _mmapv1_ based data files of your existing MongoDB: + + ``` + rm -rf /var/lib/mongodb/* + ``` +5. Adjust MongoDB configuration to make use of _wiredTiger_ storage engine: + + ``` + vi /etc/mongod.conf + ``` + + ``` + [...] + engine: wiredTiger + [...] + ``` +6. Start MongoDB service again: + + ``` + systemctl start mongod + ``` +7. If running with a Replica-Set in your mongo.conf initialize replica set + + ``` + mongo --eval 'rs.initiate()' + ``` +8. Import dump back into (_wiredTiger_) MongoDB: + + ``` + mongorestore --drop --archive=~/mmapdump.gz --gzip --noIndexRestore + ``` +9. Repair databases and rebuild indices: + + ``` + mongo --eval 'db.repairDatabase()' + ``` +10. Start Rocket.Chat service: + + ``` + systemctl start rocketchat + ``` diff --git a/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongodb-uri-authentication.md b/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongodb-uri-authentication.md new file mode 100644 index 0000000000..437968c8b7 --- /dev/null +++ b/deploy-rocket.chat/rocket.chat-environment-configuration/mongodb-configuration/mongodb-uri-authentication.md @@ -0,0 +1,43 @@ +# MongoDB URI Authentication + +The connection between Rocket.Chat and MongoDB instance is achieved using a [MongoDB Connection String URI](https://www.mongodb.com/docs/manual/reference/connection-string/). MongoDB authentication is done with the username and password. + +Adding the following snippet in your `env` does the trick. + +``` +MONGO_URL=mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]] +``` + +In your container, passing in `MONGO_URL` and `MONGO_OPLOG_URL` with the right values for connection. + +{% hint style="info" %} +Depending on the password you're using, you might need to escape some characters, for example.. Please take a look at MongoDB documentation [https://docs.mongodb.com/manual/reference/connection-string/](https://docs.mongodb.com/manual/reference/connection-string/) +{% endhint %} + +Your `docker-compose.yml` file should look like this + +``` +environment: + - "MONGO_URL=mongodb://rctestuser:mymongopassword@mongo:27017/rocketchat?authSource=admin" + - "MONGO_OPLOG_URL=mongodb://rctestuser:mymongopassword@mongo:27017/local?authSource=admin" +``` + +If using `docker run`, it should look like this: + +``` +docker run \ -e "MONGO_URL=mongodb://rctestuser:mymongopassword@mongo:27017/rocketchat?authSource=admin" \ +-e "MONGO_OPLOG_URL=mongodb://rctestuser:mymongopassword@mongo:27017/local?authSource=admin" \ +rocketchat/rocket.chat:X.X.X +``` + +### Mongo Authentication Role + +If you are using mongo authentication you might also need to add the `clustermonitor` role to your user. This is a requirement in order for your instance to be able to use `change streams`. + +Execute the following command replacing the users with that selected for your users. + +``` +admin = db.getSiblingDB("admin"); +admin.grantRolesToUser('OPLOGUSER',[{ role: "clusterMonitor", db: "admin" }]) +admin.grantRolesToUser('ROCKETUSER',[{ role: "clusterMonitor", db: "admin" }]) +``` diff --git a/deploy-rocket.chat/rocket.chat-environment-configuration/node-configuration/README.md b/deploy-rocket.chat/rocket.chat-environment-configuration/node-configuration/README.md new file mode 100644 index 0000000000..7696965f9c --- /dev/null +++ b/deploy-rocket.chat/rocket.chat-environment-configuration/node-configuration/README.md @@ -0,0 +1,7 @@ +--- +description: Details on NodeJs configuration for Rocket.Chat +--- + +# Node Configuration + +Rocket.Chat is built on top of NodeJs. Node is what makes it tick. In this section we talk briefly about some details of Node. For the most detailed guide, please refer to [NodeJs' Official Documentation](https://nodejs.org/en/docs/). diff --git a/deploy-rocket.chat/rocket.chat-environment-configuration/node-configuration/runtime-configuration.md b/deploy-rocket.chat/rocket.chat-environment-configuration/node-configuration/runtime-configuration.md new file mode 100644 index 0000000000..211e04c18b --- /dev/null +++ b/deploy-rocket.chat/rocket.chat-environment-configuration/node-configuration/runtime-configuration.md @@ -0,0 +1,2 @@ +# Runtime Configuration + diff --git a/deploy-rocket.chat/rocket.chat-environment-configuration/node-configuration/supported-nodejs-version.md b/deploy-rocket.chat/rocket.chat-environment-configuration/node-configuration/supported-nodejs-version.md new file mode 100644 index 0000000000..6991226bfd --- /dev/null +++ b/deploy-rocket.chat/rocket.chat-environment-configuration/node-configuration/supported-nodejs-version.md @@ -0,0 +1,37 @@ +--- +description: Each Rocket.Chat version requires a specific Node version for it to work +--- + +# Supported NodeJs Version + +{% hint style="info" %} +The only reason you may need to check this (except for idle curiosity or debugging purposes) is if you're using the manual method of deployment. We don't recommend manual installation. Instead, [Docker](../../../quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/) is recommended and encouraged. With [Docker](../../../quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/) (or [Snap](../../prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/)) you won't need to worry about the Node version. +{% endhint %} + +Rocket.Chat is built with [Meteor](https://meteor.com), a JavaScript framework. The version of Meteor in use dictates the supported NodeJs version for that specific version. + +You can check the supported NodeJs version for any specific release by navigating over to out GitHub releases page for that specific version. + +For example, in case of 4.5.0, you can head over to + +{% embed url="https://github.com/RocketChat/Rocket.Chat/releases/4.5.0" %} +Release 4.5.0 +{% endembed %} + +Look for "Engine versions". + +![Supported NodeJs Version](<../../../.gitbook/assets/image (667).png>) + +You can also use our releases API to access this information. Taking the version 4.5.0 as an example, to know the supported node version for this release, perform a GET on + +{% embed url="https://releases.rocket.chat/4.5.0/info" %} +Releases Endpoint +{% endembed %} + +You're looking for the `nodeVersion` key. For the current latest version, with `curl` and `jq`: + +``` +~ via  v12.22.11 took 25s +➜ curl https://releases.rocket.chat/latest/info -s | jq '.nodeVersion' -r +14.18.3 +``` diff --git a/deploy-rocket.chat/rocket.chat-environment-configuration/optional-configurations.md b/deploy-rocket.chat/rocket.chat-environment-configuration/optional-configurations.md new file mode 100644 index 0000000000..495a4c216a --- /dev/null +++ b/deploy-rocket.chat/rocket.chat-environment-configuration/optional-configurations.md @@ -0,0 +1,11 @@ +# Firewall Configuration + +If you are using firewalld and not using a reverse proxy, you may have to allow traffic to port 3000: + +```bash +sudo firewall-cmd --permanent --add-port=3000/tcp +``` + +```bash +sudo systemctl reload firewalld +``` diff --git a/deploy-rocket.chat/scaling-rocket.chat/README.md b/deploy-rocket.chat/scaling-rocket.chat/README.md new file mode 100644 index 0000000000..5487af23ea --- /dev/null +++ b/deploy-rocket.chat/scaling-rocket.chat/README.md @@ -0,0 +1,9 @@ +# Scaling Rocket.Chat + +As concurrent users on your workspace grow, you may experience system latency. Monitoring system performance is essential to determine if additional resources are needed. For example, you may see the Rocket.Chat mode process approaching 100% CPU (even if the host CPU load is low). This is due to the single-threaded nature of Node.js applications, as they can't take advantage of multiple cores natively. + +You can use microservices or deploy multiple instances of Rocket.Chat to scale your environment while maintaining user performance. + +****[**Microservices**](microservices-setup.md)**:** Deploy Rocket.Chat using microservices or several smaller components, each focusing on a single feature of Rocket.Chat. + +****[**Deploying multiple instances of Rocket.Chat:** ](broken-reference)Running multiple instances of the Rocket.Chat application on a multi-core machine. diff --git a/deploy-rocket.chat/scaling-rocket.chat/automation-tools/README.md b/deploy-rocket.chat/scaling-rocket.chat/automation-tools/README.md new file mode 100644 index 0000000000..951e8262da --- /dev/null +++ b/deploy-rocket.chat/scaling-rocket.chat/automation-tools/README.md @@ -0,0 +1,11 @@ +# Automation Tools + +Instead of manually deploying Rocket.Chat, automation tools can help streamline the process and improve overall efficiency. + +****[**Ansible**](ansible.md)**:** Understand how to configure an Ansible environment for deploying Rocket.Chat to multiple servers. + +****[**Kubernetes using Helm**](broken-reference): Install Rocket.Chat microservices on Kubernetes using Helm. + +****[**OpenShift**](openshift.md)**:** Automate Rocket.Chat deployment on OpenShift. + +****[**Vagrant**](vagrant.md)**:** Deploying Rocket.Chat on Vagrant with Ubuntu. diff --git a/deploy-rocket.chat/scaling-rocket.chat/automation-tools/ansible.md b/deploy-rocket.chat/scaling-rocket.chat/automation-tools/ansible.md new file mode 100644 index 0000000000..8335bca500 --- /dev/null +++ b/deploy-rocket.chat/scaling-rocket.chat/automation-tools/ansible.md @@ -0,0 +1,186 @@ +--- +description: Set up an Ansible environment for deploying Rocket.Chat to multiple servers. +--- + +# Ansible + +{% hint style="info" %} +See the [Rocket.Chat official Ansible role](https://galaxy.ansible.com/RocketChat/Server#readme), +{% endhint %} + +## Installation + +Ansible works on a "push to clients" basis. Your control node pushes all the configuration/ad-hoc tasks out to your systems via SSH, with no client running on the systems you're deploying to! In order words, it's swift, efficient, secure, scalable, and highly portable. Therefore, to control remote systems, you only need to install Ansible on your control node (your desktop can be an excellent control node to deploy from). Ansible has + +{% hint style="info" %} +To learn more about Ansible installation on different operating systems, see the [official installation guide](https://docs.ansible.com/ansible/latest/installation\_guide/index.html). +{% endhint %} + +### Installation via package manager + +Ansible is likely available in your official package repositories if you're using a UNIX-like operating system, such as Linux or BSD. Use your package manager to see if it's available and install it. + +### Installation via PIP + +Ansible is written in Python, so it's only natural that it be available for installation via [`pip`](https://pypi.python.org/pypi). . If you have pip installed, run the following command: + + `sudo pip install ansible` + +If you do not have pip, check if you can install `pip` through your system's package manager (look out for Python 2.7 version). If you're on Mac OS X and you're not using [Homebrew](http://brew.sh) or [pkgsrc](https://github.com/cmacrae/saveosx), you should be able to install `pip` using `easy_install` with this command: + +``` +sudo easy_install pip +sudo pip install ansible +``` + +## Simple Deployment Environment for Rocket.Chat + +Now that you've installed Ansible, you can deploy Rocket.Chat. + +### Prerequisites + +* You must have SSH access to the system you want to deploy to, as the `root` user. +* The system you're deploying to must have Python installed and run one of the following operating systems: + * EL 7 (RHEL/CentOS) + * Debian 8 (Jessie) LTS + * Ubuntu 18.04 LTS + * Ubuntu 19.04 + +{% hint style="info" %} +Future releases of the [official Rocket.Chat Ansible role](https://galaxy.ansible.com/RocketChat/Server/#readme) will include other operating systems and Linux distributions/releases. If you'd like to see a particular OS supported, please [raise an issue](https://github.com/RocketChat/Rocket.Chat.Ansible/issues) to ask if it can be added. +{% endhint %} + +### Inventory set-up + +Create a directory anywhere on your system, possibly in your home directory or where you save your code or Git repositories. Give it a name and navigate to that directory. + +``` +mkdir ansible +cd ansible +ansible $ +``` + +Next, create an inventory file in that directory. The inventory file is a simple formatted file containing a list of systems we want to connect to and control using Ansible. It can include single hosts, group hosts together, groups of groups, and set variables on a host or group basis. + +{% hint style="info" %} + We recommend naming the directory `ansible` and the file `inventory` to maintain a proper naming convention. +{% endhint %} + +``` +touch inventory +``` + +Open the file and add the hostname or FQDN of the server(s) you want to deploy Rocket.Chat to. + +``` +chat.my.domain +``` + +The `[chat_servers]` denotes a group called "chat\_servers." Any hostnames/FQDNs/IP addresses under this will be members of the "chat\_servers" group. If you want to add another server, add it like this: + +``` +[chat_servers] +chat.my.domain +talk.my.domain +``` + +We recommend authenticating SSH connections to your server(s) using SSH key pairs. However, you can provide Ansible with the root user's password in the inventory file if you don't have SSH. + +{% hint style="danger" %} +This should only be temporary because it is an insecure practice. +{% endhint %} + +Set the `root` user's password for the `chat.my.domain` host: + +``` +[chat_servers] +chat.my.domain ansible_ssh_pass=SuP3rseCre7pA$sw0rd +talk.my.domain +``` + +### Download the Rocket.Chat Ansible role + +Ansible shares and uses other people's roles through [Galaxy](http://galaxy.ansible.com). You can download the roles you want using a command-line tool installed earlier when you installed Ansible. + +``` + ansible-galaxy. +``` + +First, create a `roles` directory: + +``` +ansible $ mkdir roles +``` + +Then, create a `requirements.yml` file describing how we want to fetch the role to `ansible-galaxy`. Open the file `roles/requirements.yml`.The file's contents will vary based on which version of Ansible you're running. + +{% hint style="info" %} +Run `ansible --version` to know your version of Ansible. +{% endhint %} + +If you're running Ansible 1.9.4, update `requirements.yml` with the following data: + +```yaml +- src: RocketChat.Server + version: master +``` + +If you're running Ansible 2.0, update `requirements.yml` with the following data: + +```yaml + - src: RocketChat.Server + version: v2.2.2 +``` + +Next, fetch the Rocket.Chat Ansible role using the `ansible-galaxy` command: + +``` +ansible-galaxy install -p roles/ -r roles/requirements.yml +``` + +This command installs any roles defined `requirements.yml`. Now you have the `RocketChat.Server` role in your `roles` directory. + +``` +ls roles +RocketChat.Server +``` + +### Create a Playbook to "play" the Rocket.Chat Ansible Role + +Ansible roles are built from a collection of "plays" - essentially, tasks/actions to take. To use a role, create a simple playbook that tells Ansible, "I want to run this role on these systems." + +Let's call the playbook `rocket_chat.yml` . + +{% hint style="info" %} +The `.yml` denotes a YAML document, which is what language you use to express most things in Ansible. +{% endhint %} + +``` +touch rocket_chat.yml +``` + + Add the following information to your `rocket_chat.yml` playbook: + +```yaml +--- + + - name: Apply the RocketChat.Server role to all chat_servers + hosts: chat_servers + + roles: + - RocketChat.Server +``` + +### Deploy Rocket.Chat using Ansible + +To run the playbook, use the `ansible-playbook` command, + +``` +ansible-playbook -i inventory rocket_chat.yml +``` + +This command can be expressed as "run the `rocket_chat.yml` playbook with the inventory file `inventory`." When the deployment is successful, visit `https://chat.my.domain` and the Rocket.Chat login screen appears. + +{% hint style="info" %} +See the [README](https://github.com/RocketChat/Rocket.Chat.Ansible/blob/master/README.md) to explore other Ansible role options. +{% endhint %} diff --git a/deploy-rocket.chat/scaling-rocket.chat/automation-tools/openshift.md b/deploy-rocket.chat/scaling-rocket.chat/automation-tools/openshift.md new file mode 100644 index 0000000000..f8e3ed0aa6 --- /dev/null +++ b/deploy-rocket.chat/scaling-rocket.chat/automation-tools/openshift.md @@ -0,0 +1,52 @@ +# OpenShift + +Several templates for providing Rocket.Chat are hosted in this [repository](http://developers.redhat.com/). + +## Installation on Container Development Kit (CDK) + +* Download and install CDK. +* Download and install the OpenShift Client tool. +* Run OpenShift vagrant machine. +* Pull the Rocket.Chat Docker image from Docker Hub and tag/push to the internal OpenShift registry using these commands: + +```bash +docker pull registry.rocket.chat/rocketchat/rocket.chat +docker tag rocketchat/rocket.chat hub.openshift.rhel-cdk.10.1.2.2.xip.io/openshift/rocket-chat +docker push hub.openshift.rhel-cdk.10.1.2.2.xip.io/openshift/rocket-chat +``` + +* Login in OpenShift and create a new project in OpenShift + +```bash +oc login -u openshift-devel https://10.1.2.2:8443 +oc new-project rocket-chat +``` + +* Clone this repo and add the templates and ImageStream to the Openshift namespace: + +```bash +git clone https://github.com/rimolive/rocketchat-openshift +oc create -n openshift -f rocket-chat-is.json +oc create -n openshift -f rocket-chat-ephemeral.json +``` + +* Create the rocket-chat app + +```bash +oc new-app rocket-chat -p MONGODB_DATABASE=rocketchat,MONGODB_USER=rocketchat-admin,MONGODB_PASS=rocketchat +``` + +* Rocket.Chat uses a domain check code to verify the validity of the e-mail address. To disable it, run these commands: + +```bash +oc port-forward 27017 +mongo localhost:27017 +``` + +Inside the mongo client, run these commands: + +```javascript +use rocketchat +db.auth('rocketchat-admin','rocketchat') +db.rocketchat_settings.update({_id:'Accounts_UseDNSDomainCheck'},{$set:{value:false}}) +``` diff --git a/installation/automation-tools/vagrant.md b/deploy-rocket.chat/scaling-rocket.chat/automation-tools/vagrant.md similarity index 100% rename from installation/automation-tools/vagrant.md rename to deploy-rocket.chat/scaling-rocket.chat/automation-tools/vagrant.md diff --git a/deploy-rocket.chat/scaling-rocket.chat/microservices-setup.md b/deploy-rocket.chat/scaling-rocket.chat/microservices-setup.md new file mode 100644 index 0000000000..3c335c79b8 --- /dev/null +++ b/deploy-rocket.chat/scaling-rocket.chat/microservices-setup.md @@ -0,0 +1,129 @@ +# Microservices + +![](<../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (17).jpg>) + +## Components Overview + +This deployment architecture consists of several "_micro_" services or smaller components, each focusing on one feature of Rocket.Chat. Imagine that each component provides a _service_, and they are all combined to form your fully operational Rocket.Chat workspace. + +The components include the following: + +* **authorization** (`rocketchat/authorization-service):` This provides authorization capabilities like role/permission validation. It differs from authentication, which primarily deals with login systems. +* **nats** (`docker.io/nats):` A messaging system that provides a scalable and highly available message bus for microservices communication. It acts as a message distributor, i.e., you point to the distributor instead of pointing to each component in the deployment resource. This determines the service to forward the requests. + +{% hint style="info" %} +To learn more about NAT, see [the official documentation](https://docs.nats.io/nats-concepts/overview). +{% endhint %} + +* **stream-hub** (`rocketchat/stream-hub-service)`: A message broker that provides a scalable and fault-tolerant message stream for Rocket.Chat. It receives real-time changes or data from MongoDB and sends it to all the services. The services can act on that change at their discretion. +* **accounts** (`rocketchat/accounts-service`): The accounts component is responsible for managing user accounts and authentication - +* **ddp-streamer** (`rocketchat/ddp-streamer-service`): It deals with all web socket connections. All web socket connections must be forwarded directly to this service. It uses the Distributed Data **Protocol** (DDP). +* **presence** (`rocketchat/presence-service`): The presence component is responsible for managing [user presence status](../../use-rocket.chat/workspace-administration/user-status.md). +* **The central Rocket.Chat monolith** (`rocketchat/rocket.chat)`: Each component is disabled from this monolith, so each "service" can take over its respective functionalities. + + `` + +Rocket.Chat microservices deployment looks like the diagram below. Each component is comprised of one container from a bare metal perspective. + +![Rocket.Chat deployment with multiple microservices](<../../.gitbook/assets/Micro services deployment - v0.1@2x (1).png>) + +Since each component is a container, you can pull them the same way as any docker image. Consequently, you can also deploy Rocket.Chat with all these components via docker directly or with docker-compose; however, it is not officially supported. To deploy using docker directly, you are required to set up nats. Ensure that you're using a custom network to connect each related container. + +{% hint style="info" %} +See [the official documentation](https://docs.nats.io/) to learn how to start NATS on your server. +{% endhint %} + +Bare minimum, each container must be started with `MONGO_URL` and `TRANSPORTER` environment variables set, pointing to the MongoDB database (using full connection string) and the nats gateway address, respectively. At the very least, each container must be started with `MONGO_URL` and `TRANSPORTER` environment variables set, pointing to the MongoDB database (using full connection string) and the NATS gateway address, respectively. All `/sockjs` and `/websocket` connections must be routed through a reverse proxy or load balancer (LB), with the remainder going to the monolith. + +{% hint style="warning" %} +Again, it is essential to note that we do not support direct docker/compose microservices deployment. The only supported method currently is using [Kubernetes with our official helm chart](../prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/helm.md). +{% endhint %} + +## Microservices Deployment + +Rocket.Chat's microservices architecture allows for greater scalability, flexibility, resilience, and fault tolerance in the functioning of your workspace. This makes it possible for your workspace to manage large user volumes and adapt to changing business needs. This guide shows how to deploy Rocket.Chat and archive microservices using [Kubernetes](https://kubernetes.io/) and [Helm](https://helm.sh/), our officially supported method. + +### Prerequisites + +To use Helm for deploying microservices, here are certain prerequisites that need to be met: + +* A Kubernetes cluster is set up and configured. +* A working installation of Helm 3. +* Basic understanding of Kubernetes and Helm. + +To deploy Rocket.Chat and archive microservices using [Kubernetes](https://kubernetes.io/) and [Helm](https://helm.sh/), + +* Add the RocketChat helm repository to your system by running the following command: + +```sh +helm repo add rocketchat https://rocketchat.github.io/helm-charts +``` + +* Configure the Rocket.Chat deployment. By default, the Rocket.Chat Helm chart deploys a single monolith with a single instance. To enable microservices, edit your `Values.yaml` file and include these commands: + +```yaml +microservices: + enabled: true +``` + +Each component has its section inside the `Values.yml` file. The top level is for the monolith configuration. + +```yaml +presence: {} +ddpStreamer: {} +account: {} +authorization: {} +streamHub: {} +``` + +To set the desired number of replicas for any of the services, set the `replicas` value for the respective service. + +```yaml +ddpStreamer: + replicas: 2 +``` + +{% hint style="info" %} +`ddp-streamer` should be scaled from the beginning. Aim for one pod for every 500 concurrent users. +{% endhint %} + +For monolith replicas, set the top-level `replicaCount` value. + +```yaml +replicaCount: 2 +``` + +{% hint style="warning" %} +`stream-hub` is the only service/component that can not be scaled and is limited to one pod for each deployment. +{% endhint %} + +{% hint style="info" %} +You can find other deployment variables in [helm.md](../prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/helm.md "mention"). +{% endhint %} + +* Set up ingress. This architecture requires an ingress controller. All WebSocket connections needs to be sent directly to the `ddp-streamer`service as mentioned earlier. For example, install an nginx controller in your cluster following [this guide](https://kubernetes.github.io/ingress-nginx/deploy/#quick-start), then edit the `values.yml` file and add the following values: + +```yaml +host: # the host to access your rocket.chat instance from, omit the protocol +ingress: + enabled: true + ingressClassName: nginx +``` + +This adds the necessary ingress resource with all the expected paths and backends configured. The `ingressClassName` is essential unless you have a default class set; depending on the type of controller you're using, refer to the respective documentation. + +{% hint style="info" %} +Nginx controller is used as an example and not an official recommendation. Any ingress controller can be used, with the `ingressClassName` property set correctly or the `IngressClass` resource set to the default one for the cluster or the controller watches for `Ingress` resources with no specific class defined. +{% endhint %} + +* Apply the changes and install. Once you have made the necessary changes to the values file, run the following command to upgrade the deployment: + +```bash +helm install rocketchat -f Values.yaml rocketchat/rocketchat +``` + +* Once deployed, you should be able to access the Rocket.Chat using the configured host. You can convert your existing monolith deployment to using microservices by making the same changes mentioned in this document and running `helm upgrade` with the values file and the current deployment name instead of `helm install`. + +{% hint style="info" %} +A complete guide on how to deploy with helm can be found in [helm.md](../prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/helm.md "mention"). For multi-workspace deployment, please [contact support](../../resources/get-support/). +{% endhint %} diff --git a/deploy/prepare-for-your-deployment/other-deployment-methods/manual-installation/running-multiple-instances.md b/deploy/prepare-for-your-deployment/other-deployment-methods/manual-installation/running-multiple-instances.md new file mode 100644 index 0000000000..e0354eddff --- /dev/null +++ b/deploy/prepare-for-your-deployment/other-deployment-methods/manual-installation/running-multiple-instances.md @@ -0,0 +1,218 @@ +# Running Multiple Instances + +![](<../../../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (17).jpg>) + +While it's possible to scale up by adding more servers (recommended for HA purposes), you can better utilize your existing hardware by running multiple instances of the Rocket.Chat application (Node.js/Meteor app) on your current host(s). You should only do this if you already use a multi-core computer. A reasonable rule of thumb may be to run `N-1` Rocket.Chat instances, where `N=num_cores`. Running multiple instances of Rocket.Chat on a single host requires a reverse proxy before your application. This tutorial assumes you've already followed the instructions for [running behind an Nginx SSL Reverse Proxy](https://docs.rocket.chat/deploy/rocket.chat-environment-configuration/configuring-ssl-reverse-proxy#running-behind-a-nginx-ssl-reverse-proxy). + +Essentially, there are just three steps: + +* [Enable ReplicaSet on your MongoDB installation](https://docs.mongodb.com/manual/tutorial/deploy-replica-set/). +* Start multiple instances of Rocket.Chat bound to different ports. +* Update your proxy to point at all local Rocket.Chat instances. + +{% hint style="info" %} +In the examples, we'll be using Nginx. However, you can use other reverse proxies. +{% endhint %} + +## Run multiple instances of Rocket.Chat + +* Configure Rocket.Chat to run as a systemd service. Since you want to run multiple instances simultaneously, you must run at least two services. The only difference is the service name and port. If you don't have a service yet, the easiest way to do this for Rocket.Chat is to create a file in `/usr/lib/systemd/system/` and call it `rocketchat.service` + +``` +[Unit] +Description=Rocket.Chat Server +After=syslog.target +After=network.target + +[Service] +Type=simple +Restart=always +StandardOutput=syslog +SyslogIdentifier=RocketChat +User=rocketchat +Group=rocketchat +Environment=MONGO_URL=mongodb://your_mongodb:27017/your_database?replicaSet=your_replica_set_name +Environment=MONGO_OPLOG_URL=mongodb://your_mongodb1:27017/local?replicaSet=your_replica_set_name +Environment=ROOT_URL=https://your_rocketchat_domain.com +Environment=PORT=3000 +WorkingDirectory=/path.to.rocketchat/rocket.chat +ExecStart=/usr/local/bin/node /path.to.rocketchat/rocket.chat/bundle/main.js + +[Install] +WantedBy=multi-user.target +``` + +* Ensure the User and Group exist, and both have `read/write/execute permissions` for `rocketchat`. Now you can start, stop, restart, and see the status of your `rocketchat` service. If you want multiple services, create another file in `/usr/lib/systemd/system` and call it `rocketchat@.service` updating the content with the these data: + +``` +[Unit] +Description=Rocket.Chat Server +After=syslog.target +After=network.target + +[Service] +Type=simple +Restart=always +StandardOutput=syslog +SyslogIdentifier=RocketChat +User=rocketchat +Group=rocketchat +Environment=MONGO_URL=mongodb://your_mongodb:27017/your_database?replicaSet=your_replica_set_name +Environment=MONGO_OPLOG_URL=mongodb://your_mongodb1:27017/local?replicaSet=your_replica_set_name +Environment=ROOT_URL=https://your_rocketchat_domain.com +Environment=PORT=%I +WorkingDirectory=/path.to.rocketchat/rocket.chat +ExecStart=/usr/local/bin/node /path.to.rocketchat/rocket.chat/bundle/main.js + +[Install] + WantedBy=multi-user.target +``` + +* Start the other Rocket.Chat services. + +`systemctl start rocketchat@3001` + +{% hint style="info" %} +You can use any desired port instead of `3001`. +{% endhint %} + +* To run Rocket.Chat during boot; use the command below to enable the services: + +`systemctl enable rocketchat or systemctl enable rocketchat@3001` + +### Ensure nodes can communicate + +If you run Rocket.Chat instances on multiple physical nodes or containers, ensure they can communicate with each other. Rocket.Chat uses a peer-to-peer connection to inform each other of events. For example, when you type a message and tag a friend or coworker connected to another instance. Two different events are fired; the user (you) is typing and notifying the user (friend). + +Each Rocket.Chat instance registers in your database the IP address it detected for itself. Other instances use this list to discover and establish connections with each other. If you find instances unable to communicate, set the `INSTANCE_IP` environment variable to the IP the other instances can use to talk to it. + +## Update your Nginx proxy config + +Edit `/etc/nginx/sites-enabled/default` or `/etc/nginx/conf.d/default.conf` ( if you use nginx from docker) and replace the sample hostname "your\_hostname.com" with your actual hostname. You need to set up a backend if one doesn't already exist and add all local Rocket.Chat instances to it. Then swap out the host listed in the proxy section for the backend you defined with no port. + +* Now, update the Nginx config to point to the two Rocket.Chat instances that started running on ports `3001` and `3002`. + +```json +# Upstreams +upstream backend { + server 127.0.0.1:3000; + server 127.0.0.1:3001; + #server 127.0.0.1:3002; + #server 127.0.0.1:3003; + . + . + . +} +``` + +* Replace `proxy_pass http://IP:3000/;` with `proxy_pass http://backend;`. Updating the [sample Nginx configuration](https://docs.rocket.chat/installation/manual-installation/configuring-ssl-reverse-proxy#running-behind-a-nginx-ssl-reverse-proxy) would result in a config like this: + +```apacheconf + # HTTPS Server +server { + listen 443; + server_name your_hostname.com; + + error_log /var/log/nginx/rocketchat.access.log; + + ssl on; + ssl_certificate /etc/nginx/certificate.crt; + ssl_certificate_key /etc/nginx/certificate.key; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don’t use SSLv3 ref: POODLE + + location / { + proxy_pass http://backend; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header Host $http_host; + + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header X-Nginx-Proxy true; + + proxy_redirect off; + client_max_body_size 0; + } +} +``` + +* Restart Nginx. + + `service nginx restart` + +## Update your Apache proxy config + +Run this as a root user to enable the necessary modules to use the proxy balancer. + +``` +a2enmod proxy_html +a2enmod proxy_balancer +a2enmod headers +a2enmod session +a2enmod session_cookie +``` + +Edit `/etc/apache2/sites-enabled/rocketchat.conf` and confirm that your hostname has been updated. + +```apacheconf + + ServerAdmin it@domain.com + ServerName chat.domain.com + + LogLevel info + ErrorLog /var/log/chat.domain.com_error.log + TransferLog /var/log/chat.domain.com_access.log + + SSLEngine On + SSLCertificateFile /etc/ssl/certs/chat.domain.com.crt + SSLCertificateKeyFile /etc/ssl/private/chat.domain.com.key + + Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED + ProxyPreserveHost On + + + BalancerMember http://localhost:3000 route=1 + BalancerMember http://localhost:3001 route=2 + ... + ProxySet stickysession=ROUTEID + + + + BalancerMember ws://localhost:3000 route=1 + BalancerMember ws://localhost:3001 route=2 + ... + ProxySet stickysession=ROUTEID + + + + Require all granted + + + RewriteEngine On + RewriteCond %{HTTP:Upgrade} =websocket [NC] + RewriteRule /(.*) balancer://ws/$1 [P,L] + RewriteCond %{HTTP:Upgrade} !=websocket [NC] + RewriteRule /(.*) balancer://http/$1 [P,L] + + ProxyPassReverse / http://localhost/ + +``` + +* Restart Apache. + + `systemctl restart apache2.service` + +* Visit `https://your_hostname.com` and confirm the updates. + +{% hint style="info" %} +To prove you're using both services as you'd expect, you can stop one Rocket.Chat service at a time and ensure that the chat still works. Restart that service and stop the other. That will show you are using both instances. Be sure to maintain time in sync between all instances. +{% endhint %} + +## Check your database + +The database is another vital part of this setup. First, you must ensure you are running a replicaset. It is essential due to the following reasons: + +* **Database reliability:** Confirm that your data is replicated and you have another node if something happens to your primary. +* **Oplog Tailing**: The oplog is turned on when you set up a replicaset. Mongo uses this to publish events so the other nodes in the replicaset can ensure its data is updated. Rocket.Chat uses this to watch for database events. If someone sends a message on Instance 1 and you are connected to Instance 2. Instance 2 watches for message insert events, showing you a new message has arrived. diff --git a/deploy/prepare-for-your-deployment/other-deployment-methods/manual-installation/updating.md b/deploy/prepare-for-your-deployment/other-deployment-methods/manual-installation/updating.md new file mode 100644 index 0000000000..b4f349aed1 --- /dev/null +++ b/deploy/prepare-for-your-deployment/other-deployment-methods/manual-installation/updating.md @@ -0,0 +1,129 @@ +--- +description: Updating Manual Installation +--- + +# Updating + +To update the Rocket.Chat server deployed via manual installation, + +* Stop Rocket.Chat service: + +``` +sudo systemctl stop rocketchat +``` + +* Remove the installation folder, usually in _/opt_ + +``` +sudo rm -rf /opt/Rocket.Chat +``` + +* Ensure you have the needed build packages for Debian + +``` +sudo apt-get install -y build-essential graphicsmagick +``` + +* Update the node version required by Rocket.Chat. Check the supported engine versions for MongoDB and NodeJs, and install as recommended. + +``` +sudo n install 14.0.0 +``` + +* Download Rocket.Chat latest version: + +``` +curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz +``` + +``` +tar -xzf /tmp/rocket.chat.tgz -C /tmp +``` + +* Install it and set the proper permissions to Rocket.Chat folder. + +``` +cd /tmp/bundle/programs/server && npm install +``` + +``` +sudo mv /tmp/bundle /opt/Rocket.Chat +``` + +``` +sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat +``` + +* Start the service. + +``` +sudo systemctl start rocketchat +``` + +{% hint style="info" %} +Always look out for the [release notes](https://github.com/RocketChat/Rocket.Chat/releases) and [tags](https://github.com/RocketChat/Rocket.Chat/tags) to see updates and versions you can update. +{% endhint %} + +## Caveats on upgrading your standalone Rocket.Chat database + +### Replica sets + +Any version after `1.0.x` requires `replicasets/oplogging` enabled on Mongo. To learn more, see [mongo replicas](https://rocket.chat/docs/installation/manual-installation/mongo-replicas). + +### Upgrading the database + +It is advised to upgrade your database version one at a time to avoid database problems due to the MongoDB schema changes between releases. + +Never attempt to restore the database from a backup of one version to another. For example, if you have Rocket.Chat `0.65.x`, don't back up the database and restore directly to another Rocket.Chat version `1.2.x`. However, follow these steps to upgrade your database: + +* Backup DB -> \~/Rocket/Backup/v0.65 +* Upgrade Rocket.Chat by one version, e.g., 0.65.x -> 0.66.x +* Check for errors. +* Backup DB -> \~/Rocket/Backup/v0.66 +* Upgrade Rocket one version, e.g., 0.66.x -> 0.67.x +* Look out for errors. If you discover any, stop and fix them, or return to the previous version and start again. +* Repeat + +## Updating from 0.x.x to 0.40.0 + +Rocket.Chat is switching from requiring Node.js v`0.10.44` to Node.js `v4.8.4 LTS` with the release of the version `0.40.0`. You don't have to do anything if you use Docker or any other cloud installation technique. + +To update the server, + +* Firstly, stop Rocket.Chat +* Using `n` to manage the Node.js version, update the node version. + +``` +sudo n 4.8.4 +``` + +## Updating to 1.0 + +Rocket.Chat 1.0 requires `oplog` to be enabled. Attempting to start Rocket.Chat without `oplog` will result in an error. + +To enable `oplog`, + +* Connect to mongo, and type `rs.initiate()`. +* Then, provide the `MONGO_OPLOG_URL` environment URL. If mongo is on the same host, the environment variable will look like this: + +``` +MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 +``` + +{% hint style="info" %} +To learn more, [see configure a replica set with MongoDB](https://docs.rocket.chat/installation/manual-installation/mongo-replicas/). +{% endhint %} + +#### Mongo Authentication + +You might also need to give your user the cluster monitor role if using mongo authentication. + +``` +admin = db.getSiblingDB("admin"); +admin.grantRolesToUser('OPLOGUSER',[{ role: "clusterMonitor", db: "admin" }]) +admin.grantRolesToUser('ROCKETUSER',[{ role: "clusterMonitor", db: "admin" }]) +``` + +{% hint style="info" %} +Replace the users with the names you have chosen for your users. +{% endhint %} diff --git a/deploy/prepare-for-your-deployment/other-deployment-methods/plug-in-deployments.md b/deploy/prepare-for-your-deployment/other-deployment-methods/plug-in-deployments.md new file mode 100644 index 0000000000..f1b51cf1f9 --- /dev/null +++ b/deploy/prepare-for-your-deployment/other-deployment-methods/plug-in-deployments.md @@ -0,0 +1,21 @@ +# Plug-in Deployments + +You can integrate Rocket.Chat (or LiveChat) features into popular applications via Plug-ins. + +## Authentication + +### Drupal Plug-in + +[](https://www.drupal.org/) + +This is a Rocket.Chat module for Drupal 8 and 7. Add Rocket.Chat's Live Chat feature to your Drupal-based website. This widget allows you to communicate directly with your website 'guests.' + +{% hint style="info" %} +To learn more, see [Rocket.Chat module for Drupal 8 and 7](https://www.drupal.org/project/rocket\_chat). +{% endhint %} + +### Pidgin Plug-in + +[](https://pidgin.im) + +You can also enjoy ultra-lightweight Rocket.Chat with IRC, ICQ, Yahoo Messenger, Google Talk, AIM, MSN, or Groupwise. To install the Alpha RocketChat for Pidgin Plugin, follow the[ installation guidelines](https://github.com/EionRobb/purple-rocketchat#readme). You can also download the [DDL plugin](https://github.com/EionRobb/purple-rocketchat#readme) directly. diff --git a/deploy/updating-rocket.chat/README.md b/deploy/updating-rocket.chat/README.md new file mode 100644 index 0000000000..38f361152a --- /dev/null +++ b/deploy/updating-rocket.chat/README.md @@ -0,0 +1,131 @@ +# Updating Rocket.Chat + +Rocket.Chat ships updates frequently to introduce new capabilities, fix bugs, and in some cases address potential security issues. Each of these updates improves Rocket.Chat to provide valuable and secure capabilities to our users. + +Workspace admins should monitor new releases and our release notes [here ](https://github.com/RocketChat/Rocket.Chat/releases)to determine whether updates should be applied to their workspace. We recommend that workspaces are kept current with Rocket.Chat releases. + +{% hint style="danger" %} +* For a successful update, you must not skip any major version. That is, say you want to move from version `1.x.x` to say `4.x.x`, you need to traverse chronologically `1.x.x` -> `2.x.x` -> `3.x.x` -> `4.x.x`. Ideally, it's even better to make more granular steps, and not skip more than two minor versions at a time. +* Upgrading to `v5` requires you to be on at least `4.x`. +{% endhint %} + +* [Updating on Docker](./#upgrading-rocket.chat-on-docker) +* [Updating on Snap](./#upgrading-rocket.chat-snap) + +## Updating Rocket.Chat on Docker + +Provided your workspace was deployed using [Docker and Docker Compose](../../quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/), you can update the `rocketchat` [docker image](../../deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/available-images.md) and the version of your Rocket.Chat server to the latest or any version following any of these guides. + +{% hint style="success" %} +Updating the Rocket.Chat image doesn't affect your data, since it exists in the mongo image. +{% endhint %} + +{% hint style="info" %} +In updating, make sure your MongoDB version is supported with the desired version of Rocket.Chat. See [https://github.com/RocketChat/Rocket.Chat/releases](https://github.com/RocketChat/Rocket.Chat/releases) +{% endhint %} + +### Updating to Latest + +{% hint style="info" %} +Make sure the Rocket.Chat image value in the [compose file](https://github.com/RocketChat/Docker.Official.Image/blob/master/compose.yml) points to the `latest` tag on the registry. +{% endhint %} + +You can update directly to the latest version of Rocket.Chat by: + +* Pulling the Rocket.Chat image with the `latest` tag + +``` +docker pull registry.rocket.chat/rocketchat/rocket.chat:latest +``` + +* Stop and restart the existing container + +``` +docker-compose stop rocketchat +docker-compose rm rocketchat +docker-compose up -d rocketchat +``` + +### Updating to a specific version + +To update your Rocket.Chat server to a specific version, follow these steps: + +* In your deployment directory, edit your `.env` or `compose.yml` file to point to the desired Rocket.Chat version + +
+ +Changing version in .env + +In the [`.env`](https://github.com/RocketChat/Docker.Official.Image/blob/master/env.example) file, change the `RELEASE` value to your specified version. + +``` +RELEASE= +``` + +
+ +OR + +
+ +Changing version in compose.yml + +In the [`compose.yml`](https://github.com/RocketChat/Docker.Official.Image/blob/master/compose.yml) file, change the `rocketchat` service `image` value to point to an image in the rocketchat registry image with a [tag](https://hub.docker.com/r/rocketchat/rocket.chat/tags/) of your desired version. + +``` +services: + rocketchat: + image:registry.rocket.chat/rocketchat/rocket.chat: +``` + +
+ +* Stop and restart the existing rocketchat container by running + +``` +docker-compose stop rocketchat +docker-compose rm rocketchat +docker-compose up -d rocketchat +``` + +See [available-images.md](../../deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/available-images.md "mention") for more on rocketchat docker images. + +## Updating Rocket.Chat Snap + +The Rocket.Chat snap installation puts you on the `latest` track at the time of installation, which means you will always get the latest releases on that track. + +{% hint style="info" %} +It is highly advised to [back up your data](../../deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/snaps/snap-backup-and-restore.md#backup-rocket.chat-snap-data) before upgrading. +{% endhint %} + +**Before performing a major version update, it is recommended to check our forum's announcement section**: [https://forums.rocket.chat/c/announcements/10](https://forums.rocket.chat/c/announcements/10) as major releases are usually delayed by a couple of weeks. This happens so that feedback is gotten and minor patches are made before pushing out. + +You can force an update by running: + +``` +sudo snap refresh rocketchat-server +``` + +Updating to a major version requires a track change learn more about this in this discussion [https://forums.rocket.chat/t/introducing-snap-tracks/5890](https://forums.rocket.chat/t/introducing-snap-tracks/5890). + +Switching to a particular track is done by executing the following command. You will only receive updates relating to this track. + +``` +sudo snap switch rocketchat-server --channel=x.x/stable +``` + +Besides the **latest** track, there is also **stable**, **candidate** and **edge.** + +More details on what channels are: [https://snapcraft.io/docs/channels](https://snapcraft.io/docs/channels) + +**To update to a new version, execute** + +``` +sudo snap refresh rocketchat-server --channel=x.x.x/stable +``` + +{% embed url="https://docs.rocket.chat/getting-support#mongodb-versions" %} + +{% content-ref url="../../deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/mongodb-mmap-to-wiredtiger-migration.md" %} +[mongodb-mmap-to-wiredtiger-migration.md](../../deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/mongodb-mmap-to-wiredtiger-migration.md) +{% endcontent-ref %} diff --git a/deploy/updating-rocket.chat/updating-faq.md b/deploy/updating-rocket.chat/updating-faq.md new file mode 100644 index 0000000000..10ab334963 --- /dev/null +++ b/deploy/updating-rocket.chat/updating-faq.md @@ -0,0 +1,11 @@ +# Updating FAQ + +
+ +Why do I see a MongoDB Deprecated warning immediately after update + +This is a result of your MongoDB version not being compatible with the Rocket.Chat version the installed. + +It is advisable to incrementally upgrade the version of MongoDB deployed to the supported version. See release engine compatibility [https://github.com/RocketChat/Rocket.Chat/releases](https://github.com/RocketChat/Rocket.Chat/releases) + +
diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/README.md new file mode 100644 index 0000000000..38ad74fbd7 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/README.md @@ -0,0 +1,88 @@ +--- +description: You can view the available and installed Rocket.Chat Apps and manage them. +--- + +# Rocket.Chat Marketplace + +[Rocket.Chat](http://rocket.chat) Apps are extensions, or plugins, that can be added to your workspace to customize your collaboration experience. For example, you can install Reminders and insert the Add Reminder button on a message in your workspace. Rocket.Chat provides many apps that can be installed and managed through the marketplace. You can search for any app on the marketplace and install it on your Rocket.Chat server. You can also upload your custom app package yourself and then install it. + +**These Apps can do the following :** + +* Display interactive and dynamic content on their own surface - like a modal or the room’s contextual bar. +* Create buttons in the UI for users to interact with native content. +* Create slash commands for users to trigger more generic interactions. +* Register endpoints to receive data from other applications and services. +* Work on both desktop and mobile clients. +* Send messages to users; create and manage public channels, groups, discussions, and threads. + +{% hint style="info" %} +You must register your workspace (even if it is a community edition) on [Rocket.Chat Cloud](https://cloud.rocket.chat) before you can install apps from the Rocket.Chat marketplace. +{% endhint %} + +You can browse Rocket.Chat apps either on our [marketplace](https://rocket.chat/marketplace) or access them directly from **Administration > Apps > Marketplace.** + +On the **Explore** tab of the **Apps** screen, + +* You can see all the apps available on Rocket.Chat and seach for the one you need. +* You can also filter based on **Categories, Status, and Price.** Choose between multiple categories within the filter to help you find the best app for your workspace users. +* tag next to an app on the marketplace means you need to upgrade your workspace to a higher version to use the app. + +On the **Installed** tab of the **Apps** screen, + +* You can find the apps you have installed on your workspace. +* **Enable/Disable/Uninstall** any of your installed apps. +* View App details. +* View **logs** of the app. +* Provide additional user settings and configuration for the app. (All Rocket.Chat Apps might not require any setup configuration or user settings.) + +## Types of Apps + +### Public Apps + +Public Apps are all the apps available on the Rocket.Chat [marketplace](https://www.rocket.chat/marketplace). If you are a third-party publisher/developer, you can also submit an app to the marketplace and Rocket.Chat can approve or reject it. + +To submit an app to the marketplace, the publisher must have a Rocket.Chat [Cloud Account](https://cloud.rocket.chat/login) and register their publisher account. You can find more about it on our [developer documentation. ](https://developer.rocket.chat/apps-engine/app-submission-to-the-marketplace) + +{% hint style="info" %} +You can learn how to install and enable each of them in the [App Guide](rocket.chat-public-apps-guides/). +{% endhint %} + +### Private Apps + +A workspace can develop its apps and publish them on the workspace. These are called private apps. They can only work on the workspace that uploaded it. + +If you want to develope your private Rocket.Chat app you can follow the [developer guides here](https://developer.rocket.chat/apps-engine/rocket.chat-apps-engine). If you are looking for the information of user roles in marketplace, check [marketplace-roles.md](../../setup-and-administer-rocket.chat/roles-in-rocket.chat/marketplace-roles.md "mention"). + +## App Limitations + +### Community Edition + +For community edition (CE), workspaces can install numerous Public apps (apps from the marketplace) but enable only five. And they can enable three Private apps. Once it reaches the limit, you can upgrade to the enterprise edition (EE) for access to enable all apps in the workspace. Refer to the table below for better understanding. + +| Community Edition 6.0 | Public apps | Private apps | +| --------------------- | ----------- | ------------ | +| Install | Unlimited | Unlimited | +| Enable/Use | 5 | 3 | + +If your workspace version is `5.4` or lower, you can use all the enabled public and private apps you already have. However, you can not purchase or enable more apps once the limit is reached. + +### Enterprise Edition + +For enterprise edition (EE), workspaces can install all Public and Private apps. But, if an enterprise edition (EE) workspace license expires and the workspace has exceded the the **** limit, then marketplace disables all downloaded apps, and the app count returns to zero. + +## Enterprise Edition App Offerings + +Some apps are part of the **Enterprise Edition** offerings. You don't have to purchase them if you already subscribe to the Enterprise Edition of Rocket.Chat. They include the following: + +| | | | | +| -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | +| [Jira Server](rocket.chat-public-apps-guides/atlassian/jira-server-integration.md) | Jira Cloud | [Confluence Server](rocket.chat-public-apps-guides/atlassian/confluence-server-integration.md) | Confluence Cloud | +| [Bitbucket Server](rocket.chat-public-apps-guides/atlassian/bitbucket-server-integration.md) | Bitbucket Cloud | [Bamboo](rocket.chat-public-apps-guides/atlassian/bamboo-integration.md) | [Zoom](rocket.chat-public-apps-guides/zoom.md) | +| [Data Loss Prevention (DLP)](rocket.chat-public-apps-guides/data-loss-prevention-dlp-app.md) | [Facebook](https://docs.rocket.chat/guides/app-guides/omnichannel-apps/facebook-app) | [Trello](https://docs.rocket.chat/guides/app-guides/trello) | [Instagram Direct](rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/) | +| [Telegram](rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/) | [Twitter](rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/) | [Pexip](../../use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/pexip-app.md) | [Google Meet](../../use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/google-meet-app.md) | + +{% hint style="success" %} +If you are subscribed to Rocket.Chat's **Enterprise Edition**, you can install and enable any number of paid and free apps available in the marketplace on your workspace. +{% endhint %} + +If you are looking for the manual/user guide of a particular app, check [rocket.chat-public-apps-guides](rocket.chat-public-apps-guides/ "mention") or search for it within the documentation. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/app-storage-location.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/app-storage-location.md new file mode 100644 index 0000000000..20f08b7f27 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/app-storage-location.md @@ -0,0 +1,25 @@ +# App Storage Location + +Rocket.Chat's version 4 introduced npm packages as dependencies of apps. Since npm dependencies could account for a hefty portion of an app package's final size, we have a more flexible storage solution for your apps' packages. + +To access the configuration, navigate to **Administration > Workspace > Settings> Apps** + +Currently, we have two storage methods: + +* [GridFS](https://docs.mongodb.com/manual/core/gridfs/) at MongoDB (the default option) +* Filesystem at the host's box + +## GridFS + +When using GridFS (default), your app package is stored in the database as a file, and you don't have to manage configuration to make it work. + +## Filesystem + +When setting the storage to the filesystem, you have full control of the package's storage location and access control. There are a few requirements to make it work: + +* You have to provide the absolute path of the directory that will be used to store the packages in the configuration, +* The Rocket.Chat server has to have read and write permissions to the path so it can manage the packages + +## Changing configuration when there are apps installed + +It is not recommended to change storage configuration when there are apps installed. Currently, there is no migration mechanism to move packages between different storage methods. Doing so will result in apps not working properly. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/README.md new file mode 100644 index 0000000000..df373077f4 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/README.md @@ -0,0 +1,3 @@ +# Rocket.Chat Public Apps Guides + +Public Apps include all the apps listed on the marketplace. They also include tools that contribute to a seamles experience on your workspace. You can find them from the document navigation in the sidebar. diff --git a/guides/app-guides/atlassian/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/README.md similarity index 100% rename from guides/app-guides/atlassian/README.md rename to extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/README.md diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/bamboo-integration.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/bamboo-integration.md new file mode 100644 index 0000000000..3c3ee7d1c5 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/bamboo-integration.md @@ -0,0 +1,45 @@ +--- +description: Atlassian Bamboo Integration +--- + +# Bamboo + +{% hint style="success" %} +This app can also work in a fully air-gapped environment. If you are an Enterprise customer running an air-gapped workspace, follow the [air-gapped-app-installation.md](../../../../setup-and-configure/rocket.chat-air-gapped-deployment/air-gapped-app-installation.md "mention") guide and then follow the configuration instructions below. +{% endhint %} + +## Installation + +You can install our Bamboo Integration Rocket.Chat App from your Rocket.Chat Administration area. + +* Go to **Administration** > **Marketplace** +* Search for the **Bamboo Integration** and click on the item +* Click on the **Install** button +* Click on **Activate** + +Now that you have the app installed in your server, it is time to configure the integration with your Bamboo instance. + +## Configuration + +Go to any channel or private group and execute the slashcommand `/bamboo install`. You will receive an ephemeral message with instructions on how to configure your Bamboo, as follows: + +1. On your Bamboo, install the [Rocket.Chat Notifications for Bamboo](https://marketplace.atlassian.com/apps/1220022/rocket-chat-notifications-for-bamboo) add-on +2. Add a notification on a Build Plan or Deployment Environment +3. Select the "Rocket.Chat" recipient type +4. On the "Rocket.Chat URL" field, insert the URL given to you by the step #4 in the ephemeral message (e.g., `https://example.com:3000/api/apps/private/6a7b5a37-b9bb-4d49-ae38-c6ebcb3fe479/ejDjQ9Kyh2wBgrSwt/webhook`) +5. On the "Rocket.Chat channel" field, type the name of the channel or private group you want to be notified of the events + +After that, your Rocket.Chat will start receiving the configured notifications. + +> **Note**: Not all Build/Deployment events are supported by the Bamboo Integration at the time of this writing. Unsupported events will not result in any notification sent in Rocket.Chat. The list of supported events is as follows: + +* Plans: + * All Builds Completed + * Failed Builds and First Successful +* Jobs: + * All Jobs Completed + * Failed Jobs and First Successful + * Job Error +* Deployments: + * Deployment Started and Finished + * Deployment Failed diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/bitbucket-server-integration.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/bitbucket-server-integration.md new file mode 100644 index 0000000000..bd5ee4582f --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/bitbucket-server-integration.md @@ -0,0 +1,46 @@ +--- +description: Atlassian Bitbucket Server Integration +--- + +# Bitbucket Server + +Learn to install and use the Bitbucket Server Integration below. + +{% hint style="success" %} +This app can also work in a fully air-gapped environment. If you are an Enterprise customer running an air-gapped workspace, follow the [air-gapped-app-installation.md](../../../../setup-and-configure/rocket.chat-air-gapped-deployment/air-gapped-app-installation.md "mention") guide and then follow the configuration instructions below. +{% endhint %} + +## Installation + +You can install our Bitbucket Server Integration Rocket.Chat App from your Rocket.Chat Administration area. + +* Go to **Administration > Workspace > Marketplace** +* Search for the **Bitbucket Server Integration** and click on the item +* Click on the **Install** button +* Click on **Activate** + +Now that you have the app installed in your server, it is time to configure the integration with your Bitbucket instance. + +## Configuration + +In order to enable notifications, you have to connect a channel or private group to one or more Bitbucket repositories; To connect the channel or private group, access it and execute the slashcommand `/bitbucket-server connect REPO_URL`, where: + +* **REPO\_URL**: is the url of the repository you want to connect to, e.g. `http://example.com:7990/bitbucket/projects/PROJECT_1/repos/repo1/browse`. + +You will receive an ephemeral message with further instructions on how to add a Webhook to your Bitbucket repository. + +![Example of the ephemeral message](<../../../../.gitbook/assets/image1 (1).png>) + +Now go to your Bitbucket repository and [create a new Webhook](https://confluence.atlassian.com/bitbucketserver/managing-webhooks-in-bitbucket-server-938025878.html). In the URL field, paste the URL that was generated for you in the ephemeral message (e.g., `https://example.com:3000/api/apps/private/d98e7da9-2398-4bd1-a596-d5cac28468bd/zC5r4DxBQSTHfrhLg/webhook?repoId=aHR0cDovL2xcY2FsaG9zdDo30TkwL2Jpd6J1Y2t1dHxQUk9KRUNUXzF8cmVwzE=`) + +![Example of Webhook creation](<../../../../.gitbook/assets/image2 (1).png>) + +After that Bitbucket will send notifications on some events to the connected channel or private room. + +> **Note**: Only some of the available events are interpreted by the Rocket.Chat App. Those are **Repository Push, Pull Request Opened, Approved, Merged** and **Declined**. Any webhook sent to Rocket.Chat from other events will not result in any kind of notification being sent. + +![Example of chosen events](<../../../../.gitbook/assets/image3 (1).png>) + +### Tips + +* If you want to connect the same repository to another channel or private group, simply repeat the process on them, using the same repository URL; diff --git a/guides/app-guides/atlassian/confluence-server-integration.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/confluence-server-integration.md similarity index 82% rename from guides/app-guides/atlassian/confluence-server-integration.md rename to extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/confluence-server-integration.md index d7951289f8..71a8c7fe00 100644 --- a/guides/app-guides/atlassian/confluence-server-integration.md +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/confluence-server-integration.md @@ -4,11 +4,15 @@ description: Atlassian Confluence Server Integration # Confluence Server +{% hint style="success" %} +This app can also work in a fully air-gapped environment. If you are an Enterprise customer running an air-gapped workspace, follow the [air-gapped-app-installation.md](../../../../setup-and-configure/rocket.chat-air-gapped-deployment/air-gapped-app-installation.md "mention") guide and then follow the configuration instructions below. +{% endhint %} + ## Installation You can install our Confluence Server Integration Rocket.Chat App from your Rocket.Chat Administration area. -* Go to **Administration** > **Marketplace** +* Go to **Administration** > **Marketplace** * Search for the **Confluence Server Integration** and click on the item * Click on the **Install** button * Click on **Activate** @@ -21,7 +25,7 @@ First, make sure you have the [Rocket.Chat for Confluence](https://marketplace.a Go to any channel or private-group and execute the slashcommand `/confluence-server install CONFLUENCE_BASE_URL USER PASSWORD`, where: -* **CONFLUENCE\_BASE\_URL** is the base URL of your Confluence server. You can see this information in **Confluence administration** > **General Configuration**; +* **CONFLUENCE\_BASE\_URL** is the base URL of your Confluence server. You can see this information in **Confluence administration** > **General Configuration**; * **USER** is the username of a user in your Confluence; * **PASSWORD** is the password of the user mentioned above; @@ -36,4 +40,3 @@ In order to enable notifications, you have to connect a channel or private group To connect a channel or private group to a Confluence Space execute the slashcommand `/confluence-server connect`. You will receive an ephemeral message with the available spaces. Choose one or more from the list and click on the Connect button. You can connect as many Spaces as you want to a channel or private group; similarly, a Space can be connected to as many channels or private groups as you want. - diff --git a/guides/app-guides/atlassian/jira-server-integration.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/jira-server-integration.md similarity index 83% rename from guides/app-guides/atlassian/jira-server-integration.md rename to extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/jira-server-integration.md index 7bb76e8c90..1a874e87f0 100644 --- a/guides/app-guides/atlassian/jira-server-integration.md +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/jira-server-integration.md @@ -4,13 +4,17 @@ description: Atlassian Jira Server Integration # Jira Server +{% hint style="success" %} +This app can also work in a fully air-gapped environment. If you are an Enterprise customer running an air-gapped workspace, follow the [air-gapped-app-installation.md](../../../../setup-and-configure/rocket.chat-air-gapped-deployment/air-gapped-app-installation.md "mention") guide and then follow the configuration instructions below. +{% endhint %} + Here you will find how to install and use the Jira Server Integration. ## Installation You can install our Jira Server Integration Rocket.Chat App from your Rocket.Chat Administration area. -* Go to **Administration > Marketplace** +* Go to **Administration > Marketplace** * Search for the **Jira Server Integration** and click on the item * Click on the **Install** button * Click on **Activate** @@ -34,4 +38,3 @@ In order to enable notifications, you have to connect a channel or private group To connect a channel or private group, execute the slashcommand `/jira-server connect`. You will receive an ephemeral message containing the list of projects in your Jira that are available for you to connect to. Now for every project you want to connect, you can run the slashcommand `/jira-server connect PROJECT_KEY`. A channel or private group can be connected to as many Jira Projects as you want; similarly, a Jira Project can be connected to as many channels or private groups as you want; - diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/jira-server-v2.0.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/jira-server-v2.0.md new file mode 100644 index 0000000000..ffa33f70ce --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/jira-server-v2.0.md @@ -0,0 +1,77 @@ +--- +description: How to install and configure your Jira Server integration with Rocket.Chat +--- + +# Jira Server v2.0 + +{% hint style="success" %} +This app can also work in a fully air-gapped environment. If you are an Enterprise customer running an air-gapped workspace, follow the [air-gapped-app-installation.md](../../../../setup-and-configure/rocket.chat-air-gapped-deployment/air-gapped-app-installation.md "mention") guide and then follow the configuration instructions below. +{% endhint %} + +## Features + +This app lets you connect your channels or private groups to different projects from different Jira Servers. + +The following notifications are supported: + +* Project created +* Project deleted +* Issue created +* Issue transitioned +* Issue updated + +## Installation + +{% hint style="warning" %} +**Migrating from version 1.x:** Please note that this is a _major_ version update, which means it includes breaking changes. You _will need_ to configure your connections again after the update. +{% endhint %} + +You can install our Jira Server Integration Rocket.Chat App from your Rocket.Chat Administration area. + +* Go to **Administration > Workspace > Marketplace** +* Search for the **Jira Server Integration** and click on the item +* Click on the **Install** button +* Click on **Activate** + +Now that you have the app installed in your server, it is time to configure the integration with your Jira instance. + +## Configuration + +Go to any channel or private group and execute the slashcommand `/jira-server`. You will be prompted with the _Room Preferences_ dialog\_:\_ + +![Room Preferences dialog](<../../../../.gitbook/assets/image (5) (1).png>) + +Here you can connect your channel or private group to different Jira Servers. The server list is currently empty as this is a fresh install, so let's connect to a new Jira Server + +### Connecting to Jira Servers + +To add a new Jira Server connection from the _Room Preferences_ dialog, click on the "Connect to another Jira Server" button. You will be prompted with a form to fill in the details for the connection: + +![New Jira Server form](<../../../../.gitbook/assets/image (7) (1).png>) + +> **Note**: We advise against using your own Jira user in the installation process. That is because the Rocket.Chat App has to persist the credentials to be able to search for projects and issues later on. We recommend creating a new user with administrative privileges. After the installation process, you can revoke those privileges from the user. + +After successfully connecting to the server (the app will let you know if anything goes wrong), just select the new server from the list to integrate it with your channel/private group. + +![Select the new server to integrate with it](<../../../../.gitbook/assets/image (8).png>) + +Hit "Save" and you're good to go! + +Now we have to subscribe your channel to specific projects, so it starts receiving notifications from Jira. + +### Subscribing to Jira Projects + +Go to the channel/private group that you want to receive notifications on and run the Jira slash command `/jira-server`. You will be prompted with the _Room Integration_ dialog: + +![Room Integration dialog](<../../../../.gitbook/assets/image (12).png>) + +You can click the "Subscribe" button to subscribe to any project you wish. + +### Managing your Integration + +If you want to manage your channel/private group integration, you can use the menu in the _Room Integration_ dialog to do so: + +![Room Integration dialog menu](<../../../../.gitbook/assets/image (14) (2).png>) + +* **Manage Connections** - Takes you to the [_Room Preferences_ dialog above](jira-server-v2.0.md#configuration). From there you can manage to which servers your channel/private group is connected, add new servers, etc. +* **Reset Connections** - Will reset all connected servers and projects from this room. Use this if you no longer want to receive notifications on your channel/private group. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/data-loss-prevention-dlp-app.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/data-loss-prevention-dlp-app.md new file mode 100644 index 0000000000..ae524f6c8c --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/data-loss-prevention-dlp-app.md @@ -0,0 +1,62 @@ +# Data Loss Prevention (DLP) App + +
+ +Data loss prevention (DLP), in its simplest terms, is a security mechanism that helps to ensure that sensitive data is not unduly shared, misused, lost, or accessed by unauthorized users. + +{% hint style="info" %} +The Data Loss Prevention App is free to use for [Enterprise ](../../../use-rocket.chat/workspace-administration/settings/enterprise.md)workspaces. + +The App works best with the most recent version of Rocket.Chat. +{% endhint %} + +{% hint style="success" %} +This app can also work in a fully air-gapped environment. If you are an Enterprise customer running an air-gapped workspace, follow the [air-gapped-app-installation.md](../../../setup-and-configure/rocket.chat-air-gapped-deployment/air-gapped-app-installation.md "mention") guide and then follow the configuration instructions below. +{% endhint %} + +## Installing the Data Loss Prevention App + +To install the Data Loss Prevention App, + +* Open up your Rocket.Chat workspace +* Navigate to **Administration** > **Workspace** > **Apps** +* Search for Data Loss Prevention +* Click and open the result, this shows you details about the app +* Hit **Install** to install the app + +This successfully installs the app and you can now configure the settings as needed. + +## Configuring the Data Loss Prevention App + +After installing the app, you need to configure the rule set for its functionality. + +That can be done by: + +* Open the DLP app details page +* Switch to the **Settings** tab +* Configure the following settings as needed + +### Settings + +* **Rules for Blacklisting message**: Takes in an array of regular expressions defining the rules. Add each Regular Expression on a new line. +* **Moderator Channel**: Specify the channel to which all blacklisted messages will be forwarded to. From there, the [Channel Moderators](../../../setup-and-administer-rocket.chat/roles-in-rocket.chat/#rocket.chat-user-roles) can either `Approve` or `Reject` the message. e.g `general` +* **Content control type**: Set channels you would like to monitor or not monitor. + * Channels: Comma-separated list of channels where you wish to apply the **Content control type** rule. +* **Censor only Sensitive Information**: If enabled, only the sensitive information will be replaced by ###### (multiple hashtags) +* **Custom Blacklisted Message title**: Set the title of a temporal message replacing a blacklisted message. +* **Custom Pending approval message**: This message will be shown in place of the blacklisted message in a room until the blacklisted message gets approved. Will be shown if the user clicks on the **More info** button under the blacklisted message in a room until the blacklisted message gets approved +* **Custom Rejected Message**: This message will be shown in place of the blacklisted message in a room when a moderator rejects a blacklisted message. + +{% hint style="info" %} +* Through DLP features, admins can create a list of regular expressions to be monitored in Rocket.Chat and it can be applied to any conversation. +* Once a regular expression is detected, it appears blurred in the room where it was originally written. The original message then is forwarded to a predefined channel for auditing flow, where a moderator can approve or reject its content. Rooms can have more than one moderator. +* It’s also possible to select the rooms to apply the DLP app. If you have channels on your workspace where sensitive information is frequently shared or where data leak is more likely to happen, e.g `the finance team channel,`you can place a restriction on this specific channel. +{% endhint %} + +* **Save changes** to commit. + +The Data Loss Prevention App is ready and functional on your workspace. + +{% content-ref url="../../../use-rocket.chat/user-guides/security-bundle/data-loss-prevention-user-guide.md" %} +[data-loss-prevention-user-guide.md](../../../use-rocket.chat/user-guides/security-bundle/data-loss-prevention-user-guide.md) +{% endcontent-ref %} diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/github-app/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/github-app/README.md new file mode 100644 index 0000000000..a52c0a6366 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/github-app/README.md @@ -0,0 +1,40 @@ +# GitHub App + +The Rocket.Chat GitHub App enhances the collaboration between developers by seamlessly integrating GitHub and Rocket.Chat. This app enables users to perform various tasks, such as searching and sharing Issues and Pull **** Requests, subscribing to Repository events, creating new Issues, reviewing and merging Pull Requests, and more, directly from the Rocket.Chat workspace. + +## Install Github App + +To install the GitHub App, + +* Navigate to **Administration > Workspace > Apps.** +* Search for the **GitHub** app. +* Click **Install** +* **Agree** to the permissions to confirm the installation. +* On the **GitHub App Info** screen, navigate to **Details > API and** copy the `GET github-app-callback` URL. + +## Create the GitHub OAuth App + +GitHub OAuth Apps allow users of the Rocket.Chat GitHub app to easily authenticate with their GitHub accounts. The OAuth app provides access to GitHub data, such as user profiles and repository information, and helps integrate GitHub functionalities. + +To create a GitHub OAuth app, + +* Log in to your GitHub account. +* Click your avatar from the menu bar. +* Select **Settings** and navigate to **Developer settings** > **OAuth Apps.** +* Click **New OAuth App** to create a new app. +* Fill in the required information. + * **Application name**: Set the application name. + * **Homepage URL**: Fill in the URL of your workspace. + * **Application description**: Add a description of the app. + * **Authorization callback URL**: Paste the `GET github-app-callback` URL you copied from the GitHub App. +* Click **Register Application**. +* After registering the app, click **Generate a new client secret** to create a new client secret for the app. +* Copy the **Client ID** and the newly created **Client secret.** You'll need them to configure the Rocket.Chat GitHub app. + +## Configure GitHub App + +To configure the GitHub App, + +* On the **GitHub App Info** screen, navigate to **Settings.** +* Fill in the `github-app-oauth-client-id` and `github-app-oauth-client-secret` with values, you copied from the GitHub OAuth app. +* Click **Save changes.** diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/github-app/using-github-app.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/github-app/using-github-app.md new file mode 100644 index 0000000000..9a003780de --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/github-app/using-github-app.md @@ -0,0 +1,126 @@ +# Using GitHub App + +After installing the GitHub app, users in your workspace can start using it. Interaction with the GitHub app is achieved using slash commands. + +{% hint style="success" %} +The `/github` slash command is used to initiate actions with the GitHub app. To run any Github command, a user is required to authenticate first, using `/github login`. +{% endhint %} + +* `/github` : Shows the GitHub App help +* `/github login`: Log in to the GitHub app using GitHub OAuth +* `/github logout:` Logs a user out +* `/github me`: Shows the user's GitHub profile and issues +* `/github search`: Searches for an issue and a pull request +* `/github issue:` Adds a new issue to a GitHub repository +* `/github issues`: Assign and share issues +* `/github subscribe`: View/Add/Delete/Update repository subscriptions +* `/github /`: Shows an interactive interface to fetch repository data +* `/github / repo`: Get the details of a repository +* `/github / issues`: List out the issues in a repository +* `/github / contributors`: Get a list of contributors a repository has +* `/github / pulls`: Get Recent Pull Requests of a Repository +* `/github / pulls `: Review a pull request +* `/github / subscribe`: Subscribe to all events of a repository +* `/github / unsubscribe`: Unsubscribe from all events of a repository + +## GitHub App Authentication + +### Login + +When the slash command `/github login` is sent, + +* You receive a message from the `github.bot` with a **GitHub login** button +* Click the button to authenticate with your GitHub account. +* A message is received on successful authentication + +### Logout + +To log out, + +* Type the slash command `/github logout` +* This removes the current unauthenticated user. + +## GitHub App Functions + +### `/github me` + +It returns your profile details with issues assigned to you. + +* Click **Issues** to see a list of issues assigned to you. +* Click on **Share Profile** to select and share your profile details within a chat. + +### `/github search` + +It lets you search for issues or pull requests in a specified repository. + +* Specify the search parameters and **Search.** + +### `/github issue` + +Create a new issue in a GitHub repository. + +* Enter the **Full Repository Name** you wish to create the issue in, and click **Next** +* Fill in the issue details and **Create Issue.** +* The issue gets created, and a link to it provided. + +### `/github subscribe` + +It allows you to manage subscriptions on repositories. When you subscribe to a repository event, you receive a message within the Rocket.Chat room from which each event gets triggered. + +* Click **Add Subscriptions** to add a new subscription + * Specify the repository, the events to subscribe to, and **Subscribe.** + * You get a message confirming the subscription. +* Click **Delete Subscriptions** to delete existing subscriptions. + * Select the subscription and **Unsubscribe.** + * You receive a message about the unsubscription. +* Click **Refresh** to refresh the list of subscriptions. + +### `/github /` + +To retrieve information about a repository, + +* Click **Overview** to see the repository overview. +* Click **Issues** to get all the repository issues. +* Click **Contributors** to get a list of all the top contributors. +* Click **Pull Requests** to see the open pull requests. + +## GitHub App Repository Actions + +### `/github / repo` + +* Returns a detailed overview of a repository. + +### `/github / issues` + +To return a list of issues open on a current repository. + +* Click on any to open the issue in a new tab. + +### `/github / contributors` + +To return a list of contributors under a repository. + +* Click on a user to open their GitHub profile on a new tab. + +### `/github / pulls` + +To return a list of open pull requests on a repository. + +* Click on a PR to open it in a new tab. + +### `/github / pulls ` + +To review a specific pull request using its PR number, + +* Click **View Changes** to see the changes made by that pull request +* **View File** lets you see the file(s) that have been affected by the pull request.. +* Click on **Comments** to view the comments under the PR where you **Add Comment.** +* Click on **Merge** to specify the merge request detail and **Merge** the PR. + +### `/github / subscribe` + +* Subscribe to all the events of a repository and receive messages in that channel when the event gets triggered. + +### `/github / unsubscribe` + +* Unsubscribe from all events of a repository. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/google-calendar/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/google-calendar/README.md new file mode 100644 index 0000000000..2d26496707 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/google-calendar/README.md @@ -0,0 +1,83 @@ +# Google Calendar + +{% hint style="danger" %} +**The Google Calendar app is currently in Beta and some features may not function as expected.** +{% endhint %} + +The Rocket.Chat Google Calendar App connects your Google Calendar with Rocket.Chat to stay organized and get a daily rundown of your events. It gives users the ability to do the following : + +* Manage meeting invites. +* See a list of events you have scheduled for the day. +* Receive daily reminders on the events of the day. + +## Setup Google Calendar App + +### Prerequisites + +Before setting up the Google Calendar App, here are some essential things to note. + +* Your workspace must be on a publicly available domain. +* A [Google Cloud project](https://console.cloud.google.com/) is required to obtain the [Oauth2 credentials](https://support.google.com/googleapi/answer/6158849?hl=en). + +### Installing Google Calendar App + +To install the Google Calendar Rocket.Chat App, + +* Go to **Administration > Apps > Marketplace.** +* Search for the **Google Calendar** app and select it. +* Click **Install** and **Agree** to accept the required permissions. +* On the **Google Calendar App Info** screen, navigate to **Details > APIs** and copy the `GET google-calendar-app-callback` URL. You need it to create the OAuth Client Id. +* After installing, you receive a direct message from the `google-calendar .bot` with instructions on how to configure the app. +* Run the slash command `/google-calendar setup` in the message box to view setup instructions. + +{% hint style="info" %} +You can find the callback URL for your workspace from the instructions. +{% endhint %} + +### Getting Google Cloud Client Credentials + +* Go to the [Google Cloud console](https://console.cloud.google.com/) and [create a new project](https://support.google.com/googleapi/answer/6158849?hl=en) or select an existing one. +* From the sidebar, Navigate to **API & Services** > **OAuth consent screen** and fill in the required fields to **Create** a consent screen. +* Navigate to **Credentials,** Click **New Credentials**, then select **OAuth client ID**. +* Select **Web application** as the application type, then fill in the required details. Add the `redirect_uri` given by the `google-calendar.bot` . Click **Create.** +* Copy the `client secret` and `client id`. You need them to configure the app. + +To enable Google Calendar API on your project, + +* From the sidebar, Navigate to **Library.** +* Search for **Google Calendar API,** select and **Enable** it. + +## Configure the Google Calendar App + +* On the **Google Calendar App Info** screen, navigate to **Settings.** +* Paste the `client secret` and `client id` from the Google Cloud console. Click **Save changes.** +* Type the slash command `/google-calendar help` to give you a list of commands you can use with the google calendar app. + + * **/google-calendar help:** Shows the list of slash commands. + * **/google-calendar setup:** Shows the steps to set up. + * **/google-calendar connect:** Starts the process to link your Google Account. + * **/google-calendar disconnect:** Removes your linked Google Account. + * **/google-calendar settings:** Opens a contextual bar to manage your Google Calendar settings. + * **/google-calendar events:** Returns all events in the calendar for today. + + + +## Authorize and Connect with Google Calendar App + +After the workspace administrator has [installed and configured](./#setup-google-calendar-app) the Google Calendar App, users can connect their Google accounts and access the Google Calendar app features. Users can request for the Google Calendar app at **Administration > Apps > Marketplace.** + +To see if the Google Calendar App is installed on your workspace, type the slash command `/google-calendar`and watch out for any related information. + +To connect your Google account: + +* Type the slash command `/google-calendar auth.` +* You receive a message from the `google-calendar.bot`. Click **Authorize** to authorize your account. +* Select the Google account you want to authorize, and click **Allow** for all the account permission. +* After a successful connection, the `google-calendar.bot` message notifies you of a completed authentication. + +With your account linked, you can now change the settings, list your events, and get notifications on meeting hours. + +{% hint style="info" %} +You may be required to re-authenticate periodically whenever the authentication token expires. +{% endhint %} + diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/google-calendar/google-calendar-app-settings-and-events.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/google-calendar/google-calendar-app-settings-and-events.md new file mode 100644 index 0000000000..bd6d0839e5 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/google-calendar/google-calendar-app-settings-and-events.md @@ -0,0 +1,23 @@ +# Using the Google Calendar App + +When the Google Calendar App is installed, you can perform various actions, including changing your app settings, listing your events, and receiving notifications on meeting hours. + +## Google Calendar App Settings + +To change the functionality of the Google Calendar app for your account, + +* Type in the slash command `/google-calendar settings`. It opens up the **Google Calendar Settings** bar. +* Now you can perform any of the following actions: + * **Notifications**: _**Activate**_ or _**Remove**_ the ability to receive meeting notifications. If you activate notifications, you receive an event message reminder 10 minutes before the event's scheduled time. + * **Daily summary**: This lets you set when to get a daily event overview. You receive a message summarizing all your events for the day. + * **OAuth Authentication**: _**Authorize**_** ** or _**Revoke**_ your connected Google account. + +## Google Calendar App List Events + +To see the list of events on your calendar for the day, + +* Run the slash command `/google-calendar events.`A list of all the events scheduled for the day is displayed. + * An event has details, including the title, date, and time. Clicking on an event title takes you to the Google Calendar page showing its details. + * You can see the status of your availability for meetings you are invited to. + * Use these quick action buttons to respond to meeting invites: `Accept`, `Decline`, and `Maybe`. + * Click on **Join** to join an event you got invited to. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/google-drive/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/google-drive/README.md new file mode 100644 index 0000000000..916f7563c2 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/google-drive/README.md @@ -0,0 +1,82 @@ +# Google Drive + +{% hint style="danger" %} +**The Google Drive app is currently in Beta, and some features may not function as expected.** +{% endhint %} + +The Rocket.Chat Google Drive App brings a seamless Google Drive experience into your Rocket.Chat workspace. It gives users the ability to: + +* Open and view your Google Drive files and their details. +* Share files and manage sharing permissions. +* Create new files directly from Rocket.Chat. + +## Setup the Google Drive App + +### Prerequisites + +Before setting up the Google Drive App, here are some essential things to note. + +* Your workspace must be on a publicly available domain. +* A [Google Cloud project](https://console.cloud.google.com/) is required to obtain the [Oauth2 credentials](https://support.google.com/googleapi/answer/6158849?hl=en). + +### Installing Google Drive App + +To install the Google Drive Rocket.Chat App, + +* Go to **Administration > Apps > Marketplace.** +* Search for the **Google Drive** app and select it. +* Click **Install** and **Agree** to accept the required permissions. +* On the **Google Drive App Info** screen, navigate to **Details > APIs** and copy the `GET google-drive-app-callback` URL. +* After installing, you receive a direct message from the `google-drive.bot` with instructions on how to get started. Click **Setup** to view the instructions. + +{% hint style="info" %} +You can find the callback URL for your workspace from the instructions. +{% endhint %} + +### Getting Google Cloud Client Credentials + +* Go to the [Google Cloud console](https://console.cloud.google.com/) and [create a new project](https://support.google.com/googleapi/answer/6158849?hl=en) or select an existing one. +* From the sidebar, Navigate to **API & Services** > **OAuth consent screen** and fill in the required fields to **Create** a consent screen. +* Navigate to **Credentials,** Click **New Credentials**, then select **OAuth client ID**. +* Select **Web application** as the application type, then fill in the required details. Add the `redirect_uri` given by the `google-drive.bot` . Click **Create.** +* Copy the `client secret` and `client id`. You need them to configure the app. + +To enable Google DriveAPI on your project, + +* From the sidebar, Navigate to **Library.** +* Search for **Google Drive API,** select and **Enable** it. + +### Configure Rocket.Chat Google Drive App + +* On the **Google Drive App Info** screen, navigate to **Settings.** +* Paste the `client secret` and `client id` from the Google Cloud console. Click **Save changes.** +* Go to a [room](../../../../use-rocket.chat/user-guides/rooms/) on your workspace, and type the slash command `/google-drive help` to return a list of commands you can use with the Google Drive app. + * **/google-drive help:** shows the help list. + * **/google-drive connect:** starts the process to link your Google Account. + * **/google-drive disconnect:** remove your linked Google Account. + * **/google-drive create:** creates a new Google File and saves it on your Google Drive. + * **/google-drive files:** opens the contextual bar with your Google Drive files list. +* After installation, users can access the Google Drive app using the slash command. They can click the **Kebab menu** in the room header and select **Google Drive**. + +{% hint style="warning" %} +Your Rocket.Chat workspace must be running from at least version `5.1.0` for users to access the Google Drive app from the room header. For workspaces below this version, only admins have access. +{% endhint %} + +## Authorize and Connect with Google Drive App + +After the workspace administrator has [installed and configured](./#setup-the-google-drive-app) the Google Drive App, users can connect their Google accounts and access the files in their Drive. Users can request for the Google Drive app at **Administration > Apps > Marketplace.** + +To see if the Google Drive App is installed on your workspace, type the slash command `/google-drive` and watch out for any related information. + +To connect your Google account, + +* Type the slash command `/google-drive connect.` +* You receive a message from the `google-drive.bot`.Click **Authorize** to authorize your account. +* Select the Google account you want to authorize, and click **Allow** for all the account permissions. +* After a successful connection, the `google-drive.bot` message notifies you of a completed authentication. + +With your account linked, you can now [view](google-drive-app-file-actions.md#list-google-drive-files), [create](google-drive-app-file-actions.md#create-a-new-google-drive-file) and [share files](google-drive-app-file-actions.md#share-google-drive-file) directly from Rocket.Chat. + +{% hint style="info" %} +You may be required to re-authenticate periodically whenever the authentication token expires. +{% endhint %} diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/google-drive/google-drive-app-file-actions.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/google-drive/google-drive-app-file-actions.md new file mode 100644 index 0000000000..d111f89d54 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/google-drive/google-drive-app-file-actions.md @@ -0,0 +1,80 @@ +# Using the Google Drive App + +When the Google Drive App is installed, you can perform various actions, including creating files, sharing files, editing file permissions, etc. + +## List Google Drive Files + +To see a list of files on your connected Google Drive account, open **Google Drive** from the room kebab menu or use the slash command `/google-drive files`. + +* A list of all the files in your Drive is displayed, including those you created and shared with you. These files are listed with their respective `file name`, `file type, Last modified date` and `Owner.` +* You can search for a specific file using the search bar. +* You can filter the type of files displayed by selecting the file type. +* The list of files can be sorted in ascending or descending manner. + +## Create a New Google Drive File + +To create a new file on your connected Google Drive account, open **Google Drive** from the room kebab menu and click **+New** or use the slash command `/google-drive create`. + +* Fill in the **File name,** select the **File type,** and click **Create.** +* The `google-drive.bot` sends you a message with a link to the new file you just created + +## Open Google Drive Files + +Before sharing a file, you can open it to view and verify its content. + +To open a file in the browser, + +* From the list of files, click the **Kebab menu** across the file, and select **Open in browser.** It opens the file on your browser's tab. + +## Share Google Drive File + +You can share files in your Google Drive within any[ room](../../../../use-rocket.chat/user-guides/rooms/#types-of-rooms-in-rocket.chat) in your workspace. + +To share a file, + +* From the list of files, click the **Kebab menu** across the file, and **Share in room.** This shares a link to the file in that room. + +{% hint style="info" %} +Clicking on **Details and sharing** opens up a modal to edit the [sharing permissions](google-drive-app-file-actions.md#file-permissions) of the file. +{% endhint %} + +## View File Information + +To view file details, + +* From the list of files, click the **Kebab menu** across the file, and select **File Information.** This shares a link to the file in that room. +* It returns the following details of the file: + * **File name:** The name of the file + * **Manage Access**: Where to set the [file-sharing permissions](google-drive-app-file-actions.md#file-permissions). + * **Type**: The file type. + * **Size**: The size occupied by the file in Google Drive. + * **Location**: The location of the file in Drive. + * **Owner(s)**: List of people owning the file. + * **Modified**: The last modified date of the file. + * **Created**: When the file was created. + +### File Permissions + +Managing file permissions allows you to restrict the action anyone can perform on a file. A file's permission can be set when [sharing the file](google-drive-app-file-actions.md#share-google-drive-file) or viewing the [File information](google-drive-app-file-actions.md#view-file-information). + +* The various permissions you can set to a file include the following: + * **Share to room members and allow them to view**: Restricts viewing of the file only by the member(s) of the room. + * **Share to room members and allow them to comment**: All room members can view and comment on the file. + * **Share to room members and allow them to edit**: Gives edit access to the member(s) of the room. + * **Share to anyone at Organization and allow them to view**: Allows anyone in your organization to view the file. + * **Share to anyone at Organization and allow them to comment**: Allows anyone in your organization to view and comment on the file. + * **Share to anyone at Organization and allow them to edit**: Allows anyone in the organization to edit the file. + * **Share to anyone with the link and allow them to view**: Allows anyone having the link to view the file. + * **Share to anyone with the link and allow them to comment**: Allows anyone having the link to comment on the file. + * **Share to anyone with the link and allow them to edit**: Allows anyone having the link to edit the file. + +## Delete Google Drive File + +{% hint style="info" %} +You can only delete files you created. +{% endhint %} + +To delete a file, + +* From the list of files, click the **Kebab menu** across the file you want to delete. +* Select **Delete file,** then **** click **Delete forever.** diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/README.md new file mode 100644 index 0000000000..925d09f95e --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/README.md @@ -0,0 +1,50 @@ +# Omnichannel Apps + +Omnichannel apps give consumers a choice to engage with you on their favorite channels like: + +* SMS +* Email +* Voice +* WhatsApp +* Telegram +* Facebook Messenger + +{% hint style="success" %} +**You must have the** [**Omnichannel feature**](https://docs.rocket.chat/guides/administration/settings/omnichannel-admins-guide#enable-omnichannel) **enabled as well as have** [**agents**](https://docs.rocket.chat/guides/omnichannel/agents) **and** [**managers**](https://docs.rocket.chat/guides/omnichannel/managers) **assigned in order to receive and send Omnichannel messages.** +{% endhint %} + +{% content-ref url="sms.md" %} +[sms.md](sms.md) +{% endcontent-ref %} + +{% content-ref url="telegram-app/" %} +[telegram-app](telegram-app/) +{% endcontent-ref %} + +{% content-ref url="rasa-app/" %} +[rasa-app](rasa-app/) +{% endcontent-ref %} + +{% content-ref url="salesforce-crm-integration/" %} +[salesforce-crm-integration](salesforce-crm-integration/) +{% endcontent-ref %} + +{% content-ref url="dialogflow-app/" %} +[dialogflow-app](dialogflow-app/) +{% endcontent-ref %} + +{% content-ref url="twitter-app/" %} +[twitter-app](twitter-app/) +{% endcontent-ref %} + +{% content-ref url="facebook-app/" %} +[facebook-app](facebook-app/) +{% endcontent-ref %} + +{% content-ref url="whatsapp/" %} +[whatsapp](whatsapp/) +{% endcontent-ref %} + +{% content-ref url="instagram-direct/" %} +[instagram-direct](instagram-direct/) +{% endcontent-ref %} diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/README.md new file mode 100644 index 0000000000..b2bac163cd --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/README.md @@ -0,0 +1,36 @@ +--- +description: >- + Dialogflow lets you easily add like-life conversational AI to your websites, + applications, messaging platforms, and contact center with intuitive, advanced + virtual agents. +--- + +# Dialogflow App + +Using Rocket.Chat and the Dialogflow Chatbot platform integration, you can set up and train your chatbot to respond to any query it's been trained for and configure it to act as an Omnichannel agent. + +{% hint style="warning" %} +**You must have the** [**Omnichannel feature**](https://docs.rocket.chat/guides/administration/settings/omnichannel-admins-guide#enable-omnichannel) **enabled as well as have** [**agents**](https://docs.rocket.chat/guides/omnichannel/agents) **and** [**managers**](https://docs.rocket.chat/guides/omnichannel/managers) **assigned in order to receive and send Omnichannel messages.** +{% endhint %} + +Please follow this [guide](https://cloud.google.com/dialogflow/es/docs/quick/setup) to find all required setup steps to start using Dialogflow. + +{% content-ref url="dialogflow-app-installation.md" %} +[dialogflow-app-installation.md](dialogflow-app-installation.md) +{% endcontent-ref %} + +{% content-ref url="dialogflow-app-configuration/" %} +[dialogflow-app-configuration](dialogflow-app-configuration/) +{% endcontent-ref %} + +{% content-ref url="dialogflow-app-configuration/bot-user-configuration.md" %} +[bot-user-configuration.md](dialogflow-app-configuration/bot-user-configuration.md) +{% endcontent-ref %} + +{% content-ref url="dialogflow-app-configuration/upload-file-to-ongoing-dialogflow-chats.md" %} +[upload-file-to-ongoing-dialogflow-chats.md](dialogflow-app-configuration/upload-file-to-ongoing-dialogflow-chats.md) +{% endcontent-ref %} + +{% content-ref url="dialogflow-app-configuration/delete-dialogflow-app.md" %} +[delete-dialogflow-app.md](dialogflow-app-configuration/delete-dialogflow-app.md) +{% endcontent-ref %} diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/README.md new file mode 100644 index 0000000000..7905e3f224 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/README.md @@ -0,0 +1,35 @@ +# Dialogflow App Configuration + +Search Dialogflow in the **Apps** menu on your Rocket.Chat administration panel, as shown below: + +![](<../../../../../../.gitbook/assets/image (460).png>) + +Click open your Dialogflow app to see the settings available to you as an administrator under the **Settings** tab. + +Following are the settings available: + +1. Set the[ name of the bot you have already configured](https://docs.rocket.chat/guides/apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/bot-user-configuration) in **Bot Username**. This is the user who will assist the conversations through Dialogflow integration. + +![](<../../../../../../.gitbook/assets/image (455).png>) + +2\. **Project Id**, **Environment** (The [environment](https://cloud.google.com/dialogflow/es/docs/agents-versions) on which the bot is set up), **Client Email**, **Private Key** are the credentials available inside your dialog flow instance, and **Language** lets you choose the language in which you'd be interacting with the Bot. + +![](<../../../../../../.gitbook/assets/2022-01-15\_19-13-30 (1) (1) (1) (1) (1) (1) (3).png>) + +3\. Suppose the Omnichannel end-user asks something that the bot is not trained to answer and fails. **Fallback Responses Limit** defines how many failures of the conversation should be forwarded to a human agent. + +4\. Upon bot-to-live agent handover, the visitor is transferred to **Target Department for Handover.** + +5\. The Bot sends a **Handover Message** to the visitor upon handover. + +6\. The Bot sends **Service Unavailable Message** to Visitor if service is unavailable. + +7\. The **Close Chat Message** is sent automatically when a chat is closed. + +8\. If **Hide Quick Replies** is enabled, then all quick-replies will hide when a visitor clicks on any one of them. + +9\. Hit **Save.** + +![](<../../../../../../.gitbook/assets/2021-12-12\_18-46-48 copy.png>) + +Dialogflow app is successfully configured. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/bot-user-configuration.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/bot-user-configuration.md new file mode 100644 index 0000000000..7d6d7bcec3 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/bot-user-configuration.md @@ -0,0 +1,15 @@ +# Bot User Configuration + +To configure a bot user: + +1. Go to **Administration>Users** and search your bot agent + +![](<../../../../../../.gitbook/assets/image (461).png>) + +2\. Click it open and hit **Edit** + +![](<../../../../../../.gitbook/assets/image (462).png>) + +3\. Make sure the _Bot_ and _Live Chat Agent_ role is assigned to this user. + +![](<../../../../../../.gitbook/assets/image (463).png>) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/delete-dialogflow-app.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/delete-dialogflow-app.md new file mode 100644 index 0000000000..1ae99ee391 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/delete-dialogflow-app.md @@ -0,0 +1,9 @@ +# Delete Dialogflow App + +To delete the Dialogflow app from your workspace: + +Goto **Administration>Apps>Installed>Dialogflow** + +Hit **Uninstall** + +![](<../../../../../../.gitbook/assets/2022-02-01\_16-57-48 (1).png>) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/upload-file-to-ongoing-dialogflow-chats.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/upload-file-to-ongoing-dialogflow-chats.md new file mode 100644 index 0000000000..55f9804f88 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/upload-file-to-ongoing-dialogflow-chats.md @@ -0,0 +1,13 @@ +# Upload File To Ongoing Dialogflow Chats + +If you have a use-case where you want to upload a file to the ongoing Bot conversation, like a product handbook or purchase invoice, etc, you can use the following guide to achieve this + +#### Pre-requisites: + +* Have a Dialogflow intent with Fulfillment webhook enabled +* A bot user with a Live Chat agent role. More info about this [here](bot-user-configuration.md). + +#### Steps to upload a file + +1. The first step is to get the Dialogflow session Id of the ongoing bot conversation where you want to upload this file. You can get this info from the fulfillment webhook request which Dialogflow will send upon detecting your target intent. [Here's](https://cloud.google.com/dialogflow/es/docs/fulfillment-webhook#webhook\_request) the request payload you'll receive from Dialogflow. Notice the session Id is present within the "session" property of the request. (Note: we only need the "session-id" part of the "session" property & not the entire "session" property) +2. The next step is to use [this](https://developer.rocket.chat/reference/api/rest-api/endpoints/team-collaboration-endpoints/rooms-endpoints/upload-file-to-a-room) endpoint to upload the file to the room. Here you'd need the session Id you get in first step since the session Id is the same as the Room Id on Rocket.Chat. Note, the above endpoint required authentication, so you can use the Login endpoint defined [here](https://developer.rocket.chat/reference/api/rest-api/endpoints/other-important-endpoints/authentication-endpoints/login) to get the authentication tokens for the bot user. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-installation.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-installation.md new file mode 100644 index 0000000000..c7f936a2da --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-installation.md @@ -0,0 +1,11 @@ +# Dialogflow App Installation + +To install Dialogflow App: + +Go to **Administration** > **Workspace** > **Apps**. + +as shown below: + +![](<../../../../../.gitbook/assets/2021-11-20\_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (1).png>) + +Search Dialogflow under the **Marketplace** tab in **Apps** menu on your Rocket.Chat administration panel and install it. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/README.md new file mode 100644 index 0000000000..71f869299f --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/README.md @@ -0,0 +1,28 @@ +--- +description: Omnichannel Integration between Rocket.Chat and Facebook. +--- + +# Facebook App + +Omnichannel Integration between Rocket.Chat and Facebook Messenger. With the Facebook Messenger app, you can handle messages from your Facebook contacts directly in Rocket.Chat. It works simply: your FB customers contact you via Messenger, you answer chats from Rocket.Chat. Some key features of this integration include sending messages with quick reply buttons, welcome messages(starting/closing chat), file sharing, and the correlation between your FB pages and your Rocket.Chat departments. + +{% hint style="warning" %} +**You must have the** [**Omnichannel feature**](https://docs.rocket.chat/guides/administration/settings/omnichannel-admins-guide#enable-omnichannel) **enabled as well as have** [**agents**](https://docs.rocket.chat/guides/omnichannel/agents) **and** [**managers**](https://docs.rocket.chat/guides/omnichannel/managers) **assigned in order to receive and send Omnichannel messages.** +{% endhint %} + +{% content-ref url="facebook-app-installation.md" %} +[facebook-app-installation.md](facebook-app-installation.md) +{% endcontent-ref %} + +{% content-ref url="facebook-app-configuration/" %} +[facebook-app-configuration](facebook-app-configuration/) +{% endcontent-ref %} + +{% content-ref url="facebook-app-configuration/facebook-app-authentication.md" %} +[facebook-app-authentication.md](facebook-app-configuration/facebook-app-authentication.md) +{% endcontent-ref %} + +{% content-ref url="facebook-app-agents-guide.md" %} +[facebook-app-agents-guide.md](facebook-app-agents-guide.md) +{% endcontent-ref %} + diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/facebook-app-agents-guide.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/facebook-app-agents-guide.md new file mode 100644 index 0000000000..e8e2976f92 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/facebook-app-agents-guide.md @@ -0,0 +1,13 @@ +# Facebook App Agent's Guide + +If you have Facebook app integration in place and a user sends you a message on your Facebook business page using their Facebook account, as shown below: + +![](<../../../../../.gitbook/assets/image (549).png>) + +it appears in your Rocket.Chat workspace, just like any other Omnichannel conversation. + +![](<../../../../../.gitbook/assets/image (551).png>) + +Click **Take It!** to serve this conversation. You can also send to and receive files from your Facebook end-user, as shown below: + +![](<../../../../../.gitbook/assets/image (423).png>) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/facebook-app-configuration/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/facebook-app-configuration/README.md new file mode 100644 index 0000000000..08d9b3168a --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/facebook-app-configuration/README.md @@ -0,0 +1,21 @@ +# Facebook App Configuration + +Go to **Administration** > **Workspace** > **Apps**. Go to the **Installed** tab and search _Facebook Messenger._ + +Click open your Facebook app to see the settings available to you as an administrator: + +Following are the settings available: + +![](../../../../../../.gitbook/assets/2022-02-01\_03-05-53.png) + +1\. **Agents Display Name:** You can choose to display the agent's name or username. + +2\. **File Upload Enabled:** You can enable/disable file sharing and also set a limit for maximum upload size. + +3\. And you can select the type of files you wish the Agents and your Facebook Contacts can share under **Accepted Media Types** + +4\. Hit **Save Changes** in the top right corner to save your settings + +Your Facebook app is successfully configured and you can see the new Facebook channel upon closing the administration panel, as shown below: + +![](../../../../../../.gitbook/assets/2021-11-29\_01-14-57.png) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/facebook-app-configuration/delete-facebook-app.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/facebook-app-configuration/delete-facebook-app.md new file mode 100644 index 0000000000..43518b21e1 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/facebook-app-configuration/delete-facebook-app.md @@ -0,0 +1,9 @@ +# Delete Facebook App + +To delete Facebook app from your workspace: + +Goto **Administration>Apps>Installed>Facebook Messenger** + +Hit **Uninstall** + +![](../../../../../../.gitbook/assets/2022-02-01\_16-38-15.png) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/facebook-app-configuration/facebook-app-authentication.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/facebook-app-configuration/facebook-app-authentication.md new file mode 100644 index 0000000000..170aa1e38a --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/facebook-app-configuration/facebook-app-authentication.md @@ -0,0 +1,88 @@ +--- +description: >- + Authorize Omni-Gateway to send and receive Facebook messages on behalf your + account. +--- + +# Facebook App Authentication + +## Dependencies + +Before initiating the authentication process, please ensure all the dependencies stated below are met: + +1\. A Facebook Account. Click [here](https://www.facebook.com) to create one if you don't have it already.\ +2\. A Facebook page. This is the page from where your customers can message you. Click [here](https://www.facebook.com/pages/creation/) to create one if you don't have it already.\ +3\. Make sure your [Rocket.Chat](http://rocket.chat) instance is on a public address and is accessible by anyone on the internet. Goto \``Admin -> General -> Site Url`\` to confirm this.\ +4\. Lastly, Make sure your [Rocket.Chat](http://rocket.chat) instance is connected to [Rocket.Chat](http://rocket.chat) Cloud. Goto \``Admin -> Connectivity Services`\` to connect to Cloud. + +## Authentication + +The next step after the configuration and resolving the dependencies is authentication with Facebook. + +1. Please click on the button shown below to start the authentication process with Facebook. + +![](<../../../../../../.gitbook/assets/image (542).png>) + +2\. As soon as you click **Start Authentication** the authentication process is started. Please authorize [Rocket.Chat](http://rocket.chat)'s Facebook app to complete this process. + +![](<../../../../../../.gitbook/assets/image (544).png>) + +3\. You are redirected to the following page where you can use your email to authorize Facebook. + +![](<../../../../../../.gitbook/assets/image (545).png>) + +4\. Confirm here. + +![](<../../../../../../.gitbook/assets/2021-11-29\_01-14-57 (2).png>) + +At this step, you must have a Facebook page associated with the account. If you don’t have one yet, you can [create yours in just 30 seconds](https://www.facebook.com/pages/create/?ref\_type=registration\_form). + +In case you have multiple pages associated with your Facebook account it will prompt a selection box to choose the preferred page to connect. + +After successfully selecting your page, you will receive a success message with credentials, as shown below: + +![](<../../../../../../.gitbook/assets/image (548).png>) + +Try it out by sending a message to your Facebook page. + +## Subscribe/Unsubscribe + +After successful authentication, as an admin, you are subscribed to the Facebook page by default. But you can choose to unsubscribe if you want, as shown below: + +![](<../../../../../../.gitbook/assets/image (559).png>) + +![](<../../../../../../.gitbook/assets/image (560).png>) + +## Edit Page Configuration + +You can edit page configuration as shown below: + +![](<../../../../../../.gitbook/assets/image (561).png>) + +Following are the settings available: + +1. You can route all the conversations coming from this page to a specific **Department**. Only the agents of this department are able to serve Facebook conversations coming from this page. +2. You can set the **Welcome Message** that will be sent to visitors when they send their first message. +3. The **Conversation Finished Message** will be sent to visitors when the conversation is closed +4. You can set the **Default message for offline service** that will be sent to your visitor when no agents are available online + +{% hint style="info" %} +Only the agents of this particular department are able to see and take the chats. +{% endhint %} + +![](<../../../../../../.gitbook/assets/image (563).png>) + +## Slash Commands + +{% hint style="info" %} +Here are the shortcuts you can use in Facebook Bot: + +1. **/facebook authorize** Starts the facebook authorization process +2. **/facebook unauthorize** Revoke facebook authorization +3. **/facebook edit pageId** Edit Page configuration for the given pageId +4. **/facebook help** Shows help message +{% endhint %} + +{% hint style="danger" %} +Please note that when a Facebook Messenger user sends a message and there's no agent available on the server to chat, the conversation won't be created. This means that when agents get back to work they will not get to know that someone was reaching out. So please make sure you have at least one agent online at all times. +{% endhint %} diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/facebook-app-installation.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/facebook-app-installation.md new file mode 100644 index 0000000000..8869084db0 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/facebook-app-installation.md @@ -0,0 +1,15 @@ +# Facebook App Installation + +To install Facebook App: + +Go to **Administration** > **Workspace** > **Apps**. + +as shown below: + +![](<../../../../../.gitbook/assets/2021-11-20\_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (1).png>) + +Search Facebook under the **Marketplace** tab in **Apps** menu on your Rocket.Chat administration panel and install it. + +You are notified about all the permissions the app would access. Click **Agree**. + +Facebook app is installed successfully. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/hubspot-crm/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/hubspot-crm/README.md new file mode 100644 index 0000000000..82e5aa6b53 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/hubspot-crm/README.md @@ -0,0 +1,14 @@ +--- +description: Integration between Rocket.Chat and HubSpot CRM +--- + +# HubSpot CRM + +You can add HubSpot CRM to your Rocket.Chat account to manage the contacts and receive HubSpot ticket notifications in Rocket.Chat. Once Rocket.Chat integrated into HubSpot, the HubSpot bot will be added to your Rocket.Chat account. + +#### Before you get started + +{% hint style="info" %} +* You must have the [Omnichannel feature](https://docs.rocket.chat/guides/administration/settings/omnichannel-admins-guide#enable-omnichannel) enabled and [agents](https://docs.rocket.chat/guides/omnichannel/agents) and [managers](https://docs.rocket.chat/guides/omnichannel/managers) assigned to receive and send Omnichannel messages. +* **Migrate an API key integration to a private app**: If you've built a Rocket.Chat and HubSpot CRM integration that uses a [HubSpot API key](https://knowledge.hubspot.com/integrations/how-do-i-get-my-hubspot-api-key), you need to complete the migration over to your private app, remove all references to the HubSpot API key from your code, and use the approach to use your private app's access token. +{% endhint %} diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/hubspot-crm/hubspot-configuration.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/hubspot-crm/hubspot-configuration.md new file mode 100644 index 0000000000..0a71d62daf --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/hubspot-crm/hubspot-configuration.md @@ -0,0 +1,38 @@ +# HubSpot Configuration + +Now you need to configure HubSpot CRM integration settings to enable access to HubSpot account information. + +![Migrated an API Key integration to a Private app](<../../../../../.gitbook/assets/api key with key (1).png>) + +* Enter the API key or private app's access token to allow access to your HubSpot account information. +* Enable the option to display contact information when assigning the agent to the chat. +* Enable/disable the option to ignore archived objects. + +{% hint style="info" %} +**Migrated an API Key integration to a Private app**: Private apps enable you a powerful, secure way to make API calls to your HubSpot account. +{% endhint %} + +Click **Agree**. Your app is installed successfully. + +### Create a new private app + +This secure method allows you to use HubSpot's APIs to access specific data from your HubSpot account. You can authorize what each private app can request or change in your account, which will generate an access token that is unique to your app. + +* In your [**HubSpot**](https://app.hubspot.com/signup-hubspot/developers?hubs\_signup-url=developers.hubspot.com%2Fget-started\&hubs\_signup-cta=developers-getstarted-app\&uuid=5eb23338-41e6-4d2f-8840-9143ae580b22\&step=landing\_page) account, click the **settings** icon **** in the main navigation bar. +* In the left sidebar menu, navigate to **Integrations** > **Private Apps**. +* Click **Create private app**. + +![Create Private Apps](../../../../../.gitbook/assets/PrivateAppTokenCreation.png) + +* On the _Basic Info_ tab, configure the details of your app: + * **Name:** Enter your app's name. + * **Upload icon:** Hover over the placeholder logo and click the upload icon to upload a square image that will serve as the logo for your app. + * **Description**: Enter a description **** for your app. +* Click the **Scopes** tab. + +![Scopes](../../../../../.gitbook/assets/PrivateAppScopes.png) + +* Select the **Read** or **Write** checkbox for each scope you want your private app to be able to access. You can also search for a specific scope using the _Find a scope_ search bar. +* After configuring your app, click **Create app** in the top right. +* In the dialog box, review the information about your app's access token, then click **Continue creating**. +* Once you **** have **** created your app, you can start making API calls using the app's access token. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/hubspot-crm/hubspot-crm-agents-guide.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/hubspot-crm/hubspot-crm-agents-guide.md new file mode 100644 index 0000000000..d6bdfa1359 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/hubspot-crm/hubspot-crm-agents-guide.md @@ -0,0 +1,49 @@ +# HubSpot CRM Agent's Guide + +If you have HubSpot CRM integration in place and a user sends you a message. + +![](<../../../../../.gitbook/assets/image (474).png>) + +## **View E**xisting HubSpot Contact + +If it is an existing HubSpot contact, you can view their contact information, as shown below: + +![Contacts](<../../../../../.gitbook/assets/Existing Hubspot contact gets identified by the app.png>) + +## View HubSpot Contact Information + +You can view HubSpot contact information by clicking on **Contact Info.** + +![Contact Info](<../../../../../.gitbook/assets/View ContactInfo (1) (1) (1) (1) (1).png>) + +## Create Ticket + +You can create a ticket and assign appropriate owners and stages to your tickets by clicking on **Create Ticket.** + +![Create Ticket](<../../../../../.gitbook/assets/Create Tickets.png>) + +## **View** Deals + +You can see all HubSpot deals that are associated with contacts, companies, engagements, line items, tickets, and custom objects by clicking on **View Deals.** + +![View Deals](<../../../../../.gitbook/assets/View Deals.png>) + +## View All Tickets + +You can view and manage all HubSpot tickets by going to **View All Tickets.** + +![View Tickets](<../../../../../.gitbook/assets/View Tickets.png>) + +## Disable HubSpot CRM + +To disable the HubSpot CRM for the users, click **Disable**. + +![Disable HubSpot CRM](../../../../../.gitbook/assets/hubspot\_disableoption.png) + +## Uninstall HubSpot CRM + +To disable the HubSpot CRM: + +* Search for the **HubSpot** App under the **Marketplace** tab in the **Apps** menu. +* Go to Rocket.Chat **Administration** > **Workspace** > **Apps**. +* Click **Uninstall.** diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/hubspot-crm/hubspot-installation.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/hubspot-crm/hubspot-installation.md new file mode 100644 index 0000000000..ffffa28037 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/hubspot-crm/hubspot-installation.md @@ -0,0 +1,10 @@ +# HubSpot Installation + +**To install HubSpot CRM:** + +* Go to Rocket.Chat **Administration** > **Workspace** > **Apps**. +* Search for the **HubSpot** App under the **Marketplace** tab in the **Apps** menu on your Rocket.Chat administration panel and then click **Install**. + +![HubSpot Installation](../../../../../.gitbook/assets/HubspotInstall.png) + +You are notified about all the permissions the app would access. Click **Agree**. The app is installed successfully. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/README.md new file mode 100644 index 0000000000..3c09411cdd --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/README.md @@ -0,0 +1,43 @@ +--- +description: Omnichannel Integration between Rocket.Chat and Instagram Messenger API. +coverY: 0 +--- + +# Instagram Direct + +With Instagram Direct, you can handle messages from your Instagram Business Inbox directly in [Rocket.Chat](http://rocket.chat) It works simply: Instagram users reach out to you via Instagram Direct messages, you answer chats from Rocket.Chat. Some key features of this integration include sending messages with quick reply buttons, welcome messages(starting/closing chat), file sharing, and the correlation between your Instagram Direct pages and your Rocket.Chat departments. + +The Integration is available to the following Instagram Direct Professional Accounts: + +1. All Business accounts +2. Creator accounts via a phased roll-out, beginning with accounts with less than 500k followers + +Please find more info on the official rollout page by Instagram Direct [here](https://developers.facebook.com/docs/messenger-platform/instagram/rollout/). + +{% hint style="warning" %} +**You must have the** [**Omnichannel feature**](https://docs.rocket.chat/guides/administration/settings/omnichannel-admins-guide#enable-omnichannel) **enabled as well as have** [**agents**](https://docs.rocket.chat/guides/omnichannel/agents) **and** [**managers**](https://docs.rocket.chat/guides/omnichannel/managers) **assigned in order to receive and send Omnichannel messages.** +{% endhint %} + +{% hint style="danger" %} +Please note that if you have a country restriction set on Instagram, you cannot receive messages on [Rocket.Chat.](https://rocket.chat/) +{% endhint %} + +{% content-ref url="instagram-direct-installation.md" %} +[instagram-direct-installation.md](instagram-direct-installation.md) +{% endcontent-ref %} + +{% content-ref url="instagram-direct-configuration/" %} +[instagram-direct-configuration](instagram-direct-configuration/) +{% endcontent-ref %} + +{% content-ref url="instagram-direct-configuration/instagram-direct-authentication.md" %} +[instagram-direct-authentication.md](instagram-direct-configuration/instagram-direct-authentication.md) +{% endcontent-ref %} + +{% content-ref url="instagram-direct-configuration/delete-instagram-direct.md" %} +[delete-instagram-direct.md](instagram-direct-configuration/delete-instagram-direct.md) +{% endcontent-ref %} + +{% content-ref url="instagram-direct-agents-guide.md" %} +[instagram-direct-agents-guide.md](instagram-direct-agents-guide.md) +{% endcontent-ref %} diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/instagram-direct-agents-guide.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/instagram-direct-agents-guide.md new file mode 100644 index 0000000000..dc458bc210 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/instagram-direct-agents-guide.md @@ -0,0 +1,15 @@ +# Instagram Direct Agent's Guide + +If you have Instagram Direct integration in place and a user sends you a message on your Instagram business page using their Instagram account, as shown below: + +![](<../../../../../.gitbook/assets/2021-12-31\_20-27-38 (1) (1) (1) (1) (1) (1) (1).png>) + +it appears in your Rocket.Chat workspace, just like any other Omnichannel conversation. + +![](../../../../../.gitbook/assets/2021-12-31\_20-30-41.png) + +Click **Take It!** to serve this conversation. + +You can send to and receive files from your Instagram end-user. + +The integration also supports context from Instagram stories and posts within the incoming messages. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/instagram-direct-configuration/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/instagram-direct-configuration/README.md new file mode 100644 index 0000000000..c3b6b72630 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/instagram-direct-configuration/README.md @@ -0,0 +1,47 @@ +# Instagram Direct Configuration + +To access the settings, go to **Administration** > **Workspace** > **Apps**. + +as shown below: + +![](<../../../../../../.gitbook/assets/2021-11-20\_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (1).png>) + +Search Instagram Direct under the **Installed** tab in **Apps** menu on your Rocket.Chat administration panel. + +Click open your Instagram Direct app to see the settings available to you as an administrator: + +Following are the settings available: + +![](<../../../../../../.gitbook/assets/2022-01-20\_20-13-08 (1).png>) + +1\. **Agents Display Name:** You can choose to display the agent's name or username. + +2\. **File Upload Enabled:** You can enable/disable file sharing and also set a limit for maximum upload size: + +3\. Select the type of files you wish the Agents and your Contacts can share under **Accepted Media Types** + +4\. **Delete messages once it has been "Unsend" from Instagram:** You can when you want to delete the messages. + +### Handover protocol + +If you have multiple Facebook app connected to a single Facebook account, then Facebook allows those apps to participate in a conversation by passing control of the conversation between them. This feature is known as Handover protocol and the documentation for this feature can be found [here](https://developers.facebook.com/docs/messenger-platform/instagram/features/handover-protocol). If you are using Handover protocol on your account, then this Instagram app allows you to perform some of the handover operations. There are two settings that control this behavior explained below: + +5\. **Instagram Handover Protocol Action:** + +It defines the action which should be performed while sending an agent's message to a thread, in order to get access to the thread. + +{% hint style="info" %} +**Take Thread Control** action will only work if you've configured Rocket.Chat Omni-gateway app as a **Primary Receiver** from Facebook Apps page settings. +{% endhint %} + +6\. **Instagram Handover Protocol Metadata:** + +It defines the metadata to be passed along with thread control action requests. You can use this to pass some custom payload to other apps. + +7\. Hit **Save Changes** to save your settings + +![](<../../../../../../.gitbook/assets/2021-12-29\_17-48-45 (1) (1) (1) (2) (1) (1) (1) (1) (3) (2).png>) + +Your Instagram Direct app is successfully configured and you can see the new Instagram channel upon closing the administration panel, as shown below: + +![](<../../../../../../.gitbook/assets/2022-01-20\_20-26-27 (1) (1) (1) (1) (1) (1) (1) (1) (3).png>) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/instagram-direct-configuration/delete-instagram-direct.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/instagram-direct-configuration/delete-instagram-direct.md new file mode 100644 index 0000000000..601041d815 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/instagram-direct-configuration/delete-instagram-direct.md @@ -0,0 +1,9 @@ +# Delete Instagram Direct + +To delete Instagram Direct from your workspace: + +Goto **Administration>Apps>Installed>Instagram Direct** + +Hit **Uninstall** + +![](../../../../../../.gitbook/assets/2022-01-27\_23-50-36.png) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/instagram-direct-configuration/instagram-direct-authentication.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/instagram-direct-configuration/instagram-direct-authentication.md new file mode 100644 index 0000000000..4118e16f6a --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/instagram-direct-configuration/instagram-direct-authentication.md @@ -0,0 +1,93 @@ +--- +description: >- + Authorize Omni-Gateway to send and receive Instagram Direct messages on behalf + of your account. +--- + +# Instagram Direct Authentication + +## Dependencies + +Before initiating the authentication process, please ensure all the dependencies stated below are met:\ +1\. An Instagram [Business Account](https://help.instagram.com/502981923235522?fbclid=IwAR0TNcoToWKAq8OTOH4VjUC75NSk8EyqFW2Xz5KWDX7SsYK-9rNYppMMnLs)\ +2\. A Facebook Account. Click [here](https://www.facebook.com) to create one, if you don't have it already.\ +3\. A Facebook Page connected to your Instagram account. Click [here](https://www.facebook.com/pages/creation/) to create a new Facebook. Page and click [here](https://help.instagram.com/399237934150902?fbclid=IwAR1m2-JgIIGQBqmJG1vaVSAuOdIdM-hd5k9U-j7BaQ-t5x0WizKVEfr-gbQ) for a guide on how to connect your Facebook Page to your Instagram account.\ +4\. Enable Message Control Connected Tools Settings from your Instagram account on mobile. Click [here](https://developers.facebook.com/docs/messenger-platform/instagram/get-started#connected-tools-toggle) for more info.\ +5\. Make sure your [Rocket.Chat](http://rocket.chat) instance is on a public Address and is accessible by anyone on the internet. Goto \``Admin -> General -> Site Url`\` to confirm this.\ +6\. Lastly, Make sure your [Rocket.Chat](http://rocket.chat) instance is connected to [Rocket.Chat](http://rocket.chat) Cloud. Goto \``Admin -> Connectivity Services`\` to connect to Cloud. + +## Authentication + +The first step after the configuration and resolving the dependencies is authentication with Instagram Direct. + +1. Please click on the button shown below to start the authentication process with Instagram Direct. + +![](<../../../../../../.gitbook/assets/2022-01-20\_20-26-27 (1) (2) (1) (1) (1).png>) + +2\. As soon as you click **Start Authentication** the authentication process is started. Please authorize [Rocket.Chat](http://rocket.chat)'s Instagram Direct to complete this process. + +3\. You are redirected to the following page where you can use your email to authorize Instagram Direct. + +![](<../../../../../../.gitbook/assets/image (545).png>) + +4\. Confirm the Instagram business account you want to use with Rocket.Chat Omni Gateway. If you don’t have one yet, you can [create yours in just 30 seconds](https://www.facebook.com/pages/create/?ref\_type=registration\_form). + +![](../../../../../../.gitbook/assets/2021-12-31\_18-10-57.png) + +5\. In case you have multiple pages associated with your Instagram account, it will prompt a selection box to choose the preferred page to connect. + +![](<../../../../../../.gitbook/assets/2021-12-31\_18-11-21 (1) (1) (1) (1) (1) (1).png>) + +6\. Determine what Rocket.Chat Omni Gateway can do with the pages you have selected. + +![](../../../../../../.gitbook/assets/2021-12-31\_18-11-40.png) + +![](../../../../../../.gitbook/assets/2021-12-31\_18-11-52.png) + +After successfully selecting your page, you will receive a success message with credentials, as shown below: + +![](<../../../../../../.gitbook/assets/2021-12-31\_18-12-56 (7).png>) + +Try it out by sending a message to your Instagram page. + +## Subscribe/Unsubscribe + +After successful authentication, as an admin, you are subscribed to the Instagram page by default. But you can choose to unsubscribe if you want, as shown below: + +![](<../../../../../../.gitbook/assets/2021-12-31\_18-12-56 (9).png>) + +![](<../../../../../../.gitbook/assets/2021-12-31\_19-18-27 (1) (1) (1) (1) (1) (1).png>) + +## Edit Page Configuration + +You can edit page configuration as shown below: + +![](<../../../../../../.gitbook/assets/2021-12-31\_18-12-56 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3).png>) + +Following are the settings available: + +1. You can route all the conversations coming from this page to a specific \*\*\*\* [**Department**](https://docs.rocket.chat/guides/omnichannel/departments). Only the agents of this department are able to serve Instagram conversations coming from this page. +2. You can set the **Welcome Message** that will be sent to visitors when they send their first message. +3. The **Conversation Finished Message** will be sent to visitors when the conversation is closed +4. You can set the **Default message for offline service** that will be sent to your visitor when no agents are available online + +{% hint style="info" %} +Only the agents of this particular department are able to see and take the chats. +{% endhint %} + +![](../../../../../../.gitbook/assets/2022-01-28\_00-00-27.png) + +## Slash Commands + +{% hint style="info" %} +Here are the shortcuts you can use in Instagram Bot: + +1. **/Instagram authorize** Starts the Facebook authorization process to connect your instagram accounts +2. **/Instagram unauthorize** Revoke facebook authorization to remove all connected instagram accounts +3. **/Instagram edit pageId** Edit Page configuration for the given pageId +4. **/Instagram help** Shows help message +{% endhint %} + +{% hint style="danger" %} +Please note that when an Instagram user sends a message and there's no agent available on the server to chat, the conversation won't be created. This means that when agents get back to work they will not get to know that someone was reaching out. So please make sure you have at least one agent online at all times. +{% endhint %} diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/instagram-direct-installation.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/instagram-direct-installation.md new file mode 100644 index 0000000000..2ace8f133c --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/instagram-direct-installation.md @@ -0,0 +1,11 @@ +# Instagram Direct Installation + +To install Instagram Direct: + +Go to **Administration** > **Workspace** > **Apps**. + +as shown below: + +![](<../../../../../.gitbook/assets/2021-11-20\_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (1).png>) + +Search Instagram Direct under the **Marketplace** tab in **Apps** menu on your Rocket.Chat administration panel and install it. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/rasa-app/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/rasa-app/README.md new file mode 100644 index 0000000000..142d12c01e --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/rasa-app/README.md @@ -0,0 +1,26 @@ +--- +description: >- + Rasa is a framework for developing AI powered, industrial grade chatbots. It + is an open-source alternative for Dialogflow app. +--- + +# Rasa App + +Using Rocket.Chat and the Rasa Chatbot platform integration, you can set up and train your chatbot to respond to any query it's been trained for and configure it to act as an Omnichannel agent. + +{% hint style="warning" %} +**You must have the** [**Omnichannel feature**](https://docs.rocket.chat/guides/administration/settings/omnichannel-admins-guide#enable-omnichannel) **enabled as well as have** [**agents**](https://docs.rocket.chat/guides/omnichannel/agents) **and** [**managers**](https://docs.rocket.chat/guides/omnichannel/managers) **assigned in order to receive and send Omnichannel messages.** +{% endhint %} + +{% content-ref url="rasa-app-installation.md" %} +[rasa-app-installation.md](rasa-app-installation.md) +{% endcontent-ref %} + +{% content-ref url="rasa-app-configuration/" %} +[rasa-app-configuration](rasa-app-configuration/) +{% endcontent-ref %} + +{% content-ref url="rasa-app-configuration/delete-rasa-app.md" %} +[delete-rasa-app.md](rasa-app-configuration/delete-rasa-app.md) +{% endcontent-ref %} + diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/rasa-app/rasa-app-configuration/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/rasa-app/rasa-app-configuration/README.md new file mode 100644 index 0000000000..0091514eff --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/rasa-app/rasa-app-configuration/README.md @@ -0,0 +1,23 @@ +# Rasa App Configuration + +Search Rasa in the **Apps** menu on your Rocket.Chat administration panel, as shown below: + +![](<../../../../../../.gitbook/assets/image (461) (1) (1).png>) + +Click open your Rasa app to see the settings available to you as an administrator under the **Settings** tab. + +Following are the settings available: + +1. Set the[ name of the bot you have already configured](https://docs.rocket.chat/guides/apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/bot-user-configuration) in **Bot Username**. This is the user who will assist the conversations through Rasa integration. +2. **Rasa Server URL** is available inside your Rasa instance. +3. The Bot sends **Service Unavailable Message** to the visitor if service is unavailable. +4. The **Close Chat Message** is sent automatically when a chat is closed. +5. The Bot sends a **Handover Message** to the Visitor upon handover. +6. Upon bot-to-live agent handover, the visitor is transferred to **Default Handover Department Name.** +7. Enabling **Enable Callbacks** setting will allow the app to use only callback messages. This feature is useful when you are using Reminder messages in your RASA bot. +8. If **Hide Quick Replies** enabled, then all quick-replies will hide when a visitor clicks on any one of them. +9. Hit **Save.** + +![](<../../../../../../.gitbook/assets/image (469).png>) + +Rasa app is successfully configured. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/rasa-app/rasa-app-configuration/delete-rasa-app.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/rasa-app/rasa-app-configuration/delete-rasa-app.md new file mode 100644 index 0000000000..3a433597e8 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/rasa-app/rasa-app-configuration/delete-rasa-app.md @@ -0,0 +1,9 @@ +# Delete Rasa App + +To delete the Dialogflow app from your workspace: + +Goto **Administration>Apps>Installed>Rasa** + +Hit **Uninstall** + +![](../../../../../../.gitbook/assets/2022-02-01\_17-02-44.png) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/rasa-app/rasa-app-installation.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/rasa-app/rasa-app-installation.md new file mode 100644 index 0000000000..a99594bb8f --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/rasa-app/rasa-app-installation.md @@ -0,0 +1,11 @@ +# Rasa App Installation + +To install Rasa App: + +Go to **Administration** > **Workspace** > **Apps**. + +as shown below: + +![](<../../../../../.gitbook/assets/2021-11-20\_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (1).png>) + +Search Rasa under the **Marketplace** tab in **Apps** menu on your Rocket.Chat administration panel and install it. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/salesforce-crm-integration/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/salesforce-crm-integration/README.md new file mode 100644 index 0000000000..70c4f51d80 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/salesforce-crm-integration/README.md @@ -0,0 +1,26 @@ +--- +description: Integration between Rocket.Chat and Salesforce CRM platform. +--- + +# Salesforce CRM Integration + +{% hint style="warning" %} +**You must have the** [**Omnichannel feature**](https://docs.rocket.chat/guides/administration/settings/omnichannel-admins-guide#enable-omnichannel) **enabled as well as have** [**agents**](https://docs.rocket.chat/guides/omnichannel/agents) **and** [**managers**](https://docs.rocket.chat/guides/omnichannel/managers) **assigned in order to receive and send Omnichannel messages.** +{% endhint %} + +{% content-ref url="salesforce-crm-installation.md" %} +[salesforce-crm-installation.md](salesforce-crm-installation.md) +{% endcontent-ref %} + +{% content-ref url="salesforce-crm-configuration/" %} +[salesforce-crm-configuration](salesforce-crm-configuration/) +{% endcontent-ref %} + +{% content-ref url="salesforce-crm-configuration/delete-salesforce-crm-integration.md" %} +[delete-salesforce-crm-integration.md](salesforce-crm-configuration/delete-salesforce-crm-integration.md) +{% endcontent-ref %} + +{% content-ref url="salesforce-crm-agents-guide.md" %} +[salesforce-crm-agents-guide.md](salesforce-crm-agents-guide.md) +{% endcontent-ref %} + diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-agents-guide.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-agents-guide.md new file mode 100644 index 0000000000..5c208bf77d --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-agents-guide.md @@ -0,0 +1,51 @@ +# Salesforce CRM Agent's Guide + +If you have Salesforce CRM integration in place and a user sends you a message, + +![](<../../../../../.gitbook/assets/image (474).png>) + +It appears in your Rocket.Chat workspace just like any other Omnichannel conversation, as shown below: + +![](<../../../../../.gitbook/assets/image (475).png>) + +But you can see your Salesforce CRM Integration in action as soon as you Click **Take It!** to serve this conversation. + +## Create Contact + +If it is a new visitor, you can create their contact inside your Salesforce CRM from within Rocket.Chat. + +![](<../../../../../.gitbook/assets/image (482).png>) + +![](<../../../../../.gitbook/assets/image (484).png>) + +![](<../../../../../.gitbook/assets/image (485).png>) + +## Contact Info + +If it is an existing contact, you can view their contact info, as shown below: + +![](<../../../../../.gitbook/assets/image (476).png>) + +## View Cases + +You can view their cases from within Rocket.Chat. + +![](<../../../../../.gitbook/assets/image (477).png>) + +## Create Cases + +You can create a new case for them from within Rocket.Chat. + +![](<../../../../../.gitbook/assets/image (478).png>) + +![](<../../../../../.gitbook/assets/image (479).png>) + +You can also view the Tasks, Events, and Calls for this visitor. + +![](<../../../../../.gitbook/assets/image (480).png>) + +{% hint style="info" %} +Use `/salesforce help` command to see all the slash commands we have made available to you in this integration. +{% endhint %} + +![](<../../../../../.gitbook/assets/image (481).png>) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-configuration/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-configuration/README.md new file mode 100644 index 0000000000..74e3a4c171 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-configuration/README.md @@ -0,0 +1,22 @@ +# Salesforce CRM Configuration + +Search Salesforce CRM Configuration in the **Apps** menu on your Rocket.Chat administration panel, as shown below: + +![](<../../../../../../.gitbook/assets/image (470).png>) + +Click open your Salesforce CRM app to see the settings available to you as an administrator under the **Settings** tab. + +Following are the settings available: + +1. **Consumer Key** is available inside your Salesforce instance. +2. **Private Key** is also available inside your Salesforce instance. +3. **Salesforce Username**: This is the salesforce username used here for identification. +4. **Display Contact information when assigning the agent to the chat**: If enabled, Salesforce contact information will be displayed to agents when they are assigned to chats. +5. **Auto-Save/Update Contacts when a Chat Ends**: If enabled, the app will auto-save/update the visitor info on Salesforce once an agent closes the chat. +6. **Metadata Refresh Interval(in Minutes)**: For better user experience, the app will cache some meta-data information from Salesforce. This setting defines the duration within which the app will automatically refresh its cache +7. **Salesforce Session Timeout(in Minutes)**: This should be the same as Session Timeout setting on your Salesforce Setting ( Setup --> Session Settings --> Session Timeout --> Timeout Value ) +8. Hit **Save.** + +![Salesforce CRM App Settings](<../../../../../../.gitbook/assets/RasaAppSettings .png>) + +Salesforce CRM app is successfully configured. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-configuration/delete-salesforce-crm-integration.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-configuration/delete-salesforce-crm-integration.md new file mode 100644 index 0000000000..36cbc19bbc --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-configuration/delete-salesforce-crm-integration.md @@ -0,0 +1,9 @@ +# Delete Salesforce CRM Integration + +To delete the Dialogflow app from your workspace: + +Goto **Administration>Apps>Installed>Dialogflow** + +Hit **Uninstall** + +![](../../../../../../.gitbook/assets/2022-02-01\_17-05-50.png) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-installation.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-installation.md new file mode 100644 index 0000000000..b251326e44 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-installation.md @@ -0,0 +1,11 @@ +# Salesforce CRM Installation + +To install Salesforce CRM App: + +Go to **Administration** > **Workspace** > **Apps**. + +as shown below: + +![](<../../../../../.gitbook/assets/2021-11-20\_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (1).png>) + +Search _Salesforce CRM Integration_ under the **Marketplace** tab in **Apps** menu on your Rocket.Chat administration panel and install it. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/sms.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/sms.md new file mode 100644 index 0000000000..1774cd0ce4 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/sms.md @@ -0,0 +1,75 @@ +# SMS + +External users can communicate with Rocket.Chat through SMS. + +This integration extends [Rocket.Chat's Omnichannel](../../../../use-rocket.chat/omnichannel/) capabilities. + +{% hint style="info" %} +* The [Rocket.Chat SMS Settings](../../../../use-rocket.chat/workspace-administration/settings/sms.md) offers the ability to configure SMS integration with several providers, but we are demonstrating with [Twilio ](https://www.twilio.com/)using [Twilio Programmable Messaging API](https://www.twilio.com/messaging). +* You are required to have your workspace available on a public URL. +{% endhint %} + +## Twilio Programmable Messaging Configuration + +* Log in to your [Twilio](https://www.twilio.com/) account or create a new account if you don't have one + +{% hint style="info" %} +To be able to relay SMS, you need to get a Twilio number and create a messaging service. +{% endhint %} + +* From your Twilio console, navigate to **Messaging** > **Try it out** > **Get Set Up,** click **Start setup**, and follow the process to configure a Twilio messaging service + +![Twilio Programming Message Setup](<../../../../.gitbook/assets/Twilio Programming Message Setup (1).png>) + +* Fill in the service name and **Create Messaging Service** + +![Twilio Messaging Service name](<../../../../.gitbook/assets/Twilio Messaging Service name>) + +* Twilio will automatically provision a number for you so **Provision and add this number** + +![Twilio provisioned number](<../../../../.gitbook/assets/Twilio provisioned number>) + +{% hint style="success" %} +With the configuration complete, you can go ahead and **Try sending an SMS** to make sure the number works. +{% endhint %} + +## Twilio SMS and Rocket.Chat Webhook + +After configuring your Twilio number for messaging, the next step is to link it to Rocket.Chat through an Omnichannel webhook [endpoint](https://developer.rocket.chat/reference/api/rest-api/endpoints/omnichannel/omnichannel-endpoints/sms-incoming-twilio). + +* From your [Twilio console](https://console.twilio.com/), navigate to **Phone Numbers** > **Manage** > **Active numbers.** You will see your Twilio provisioned number and the messaging service it is linked to +* Click on the number to open its configuration page + +![Twilio Active numbers page](<../../../../.gitbook/assets/Twilio Active numbers page>) + +* Scroll down to the Messaging section and fill in the value of the **A MESSAGE COMES IN** with the URL of your publicly available Rocket.Chat workspace in this format `https:///api/v1/livechat/sms-incoming/twilio` then hit **Save** + +![Twilio Phone Number webhook configuration](<../../../../.gitbook/assets/Twilio Phone Number webhook configuration>) + +{% hint style="info" %} +Make sure the action type selected above is _`Webhook`_ and the method is _`HTTP POST`_ +{% endhint %} + +## Rocket.Chat Twilio SMS Setting + +After getting all the settings on your Twilio Programmable Messaging number ready, it's time to connect it with your Rocket.Chat workspace. + +* Open up Rocket.Chat and go to **Administration** > **Workspace** > **Settings** > **SMS** +* Select Twilio and the **service** type, then move down to the Twilio section and fill in your Twilio credentials. This can be gotten from the [Twilio console](https://console.twilio.com/) +* With that done, **enable** the service and hit **Save changes** + +![Rocket.Chat SMS Setting](<../../../../.gitbook/assets/Rocket.Chat SMS Setting>) + +## Rocket.Chat SMS Messaging + +We have gone through configuring a Twilio Programmable Messaging number and linking it with Rocket.Chat through webhook. Now to test the two-way communication: + +* Open up any SMS messaging app on your phone and send a message to your [Twilio active number](https://console.twilio.com/us1/develop/phone-numbers) +* The message is seen in your Rocket.Chat server, available for any [Omnichannel Agent](../../../../use-rocket.chat/omnichannel/agents.md) to continue the conversation +* Similarly, when a reply is sent from Rocket.Chat, it is received on the SMS senders end + +![Rocket.Chat SMS communication successful](<../../../../.gitbook/assets/Rocket.Chat SMS communication successful>) + +{% hint style="info" %} +External SMS messages sent to an Omnichannel department are identified by the green message icon on the side. +{% endhint %} diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/README.md new file mode 100644 index 0000000000..e025eccef4 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/README.md @@ -0,0 +1,29 @@ +--- +description: Omnichannel Integration between Rocket.Chat and Telegram. +--- + +# Telegram App + +{% hint style="warning" %} +**You must have the** [**Omnichannel feature**](https://docs.rocket.chat/guides/administration/settings/omnichannel-admins-guide#enable-omnichannel) **enabled as well as have** [**agents**](https://docs.rocket.chat/guides/omnichannel/agents) **and** [**managers**](https://docs.rocket.chat/guides/omnichannel/managers) **assigned in order to receive and send Omnichannel messages.** +{% endhint %} + +{% hint style="warning" %} +This integration is to work only for Omnichannel chats within Rocket.Chat. If you wish to use your Telegram bot on public or private channels/groups/Teams within Rocket.Chat, then please follow [this guide](../../../../../use-rocket.chat/workspace-administration/integrations/telegram.md) +{% endhint %} + +{% content-ref url="telegram-app-installation.md" %} +[telegram-app-installation.md](telegram-app-installation.md) +{% endcontent-ref %} + +{% content-ref url="telegram-app-configuration/" %} +[telegram-app-configuration](telegram-app-configuration/) +{% endcontent-ref %} + +{% content-ref url="telegram-app-configuration/delete-telegram-app.md" %} +[delete-telegram-app.md](telegram-app-configuration/delete-telegram-app.md) +{% endcontent-ref %} + +{% content-ref url="telegram-app-agents-guide.md" %} +[telegram-app-agents-guide.md](telegram-app-agents-guide.md) +{% endcontent-ref %} diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/telegram-app-agents-guide.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/telegram-app-agents-guide.md new file mode 100644 index 0000000000..422a6954fa --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/telegram-app-agents-guide.md @@ -0,0 +1,27 @@ +# Telegram App Agent's Guide + +If you have Telegram app integration in place and a user sends you a message on your Telegram business page using their Telegram account, as shown below: + +![](../../../../../.gitbook/assets/IMG\_3509.PNG) + +it appears in your Rocket.Chat workspace just like any other Omnichannel conversation. + +![](<../../../../../.gitbook/assets/image (572).png>) + +Click **Take It!** to serve this conversation. + +### Send/Receive Files + +You can send to and receive files and voice notes from your Telegram end-user, as shown below: + +![](<../../../../../.gitbook/assets/image (568).png>) + +### Quick Replies + +You can also use quick reply buttons to send quick replies on telegram. + +![](<../../../../../.gitbook/assets/telegram quick replies .png>) + +{% hint style="info" %} +Please note that, for this configuration, you need to have a bot ([Dialogflow](https://docs.rocket.chat/guides/app-guides/omnichannel-apps/dialogflow-app)/[RASA](https://docs.rocket.chat/guides/app-guides/omnichannel-apps/rasa-app)) configured. +{% endhint %} diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/telegram-app-configuration/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/telegram-app-configuration/README.md new file mode 100644 index 0000000000..5b38541450 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/telegram-app-configuration/README.md @@ -0,0 +1,52 @@ +# Telegram App Configuration + +Search Telegram in the **Apps** menu on your Rocket.Chat administration panel, as shown below: + +![Telegram in the Apps menu](<../../../../../../.gitbook/assets/image (532).png>) + +Click open your Telegram app to see the settings available to you as an administrator **Settings** tab: + +![Telegram app settings](<../../../../../../.gitbook/assets/2022-02-01\_16-04-42 (1).png>) + +1. **Bot Token** sent by Telegram during Bot user activation. If you need help creating your telegram bot token, you can find the [instructions](https://docs.rocket.chat/guides/app-guides/omnichannel-apps/telegram-app/telegram-app-configuration/generate-your-telegram-bot-token) here. +2. You can set a **Default Department**. Only the agents of this department are able to serve Telegram conversations + +{% hint style="warning" %} +If you don't have a department set up you won't receive any messages. +{% endhint %} + +{% hint style="info" %} +Find out how to [create a department](https://docs.rocket.chat/guides/omnichannel/departments) for your Rocket.Chat workspace. +{% endhint %} + +3\. You can set the **Service Unavailable Message** that will be sent to the user if some error occurs like if no agents are online + +4\. You can set the **Welcome Message** that will be sent to visitors when they send their first message + +5\. The **Conversation Finished Message** will be sent to visitors when the conversation is closed + +{% hint style="info" %} +Only the agents of that particular department are able to see and take the chats. +{% endhint %} + +6\. **Agents Display Name:** You can choose to display the agent's name or username. + +7\. **File Upload Enabled:** You can enable/disable file sharing. + +8\. And you can select the type of files you wish the Agents and your Telegram Contacts can share under **Accepted Media Types** + +9\. Hit **Save Changes** in the top right corner to save your settings and your Telegram app is successfully configured. You can see the new Telegram channel upon closing the administration panel. + +### Quick Replies + +You can also use quick reply buttons to send/receive quick replies on telegram. + +![Quick repiles](<../../../../../../.gitbook/assets/telegram quick replies .png>) + +{% hint style="info" %} +**If you don't yet have a chatbot solution ready to connect to Omnichannel or are interested in discovering** [**Rocket.Chat**](http://rocket.chat) **natively compatible solutions such as** [**Dialogflow**](https://docs.rocket.chat/guides/app-guides/omnichannel-apps/dialogflow-app) **or** [**RASA**](https://docs.rocket.chat/guides/app-guides/omnichannel-apps/rasa-app)**. Check out our** [**marketplace**](https://rocket.chat/marketplace) **and learn more!** +{% endhint %} + +You can also have [**Assign new conversations to bot agent**](https://docs.rocket.chat/guides/administration/settings/omnichannel-admins-guide#routing) \*\*\*\* toggled on for the routing conversation to the bot agent if any. Please note that it’s an optional configuration, but for companies that have a chatbot user serving Omnichannel conversations that’s a required setting. + +![Telegram routing to bot agent](<../../../../../../.gitbook/assets/bot agent .png>) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/telegram-app-configuration/delete-telegram-app.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/telegram-app-configuration/delete-telegram-app.md new file mode 100644 index 0000000000..9af652a215 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/telegram-app-configuration/delete-telegram-app.md @@ -0,0 +1,13 @@ +# Delete Telegram App + +To Delete Telegram app from your workspace: + +Goto **Administration>Apps>Installed>Telegram** + +Click **Uninstall**. + +![](../../../../../../.gitbook/assets/2022-02-01\_16-14-03.png) + +![](<../../../../../../.gitbook/assets/image (571).png>) + +Hit **Yes** and your app is uninstalled. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/telegram-app-configuration/generate-your-telegram-bot-token.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/telegram-app-configuration/generate-your-telegram-bot-token.md new file mode 100644 index 0000000000..e6e22e69e5 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/telegram-app-configuration/generate-your-telegram-bot-token.md @@ -0,0 +1,15 @@ +# Generate your Telegram Bot Token + +First things first, access your Telegram App and open a new chat. Search for “BotFather” it should show a message like the following: + +![](../../../../../../.gitbook/assets/2021-11-28\_20-19-31.png) + +Select “Start” and type in the chat “/newbot”. It will ask for you to select the name for your bot and a username. + +As soon as you set your bot name and username the following message will appear: + +![](../../../../../../.gitbook/assets/2021-11-28\_20-21-07.png) + +Copy the token provided above and feel free to return to [Rocket.Chat to finish the setup.](https://docs.rocket.chat/guides/app-guides/omnichannel-apps/telegram-app/telegram-app-configuration) + +You can also follow the link to find Telegram’s [instructions](https://core.telegram.org/bots#6-botfather) on this. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/telegram-app-installation.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/telegram-app-installation.md new file mode 100644 index 0000000000..9bea0870c6 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/telegram-app-installation.md @@ -0,0 +1,15 @@ +# Telegram App Installation + +To install Telegram App: + +Go to **Administration** > **Workspace** > **Apps**. + +as shown below: + +![](<../../../../../.gitbook/assets/2021-11-20\_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (1).png>) + +Search Telegram under the **Marketplace** tab in **Apps** menu on your Rocket.Chat administration panel and install it. + +You are notified about all the permissions the app would access. Click **Agree**. + +Your app is installed successfully. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/README.md new file mode 100644 index 0000000000..124a24b450 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/README.md @@ -0,0 +1,31 @@ +--- +description: Omnichannel Integration between Rocket.Chat and Twitter. +--- + +# Twitter App + +{% hint style="warning" %} +**You must have the** [**Omnichannel feature**](https://docs.rocket.chat/guides/administration/settings/omnichannel-admins-guide#enable-omnichannel) **enabled as well as have** [**agents**](https://docs.rocket.chat/guides/omnichannel/agents) **and** [**managers**](https://docs.rocket.chat/guides/omnichannel/managers) **assigned in order to receive and send Omnichannel messages.** +{% endhint %} + +{% hint style="info" %} +The Twitter app can be used on subscription basis. +{% endhint %} + +![](<../../../../../.gitbook/assets/image (459) (1) (1) (1) (1) (1).png>) + +{% content-ref url="twitter-app-installation.md" %} +[twitter-app-installation.md](twitter-app-installation.md) +{% endcontent-ref %} + +{% content-ref url="twitter-app-configuration/" %} +[twitter-app-configuration](twitter-app-configuration/) +{% endcontent-ref %} + +{% content-ref url="twitter-app-configuration/twitter-app-authentication.md" %} +[twitter-app-authentication.md](twitter-app-configuration/twitter-app-authentication.md) +{% endcontent-ref %} + +{% content-ref url="twitter-app-agents-guide.md" %} +[twitter-app-agents-guide.md](twitter-app-agents-guide.md) +{% endcontent-ref %} diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/twitter-app-agents-guide.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/twitter-app-agents-guide.md new file mode 100644 index 0000000000..0a11600801 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/twitter-app-agents-guide.md @@ -0,0 +1,13 @@ +# Twitter App Agent's Guide + +If you have Twitter app integration in place and a user sends you a message on your Twitter business page using their Twitter account, as shown below: + +![](../../../../../.gitbook/assets/1621376643503.jpg) + +it appears in your Rocket.Chat workspace just like any other Omnichannel conversation. + +![](<../../../../../.gitbook/assets/image (422).png>) + +Click **Take It!** to serve this conversation. You can also send to and receive files from your Twitter end-user, as shown below: + +![](<../../../../../.gitbook/assets/image (423).png>) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/twitter-app-configuration/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/twitter-app-configuration/README.md new file mode 100644 index 0000000000..31731f3f2f --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/twitter-app-configuration/README.md @@ -0,0 +1,22 @@ +# Twitter App Configuration + +Go to **Administration** > **Workspace** > **Apps**. Go to the **Installed** tab and search _Twitter._ + +Click open your Twitter app to see the settings available to you as an administrator: + +Following are the settings available: + +![](<../../../../../../.gitbook/assets/2022-02-01\_03-15-12 (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (2).png>) + +1. You can set a **Default Department**. Only the agents of this [department](https://docs.rocket.chat/guides/omnichannel/departments) are able to serve Twitter conversations +2. You can set the **Service Unavailable Message** that will be sent to your visitor when no agents are available online. +3. You can set the **Welcome Message** that will be sent to visitors when they send their first message +4. The **Conversation Finished Message** will be sent to visitors when the conversation is closed +5. **Agents Display Name:** You can choose to display the agent's name or username. +6. **File Upload Enabled:** You can enable/disable file sharing and also set a limit for maximum upload size. +7. And you can select the type of files you wish the Agents and your Twitter Contacts can share under **Accepted Media Types.** +8. Hit **Save Changes** to save your settings + +Your Twitter app is successfully configured and you can see the new Twitter channel upon closing the administration panel, as shown below: + +![](<../../../../../../.gitbook/assets/image (409).png>) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/twitter-app-configuration/delete-twitter-app.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/twitter-app-configuration/delete-twitter-app.md new file mode 100644 index 0000000000..d0d992ac52 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/twitter-app-configuration/delete-twitter-app.md @@ -0,0 +1,9 @@ +# Delete Twitter App + +To delete the Twitter app from your workspace: + +Goto **Administration** > **Workspace** > **Apps** > **Installed** > **Twitter** + +Hit **Uninstall** + +![](../../../../../../.gitbook/assets/2022-02-01\_16-54-28.png) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/twitter-app-configuration/twitter-app-authentication.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/twitter-app-configuration/twitter-app-authentication.md new file mode 100644 index 0000000000..754a34b3b6 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/twitter-app-configuration/twitter-app-authentication.md @@ -0,0 +1,44 @@ +--- +description: >- + Authorize Omni-Gateway to send and receive Twitter messages on behalf your + account. +--- + +# Twitter App Authentication + +The first step after the configuration is authentication with Twitter. + +1. Please click on the button shown below to start the authentication process with Twitter. + +![](<../../../../../../.gitbook/assets/image (413).png>) + +2\. As soon as you click **Start Authentication** the authentication process is started. Please authorize [Rocket.Chat](http://rocket.chat)'s Twitter app to complete this process. + +![](<../../../../../../.gitbook/assets/image (414).png>) + +3\. You will be redirected to the following page where you can use your business email to authorize Twitter. + +![](<../../../../../../.gitbook/assets/image (417).png>) + +4\. Confirm email. + +![](<../../../../../../.gitbook/assets/image (418).png>) + +6\. Authorize. + +![](<../../../../../../.gitbook/assets/image (419).png>) + +You receive a success message with credentials, as shown below: + +![](<../../../../../../.gitbook/assets/image (420).png>) + +## Slash Commands + +{% hint style="info" %} +Here are the shortcuts you can use in Twitter Bot: + +1. **/twitter authorize** Starts the Twitter authorization process +2. **/twitter unauthorize** Revoke twitter authorization +3. **/twitter support** Show support info +4. **/twitter help** Shows help message +{% endhint %} diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/twitter-app-installation.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/twitter-app-installation.md new file mode 100644 index 0000000000..d6d22a3063 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/twitter-app-installation.md @@ -0,0 +1,15 @@ +# Twitter App Installation + +To install Twitter App: + +Go to **Administration** > **Workspace** > **Apps**. + +as shown below: + +![](<../../../../../.gitbook/assets/2021-11-20\_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (1).png>) + +Search Twitter under the **Marketplace** tab in **Apps** menu on your Rocket.Chat administration panel and install it. + +You are notified about all the permissions the app would access. Click **Agree**. + +The app is installed successfully. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/README.md new file mode 100644 index 0000000000..3adb8df8eb --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/README.md @@ -0,0 +1,16 @@ +# WhatsApp Cloud App + +The Rocket.Chat WhatsApp Cloud App provides direct communication between Rocket.Chat and WhatsApp using the WhatsApp Cloud API without the need for any third-party services like 360Dialog. + +This is possible by linking Rocket.Chat through a [Facebook Developer app](https://developers.facebook.com/apps) with the WhatsApp setup. + +We are going to go through: + +1. [Installing WhatsApp Cloud App](../../../apps-user-guides/omnichannel-apps/whatsapp-cloud-app/whatsapp-cloud-app-install.md) +2. [Creating a Facebook Developer App for WhatsApp](facebook-developer-account-with-whatsapp/) +3. [WhatsApp Cloud App Configuration](whatsapp-cloud-app-configuration.md) +4. [Using WhatsApp Cloud App](using-whatsapp-cloud-app.md) + +{% content-ref url="../../../../../rocket.chat-resources/frequently-asked-questions/whatsapp-cloud-api-faqs.md" %} +[whatsapp-cloud-api-faqs.md](../../../../../rocket.chat-resources/frequently-asked-questions/whatsapp-cloud-api-faqs.md) +{% endcontent-ref %} diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/facebook-developer-account-with-whatsapp/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/facebook-developer-account-with-whatsapp/README.md new file mode 100644 index 0000000000..fec708c858 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/facebook-developer-account-with-whatsapp/README.md @@ -0,0 +1,53 @@ +# Facebook Developer Account with WhatsApp + +Meta provides a set of developer tools through their [Facebook Developer's](http://developers.facebook.com/) portal to easily build around the Meta ecosystem. + +In this guide, we are going to see how to create a Facebook Developer's Account and configure a new App for WhatsApp communication + +* Login to your Facebook's [Developer account](http://developers.facebook.com) and navigate to **My Apps** + +{% hint style="info" %} +You will be required to verify your account before proceeding if it is your first time accessing Facebook for developers. +{% endhint %} + +* Click on **Create App** to create a new app + +

Facebook Developer Create App

+ +* Select Business as the App type and fill in the details + + + +

Facebook Developers new app

+ +* Details + * **App name**: The name you want to call your app + * **Contact address**: Your email to use when contacting you + * **Business Account**: Select a business account if you have one. A new account can be created automatically if none is selected +* On your dashboard, scroll down and click on **Setup** against WhatsApp in the list of products to add displayed + +

Facebook Developer WhatsApp setup

+ +* A WhatsApp section is added to the left panel of your Facebook Developer's dashboard +* Navigate to **WhatsApp** > **Getting Started** you see a set of credentials that we will use latter in [setting up the WhatsApp Cloud App in Rocket.Chat](../whatsapp-cloud-app-configuration.md) +* Verify any existing WhatsApp number to receive messages while in Test Mode + +

Facebook Developer WhatsApp credentials

+ +{% hint style="info" %} +The access token provided is temporary, see [this guide](create-permanent-whatsapp-cloud-api-token.md) on how to create a permanent token. +{% endhint %} + +### Adding WhatsApp Business phone number to Facebook app + +To link your Original WhatsApp Business number to the App, + +* Navigate to **WhatsApp** > **Getting Started** and click on **Add phone number** + +

Adding WhatsApp phone number to Facebook App

+ +See more details on how to add a WhatsApp production number here + +{% embed url="https://developers.facebook.com/docs/whatsapp/cloud-api/get-started/add-a-phone-number/" %} + +{% embed url="https://youtu.be/CEt_KMMv3V8?t=388" %} \ No newline at end of file diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/facebook-developer-account-with-whatsapp/create-permanent-whatsapp-cloud-api-token.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/facebook-developer-account-with-whatsapp/create-permanent-whatsapp-cloud-api-token.md new file mode 100644 index 0000000000..53f9cef662 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/facebook-developer-account-with-whatsapp/create-permanent-whatsapp-cloud-api-token.md @@ -0,0 +1,42 @@ +# Create Permanent WhatsApp Cloud API Token + +We have seen how to [create a Facebook developer account and add WhatsApp](./). + +The _WhatsApp Cloud API token_ is uniquely provided by Facebook along with the _Phone Number ID_, and _WhatsApp Business Account ID_. These credentials are needed by every business when using WhatsApp Cloud services. + +The token provided by Facebook initially is temporal. Follow this guide to get a permanent WhatsApp Cloud API token. + +* Open up the app panel on your [Facebook Developers portal](https://developers.facebook.com/apps) +* Click to open the business page linked to the app + +

Meta for Developers apps page

+ +* The Facebook business setting page opens up. Click on **System user** on the side panel +* A list of existing users on that app is seen if any. Click **Add** to add a user then **Accept** the terms and conditions + +

Meta business system users

+ +* Fill in the System username then set the System User Role to **Admin** and **Create System User** + +

Creating new Meta for business admin system user

+ +* Click on **Add Assets** across the newly created user to add assets to use + +

Add assets to Meta business user

+ +* A modal opens up, Navigate to **Apps**, select the app use and enable **Manage App** then **Save changes** + +

Assign Meta for business asset

+ +* The asset gets added to the system user and **Done** +* Click on **Generate New Token** against the user to generate a new access token + +

Generate new token Meta for Business

+ +* Select the **App** from the dropdown and check the `whatsapp_business_messaging` and `whatsapp_business_management` permissions and **Generate Token** + +

Add permissions to Meta business system user

+ +* The permanent token gets generated and presented to you. Copy this token and use it in your integrations. + +

Generated WhatsApp Cloud API permanent token

\ No newline at end of file diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/using-whatsapp-cloud-app.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/using-whatsapp-cloud-app.md new file mode 100644 index 0000000000..e6a480ecf1 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/using-whatsapp-cloud-app.md @@ -0,0 +1,13 @@ +# Using WhatsApp Cloud App + +After installing the WhatsApp Cloud App, Creating a Facebook Developer app for WhatsApp, and configuring the link with Rocket.Chat through webhook, Let us test the two-way communication between Rocket.Chat and WhatsApp. + +{% hint style="info" %} +You must have the [Omnichannel feature](../../../../../use-rocket.chat/workspace-administration/settings/omnichannel-admins-guide/) enabled as well as have [agents](../../../../../use-rocket.chat/omnichannel/agents.md) and [managers ](../../../../../use-rocket.chat/omnichannel/managers.md)assigned in order to receive and send Omnichannel messages. +{% endhint %} + +* Open the WhatsApp app on your phone logged in with the number verified to receive messages from +* Send a message to your Facebook Developer app Test number provided or your WhatsApp business number if you have any added +* The message is seen in your Rocket.Chat server, available for any [Omnichannel Agent](../../../../../use-rocket.chat/omnichannel/agents.md) to **Take** the conversation + +

Rocket.Chat X WhatsApp Chat Screen

diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/whatsapp-cloud-app-configuration.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/whatsapp-cloud-app-configuration.md new file mode 100644 index 0000000000..da5df9b266 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/whatsapp-cloud-app-configuration.md @@ -0,0 +1,91 @@ +# WhatsApp Cloud App Configuration + +With the WhatsApp Cloud App installed on your public Rocket.Chat workspace and the Facebook Developer App Created for WhatsApp, you can now: + +* [Connect WhatsApp number](whatsapp-cloud-app-configuration.md#connect-whatsapp-number) +* [Edit WhatsApp numbers](whatsapp-cloud-app-configuration.md#whatsapp-cloud-app-shortcuts-1) +* [Disconnect WhatsApp number](whatsapp-cloud-app-configuration.md#undefined) + +## WhatsApp Cloud App Shortcuts + +The WhatsApp Cloud app has a list of shortcuts to ease usage. Use the slash command `/whatsapp help` to see the list of shortcuts and their functions + +* **/whatsapp connect:** to connect a new WhatsApp number +* **/whatsapp numbers:** to view and edit all connected WhatsApp number +* **/whatsapp support:** Get support information +* **/whatsapp help:** to see this shortcut menu + +## Connect WhatsApp Number + +{% hint style="success" %} +You can add as many WhatsApp number connected to a Facebook app as you wish. +{% endhint %} + +* Click on **Connect WhatsApp Number** on the first message sent by the `whatsapp-cloud.bot` or use the slash command `/whatsapp connect` + +

Connect WhatsApp Number

+ +* A modal opens up with details to be filled + +

Connect new WhatsApp number

+ +* Head over to your [Facebook Developer Account](https://developers.facebook.com/) and get the details from the app we created above then **Conect** + * **PhoneNo Id**: The WhatsApp phone number ID you want to connect + * **WhatsApp Business Id**: The WhatsApp Business Account ID of the WhatsApp number to connect + * **Access Token**: The App's access token, it can be either temporary or permanent + * **Facebook App Secret**: The Facebook App's secrete. This secret is used to verify if the messages are sent from authorized WhatsApp servers + * **Welcome Message**: First message your customer will receive upon messaging you + * **Conversation Finished Message**: Message sent to your customer when an agent closes the conversation + * **Default message for offline service**: Message sent to your customer when no agents are available online + +

Facebook app credentials

+ +### Setup Facebook app webhook url + +* After saving, you receive a message to configure the callback url in you app. + +{% hint style="info" %} +This is a one-time process. +{% endhint %} + +

Configure Facebook App webhook

+ +* Go to your the App created on your [Facebook Developer Console ](https://developers.facebook.com/apps) +* Navigate to **WhatsApp** > **Configuration** and paste the callback URL and Verify Token provided by Rocket.Chat then **Verify and save** + +

Set Facebook app callback URL

+ +* Still on the configuration page, click on **Manage** across the Webhook fields + +

Manage Facebook app webhook fields

+ +* **Subscribe** to `messages` and **Done** + +

Subscribe to Messages webhook Facebook app

+ +{% hint style="success" %} +After subscribing to the messages, the Rocket.Chat WhatsApp Cloud app is ready to use. +{% endhint %} + +## Edit WhatsApp Cloud Number + +To edit an already set WhatsApp number, + +* Type the slash command `/whatsapp numbers` +* A list of connected numbers are shown. Click on **Edit** across the number you wish to edit + +

Edit WhatsApp Cloud number

+ +* Make the necessary changes and **Update** + +## Disconnect WhatsApp Number + +To disconnect a WhatsApp number, + +* Type the slash command `/whatsapp numbers` +* A list of connected numbers are shown. Click on **Disconnect** across the number you wish to disconnect +* Confirm the prompt to **Disconnect** + +

Disconnect WhatsApp number

+ +* You get a message notifying about the disconnection \ No newline at end of file diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/whatsapp-cloud-app-install.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/whatsapp-cloud-app-install.md new file mode 100644 index 0000000000..365d44307b --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/whatsapp-cloud-app-install.md @@ -0,0 +1,30 @@ +# WhatsApp Cloud App Install + +Here you'll find the guide on installing the WhatsApp Cloud App for Rocket.Chat. + +{% hint style="info" %} +Prerequisites: + +* It is required to have your workspace on a secured publicly available domain. +* You need a Meta developer's account where you will get the WhatsApp API credentials. + * Make available a Facebook Business account to link with. +* Your workspace must be registered on Rocket.Chat Cloud. +{% endhint %} + +## Installing the WhatsApp Cloud App + +To install the WhatsApp Cloud Rocket.Chat App, + +* Go to **Administration > Marketplace** +* Search for the **WhatsApp Cloud** app and click on the item +* Click **Install** and **Agree** to the needed permissions to install + +

WhatsApp Cloud app permissions

+ +* After installing the app, you get a message from the `whatsapp-cloud.bot` in the `#omnichannel-whatsapp-cloud-setup` channel with instructions to follow +* You are greeted with a welcome message like below + +

WhatsApp Cloud App welcome message

+ +To continue, head over to the next section and [create a Facebook Developer's Account linked with WhatsApp](broken-reference). + diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-sandbox/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-sandbox/README.md new file mode 100644 index 0000000000..f16b92373e --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-sandbox/README.md @@ -0,0 +1,41 @@ +--- +description: An extension for the existing production-ready WhatsApp App. +--- + +# WhatsApp Sandbox + +The **WhatsApp Sandbox** app allows you quickly test [Rocket.Chat](http://rocket.chat/) integration with WhatsApp within a sandbox environment. In this test environment, you can test sending messages and templates and receive a webhook. + +{% hint style="info" %} +This app is not intended for production use. It is only intended for testing purposes. For production use, please use the [official WhatsApp integration](https://docs.rocket.chat/guides/app-guides/omnichannel-apps/whatsapp). +{% endhint %} + +{% hint style="warning" %} +You must have the [Omnichannel feature](../../../../../use-rocket.chat/workspace-administration/settings/omnichannel-admins-guide/) enabled, as well as have [agents](https://docs.rocket.chat/guides/omnichannel/agents) and [managers](https://docs.rocket.chat/guides/omnichannel/managers) assigned in order to receive and send Omnichannel messages\*\*.\*\* +{% endhint %} + +### Quickstart: How to test WhatsApp in the Sandbox + +* Get a Test API key from 360Dialog. You can get one by following the steps mentioned [here](https://docs.360dialog.com/whatsapp-api/whatsapp-api/sandbox). +* Once you have a Sandbox API key, you can update the app setting with the API key (From **Administrator -> Apps -> Installed -> Whatsapp Sandbox -> Settings**). +* You can then start sending messages from WhatsApp to [Rocket.Chat](http://rocket.chat/). + +{% hint style="info" %} +To get any support, please run the `/whatsapp-sandbox support` command. +{% endhint %} + +{% content-ref url="whatsapp-sandbox-installation.md" %} +[whatsapp-sandbox-installation.md](whatsapp-sandbox-installation.md) +{% endcontent-ref %} + +{% content-ref url="whatsapp-sandbox-configuration/" %} +[whatsapp-sandbox-configuration](whatsapp-sandbox-configuration/) +{% endcontent-ref %} + +{% content-ref url="whatsapp-sandbox-configuration/delete-whatsapp-sandbox.md" %} +[delete-whatsapp-sandbox.md](whatsapp-sandbox-configuration/delete-whatsapp-sandbox.md) +{% endcontent-ref %} + +{% content-ref url="whatsapp-sandbox-agents-guide.md" %} +[whatsapp-sandbox-agents-guide.md](whatsapp-sandbox-agents-guide.md) +{% endcontent-ref %} diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-sandbox/whatsapp-sandbox-agents-guide.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-sandbox/whatsapp-sandbox-agents-guide.md new file mode 100644 index 0000000000..1b281dc34e --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-sandbox/whatsapp-sandbox-agents-guide.md @@ -0,0 +1,13 @@ +# WhatsApp Sandbox Agent's Guide + +### To send messages + +If you have WhatsApp Sandbox integration in place and a user sends you a message using their 360dialog Sandbox account, it appears in your Rocket.Chat workspace just like any other Omnichannel conversation, as shown below: + +Click **Take It!** to serve this conversation. + +![](<../../../../../.gitbook/assets/Screen Shot 2022-08-02 at 13.44.33 (1).png>) + +## Send Template messages via slash command + +Please follow this link to [configure and send template messages via slash command and UI.](https://developer.rocket.chat/reference/api/rest-api/endpoints/apps-endpoints/whatsapp-endpoints/whatsapp-omnichannel-integration-api#2.-via-slash-command-and-ui) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-sandbox/whatsapp-sandbox-configuration/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-sandbox/whatsapp-sandbox-configuration/README.md new file mode 100644 index 0000000000..ff17e12ff7 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-sandbox/whatsapp-sandbox-configuration/README.md @@ -0,0 +1,69 @@ +# WhatsApp Sandbox Configuration + +## To get a Test API key from 360Dialog + +To get a test API-KEY, \*\*\*\* you can do the following: + +* Send a WhatsApp message from your phone to the phone number 4930609859535 with the content START +* Use this link: https://wa.me/4930609859535?text=START +* Use this QR Code:[https://docs.360dialog.com/whatsapp-api/whatsapp-api/sandbox#1.-get-a-test-api-key](https://docs.360dialog.com/whatsapp-api/whatsapp-api/sandbox#1.-get-a-test-api-key). +* As a response, you will receive your TestAPI-KEY. This API-KEY is associated with your phone WhatsApp number. Now you are able to use the 360dialog WhatsApp. + +{% hint style="info" %} +**What you can do in the Sandbox** + +* You can use the Test API-KEY to send `text` **messages** and `text` **templates** to your phone number. +* An **unlimited** amount of messages can be sent with the Sandbox. +* Your phone number acts like a **user** and can send and receive messages. +* The number can be a **landline**, as long as it can use WhatsApp. +* You can switch the **endpoint** at any time. +* Each **Sandbox API Key** is linked to one phone number, and you can only send test messages to that phone number. If you wish to test messages with more than 1 number, then you should set up a test WhatsApp Business Account (Staging WABA) instead of Sandbox. + +**What you can't do with the Sandbox:** + +* The Sandbox is a **test environment** only. You will not be able to use it to send messages to your clients. You can only send messages to your phone number. +* You cannot share media files within the environment. +* **Templates** messages can be sent a maximum of 10 times. You can choose between 2 predefined templates. +* Messages and Templates can be sent only to your **phone number**. +* We will only forward and trigger an **API** when your given number is involved. +* We do not yet provide response information when you use the WhatsApp API. +* You only have access to the WhatsApp API. +* Our Sandbox is available to test via the API, but any automated tests must be configured from your end. +{% endhint %} + +## **Configure Whatsapp Sandbox App Settings** + +Once you have a Sandbox API key, you can update the app settings as given below. + +To access the settings, go to **Administration** > **Workspace** > **Administrator -> Apps -> Installed -> Whatsapp Sandbox -> Settings** + +Following are the settings available:‌ + +* **WhatsApp Sandbox API KEY:** Provide the API KEY provided by 360Dialog for the Sandbox environment. Check here for more info about the Sandbox environment: [https://docs.360dialog.com/whatsapp-api/whatsapp-api/sandbox](https://docs.360dialog.com/whatsapp-api/whatsapp-api/sandbox). +* **WhatsApp Sandbox API KEY:** Input the API KEY provided by 360Dialog for the Sandbox environment. + +{% hint style="info" %} +You can check here for more info about the Sandbox environment: [https://docs.360dialog.com/whatsapp-api/whatsapp-api/sandbox](https://docs.360dialog.com/whatsapp-api/whatsapp-api/sandbox). +{% endhint %} + +* **Default department:** (Optional) Enter the name or department ID that will handle WhatsApp conversations. +* **Welcome Message:** (Optional) Enter the message to be sent to visitors when they send their first message +* **Conversation Finished Message:** (Optional) Enter the message to be sent to the visitor when an agent closes the conversation +* **Service Unavailable Message:** Enter the message to be sent to your customer when no agents are available online. +* **Notification of undeliverable message:** (Optional) Set this option to alert the agent that the message was not delivered to the WhatsApp platform. +* **Agents Display Info:** Enter the agent information (none, name, username) that would be appended in front of every message sent by an agent to a visitor +* **Allow Quote Messages:** If this option is enabled, agents can see the quoted message reference on Rocket.Chat when the Contact quotes/replies to a message on WhatsApp. +* **Message Status Endpoint URL:** Enter an endpoint URL here where you want to receive the status of each message exchanged. +* **Filter Message Status:** Filter the statuses (All, Regular Messages, or Template Messages )you wish to receive at the endpoint ("Message Status Endpoint URL") based on Message Type. +* **Allow List options for Quick Replies:** If this option is enabled, messages with more than three quick reply options would be rendered as List options. Note: Max limit for list options is 10. +* **Custom label for all List Option button:** Define a customized label message you want to display on all Quick reply options sent as List Message. + +After the successful configuration, you can start sending messages from WhatsApp to [Rocket.Chat](http://rocket.chat/). + +You can now start sending messages from WhatsApp Sandbox to [Rocket.Chat](http://rocket.chat/). + +{% hint style="info" %} +You cannot share media files within the Sandbox environment. +{% endhint %} + +![WhatsApp Sandbox Bot](<../../../../../../.gitbook/assets/WhatsApp Sandbox\_Chat.png>) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-sandbox/whatsapp-sandbox-configuration/delete-whatsapp-sandbox.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-sandbox/whatsapp-sandbox-configuration/delete-whatsapp-sandbox.md new file mode 100644 index 0000000000..e7bb177f21 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-sandbox/whatsapp-sandbox-configuration/delete-whatsapp-sandbox.md @@ -0,0 +1,5 @@ +# Delete Whatsapp Sandbox + +### To delete Whatsapp Sandbox from your workspace: + +Go to **Administration > Workspace > Apps > Installed > Whatsapp Sandbox.** Click **Uninstall.** diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-sandbox/whatsapp-sandbox-installation.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-sandbox/whatsapp-sandbox-installation.md new file mode 100644 index 0000000000..15ba9509b0 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-sandbox/whatsapp-sandbox-installation.md @@ -0,0 +1,10 @@ +# WhatsApp Sandbox Installation + +### To install WhatsApp Sandbox:‌ + +* Go to Rocket.Chat **Administration** > **Workspace** > **Apps**. +* Search for the **WhatsApp Sandbox** App under the **Marketplace** tab in the **Apps** menu on your Rocket.Chat **Administration** panel and then click **Install**. + +You are notified about all the permissions the app would access. Click **Install** again. + +WhatsApp Sandbox is installed successfully. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/README.md new file mode 100644 index 0000000000..8e7df703af --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/README.md @@ -0,0 +1,53 @@ +--- +description: Omnichannel Integration between Rocket.Chat and WhatsApp Business. +--- + +# WhatsApp + +It is a paid subscription and costs you $39 per month. + +![](<../../../../../.gitbook/assets/image (641) (1) (1) (1) (1) (1).png>) + +{% hint style="success" %} +Alternatively, you can use the [whatsapp-cloud-app](../whatsapp-cloud-app/ "mention") which connects Rocket.Chat directly to WhatsApp without any third-party service. +{% endhint %} + +{% hint style="warning" %} +**You must have the** [**Omnichannel feature**](../../../../../use-rocket.chat/workspace-administration/settings/omnichannel-admins-guide/) **enabled as well as have** [**agents**](https://docs.rocket.chat/guides/omnichannel/agents) **and** [**managers**](https://docs.rocket.chat/guides/omnichannel/managers) **assigned in order to receive and send Omnichannel messages.** +{% endhint %} + +{% content-ref url="whatsapp-installation.md" %} +[whatsapp-installation.md](whatsapp-installation.md) +{% endcontent-ref %} + +{% content-ref url="whatsapp-configuration/" %} +[whatsapp-configuration](whatsapp-configuration/) +{% endcontent-ref %} + +{% content-ref url="whatsapp-configuration/whatsapp-omnichannel-setup/" %} +[whatsapp-omnichannel-setup](whatsapp-configuration/whatsapp-omnichannel-setup/) +{% endcontent-ref %} + +{% content-ref url="whatsapp-configuration/whatsapp-omnichannel-setup/create-360dialog-account.md" %} +[create-360dialog-account.md](whatsapp-configuration/whatsapp-omnichannel-setup/create-360dialog-account.md) +{% endcontent-ref %} + +{% content-ref url="whatsapp-configuration/whatsapp-omnichannel-setup/connect-whatsapp-number-to-your-workspace.md" %} +[connect-whatsapp-number-to-your-workspace.md](whatsapp-configuration/whatsapp-omnichannel-setup/connect-whatsapp-number-to-your-workspace.md) +{% endcontent-ref %} + +{% content-ref url="whatsapp-configuration/whatsapp-omnichannel-setup/whatsapp-set-up-with-360dialog-account.md" %} +[whatsapp-set-up-with-360dialog-account.md](whatsapp-configuration/whatsapp-omnichannel-setup/whatsapp-set-up-with-360dialog-account.md) +{% endcontent-ref %} + +{% content-ref url="whatsapp-configuration/delete-whatsapp.md" %} +[delete-whatsapp.md](whatsapp-configuration/delete-whatsapp.md) +{% endcontent-ref %} + +{% content-ref url="whatsapp-agents-guide.md" %} +[whatsapp-agents-guide.md](whatsapp-agents-guide.md) +{% endcontent-ref %} + +{% content-ref url="../../../../../rocket.chat-resources/frequently-asked-questions/whatsapp-business-app-faqs.md" %} +[whatsapp-business-app-faqs.md](../../../../../rocket.chat-resources/frequently-asked-questions/whatsapp-business-app-faqs.md) +{% endcontent-ref %} diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-agents-guide.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-agents-guide.md new file mode 100644 index 0000000000..a3be1ca0fd --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-agents-guide.md @@ -0,0 +1,30 @@ +# WhatsApp Agent's Guide + +If you have WhatsApp integration in place and a user sends you a message using their WhatsApp account, + +![](<../../../../../.gitbook/assets/image (447).png>) + +it appears in your Rocket.Chat workspace just like any other Omnichannel conversation, as shown below: + +![](<../../../../../.gitbook/assets/image (452).png>) + +Click **Take It!** to serve this conversation. You can also send to and receive files from your WhatsApp end-user, as shown below: + +![](<../../../../../.gitbook/assets/image (453).png>) + +![](<../../../../../.gitbook/assets/image (451).png>) + +{% hint style="success" %} +Rocket.Chat and WhatsApp integration supports sharing of Location and Contacts messages your WhatsApp contacts. +{% endhint %} + +{% hint style="info" %} +Here are the shortcuts you can use in WhatsApp Bot:\ +1\. Type **/whatsapp view-templates** to see all Template messages.\ +2\. Type **/whatsapp send-template** to send a Template message\ +3.. Type **/whatsapp help** to see this shortcut again +{% endhint %} + +## Send Template messages via slash command + +Please follow this link to [configure and send template messages via slash command and UI.](https://developer.rocket.chat/reference/api/rest-api/endpoints/apps-endpoints/whatsapp-endpoints/whatsapp-omnichannel-integration-api#2.-via-slash-command-and-ui) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/README.md new file mode 100644 index 0000000000..2f3f4ea321 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/README.md @@ -0,0 +1,36 @@ +# WhatsApp Configuration + +To access the settings, go to **Administration** > **Workspace** > **Apps**. + +as shown below: + +![](<../../../../../../.gitbook/assets/2021-11-20\_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (1).png>) + +Search Whatsapp under the **Installed** tab in **Apps** menu on your Rocket.Chat administration panel. + +Click open your WhatApp instance to see the settings available to you as an administrator:‌ + +Following are the settings available:‌ + +![](<../../../../../../.gitbook/assets/2022-01-15\_19-53-39 (1) (1) (1) (4) (2) (1) (1) (1) (1) (1) (3) (2).png>) + +* **Notification of undeliverable message** to alert the agent that a message was not delivered to the WhatsApp platform. +* **Agents Display Info:** You can choose to display the agent's name or username. +* **File Uploads Enabled:** You can enable/disable file sharing and also set a limit for **Maximum File Upload Size (in bytes)**. +* **Accepted Media Types:** You can provide a list of media types comma-separated. Please leave it blank for accepting all media types. +* **Allow Quote Messages:** If enabled, Agents will see the quoted message reference on Rocket.Chat, when the Contact quotes/replies to a message on WhatsApp. + +{% hint style="warning" %} +Before activating **Allow Quote Messages** feature, please ensure that you have the following index on "rocketchat\_apps\_persistence" collection in DB: **appId\_1\_associations\_1** You'd face performance issues if this index is not present. This index was added on version 4.2.0, so if you're on or above this version, then you should be good. +{% endhint %} + +* **Template Message Metadata Refresh Interval(in Minutes):** For a better user experience, the app must cache some Template Messages meta-data information. You can define the duration (in minutes) within which the app will automatically refresh its cache.[ Further information on template messages is available here](https://developer.rocket.chat/guides/developer/apps-dev-guides/whatsapp-integration). +* Enter an endpoint URL here under **Message Status Endpoint URL**, where you want to receive the status of each message exchanged. +* **Filter Message Status:** Filter the statuses you wish to receive at the endpoint ("Message Status Endpoint URL") based on Message Type. +* **Allow List options for Quick Replies:** If enabled, messages with more than three quick reply options would be rendered as List options. Note: Max limit for list options is 10 +* **Custom label for all List Option buttons:** Define a custom label message which you want to display on all Quick reply options sent as List Message. +* Hit **Save Changes** to save your settings. + +‌Your WhatsApp is successfully configured, and you can see the new WhatsApp channel upon closing the administration panel, as shown below: + +![](<../../../../../../.gitbook/assets/image (442).png>) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/delete-whatsapp.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/delete-whatsapp.md new file mode 100644 index 0000000000..608fc28cdf --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/delete-whatsapp.md @@ -0,0 +1,9 @@ +# Delete Whatsapp + +To delete Whatsapp from your workspace: + +Goto **Administration>Apps>Installed>Instagram Direct** + +Hit **Uninstall** + +![](../../../../../../.gitbook/assets/2022-02-01\_16-32-31.png) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/README.md new file mode 100644 index 0000000000..d5582582fa --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/README.md @@ -0,0 +1,11 @@ +--- +description: >- + In order to support WhatsApp business API messages it is mandatory for you to + 360Dialog account. +--- + +# WhatsApp Omnichannel Setup + +After successful configuration, you see the following message: + +![](<../../../../../../../.gitbook/assets/image (651) (1) (1) (1) (1).png>) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/connect-whatsapp-number-to-your-workspace.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/connect-whatsapp-number-to-your-workspace.md new file mode 100644 index 0000000000..cf01e1face --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/connect-whatsapp-number-to-your-workspace.md @@ -0,0 +1,35 @@ +# Connect WhatsApp Number to your Workspace + +After copying your newly generated API key on 360Dialog, come back to your Rocket.Chat workspace and click **Connect WhatsApp Number**. + +![](<../../../../../../../.gitbook/assets/image (649) (1) (1) (1) (1) (1).png>) + +1. Paste your API key in **API Key**, +2. Associate this WhatsApp number to a specific **Department** if you want, +3. Set a **Welcome Message** if you want, +4. Set a **Conversation Finished Message** if you want. It is a message sent to your customer when an agent closes the conversation, +5. Set a **Default message for offline service** if you want. It is a message sent to your customer when no agents are available online, +6. Click **Connect**, + +as shown below: + +![](<../../../../../../../.gitbook/assets/image (662) (1) (1) (1) (1) (1).png>) + +Your WhatsApp number is now connected to Rocket.Chat, as shown below: + +![](<../../../../../../../.gitbook/assets/image (644) (1) (1) (1) (1) (1) (1).png>) + +Your WhatsApp end-users can use this number to communicate with you using WhatsApp. + +{% hint style="info" %} +You can set up as many WhatsApp numbers as you want. +{% endhint %} + +{% hint style="info" %} +Here are the shortcuts you can use in WhatsApp Bot:\ +1\. Type \***/whatsapp connect**\* to connect a new WhatsApp number.\ +2\. Type \***/whatsapp numbers**\* to view and edit all connected WhatsApp numbers.\ +3\. Type \***/whatsapp view-templates**\* to see all Template messages.\ +4\. Type \***/whatsapp send-template**\* to send a Template message\ +5\. Type \***/whatsapp help**\* to see this shortcut again +{% endhint %} diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/create-360dialog-account.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/create-360dialog-account.md new file mode 100644 index 0000000000..e5506a4b94 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/create-360dialog-account.md @@ -0,0 +1,27 @@ +# Create 360Dialog Account + +If you don't have a 360Dialog account: + +Click **No,** + +![](<../../../../../../../.gitbook/assets/image (664) (1) (1) (1) (1) (1) (1).png>) + +![](<../../../../../../../.gitbook/assets/image (648) (1) (1) (1) (1) (1).png>) + +{% hint style="info" %} +Please follow the 360Dialog [documentation](https://docs.360dialog.com/360-client-hub/submission-process) to create your 360Dialog account. +{% endhint %} + +To create a new 360Dialog account: + +Create your 360Dialog Account using this [Registration Link](https://hub.360dialog.com/lp/whatsapp/Tuk0tFPA?partner=eyJ3b3Jrc3BhY2VfaWQiOiI1YzQ3YTQ1ODZmOGE1NzAwMDE2ZGRhZWMiLCJhcHBfYmFzZV9lbmRwb2ludCI6Imh0dHBzOi8vdW5zdGFibGUucm9ja2V0LmNoYXQvYXBpL2FwcHMvcHJpdmF0ZS9mZGYxM2Y1NC1jMTMzLTQyYTAtODBkYy00NDFkZTMzYTZkYTcvYnU0SGVSNDZMNUpoRWdwTGUifQ%253D%253D\&redirect\_url=https://unstable.rocket.chat/api/apps/private/fdf13f54-c133-42a0-80dc-441de33a6da7/bu4HeR46L5JhEgpLe/auth/status). WhatsApp Business Account Submission form opens up, as shown below and you can see Rocket.Chat as partners with 360Dialog. + +![](<../../../../../../../.gitbook/assets/image (453) (1) (1).png>) + +Please fill out your details and click Accept Terms. + +![](<../../../../../../../.gitbook/assets/image (445) (1).png>) + +{% hint style="info" %} +Please follow the 360Dialog [documentation](https://docs.360dialog.com/360-client-hub/submission-process) and follow the rest of the process mentioned there to create your 360Dialog account. After you get through the process you get the API you need to set up the App. +{% endhint %} diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/whatsapp-set-up-with-360dialog-account.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/whatsapp-set-up-with-360dialog-account.md new file mode 100644 index 0000000000..a1faab7576 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/whatsapp-set-up-with-360dialog-account.md @@ -0,0 +1,11 @@ +# WhatsApp Set up With 360Dialog Account + +If you do have a 360Dialog account: + +Click **Yes.** + +![](<../../../../../../../.gitbook/assets/image (652) (1) (1) (1) (1) (1) (1).png>) + +You are given the instructions to login your 360Dialog account and add your company's WhatsApp number, as shown below: + +![](<../../../../../../../.gitbook/assets/image (676) (1) (1) (1) (1) (1).png>) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-installation.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-installation.md new file mode 100644 index 0000000000..28647da168 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/whatsapp-installation.md @@ -0,0 +1,15 @@ +# WhatsApp Installation + +To install WhatsApp:‌ + +Go to **Administration** > **Workspace** > **Apps**. + +as shown below: + +![](<../../../../../.gitbook/assets/2021-11-20\_23-29-48 (1) (1) (1) (1) (12) (10) (1) (1) (1) (1) (1) (11) (1).png>) + +Search Whatsapp under the **Marketplace** tab in **Apps** menu on your Rocket.Chat administration panel and install it + +You are notified about all the permissions the app would access. Click **Agree**. + +WhatsApp is installed successfully. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/poll-plus/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/poll-plus/README.md new file mode 100644 index 0000000000..9624a16638 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/poll-plus/README.md @@ -0,0 +1,83 @@ +# Poll Plus + +To install the **Poll Plus** App, + +* Go to **Administration > Marketplace.** +* Search for the **Poll Plus** app and click on it. +* Click on the **Install** button. + +## Quickstart + +To create a Poll with Poll Plus, + +* Enter the slash command _**/poll**_** ** in the message box of the channel you want to create the poll. +* Then, click **Enter** to execute**.** A pop-up form is triggered for you to create the poll. The form details include the following: + * **Insert your question:** The poll question. + * **Insert your options**: The reply options for the poll. + * **Add a choice**: Add more reply options for the poll. + * **Choice type**: Select if the poll will be multiple choice ,single choice, or [template based](poll-plus-features.md#template-based-poll). + * **Vote visibility**: Select if the poll will have Open Vote, Conidential Vote or Mixed Visibility Vote. + * **User-defined options:** Allow/disallow the user from adding their options to the poll. + * **Word Cloud:** Enable/disable the wordcloud feature on poll finish. +* After creating the poll, it is available in the room for the users to vote. + +To finish the poll, + +* Select the ![](<../../../../.gitbook/assets/three-dot-icon (1).png>)**three-dot icon at the** top of the poll. +* Then, click **Finish poll**. + +## Configuration Settings + +The Poll Plus App offers some customization settings on the App settings screen. + +* Go to **Administration > Apps > Poll Plus**. +* Select the **Settings** tab**.** +* Update the settings. Then click **Save Changes.** + +### Use Name Attribute + +The Poll Plus App provides you with an option to display the voter identity as either the full name or the username of the voter. + +### Timezone + +Since Rocket.Chat is used globally, everyone may not be comfortable with Coordinated Universal Time (UTC). The Poll Plus App allows you to choose which timezone to display the poll finish time. The default value for this setting is the UTC timezone. + +### Word Cloud API + +The word cloud feature uses an API link to fetch word clouds from. The free version of [Quickchart word cloud API](http://quickchart.io/documentation/word-cloud-api/) can be used for small servers . Moreover, it is also the default value for this setting. Quickchart comes with the following restrictions: + +* Requires Internet access. +* Enforces rate-limiting of 60 requests per minute per IP. + +In the case, you are hosting your own Rocket.Chat **on-premise** or need **more customization** than Quickchart, we've open-sourced an [internal developed word cloud API](https://github.com/RonLek/wordcloud-api). It comes with the following features: + +* No Internet access is required. +* No rate-limiting. +* It is free. + +{% hint style="info" %} +If the **Wordcloud API endpoin**t is blank and **Word Cloud** is enabled on the poll, the poll summary is displayed when the poll is finished. +{% endhint %} + +## Template Based Poll + +The Poll Plus App provides some pre-filled template polls. These are some of the most commonly used polls, and pre-filling them saves you from manually typing all the options. + +#### Overrated/Underrated Poll + +This poll provides options including **Overrated/Underrated**, Approprately Rated, Never Tried , Underrated. For example, you can use it to get feedback about the publicity of a particular feature in your company. + +#### 1-to-5 Poll + +This poll allows users to rate a particular subject between the numbers 1-5. + +#### 1-to-10 Poll + +This poll allows users to rate a particular subject between the numbers 1-10. + + + +![](../../../../.gitbook/assets/poll\_template\_based.gif) + +## + diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/poll-plus/poll-plus-features.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/poll-plus/poll-plus-features.md new file mode 100644 index 0000000000..0d6bab5e2b --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/poll-plus/poll-plus-features.md @@ -0,0 +1,84 @@ +# Poll Plus Features + +## Template Based Poll + +The Poll Plus App provides some pre-filled template polls. These are some of the most commonly used polls, and pre-filling them saves you from manually typing all the options. + +### Overrated/Underrated Poll + +This poll provides options including **Overrated/Underrated**, Approprately Rated, Never Tried , Underrated. For example, you can use it to get feedback about the publicity of a particular feature in your company. + +### 1-to-5 Poll + +This poll allows users to rate a particular subject between the numbers 1-5. + +### 1-to-10 Poll + +This poll allows users to rate a particular subject between the numbers 1-10. + +![](../../../../.gitbook/assets/poll\_template\_based.gif) + +## User Defined Options + +The Poll Plus App provides the option to allow or disallow users from adding options to an already created poll. When creating a poll, select the option to allow or disallow users from adding options to the poll. + +If you allow users to add choices, an **Add Choice** button is displayed below during the poll. + +To add a new choice, + +* Click the **Add Choice** button. A modal form is displayed. +* Enter the new option and click **Add**. The new option is now added to the poll. + +## Word Cloud + +In addition to the generated bar graph, the Poll Plus App provides users with the option to summarize the poll results in a word cloud. The word cloud feature uses a word cloud API for fetching these. + +{% hint style="info" %} +Learn more about setting up a word cloud API from the [configuration settings ](./#configuration-settings)guide. +{% endhint %} + +## Mixed Visibility Polls + +The Poll Plus App allows one to set some reply options as confidential while others are open. This means that the users that select the anonymous option will have thier identities hidden. + +To enable Mixed Visibility, + +* Set the visibility to **"Mixed Visibility Vote"** when creating the poll. +* On clicking **Create**, the Mixed Visibility modal pops open. Select the options you would like to be "Anonymous". +* Once the poll is created, options that were selected to be "Anonymous" will conceal the voter identities with the "**Anonymous**" label . + +{% hint style="info" %} +Votes casted on the options marked as "Anonymous" **would still** be counted within the total votes. +{% endhint %} + +## Live Poll + +Live Polls are an array of regular polls. A Live Poll is a **multi-question, timed** poll. + +Live Polls can be triggered with the `/poll live ` command. Here `` denotes the number of polls you want to be included within the Live Poll. + +Each poll within a Live Poll has a time limit to vote upon after which the current Poll ends and the next one is posted. Poll creators can also click on the **“Next Poll”** button to trigger a pre-scheduled finish of the current Poll. + +The **"Time limit to vote"** each poll is set as the number of seconds you want that poll to be active. + +Some excellent use-cases for the Live Poll are stand-up and retro meetings. An additional use case is by teachers wanting to conduct timed quizzes on Rocket.Chat. + +Here is how the Live Poll looks in action. The time at which the Poll will end is shown in the below figure. + +If you're outside of the UTC timezone, you can configure the Poll Plus App to use your timezone. Refer the [configuration doc](https://github.com/RocketChat/docs/tree/5b094b49dc67c76d97a30a786a914ee16d5772b0/guides/app-guides/poll-plus/poll-plus-app-configuration/settings.md) for more information. + +#### Late Retrieval + +Live Polls include an additional feature called **Late Retrieval**. This allows Live Polls to be posted at a later time in the future. + +To use the Late Retrieval feature make use of the `save` subcommand in the format: `/poll live save ` where `` denote the number of polls you want to be included within the Live Poll. + +Post-creation of the Live Poll, a message along with the **poll id** to retrieve it will be visible only to the poll creator. + +Make use of the `/poll live load ` command to "play" the Live Poll. Here `` is the poll id that was visible to the poll creator. + +In case the user enters a wrong or non-existent Live Poll ID a notification message, only visible to the user, is sent within the room. + +Speaking of teachers using Rocket.Chat for exams, the Live Poll Late Retrieval features proves an excellent tool for teachers to create quizzes even weeks before and then schedule the quiz on D-day with ease. All this while having control over the time limit to answer each question. + +**** diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/poll.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/poll.md new file mode 100644 index 0000000000..f6fc447d99 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/poll.md @@ -0,0 +1,26 @@ +# Poll + +To install the **Poll** App, + +* Go to **Administration > Marketplace.** +* Search for the **Poll** app and click on it. +* Click on the **Install** button. + +## How to use the Poll App + +To create a Poll, + +* Enter the slash command _**/poll**_** ** in the message box of the channel you want to create the poll. +* Then, click **Enter** to execute**.** A pop-up form is triggered for you to create the poll. The form details include the following: + * **Insert your question**: The poll question. + * **Insert your options**: The reply options for the poll. + * **Add a choice**: Add more reply options for the poll. + * **Choice type**: Select if the poll will be multiple choice or single choice. + * **Vote visibility**: Select if the poll will have "open vote" or "confidential vote." + * **Always Show Vote**: Select when to show poll results. +* After creating the poll, it is available in the room for the users to vote. + +To finish the poll, + +* Select the ![](<../../../.gitbook/assets/three-dot-icon (1).png>)**three-dot icon at the** top of the poll. +* Then, click **Finish poll**. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/teamsbridge-app/README.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/teamsbridge-app/README.md new file mode 100644 index 0000000000..f89a24d8ae --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/teamsbridge-app/README.md @@ -0,0 +1,78 @@ +# TeamsBridge App + +TeamsBridge App is a tool that connects collaborators across Rocket.Chat and Microsoft Teams. It acts as a bridge between **Teams** and **Rocket.Chat** to enable cross-platform messaging among users in an organization. This way, users can send and receive messages from their workspace or Teams account. + +{% hint style="info" %} +It supports other message formats, such as emojis, files, and links. Furthermore, operations like editing or deleting a message are also supported. +{% endhint %} + +## Setup the TeamsBridge App + +As an admin, ensure you have access to the Rocket.Chat admin account and Teams admin account for your organization before installing. + +To install the **TeamsBridge** app, + +* Go to **Administration > Apps > Marketplace.** +* Search for the **TeamsBridge** app. +* Click **Install.** Confirm that the app is enabled. +* On the **TeamsBridge App Info** screen, navigate to **Details > API and** copy the `GET auth endpoint URL`. + +{% hint style="info" %} +If it's a localhost URL, exposing the localhost port to the internet requires a tunnel service like Ngrok. +{% endhint %} + +### Set up an Azure Active Directory App + +To set up an Azure Active Directory App for your organization, + +* Login to[ Microsoft Azure Portal ](https://portal.azure.com/)with your organization's Teams admin account. +* Find and click **Azure Active Directory**. +* Click **Add**. Then, select **App registration**. +* Give the app a name. Select **Accounts in this organizational directory only** as the **Supported account type**. +* Select **Web** as the **Redirect URI platform.** Paste the `GET auth endpoint URL` you copied from the TeamsBridge App as the value. +* Click **Register**. Copy the **Application (client) ID** and **Directory (tenant) ID** shown on the overview page. +* Click **Add a certificate or secret > New Client Secret.** Fill in the description and expiration timeline. Then, click **Add**. +* After the client secret is created, copy the **Client Secret Value**. +* Navigate to **API permissions**. Select **Add a permission**, add the set of required permissions, and click **grant admin consent for org**. The table below outlines the required permissions you'll need to set. + +| Name | Type | Description | Requires Admin Consent | +| ---------------------------------------- | ----------- | ------------------------------------------------------------------------------------------ | ---------------------- | +| ChannelMessage.Read.All | Application | Read all channel messages | Yes | +| ChannelMessage.Send | Delegated | Send channel messages | No | +| ChannelMessage.UpdatePolicyViolation.All | Application | Flag channel messages for violating policy | Yes | +| Chat.Create | Delegated | Create chats | No | +| Chat.Create | Application | Create chats | Yes | +| Chat.Read.All | Application | Read all chat messages | Yes | +| Chat.ReadBasic | Delegated | Read names and members of user chat threads | No | +| Chat.ReadBasic.All | Application | Read names and members of all chat threads | Yes | +| Chat.ReadWrite | Delegated | Read and write user chat messages | No | +| Chat.ReadWrite.All | Application | Read and write all chat messages | Yes | +| ChatMember.Read | Delegated | Read the members of chats | Yes | +| ChatMember.Read.All | Application | Read the members of all chats | Yes | +| ChatMember.Read.WhereInstalled | Application | Read the members of all chats where the associated Teams application is installed. | Yes | +| ChatMember.ReadWrite | Delegated | Add and remove members from chats | Yes | +| ChatMember.ReadWrite.All | Application | Add and remove members from all chats | Yes | +| ChatMember.ReadWrite.WhereInstalled | Application | Add and remove members from all chats where the associated Teams application is installed. | Yes | +| ChatMessage.Read | Delegated | Read user chat messages | No | +| ChatMessage.Read.All | Application | Read all chat messages | Yes | +| ChatMessage.Send | Delegated | Send user chat messages | No | +| email | Delegated | View users' email address | No | +| Files.ReadWrite | Delegated | Have full access to user files | No | +| Group.ReadWrite.All | Delegated | Read and write all groups | Yes | +| offline\_access | Delegated | Maintain access to data you have given it access to | No | +| openid | Delegated | Sign users in | No | +| profile | Delegated | View users' basic profile | No | +| ServiceMessage.Read.All | Application | Read service messages | Yes | +| User.Read | Delegated | Sign in and read user profile | No | +| User.Read.All | Delegated | Read all users' full profiles | Yes | +| User.Read.All | Application | Read all users' full profiles | Yes | +| User.ReadWrite.All | Application | Read and write all users' full profiles | Yes | + +### Configure the TeamsBridge App + +* Navigate to **TeamsBridge App Info > Settings**. +* Update the **Directory (tenant) ID, Application (client) ID**, and **Client Secret** with the values you copied earlier. Then, click **Save Changes**. + +{% hint style="info" %} +Ensure you use the correct credentials and set the appropriate API permissions on the Azure Active Directory. +{% endhint %} diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/teamsbridge-app/using-the-teamsbridge-app.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/teamsbridge-app/using-the-teamsbridge-app.md new file mode 100644 index 0000000000..4ab4c05765 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/teamsbridge-app/using-the-teamsbridge-app.md @@ -0,0 +1,37 @@ +# Using the TeamsBridge App + +You must have your organization's **Teams** account or **Guest Accoun**t before using the TeamsBridge App. Without your authorization, no one can access your Teams data or send/receive messages for you. + +Log in to your Microsoft Teams account to allow the TeamsBridge App to synchronize your messages. + +To use TeamsBridge in a channel or DM, + +* Using the slash command, type `/teamsbridge-login-teams` to log in to your Teams account and **Send**. +* Click the **Login Teams** button from the message returned. It redirects you to log in to your Teams account. You can also log out by typing `/teamsbridge-logout-teams`. + +{% hint style="info" %} +A bot is created for all team users in the workspace. Communication with users in TeamsBridge is via bots. +{% endhint %} + +* After a successful login, type `/teamsbridge-provision-teams-bot-user` and click **Send** to create a bot user in the workspace for all users in your Teams organization. + +## Add users to a room using TeamsBridge. + +To add a user from your Teams organization to a [room ](../../../../use-rocket.chat/user-guides/rooms/)on your workspace, + +{% hint style="warning" %} +Adding a Teams Bot user is only supported for private channels, private teams, and private discussions. +{% endhint %} + +* Using the slash command, type `/teamsbridge-add-user` and **Send**. +* An **Add Teams users** screen is shown. Select all the users in your Teams organization you want to add to the room. +* Click **Add users.** + +## Send a Direct Meesgae (DM) using TeamsBridge + +Since communication on Rocket.Chat with TeamsBridge uses bots, click the bot of the user from the room, and send a message. They will receive the messages in their Teams account as direct messages. + +To create a direct message from the menu bar, + +* Click the **Create New** icon in the Rocket.Chat menu bar, then select **Direct Message**. +* Select the bot of user you want to start a DM with. Then, click **Create** and send a message. diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/trello.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/trello.md new file mode 100644 index 0000000000..b0c9ae8794 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/trello.md @@ -0,0 +1,90 @@ +# Trello + +Here you'll find the guide on setting up the Trello App for Rocket.Chat. + +With this app, you will be able to receive notifications about your Trello activities which include + +* Creating cards and comments +* Completing checklists items +* uploading attachments etc + +## Installation + +{% hint style="warning" %} +It is required you have the following to successfully setup the Trello app + +* A publicly accessible Rocket.Chat server +* A Trello account with some boards to be watched. +{% endhint %} + +To install the Trello Rocket.Chat App, + +* Go to **Administration > Workspace > Marketplace** +* Search for the **Trello** app and click on the item +* Click **Install** and accept the needed permissions + +![](<../../../.gitbook/assets/image (647).png>) + +You should see an interface with the app details showing you have installed it. + +A direct message is then received from the `trello.bot` to assist you with the setup of the app + +![](<../../../.gitbook/assets/image (659).png>) + +Now that you have the app installed on your server, it is time to configure the integration. + +## Configuration + +* Let's start the setup by running the slash command `/trello setup` in the chatbox + +![](<../../../.gitbook/assets/image (660).png>) + +* A set of instructions are given to follow + +![](<../../../.gitbook/assets/image (682).png>) + +* Head over to [https://trello.com](https://trello.com/app-key/) and login +* Visit [https://trello.com/app-key/](https://trello.com/app-key/) and accept the terms to see your Trello API key +* Copy the server's url given by the `trello.bot` and paste in the **New Allowed Origin** field on your Trello api page then **Submit** + +![](<../../../.gitbook/assets/image (697).png>) + +* Next copy the `API Key` and `OAuth Secret` from the Trello page. It is needed to complete the configuration on the Trello app's configuration page within Rocket.Chat +* With the credentials provided, hit Save changes to commit +* After the setup, all you have to do is authorize the user so it can connect and interact with the app. This is done by typing the slash command `/trello authorize` in the `trello.bot` chat and **Authenticate** the app to your Trello account. + +![](<../../../.gitbook/assets/image (595).png>) + +* A new window is opened click **Allow** in the prompt to grant all the permissions needed to run the Trello App integration smoothly. + +![](<../../../.gitbook/assets/image (34) (2).png>) + +* When successful, you get a confirmation message from the `trello.bot` + +![](<../../../.gitbook/assets/image (48).png>) + +When all that is done, your Trello app is ready to be used. + +## Linking Trello Board to Rocket.Chat Channel + +After configuring the Trello App it is time to link your Trello boards for monitoring in any Rocket.Chat channel of your choice. + +{% hint style="warning" %} +Trello boards can only be linked to Channels. Teams, Discussions or Direct Messages are not supported. +{% endhint %} + +{% hint style="info" %} +You can always run the slash command `/trello help` from anywhere to get help. +{% endhint %} + +* Go ahead and [create a channel](../../../use-rocket.chat/user-guides/rooms/channels/create-a-new-channel.md) where you want to receive your Trello board notifications in. Skip this step if you already have one +* Open up your desired channel and type the slash command `/trello link` to link a Trello board +* A list of Trello boards linked to your account is shown. Select a board of your choice and **Link** + +![](<../../../.gitbook/assets/image (588) (2) (1).png>) + +* After linking, any activity performed on Trello, will be notified in the corresponding channel + +![](<../../../.gitbook/assets/image (109).png>) + +![](<../../../.gitbook/assets/image (236).png>) diff --git a/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/zoom.md b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/zoom.md new file mode 100644 index 0000000000..f5e9808c19 --- /dev/null +++ b/extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/zoom.md @@ -0,0 +1,42 @@ +--- +description: Here you will find information on how to install and use the Zoom App. +--- + +# Zoom + +## Installation + +You can install our Zoom Rocket.Chat App from your Rocket.Chat Administration area. + +* Go to **Administration > Workspace > Marketplace** +* Search for the **Zoom** and click on the item +* Click on the **Install** button + +Now that you have the app installed in your server, it is time to configure the integration with your Zoom account. + +## Configuration + +### Requirements + +* First, you'll need to have at least a [Pro account](https://zoom.us/pricing) for users (besides you) to be able to create Zoom links. Those users will need to be added to your Zoom account. +* For other users to be able to use the Zoom App, their Rocket.Chat registered emails need to be the same as registered at Zoom. + +### Step 1: JWT App at Zoom Marketplace + +You'll need to create a new JWT app at [Zoom's Marketplace](https://marketplace.zoom.us). + +* Sign in at [marketplace.zoom.us](https://marketplace.zoom.us) +* Go to "Develop" at the top of the screen and select "Build app" in the menu +* Choose the "JWT" type and hit "Create" +* Enter a name for the app and hit "Create" +* Enter the Company Name and Developer Contact Information for your app and then hit "Continue". +* At the App Credentials tab page, _get the app's API Key and API Secret_. + +### Step 2: Configure the Slash command at Rocket.Chat + +* Go to the settings of the Zoom App in **Administration > Workspace > Apps > Zoom** +* Place the API Key and API Secret at their respective fields and save. + +## Usage + +At any room, type "/zoom start" to generate a Zoom link. You can also type "/zoom start _topic_" to add a topic to the room. The topic can be any word or sentence. diff --git a/getting-support.md b/getting-support.md deleted file mode 100644 index 8b9ad3d9b5..0000000000 --- a/getting-support.md +++ /dev/null @@ -1,195 +0,0 @@ ---- -description: Requirements for official support from the Rocket.Chat team ---- - -# Getting Support - -## Introduction - -Setting up and running software is not always an easy thing. We get that. That's why we try to help everybody as good as possible with their instance of Rocket.Chat. And while we do like to help everybody, it just isn't feasible in any case. That is why we have to limit the support by the core team to some extent. - -The following paragraphs will tell you about limits of the support the core team can give as well as where to find the community to help you and how you yourself can contribute by reporting bugs to us on GitHub. - -## Official support - -In order to obtain official support from our team, we have a minimum set of requirements. These requirements are necessary for us to access essential system information, to provide an SLA, to answer questions, or to provide a solution for the problem. - -Only installations matching these minimum requirements can be covered by our SLAs and our paid Support Policy, some requirements may vary depending on the installation size as described in the following sections. - -## Environment - -We require the installation to run the Docker image provided by the Rocket.Chat team, this makes it possible to isolate external factors. It ensures that the support request refers to our application and not to the following factors. - -1. Problems during the compilation process -2. Problems during the installation process -3. Missing or outdated dependencies -4. Installation of non-official versions - -This ensures we can provide quick fixes and a more efficient way to reproduce problems leading to the most efficient support flow possible. - -{% page-ref page="installing-and-updating/docker-containers/" %} - -## Rocket.Chat versions - -Rocket.Chat provides support for, at least, 3 months for each release. Rocket.Chat provides support for 6 months to the latest releases of each major version, e.g. 1.3 is the latest release of major version 1.x before major version 2.0. Rocket.Chat may provide a longer period of support depending on the necessity, check the table below to verify the final support date of each release version. - -By "support" we mean that Rocket.Chat will provide only security fixes and answer support tickets related to configuration and usage for the versions listed below. Bugs not related to security issues will be fixed only in new versions. - -{% hint style="info" %} -In case of security-relevant bugs, we might decide to backport patches to older releases on a case-by-case basis. Please understand though, that those will be rare exceptions. If you want to play it safe, upgrade to the latest stable. -{% endhint %} - -| Rocket.Chat Release | Latest Version | Released At | End of Life | -| :--- | :--- | ---: | ---: | -| 1.0 | [1.0.5](https://github.com/RocketChat/Rocket.Chat/releases/tag/1.0.5) | Apr 2019 | Jul 2019 | -| 1.1 | [1.1.5](https://github.com/RocketChat/Rocket.Chat/releases/tag/1.1.5) | May 2019 | Aug 2019 | -| 1.2 | [1.2.4](https://github.com/RocketChat/Rocket.Chat/releases/tag/1.2.4) | Jun 2019 | Sep 2019 | -| **1.3 \(LTS\)** | [1.3.5](https://github.com/RocketChat/Rocket.Chat/releases/tag/1.3.5) | **Jul 2019** | **Jan 2020** | -| 2.0 | [2.0.1](https://github.com/RocketChat/Rocket.Chat/releases/tag/2.0.1) | Aug 2019 | Nov 2019 | -| 2.1 | [2.1.3](https://github.com/RocketChat/Rocket.Chat/releases/tag/2.1.3) | Sep 2019 | Dec 2019 | -| 2.2 | [2.2.1](https://github.com/RocketChat/Rocket.Chat/releases/tag/2.2.1) | Oct 2019 | Jan 2020 | -| 2.3 | [2.3.3](https://github.com/RocketChat/Rocket.Chat/releases/tag/2.3.3) | Nov 2019 | Feb 2020 | -| **2.4 \(LTS\)** | [2.4.14](https://github.com/RocketChat/Rocket.Chat/releases/tag/2.4.14) | **Dec 2019** | **Jun 2020** | -| 3.0 | [3.0.13](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.0.13) | Jan 2020 | Apr 2020 | -| 3.1 | [3.1.3](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.1.3) | Mar 2020 | Jun 2020 | -| 3.2 | [3.2.2](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.2.2) | Apr 2020 | Jul 2020 | -| 3.3 | [3.3.3](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.3.3) | May 2020 | Aug 2020 | -| 3.4 | [3.4.3](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.4.3) | Jun 2020 | Sep 2020 | -| 3.5 | [3.5.4](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.5.4) | Jul 2020 | Oct 2020 | -| 3.6 | [3.6.3](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.6.3) | Aug 2020 | Nov 2020 | -| 3.7 | [3.7.4](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.7.4) | Sep 2020 | Dec 2020 | -| 3.8 | [3.8.9](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.8.9) | Oct 2020 | Jan 2021 | -| 3.9 | [3.9.7](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.9.7) | Nov 2020 | Feb 2021 | -| 3.10 | [3.10.7](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.10.7) | Dec 2020 | Mar 2021 | -| 3.11 | [3.11.5](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.11.5) | Jan 2021 | May 2021 | -| 3.12 | [3.12.7](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.12.7) | Feb 2021 | May 2021 | -| 3.13 | [3.13.5](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.13.5) | Mar 2021 | Jun 2021 | -| 3.14 | [3.14.5](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.14.5) | Apr 2021 | Jul 2021 | -| 3.15 | [3.15.3](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.15.3) | May 2021 | Aug 2021 | -| 3.16 | [3.16.2](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.16.2) | Jun 2021 | TBD | - -{% hint style="warning" %} -Always update to the latest stable version before reporting any bugs or before ask for help from the community. -{% endhint %} - -{% hint style="info" %} -**LTS** means "Long Time Support" and it's used to identify the last **minor** version before a **major** version, e.g. 2.4 is the last minor before 3.x. A new major version means that the version introduced a breaking change and requires attention on the upgrade, so we maintain the support of the previous version for a longer time in order to give you more time to plan and test the upgrade. -{% endhint %} - -### Rocket.Chat Cloud - -Rocket.Chat manages upgrades and provides support to Rocket.Chat Cloud users regardless of the release version. If a Rocket.Chat Cloud user with an outdated server version sends in a support request, his server might be upgraded to the latest stable version without acknowledgment to ensure the best performance. - -### Rocket.Chat Services - -Rocket.Chat Services include services such as our push gateway, the marketplace, and other services managed by Rocket.Chat. - -October 1st our services will no longer continue to guarantee support for Rocket.Chat 0.x. After this date, you may receive errors or warnings about incompatibility. - -3 months after a new major release, e.g. 2.x, the last major release, e.g. 1.x, will have the Services support deprecated and you may receive warnings about the deprecation. 5 months after the deprecation the support will be removed and you may receive errors and warnings about incompatibility. - -#### Cloud Service Support - -| Rocket.Chat Release | Deprecation Date | End of Life Date | -| :--- | ---: | ---: | -| 0.x | Aug 2019 | Jan 2020 | -| 1.x | Nov 2019 | Apr 2020 | -| 2.x | May 2020 | Oct 2020 | -| 3.x | TBD | TBD | - -## MongoDB versions - -Each Rocket.Chat release supports different versions of MongoDB, the table below presents the support of MongoDB versions for each major Rocket.Chat release in addition of the deprecated version that will be removed on the next or subsequent versions. - -> Rocket.Chat only adds or removes support of MongoDB versions on major releases so the minor versions are ommited on table below. - -#### MongoDB Support - -| Rocket.Chat Release | Supported Versions | Deprecated Version | -| :--- | ---: | ---: | -| 1.x | 3.2, 3.4, 3.6, 4.0 | 3.2 | -| 2.x | 3.4, 3.6, 4.0 | 3.4 | -| 3.x | 3.4, 3.6, 4.0 | 3.4 | - -The upgrade guides available from the official MongoDB documentation are listed below. Bear in mind that it's not possible to skip a version when upgrading, e.g. to upgrade from 3.2 to 3.6 it's necessary to upgrade from 3.2 to 3.4 first and then to 3.6. - -* [Upgrade Replicat Set to 3.4](https://docs.mongodb.com/manual/release-notes/3.4-upgrade-replica-set/) -* [Upgrade Replicat Set to 3.6](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-replica-set/) -* [Upgrade Replicat Set to 4.0](https://docs.mongodb.com/manual/release-notes/4.0-upgrade-replica-set/) - -> It's possible to bypass the MongoDB version check by using the environment variable `BYPASS_MONGO_VALIDATION=true`. Bare in mind that this work around should be used only when extrictly necessary and may prevent some functionalities to work properly or even prevent the server to start. - -## Browser versions - -The ecosystem of browsers has been and still is, an ever-evolving field of change. Since the rate of change is tremendous, we also have to limit the support to recent browsers. We're usually quite good with that but some older browsers just don't support some features that we build upon. That is why we limit or support for browsers in the following way: - -We support the following desktop browsers and versions: - -| Browser | Supported Versions | -| :--- | :--- | -| Google Chrome | Latest 3 versions | -| Mozilla Firefox | Latest 3 versions | -| Apple Safari | Latest 2 versions | -| Microsoft Edge | Latest 2 versions | -| Microsoft Internet Explorer | Latest version only | - -> There may be small exceptions in rare cases. - -That being said, here's how you can find out if **your** browser version is still supported \(all lists include an indication of a specific browser version is still supported or not\): - -* [Version history of Mozilla Firefox](https://en.wikipedia.org/wiki/Firefox_version_history) -* [Version history of Google Chrome](https://en.wikipedia.org/wiki/Google_Chrome_version_history) -* [Version history of Apple Safari](https://en.wikipedia.org/wiki/Safari_version_history) -* [Version history of Microsoft Edge](https://en.wikipedia.org/wiki/Microsoft_Edge#Release_history) -* [Version history of Microsoft Internet Explorer](https://en.wikipedia.org/wiki/Internet_Explorer_version_history) - -## Hardware - -The support is limited to installations matching the requirements described in the [Minimum ](installing-and-updating/hardware-requirements.md)[Hardware](installing-and-updating/hardware-requirements.md) [Requirements](installing-and-updating/hardware-requirements.md) page. - -## Monitoring - -We require monitoring for all supported installations. All installations must continually collect [Metrics](https://github.com/RocketChat/Rocket.Chat.Metrics) regarding the installation's instances and database. Rocket.Chat supports the industry-standard Prometheus + Grafana monitoring stack. Grafana dashboards required for support are available in the [Metrics](https://github.com/RocketChat/Rocket.Chat.Metrics) repository. - -Explanations about each metric/graph which help reading and interpreting the data can be found in this [dedicated document here](https://github.com/RocketChat/Rocket.Chat.Metrics/blob/master/metrics.md). - -## Data access - -We do not require access to the servers, instances, or databases to provide support, but we may require access to the logs if we consider them necessary to identify the problem. - -Types of logs we may require: - -1. Server logs -2. Web browser logs -3. Mobile logs - -## Community support - -We have a great community that likes to give back. - -Some great places to ask your questions: - -* [Rocket.Chat forums](https://forums.rocket.chat/) -* Stack Overflow [Rocket.Chat Tag](https://stackoverflow.com/questions/tagged/rocket.chat) -* [Server Fault](https://serverfault.com/search?q=Rocket.Chat) - -Our community also often hangs out on our [community server](https://open.rocket.chat). - -Some of the channels to get help: - -* [\#support](https://open.rocket.chat/channel/support) channel for help with general Rocket.Chat -* [\#ubuntu-snap](https://open.rocket.chat/channel/ubuntu-snap) channel for help with snap installs -* [\#desktop](https://open.rocket.chat/channel/desktop) channel for help with the desktop client -* [\#bots](https://open.rocket.chat/channel/bots) channel for help with chatbot scripting -* [\#dev](https://open.rocket.chat/channel/dev) channel for developers needing help developing new features - -While the de facto language amongst the Rocket.Chat community is English it may be easier for some to discuss their issues in their native language. Have a look at the following channels to see whether there is a user group for your language: - -* [\#ug\_german](https://open.rocket.chat/channel/ug_german) German Rocket.Chat User Group - -Remember to have a little patience. Support is provided by other members of the community like you in their free time. - -## Reporting bugs - -If you think you have found a bug. Please see [Reporting Issues](contributors/how-can-i-help/reporting-issues.md) - diff --git a/guides/administration/README.md b/guides/administration/README.md deleted file mode 100644 index 5d740eba5d..0000000000 --- a/guides/administration/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Administration - diff --git a/guides/administration/administration/README.md b/guides/administration/administration/README.md deleted file mode 100644 index 5d740eba5d..0000000000 --- a/guides/administration/administration/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Administration - diff --git a/guides/administration/administration/apps.md b/guides/administration/administration/apps.md deleted file mode 100644 index 22edf4b628..0000000000 --- a/guides/administration/administration/apps.md +++ /dev/null @@ -1,23 +0,0 @@ -# Apps - -You can view all of your installed Rocket.Chat Apps and manage them. - -To access apps: - -![](../../../.gitbook/assets/image%20%28385%29.png) - -![](../../../.gitbook/assets/image%20%28389%29.png) - -Here you can : - -* **Enable/Disable/Uninstall** any of your installed app. -* View app details. -* View **logs** of the app. -* Provide additional user settings and configuration for the app. - -{% hint style="info" %} -All Rocket.Chat Apps might not require any setup configuration or user settings. -{% endhint %} - -If you are looking for the manual/user guide of a particular app, please find them [here](https://docs.rocket.chat/guides/rocket-chat-apps) or use the search bar on the top right corner. - diff --git a/guides/administration/administration/connectivity-services.md b/guides/administration/administration/connectivity-services.md deleted file mode 100644 index 57444c753e..0000000000 --- a/guides/administration/administration/connectivity-services.md +++ /dev/null @@ -1,69 +0,0 @@ -# Connectivity Services - -## Introduction - -Rocket.Chat Cloud provides a list of features/services such as - -* [Rocket.Chat Push Notification Gateway](https://docs.rocket.chat/guides/administrator-guides/notifications/push-notifications#push-gateway) -* [Rocket.Chat Marketplace](https://rocket.chat/marketplace) -* Omnichannel proxy -* Automatic license synchronization - -In order to use those services, Rocket.Chat server must be connected to [cloud.rocket.chat](https://cloud.rocket.chat/). Below are the steps required to connect and synchronize a Rocket.Chat self-hosted server to our cloud infrastructure. - -{% hint style="info" %} -The steps below are required only for self-managed instances. Rocket.Chat SaaS workspaces are always connected to our Cloud infrastructure. -{% endhint %} - -{% hint style="info" %} -In order to connect your server to our Cloud, your Rocket.Chat server must be at least on version 1.3.2. -{% endhint %} - -## Registration steps - -**If you don't have a cloud account yet:** - -1. Go to [cloud.rocket.chat](https://cloud.rocket.chat/) and create a new account - -![](../../../.gitbook/assets/image%20%28154%29.png) - -1. Fill up the registration form and "Register" - -![](../../../.gitbook/assets/c_4.png) - -1. A verification email will be sent in order to activate your new Cloud account - -![](../../../.gitbook/assets/image%20%28155%29.png) - -1. The verification link will forward to cloud.rocket.chat. After the validation, you will be logged into your Cloud console. In order to register your self-hosted workspace, please select the "Register self-managed" button - -![](../../../.gitbook/assets/c_6.png) - -1. A pop-up will be displayed in order to select the workspace type: -2. Internet Access: Rocket.Chat server that has a connection to the internet \(connected to the outside\) -3. No Internet Access: Special cases where Rocket.Chat server has no connection at all \(totally air-gapped\). - -In this document, we are covering only the "Internet Access" option - -1. When selecting the "Internet Access" option, a registration token will be generated. Copy the token as this will be used to register your Rocket.Chat server. - -![](../../../.gitbook/assets/c_8.png) - -1. On your Rocket.Chat server, go to _Administration > Connectivity Services._ - - Fill up the "Email" field with the email related to your Rocket.Chat Cloud account and in the "Token" field please paste the registration token generated. Finally, hit the "Connect" button. - -![](../../../.gitbook/assets/c_9.png) - -1. It will set the connection between your Rocket.Chat server and Rocket.Chat Cloud console. When the connection is successful, the _Connectivity Services_ panel will look like this: - -![](../../../.gitbook/assets/c_10.png) - -1. Finally, in order to ensure the synchronization between Rocket.Chat server and Rocket.Chat Cloud, hit the "Sync" button as this will trigger the synchronization framework. - -This is recommended right after registering your server. The newly registered workspace will be listed in the "Workspace" section at [cloud.rocket.chat](https://cloud.rocket.chat/) - -{% hint style="success" %} -If you are an enterprise customer \(self-hosted Enterprise or Pro-licensed\), we create a cloud account for you. Please login to your workspace, insert the cloud registration code you received in the welcome email, and then hit **Login to** [**Rocket.Chat**](http://rocket.chat/) **Cloud** -{% endhint %} - diff --git a/guides/administration/administration/custom-emoji.md b/guides/administration/administration/custom-emoji.md deleted file mode 100644 index e6d8797bdc..0000000000 --- a/guides/administration/administration/custom-emoji.md +++ /dev/null @@ -1,27 +0,0 @@ -# Custom Emoji - -Rocket.Chat allows you to add custom emoji files that can be used within Rocket.Chat . - -## Add a Custom Emoji - -* Go to the **Administration** tab -* Select **Custom Emoji** - -![](../../../.gitbook/assets/image%20%28349%29.png) - -* Click the **+** on the top right -* Enter a name for your custom emoji -* Enter an alias for your custom emoji -* Browse and choose a image file in PNG or JPEG format -* Press **Save** - -## Use your Custom Emoji - -To use a custom emoji that you've added either click the emoji icon on the message input and search for your custom emoji by its name or enter **`:custom_emoji_name:`** or **`:custom_emoji_alias:`** in the message box to directly add the emoji. - -## Delete/Edit Custom Emoji - -Search and click on the custom emoji you want to delete in the `Custom Emoji` section under the `Administration` tab. - -Press **Delete** or **Edit** to delete or update the selected emoji, respectively. - diff --git a/guides/administration/administration/custom-sounds.md b/guides/administration/administration/custom-sounds.md deleted file mode 100644 index 64b3ec170c..0000000000 --- a/guides/administration/administration/custom-sounds.md +++ /dev/null @@ -1,27 +0,0 @@ -# Custom sounds - -Rocket.Chat allows you to add custom sound files that can be used as a notification sound. Users can customize their notification sound preferences for specific channels. - -Upload sound files in MP3 format. - -## Add a Custom Sound - -* Go to the **Administration** tab -* Select **Custom Sounds** -* Click the **+** on the top right -* Enter a name for your custom sound -* Browse and choose an MP3 file -* Press **Save** - -## Use your Custom Sound - -See [Notification Preferences](../../user-guides/channels/#notifications-preferences) to use this custom sound as a notification. - -## Delete/Edit Custom Sound - -Search and click on the sound you want to delete in the `Custom Sound` section under the `Administration` tab. - -Press **Delete** or **Edit** to delete or update the selected sound, respectively. - -**Note**: Admins can set who has the [permissions](permissions-1.md) to manage these sounds. - diff --git a/guides/administration/administration/custom-user-status.md b/guides/administration/administration/custom-user-status.md deleted file mode 100644 index 189f548f56..0000000000 --- a/guides/administration/administration/custom-user-status.md +++ /dev/null @@ -1,25 +0,0 @@ -# Custom User Status - -Rocket.Chat allows you to add your custom status other than the default status presets available within Rocket.Chat . - -## Add a Custom Status - -* Go to the **Administration** tab -* Select **Custom User Status** -* Click the **+** on the top right -* Enter a name for your custom status. -* Select a presence for your custom status. -* Press **Save** - -## Use your Custom Status - -Once your custom status is added, it will show up along with the default status presets. - -To use a custom emoji that you've added, click on your avatar on the top left, and within the **status** menu, select your custom status. - -## Delete/Edit Custom Status - -Search and click on the custom status you want to delete in the `Custom Status` section under the `Administration` tab. - -Press **Delete** or **Edit** to delete or update the selected status, respectively. - diff --git a/guides/administration/administration/email-inboxes.md b/guides/administration/administration/email-inboxes.md deleted file mode 100644 index 8ebec8f221..0000000000 --- a/guides/administration/administration/email-inboxes.md +++ /dev/null @@ -1,8 +0,0 @@ -# Email Inboxes - -Please check the documentation here: - -{% page-ref page="../../app-guides/omnichannel-apps/email-inboxes/email-inbox-admin-guide.md" %} - - - diff --git a/guides/administration/administration/engagement-dashboard.md b/guides/administration/administration/engagement-dashboard.md deleted file mode 100644 index 45f672bbbd..0000000000 --- a/guides/administration/administration/engagement-dashboard.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -description: This feature adds the ability to evaluate user engagement on the channels. ---- - -# Engagement Dashboard - -{% hint style="info" %} -Engagement Dashboard is an enterprise-only feature. -{% endhint %} - -To access the **Engagement Dashboard:** - -1. Go to **Administration.** - -![](../../../.gitbook/assets/image%20%2830%29.png) - -1. Click **Engagement Dashboard**. - -![](../../../.gitbook/assets/image%20%28139%29%20%281%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29.png) - -As an administrator, you can see your _User_, _Messages_, and _Channels_ engagement here. - -## User - -The user tab shows you the following engagement matrices. - -![](../../../.gitbook/assets/image%20%28129%29%20%281%29%20%281%29%20%281%29.png) - -Download the data for any matrix you want in CSV, using the download button, as shown below: - -![](../../../.gitbook/assets/image%20%28134%29.png) - -### New users - -Select the time period for which you want to check your new user, as shown below: - -![](../../../.gitbook/assets/image%20%28132%29.png) - -New users matrix represents the total number of new users for the selected period of time, as shown below: - -![](../../../.gitbook/assets/image%20%28140%29.png) - -You can also see the number by which users increased/decreased from the last interval of the selected period, as shown below: - -![](../../../.gitbook/assets/image%20%28145%29.png) - -### Active users - -It represents the total number of users using the application daily weekly and monthly as shown below: - -![](../../../.gitbook/assets/image%20%28130%29.png) - -You can also see the number by which active users increased/decreased, as shown below: - -![](../../../.gitbook/assets/image%20%28133%29.png) - -### Users by the time of day - -It represents the total number of users by time of the day for the selected period of time, as shown below: - -![](../../../.gitbook/assets/image%20%28143%29.png) - -The darker the color of the brick the more users are online at that time. You can also check the exact count of users for an hour by hovering over the mouse cursor on the respective brick, as shown below: - -![](../../../.gitbook/assets/image%20%28131%29.png) - -### When is the chat busier? - -It represents the time by day or hour when your chat is busier, as shown below: - -![](../../../.gitbook/assets/image%20%28127%29.png) - -## Messages - -The Messages tab shows you the following engagement matrices. - -![](../../../.gitbook/assets/image%20%28138%29.png) - -### Messages Sent - -It represents the total number of messages sent for the selected period of time, as shown below: - -![](../../../.gitbook/assets/image%20%28142%29.png) - -You can also see the number by which the sent messages count increased/decreased from the last interval of the selected period, as shown below: - -![](../../../.gitbook/assets/image%20%28135%29.png) - -### Where are the messages being sent? - -It represents the public, private, and top 5 most popular channel to which the most messages are being sent for a selected period of time, as shown below: - -![](../../../.gitbook/assets/image%20%28128%29.png) - -## Channels - -This table shows you the count of _messages being sent_ and the _increment/decrement_ of count from the last interval for a selected period for **all** your channels. You can also download this information in a CSV file. - -![](../../../.gitbook/assets/image%20%28141%29.png) - diff --git a/guides/administration/administration/federation-dashboard.md b/guides/administration/administration/federation-dashboard.md deleted file mode 100644 index 3cca77e0c5..0000000000 --- a/guides/administration/administration/federation-dashboard.md +++ /dev/null @@ -1,4 +0,0 @@ -# Federation Dashboard - -Document Under Development - diff --git a/guides/administration/administration/import/README.md b/guides/administration/administration/import/README.md deleted file mode 100644 index bd3aa00092..0000000000 --- a/guides/administration/administration/import/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Import - -Import data from other services - -[Slack](slack/) - -[Hipchat](hipchat/) - -[CSV](csv.md) - diff --git a/guides/administration/administration/import/csv.md b/guides/administration/administration/import/csv.md deleted file mode 100644 index 45454eece3..0000000000 --- a/guides/administration/administration/import/csv.md +++ /dev/null @@ -1,104 +0,0 @@ -# CSV - -The CSV importer allows you to import your own plain text files. However, it does require the zip file to be in a specific format for the importer to understand. - -## The Zip File - -The zip file must be a **flat zip**, which means there can **not** be a "root" or "sub" folder in which the items reside in the zip file. The importer looks for the files `channels.csv` and `users.csv` immediately inside the zip and not inside of any folder. If you have any questions about this, please ask in the [\#support channel on the Community server](https://open.rocket.chat/channel/support). - -The **directmessages** directory is a special directory name. Check the **Direct Messages** section below. - -```text -fileToImport.zip -├── channels.csv -├── users.csv -├── directmessages -│ ├── messages1.csv -│ ├── messages2.csv -│ └── messages3.csv -├── general -│ └── messages.csv -├── otherChannelName -│ ├── canBeAnyNameButHasToHave.csv -│ ├── theDotCSV.csv -│ └── asTheFileExt.csv -├── privateArea -│ └── messages.csv -└── random - ├── dateTimeStamp1.csv - ├── dateTimeStamp2.csv - └── dateTimeStamp3.csv -``` - -## channels.csv Format - -> Channels between 2 users \(Direct Messages\) should not be included on this file. See section **Direct Messages** for more information. - -The `channels.csv` requires a **very** specific structure and layout. Each line contains information about one channel. Each line must include the channel name, the creator, whether it is private or public, and the members in the channel separated by a semicolon `;`. Quotes are _**required**_. - -1. Channel name -2. Username of the channel creator -3. Whether the channel is public or private. If the last argument is not `private` it is assumed the channel is public -4. List of users in the channel, separated by semicolons. If only the creator is in the channel, then there must be empty quotes. - -```text -"general","bradley.hilton","public","" -"otherChannelName","billy.bob","public","" -"random","bradley.hilton","public","billy.bob;graywolf336" -"privateArea","bradley.hilton","private","graywolf336" -``` - -## users.csv Format - -The `users.csv` is a file that contains the user details, each line containing a new user, and the user details are: - -1. Username \(must not contain @ and some other special characters\) -2. Email -3. Name - -```text -bradley.hilton,bradley.hilton@example.com,Bradley Hilton -billy.bob, billy.bob@example.com, Billy Bob Jr. -graywolf336,graywolf336@example.com,GrayWolf336 -``` - -## Message Files - -The message CSV files require a particular format. Each line contains a new message, every piece of information is **required** quotes to surround it, there cannot be any spaces between the commas. The details required are: - -1. Username who sent the message -2. The timestamp in milliseconds -3. The message, quotes are highly recommended, especially if the message text contains a comma. - -```text -"bradley.hilton","1479162481336","this is a test message" -"billy.bob","1479162481654","this is another message, a test message" -``` - -## Direct Messages / Direct Channels - -Direct Channels / Direct Messages are imported from a special directory named **directmessages** with a specific format based on the **Message Files** format. The details required are: - -1. Username who sent the message -2. Username who received the message -3. The timestamp in milliseconds -4. The message, quotes are highly recommended, especially if the message text contains a comma. - -It's **required** to keep conversations in **distinct files;** for example, a conversation between user A and B compose a file \(`messages1.csv`\), and the conversation between user B and C compose another file \(`messages2.csv`\). - -```text -"bradley.hilton","billy.bob","1479162481336","this is a test message" -"billy.bob","bradley.hilton","1479162481654","this is another message, a test message" -``` - -## Importing - -Once you have that all set up and zipped, then you can start the import process. - -1. Go to `https://[your_rocketchat]/admin/import/prepare/csv` -2. Choose your `.zip` file and wait until Rocket.Chat can read it \(it can take a few minutes, depending on the size of the file\) -3. Deselect any items you **don't** want to import -4. At the top of the page, click on Start Importing - -When you have problems during the Import, click on "View Logs" in the admin section to get the detailed error messages. - diff --git a/guides/administration/administration/import/hipchat/README.md b/guides/administration/administration/import/hipchat/README.md deleted file mode 100644 index eb355688ed..0000000000 --- a/guides/administration/administration/import/hipchat/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# HipChat - -There are currently two different HipChat importers. One for HipChat Cloud and another for HipChat Enterprise. - -* [HipChat Cloud](cloud.md) -* [HipChat Server / Data Center](enterprise.md) - diff --git a/guides/administration/administration/import/hipchat/cloud.md b/guides/administration/administration/import/hipchat/cloud.md deleted file mode 100644 index fb509a0fee..0000000000 --- a/guides/administration/administration/import/hipchat/cloud.md +++ /dev/null @@ -1,13 +0,0 @@ -# HipChat Cloud - -To start importing values from HipChat you first need to have an instance of Rocket.Chat running. You can do that on [your own](https://docs.rocket.chat/developer-guides/quick-start/). - -If you already have an instance running and administration privileges, you can follow these steps: - -1. Export data from HipChat -2. Wait until your download is ready and download it \(it will be a .zip file\) -3. Go to `https://[your_rocket_chat].rocket.chat/admin/import` and click the "Start" button on the "HipChat" item -4. Choose your downloaded .zip file and wait until Rocket.Chat can read it \(it can take a few minutes, depending on the size of your HipChat export\) -5. Deselect any items you **don't** want to import -6. At the top of the page, click on Start Importing - diff --git a/guides/administration/administration/import/hipchat/enterprise.md b/guides/administration/administration/import/hipchat/enterprise.md deleted file mode 100644 index 2d593c7aaa..0000000000 --- a/guides/administration/administration/import/hipchat/enterprise.md +++ /dev/null @@ -1,41 +0,0 @@ -# HipChat Server / Data Center - -To import your current data from HipChat Server / Data Center into Rocket.Chat, please do the following. - -## Export from HipChat Server / Data Center - -This is a copy from the HipChat Server / Data Center Documentation: - -1. Browse to the fully qualified domain name you've configured for your HipChat Server, for example `https://hipchat.yourcompany.com/` -2. Log in to the web user interface \(UI\) using your administrator email and password -3. Click **Server admin > Export** -4. To include files and one-to-one chat history in the export, select the checkboxes -5. In the **Password** and **Confirm Password** fields, create a password to protect your archive file. You're required to provide this password when you import your data into HipChat Server. We don't store this password, so be sure to remember it -6. Click **Export**. Depending on how much data you have, it may take a few hours to export the data. When it's finished, you'll receive an email with a link to download the file -7. When you receive the email, click the link in the email to download the archive file - -## Import into Rocket.Chat - -1. Decrypt the exported file: `openssl aes-256-cbc -d -in path_to_encrypted_file.tar.gz.aes -out path_to_decrypted_file.tar.gz -pass pass:your_password` See the table below for descriptions of the command line arguments -2. Ensure the file generated is a `tar.gz` file, otherwise Rocket.Chat won't accept it -3. Go to `https://[your_rocketchat]/admin/import/prepare/hipchatenterprise` -4. Choose your decrypted `tar.gz` file and wait until Rocket.Chat can read it \(it can take a few minutes, depending on the size of your export\) -5. Deselect any items you **don't** want to import -6. At the top of the page, click on **Start Importing** - -### OpenSSL Command Arguments - -| Argument | Notes | -| :--- | :--- | -| `aes-256-cbc` | This is the cipher to use to decrypt the file. | -| `-d` | This argument is the command to decrypt the file. | -| `-in` | Use this to specify the path to the archive file you're about to decrypt. | -| `-out` | Use this to specify the path where you want to output the decrypted file. | -| `-pass pass:` | Enter the password you created when you **exported** the archive file. | - -## Troubleshooting - -1. In case you get `digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:../crypto/evp/evp_enc.c:541:` while decrypting add the parameter `-md md5` see [https://www.openssl.org/docs/faq.html\#USER3](https://www.openssl.org/docs/faq.html#USER3) -2. If the import fails for large HipChat exports it may help to _not_ export file attachments. see [https://github.com/RocketChat/Rocket.Chat/issues/11693](https://github.com/RocketChat/Rocket.Chat/issues/11693) -3. If you still have problems contact us at support@rocket.chat and provide your server logs if available - diff --git a/guides/administration/administration/import/slack/README.md b/guides/administration/administration/import/slack/README.md deleted file mode 100644 index d781f65ec0..0000000000 --- a/guides/administration/administration/import/slack/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Slack - -To import your current Slack data into Rocket.Chat: - -1. Go to `https://[your_app].slack.com/services/export` -2. Click on Start Export -3. Wait until your download is ready and download it \(it will be a .zip file\) -4. Go to `https://[your_rocketchat]/admin/import/new/slack` -5. Select "Slack" as Import Type -6. Choose your downloaded .zip file and wait until Rocket.Chat can read it \(it can take a few minutes, depending on the size of your Slack export\) -7. Click on Import -8. Deselect any items you **don't** want to import -9. At the top of the page, click on Start Importing - diff --git a/guides/administration/administration/import/slack/slackbridge.md b/guides/administration/administration/import/slack/slackbridge.md deleted file mode 100644 index 933ce31715..0000000000 --- a/guides/administration/administration/import/slack/slackbridge.md +++ /dev/null @@ -1,23 +0,0 @@ -# SlackBridge - -SlackBridge allows you to mirror the messages received in a Slack channel or private group into Rocket.Chat in real-time. - -To enable it, you have to create a Custom Bot in Slack and add it to the desired channels / private groups. Once enabled and added to rooms, SlackBridge will clone the room in Rocket.Chat and also clone users that speak in that room. - -## To create a Custom Bot in Slack: - -1. Got to ["Set up a bot user"](https://my.slack.com/apps/A0F7YS25R-bots) -2. Click "Add Configuration" -3. Pick a username for your Bot and click Add Bot Integration -4. Copy the API Token, you'll need it when setting up SlackBridge in Rocket.Chat -5. Customize your bot the way you like it and click on Save Integration - -## To enable SlackBridge in Rocket.Chat: - -1. Go to `https://[your_host]/admin/SlackBridge` -2. Enable SlackBridge -3. Add your API Token, copied in step 4 above -4. Restart your Rocket.Chat server - -When done, you can now invite/add the bot to the channel or private group you want to mirror from - diff --git a/guides/administration/administration/info.md b/guides/administration/administration/info.md deleted file mode 100644 index 3a5e4aca42..0000000000 --- a/guides/administration/administration/info.md +++ /dev/null @@ -1,4 +0,0 @@ -# Info - -Document Under Development - diff --git a/guides/administration/administration/integrations/README.md b/guides/administration/administration/integrations/README.md deleted file mode 100644 index 48b3472732..0000000000 --- a/guides/administration/administration/integrations/README.md +++ /dev/null @@ -1,265 +0,0 @@ -# Integrations - -Rocket.Chat supports WebHooks to integrate tools and services you like into the platform. WebHooks are simple event-notifications via HTTP POST. This way any application implementing a WebHook is able to POST a message to a Rocket.Chat instance and much more. - -With Scripts you can point any WebHook to Rocket.Chat and process the request to print customized messages, define the username and avatar of the user of the message and change the channel where the message will be posted or you can cancel the request to prevent undesired messages. - -Available integrations: - -* Incoming WebHook → Let an external service send a request to Rocket.Chat to be processed. -* Outgoing WebHook → Let Rocket.Chat trigger and optionally send a request to an external service and process the response. - -By default the WebHooks is designed to post a message only. The _message_ is part of a JSON structure, which has the same format as described in the API documentation on how to [“Post a chat message”](). - -If you would like more power and control over various features of Rocket.Chat, aside from sending and receiving messages, take a look at [Rocket.Chat Apps](https://github.com/RocketChat/docs/tree/663a6019e9bf97ca60fde138cc8d6917dd32703e/apps-development/rocket.chat-app). - -## Incoming WebHook Script - -WebHooks can be handled by _ES2015 / ECMAScript 6_ scripts to process the request, to print a customized messages or cancel the request to prevent undesired messages. - -### Create a new Incoming WebHook - -* Go to your **Admin Panel** -* Go to **Integrations** -* Create a **New Integration** and select **Incoming WebHook** -* Select the channel where you prefer to receive the alerts; it is possible to override in messages. -* Set **Script Enabled** to `true` -* Paste your script inside the **Script** field -* Save the integration -* Use the generated **WebHook URL** to POST messages to Rocket.Chat - -### Script Details - -The script should be in **ES2015 / ECMAScript 6**. - -The script expects a global class called `Script`. This class is instantiated once, only on the first execution, and kept in memory. - -The class has a method called `process_incoming_request`, your server calls this method every time is receives a new request. It is called with an Object as a parameter with the `request`property. - -The `process_incoming_request`method returns an object with a `content`property that contains valid Rocket.Chat message, or an object with an `error` property that returns as the response to the request in JSON format and Code 400 status. - -A valid Rocket.Chat message can contain a `text` field that is the body of the message. When you redirect the message to a channel other than the one indicated by the Webhook token, you can specify a `channel` field, which accepts room id or, if prefixed with "\#" or "@", channel name or user. - -You can use the `console` methods to log information to help debug your script. Find more information about the console [here](https://developer.mozilla.org/en-US/docs/Web/API/Console/log). To view the logs, go to `Administration > View Logs`. - -```javascript -/* exported Script */ -/* globals console, _, s */ - -/** Global Helpers - * - * console - A normal console instance - * _ - An underscore instance - * s - An underscore string instance - */ - -class Script { - /** - * @params {object} request - */ - process_incoming_request({ request }) { - // request.url.hash - // request.url.search - // request.url.query - // request.url.pathname - // request.url.path - // request.url_raw - // request.url_params - // request.headers - // request.user._id - // request.user.name - // request.user.username - // request.content_raw - // request.content - - // console is a global helper to improve debug - console.log(request.content); - - return { - content:{ - text: request.content.text - // "attachments": [{ - // "color": "#FF0000", - // "author_name": "Rocket.Cat", - // "author_link": "https://open.rocket.chat/direct/rocket.cat", - // "author_icon": "https://open.rocket.chat/avatar/rocket.cat.jpg", - // "title": "Rocket.Chat", - // "title_link": "https://rocket.chat", - // "text": "Rocket.Chat, the best open source chat", - // "fields": [{ - // "title": "Priority", - // "value": "High", - // "short": false - // }], - // "image_url": "https://rocket.chat/images/mockup.png", - // "thumb_url": "https://rocket.chat/images/mockup.png" - // }] - } - }; - - // return { - // error: { - // success: false, - // message: 'Error example' - // } - // }; - } -} -``` - -## Outgoing WebHook Script - -Use Scripts to process all messages from a channel, and change how Rocket.Chat makes or cancels the request. You can cancel the request and return a message, or just do nothing. Also, you can make another request inside the script by using the **HTTP** global helper. - -The response of the request also executes the script, calling another method so you can process the response, just like in **Incoming WebHooks** - -### Create a new Outgoing WebHook - -* Go to your **Admin Panel** -* Go to **Integrations** -* Create a **New Integration** and select **Outgoing WebHook** -* Select the channel where you prefer to use the commands and receive the responses -* Enter the URL you want to call in **URLs**, you can modify this URL inside the script -* Set **Script Enabled** to `true` -* Paste your script inside the **Script** field -* Save your integration - -### Script Details - -The script should be in **ES2015 / ECMAScript 6**. - -The script expects a global class called **Script**. This class is instantiated once, only on the first execution, and kept in memory. - -The class has a method called `prepare_outgoing_request`, this method is called for every message in the configured channel, or it can be filtered by **Trigger Words**. It is called with an Object as parameter a that contains the `request` property. - -The `prepare_outgoing_request`method returns an object with, at least, `url`and `method` properties. You can also change the request object, and return it. It is possible even to return nothing and cancel the request, or return a message. - -This class has a method named `process_outgoing_response`. It is called for every response of the request, with an Object as a parameter that contains the `request` property, i.e. the object you returned in the previous method, and a `response` property. - -The `process_outgoing_response` method can return nothing to proceed the default processing, return `false` to stop it, or an object with the `content` property that contains a valid Rocket.Chat message. - -```javascript -/* exported Script */ -/* globals console, _, s, HTTP */ - -/** Global Helpers - * - * console - A normal console instance - * _ - An underscore instance - * s - An underscore string instance - * HTTP - The Meteor HTTP object to do sync http calls - */ - -class Script { - /** - * @params {object} request - */ - prepare_outgoing_request({ request }) { - // request.params {object} - // request.method {string} - // request.url {string} - // request.auth {string} - // request.headers {object} - // request.data.token {string} - // request.data.channel_id {string} - // request.data.channel_name {string} - // request.data.timestamp {date} - // request.data.user_id {string} - // request.data.user_name {string} - // request.data.text {string} - // request.data.trigger_word {string} - - let match; - - // Change the URL and method of the request - match = request.data.text.match(/^pr\s(ls|list)/); - if (match) { - return { - url: request.url + '/pulls', - headers: request.headers, - method: 'GET' - }; - } - - // Prevent the request and return a new message - match = request.data.text.match(/^help$/); - if (match) { - return { - message: { - text: [ - '**commands**', - '```', - ' pr ls [open|closed|all] List Pull Requests', - '```' - ].join('\n') - // "channel": "#name-of-channel", - // "attachments": [{ - // "color": "#FF0000", - // "author_name": "Rocket.Cat", - // "author_link": "https://open.rocket.chat/direct/rocket.cat", - // "author_icon": "https://open.rocket.chat/avatar/rocket.cat.jpg", - // "title": "Rocket.Chat", - // "title_link": "https://rocket.chat", - // "text": "Rocket.Chat, the best open source chat", - // "fields": [{ - // "title": "Priority", - // "value": "High", - // "short": false - // }], - // "image_url": "https://rocket.chat/images/mockup.png", - // "thumb_url": "https://rocket.chat/images/mockup.png" - // }] - } - }; - } - } - - /** - * @params {object} request, response - */ - process_outgoing_response({ request, response }) { - // request {object} - the object returned by prepare_outgoing_request - - // response.error {object} - // response.status_code {integer} - // response.content {object} - // response.content_raw {string/object} - // response.headers {object} - - var text = []; - response.content.forEach(function(pr) { - text.push('> '+pr.state+' [#'+pr.number+']('+pr.html_url+') - '+pr.title); - }); - - // Return false will abort the response - // return false; - - // Return empty will proceed with the default response process - // return; - - return { - content: { - text: text.join('\n'), - parseUrls: false - // "attachments": [{ - // "color": "#FF0000", - // "author_name": "Rocket.Cat", - // "author_link": "https://open.rocket.chat/direct/rocket.cat", - // "author_icon": "https://open.rocket.chat/avatar/rocket.cat.jpg", - // "title": "Rocket.Chat", - // "title_link": "https://rocket.chat", - // "text": "Rocket.Chat, the best open source chat", - // "fields": [{ - // "title": "Priority", - // "value": "High", - // "short": false - // }], - // "image_url": "https://rocket.chat/images/mockup.png", - // "thumb_url": "https://rocket.chat/images/mockup.png" - // }] - } - }; - } -} -``` - diff --git a/guides/administration/administration/integrations/appveyor.md b/guides/administration/administration/integrations/appveyor.md deleted file mode 100644 index f2f1d7fbbc..0000000000 --- a/guides/administration/administration/integrations/appveyor.md +++ /dev/null @@ -1,6 +0,0 @@ -# AppVeyor - -Add [AppVeyor](https://www.appveyor.com) notifications via a new WebHook in Rocket.Chat. See the [project's documentation](https://github.com/crazy-max/rocketchat-appveyor) for integration instructions. - -![AppVeyor Intergration](../../../../.gitbook/assets/appveyor.png) - diff --git a/guides/administration/administration/integrations/azure-alerts.md b/guides/administration/administration/integrations/azure-alerts.md deleted file mode 100644 index e960240fee..0000000000 --- a/guides/administration/administration/integrations/azure-alerts.md +++ /dev/null @@ -1,158 +0,0 @@ -# Azure Alerts - -Add Azure Alert notifications via a new WebHook in Rocket.Chat - -1. In Rocket.Chat go to "Administration"->"Integrations" and create "New Integration" -2. Choose Incoming WebHook -3. Follow all instructions like Enable, give it a name, link to channel etc. Set "Enable Script" to true and enter the javascript in the "Script" box -4. Press Save changes and copy the _Webhook URL_ \(added just below the script box\) -5. Go to the azure portal and on the specific resource you want to enable Alerts for follow the steps for enabling Alerts and set the previously copied URL as the webhook URL for the Azure Alert. You can follow the steps shown here: [https://azure.microsoft.com/en-us/documentation/articles/insights-webhooks-alerts/](https://azure.microsoft.com/en-us/documentation/articles/insights-webhooks-alerts/) - -Paste this in javascript in the "Script" textarea on Rocket.Chat webhook settings - -```javascript -class Script { - process_incoming_request({ request }) { - // console is a global helper to improve debug - console.log(request.content); - - var alertColor = "warning"; - - if(request.content.status === "Resolved"){ alertColor = "good"; } - else if (request.content.status === "Activated") { alertColor = "danger"; } - - var condition = request.content.context.condition; - - return { - content:{ - username: "Azure", - text: "Azure Alert Notification", - attachments: [{ - title: request.content.context.name, - pretext: request.content.context.description, - title_link: request.content.context.portalLink, - text: condition.failureDetails, - color: alertColor, - fields: [ - { - title: "Status", - value: request.content.status + " @ " + request.content.context.timestamp - }, - { - title: "Condition", - value: condition.metricName + ": " + condition.metricValue + " " + condition.metricUnit + " for more than " + condition.windowSize + " min." - }, - { - title: "Threshold", - value: condition.operator + " " + condition.threshold - } - ] - }] - } - }; - - return { - error: { - success: false, - message: 'Error' - } - }; - } -} -``` - -This example shows basic processing of azure alerts that will give you the necessary information as to what happened and what is the current status, along with a status color to get an idea at a quick glimpse of the message. - -For newer created alerts the azure webhooks can be process by the following script: - -```javascript -class Script { - // this script was tested with AzureMonitorMetricAlert version 2.0 and should work for - // "conditionType": "MultipleResourceMultipleMetricCriteria" - process_incoming_request({ request }) { - // console is a global helper to improve debug - console.log(JSON.stringify(request.content, null, 4)); - - var alertColor = "warning"; - var condition = request.content.data.context.condition; - var conditionFields = []; - - if(request.content.data.status === "Deactivated"){ alertColor = "good"; } - else if (request.content.data.status === "Activated") { - alertColor = "danger"; - console.log(condition.allOf); - for (const cond of condition.allOf) { - console.log(cond); - conditionFields.push({ - title: "Condition: " + cond.metricName, - value: cond.metricValue + " " + cond.operator + " " + cond.threshold + " (" - + (cond.metricUnit ? cond.metricUnit + ", " : "") - + cond.timeAggregation + ")" - + " for more than " + condition.windowSize, - }); - } - } - - return { - content:{ - username: "Azure", - text: "Azure Alert Notification", - attachments: [{ - title: request.content.data.context.name, - pretext: request.content.data.context.description, - title_link: request.content.data.context.portalLink, - text: request.content.data.context.resourceGroupName + ": " + request.content.data.context.resourceName, - color: alertColor, - fields: [ - { - title: "Status", - value: request.content.data.status + " @ " + request.content.data.context.timestamp - }, - { - title: "Severity", - value: request.content.data.context.severity, - }, - ...conditionFields, - ] - }] - } - }; - } -} -``` - -The schema of the incoming message as of the official [Azure Alert Webhook Docs](https://azure.microsoft.com/en-us/documentation/articles/insights-webhooks-alerts/) is: - -```javascript -{ -"status": "Activated", -"context": { - "timestamp": "2015-08-14T22:26:41.9975398Z", - "id": "/subscriptions/s1/resourceGroups/useast/providers/microsoft.insights/alertrules/ruleName1", - "name": "ruleName1", - "description": "some description", - "conditionType": "Metric", - "condition": { - "metricName": "Requests", - "metricUnit": "Count", - "metricValue": "10", - "threshold": "10", - "windowSize": "15", - "timeAggregation": "Average", - "operator": "GreaterThanOrEqual" - }, - "subscriptionId": "s1", - "resourceGroupName": "useast", - "resourceName": "mysite1", - "resourceType": "microsoft.foo/sites", - "resourceId": "/subscriptions/s1/resourceGroups/useast/providers/microsoft.foo/sites/mysite1", - "resourceRegion": "centralus", - "portalLink": "https://portal.azure.com/#resource/subscriptions/s1/resourceGroups/useast/providers/microsoft.foo/sites/mysite1" -}, -"properties": { - "key1": "value1", - "key2": "value2" - } -} -``` - diff --git a/guides/administration/administration/integrations/deadsimplescreensharing.md b/guides/administration/administration/integrations/deadsimplescreensharing.md deleted file mode 100644 index 0b8747f778..0000000000 --- a/guides/administration/administration/integrations/deadsimplescreensharing.md +++ /dev/null @@ -1,24 +0,0 @@ -# Dead Simple Screen Sharing - -Create a Dead Simple Screen Sharing Meeting to do Screen Sharing and audio/video-conferencing session right from Rocket.Chat by sending a message `screenshare` - -1. In Rocket.Chat go to "Administration"->"Integrations" and create "New Integration" -2. Choose "Outgoing WebHook" -3. Configure the "Outgoing Webhook": - - 1. Select the "Event Trigger" as "Message Sent" - 2. Set Enabled to "True" - 3. In the Name enter "Dead Simple Screen Sharing" - 4. Under the channel type in `all_public_channels,all_private_groups,all_direct_messages` - 5. Trigger words type in `screenshare` - 6. Under URLs type: `https://app.deadsimplescreensharing.com/webhook/rocketchat` - 7. Under Post as: `rocket.cat` - 8. Click "Save Changes" - 9. Done! - - ![Dead Simple Screen Sharing rocket chat config](https://www.deadsimplescreensharing.com/wp-content/uploads/2018/01/Screen-Shot-2018-01-12-at-7.37.15-PM-1024x839.png) - -That's it! we have integrated "Dead Simple Screen Sharing", now when chatting we just have to send the message `screenshare` and a Dead Simple Screen Sharing meeting will be created, and you and your team members can visit the meeting link and perform screen sharing and audio-conferencing. - -![Dead Simple Screen Sharing Rocket.Chat integartion](https://www.deadsimplescreensharing.com/wp-content/uploads/2018/01/Screen-Shot-2018-01-12-at-7.40.07-PM-1024x453.png) - diff --git a/guides/administration/administration/integrations/github.md b/guides/administration/administration/integrations/github.md deleted file mode 100644 index ac32a9b191..0000000000 --- a/guides/administration/administration/integrations/github.md +++ /dev/null @@ -1,613 +0,0 @@ -# GitHub - -We can do 2 types of integrations with GitHub: - -* Receive alerts from GitHub \(**Incoming WebHook**\) -* Send commands to GitHub and optionally receive a response \(**Outgoing WebHook**\) - -## Receive alerts - -1. Create a new **Incoming WebHook**. -2. Select the channel where you will receive the alerts. You may wish to create a dedicated channel for your notifications. -3. Select an account from which the alerts will be posted. You may wish to create a dedicated account just for notifications. -4. Set the "Enable Scripts" option to `True`. -5. Copy-paste one of the example scripts below. -6. Save the integration. This will generate a webhook URL and secret for you. -7. Go to your repository `Settings -> WebHooks & services -> Add WebHook`. -8. Paste your **WebHook URL** from Rocket.Chat into **Payload URL**. -9. Keep **Content type** as `application/json`. -10. Leave **Secret** empty and save. - -### Example script 1: - -This script will generate notifications for the following repository events: - -* Issue events \(create, edit, close, reopen, assign, label, etc\) -* Issue comment events -* Push events \(singular and multiple commits\) - -![Screenshot of messages generated by GitHub integration script 1](../../../../.gitbook/assets/github-1.png) - -```javascript -/* exported Script */ - -String.prototype.capitalizeFirstLetter = function() { - return this.charAt(0).toUpperCase() + this.slice(1); -} - -const getLabelsField = (labels) => { - let labelsArray = []; - labels.forEach(function(label) { - labelsArray.push(label.name); - }); - labelsArray = labelsArray.join(', '); - return { - title: 'Labels', - value: labelsArray, - short: labelsArray.length <= 40 - }; -}; - -const githubEvents = { - ping(request) { - return { - content: { - text: '_' + request.content.hook.id + '_\n' + ':thumbsup: ' + request.content.zen - } - }; - }, - - /* NEW OR MODIFY ISSUE */ - issues(request) { - const user = request.content.sender; - - if (request.content.action == "opened" || request.content.action == "reopened" || request.content.action == "edited") { - var body = request.content.issue.body; - } else if (request.content.action == "labeled") { - var body = "Current labels: " + getLabelsField(request.content.issue.labels).value; - } else if (request.content.action == "assigned" || request.content.action == "unassigned") { - // Note that the issues API only gives you one assignee. - var body = "Current assignee: " + request.content.issue.assignee.login; - } else if (request.content.action == "closed") { - if (request.content.issue.closed_by) { - var body = "Closed by: " + request.content.issue.closed_by.login; - } else { - var body = "Closed."; - } - } else { - return { - error: { - success: false, - message: 'Unsupported issue action' - } - }; - } - - const action = request.content.action.capitalizeFirstLetter(); - - const text = '_' + request.content.repository.full_name + '_\n' + - '**[' + action + ' issue ​#' + request.content.issue.number + - ' - ' + request.content.issue.title + '](' + - request.content.issue.html_url + ')**\n\n' + - body; - - return { - content: { - attachments: [ - { - thumb_url: user.avatar_url, - text: text, - fields: [] - } - ] - } - }; - }, - - /* COMMENT ON EXISTING ISSUE */ - issue_comment(request) { - const user = request.content.comment.user; - - if (request.content.action == "edited") { - var action = "Edited comment "; - } else { - var action = "Comment " - } - - const text = '_' + request.content.repository.full_name + '_\n' + - '**[' + action + ' on issue ​#' + request.content.issue.number + - ' - ' + request.content.issue.title + '](' + - request.content.comment.html_url + ')**\n\n' + - request.content.comment.body; - - return { - content: { - attachments: [ - { - thumb_url: user.avatar_url, - text: text, - fields: [] - } - ] - } - }; - }, - - /* COMMENT ON COMMIT */ -commit_comment(request) { - const user = request.content.comment.user; - - if (request.content.action == "edited") { - var action = "Edited comment "; - } else { - var action = "Comment " - } - - const text = '_' + request.content.repository.full_name + '_\n' + - '**[' + action + ' on commit id ' + request.content.comment.commit_id + - ' - ' + + '](' + - request.content.comment.html_url + ')**\n\n' + - request.content.comment.body; - - return { - content: { - attachments: [ - { - thumb_url: user.avatar_url, - text: text, - fields: [] - } - ] - } - }; - }, - /* END OF COMMENT ON COMMIT */ - - /* PUSH TO REPO */ - push(request) { - var commits = request.content.commits; - var multi_commit = "" - var is_short = true; - var changeset = 'Changeset'; - if ( commits.length > 1 ) { - var multi_commit = " [Multiple Commits]"; - var is_short = false; - var changeset = changeset + 's'; - var output = []; - } - const user = request.content.sender; - - var text = '**Pushed to ' + "["+request.content.repository.full_name+"]("+request.content.repository.url+"):" - + request.content.ref.split('/').pop() + "**\n\n"; - - for (var i = 0; i < commits.length; i++) { - var commit = commits[i]; - var shortID = commit.id.substring(0,7); - var a = '[' + shortID + '](' + commit.url + ') - ' + commit.message; - if ( commits.length > 1 ) { - output.push( a ); - } else { - var output = a; - } - } - - if (commits.length > 1) { - text += output.reverse().join('\n'); - } else { - text += output; - } - - return { - content: { - attachments: [ - { - thumb_url: user.avatar_url, - text: text, - fields: [] - } - ] - } - }; - }, // End GitHub Push - - /* NEW PULL REQUEST */ - pull_request(request) { - const user = request.content.sender; - - if (request.content.action == "opened" || request.content.action == "reopened" || request.content.action == "edited" || request.content.action == "synchronize") { - var body = request.content.pull_request.body; - } else if (request.content.action == "labeled") { - var body = "Current labels: " + getLabelsField(request.content.pull_request.labels).value; - } else if (request.content.action == "assigned" || request.content.action == "unassigned") { - // Note that the issues API only gives you one assignee. - var body = "Current assignee: " + request.content.pull_request.assignee.login; - } else if (request.content.action == "closed") { - if (request.content.pull_request.merged) { - var body = "Merged by: " + request.content.pull_request.merged_by.login; - } else { - var body = "Closed."; - } - } else { - return { - error: { - success: false, - message: 'Unsupported pull request action' - } - }; - } - - const action = request.content.action.capitalizeFirstLetter(); - - const text = '_' + request.content.repository.full_name + '_\n' + - '**[' + action + ' pull request ​#' + request.content.pull_request.number + - ' - ' + request.content.pull_request.title + '](' + - request.content.pull_request.html_url + ')**\n\n' + - body; - - return { - content: { - attachments: [ - { - thumb_url: user.avatar_url, - text: text, - fields: [] - } - ] - } - }; - }, -}; - -class Script { - process_incoming_request({ request }) { - const header = request.headers['x-github-event']; - if (githubEvents[header]) { - return githubEvents[header](request); - } - - return { - error: { - success: false, - message: 'Unsupported method' - } - }; - } -} -``` - -#### Example script 2: - -This script will generate notifications for the following repository events: - -* New and closed issue events -* Comment events \(issues only\) -* Push events \(singular and multiple commits\) - -![Screenshot of messages generated by GitHub integration script 2](../../../../.gitbook/assets/github-2.png) - -```javascript -/* exported Script */ - -// Begin embedded images -const gh_cmit_svg = ''; -const gh_pr_svg = ''; -const gh_iss_svg = ''; -const svg_inline_prefix = 'data:image/svg+xml;ascii,'; -// End embedded images - -const getLabelsField = (labels) => { - let labelsArray = []; - labels.forEach(function(label) { - labelsArray.push(label.name); - }); - labelsArray = labelsArray.join(', '); - return { - title: 'Labels', - value: labelsArray, - short: labelsArray.length <= 40 - }; -}; - -const githubEvents = { - ping(request) { - return { - content: { - text: ':thumbsup: ' + request.content.zen - } - }; - }, - - issues(request) { - const user = request.content.sender; - const attachment = { - author_icon: svg_inline_prefix + gh_iss_svg, - author_name: '#' + request.content.issue.number + ' - ' + request.content.issue.title, - author_link: request.content.issue.html_url, - fields: [] - }; - - if (request.content.issue.labels) { - attachment.fields.push(getLabelsField(request.content.issue.labels)); - } - - if (request.content.issue.assignee) { - attachment.fields.push({ - title: 'Assignee', - value: request.content.issue.assignee.login, - short: true - }); - } - - const actions = { - 'assigned': ':inbox_tray:', - 'unassigned': ':outbox_tray:', - 'opened': ':triangular_flag_on_post:', - 'closed': ':white_check_mark:', - 'reopened': ':triangular_flag_on_post:', - 'labeled': ':label:', - 'unlabeled': ':label:', - 'edited': ':pencil:' - }; - - const text = actions[request.content.action] + ' issue'; - - return { - content: { - icon_url: user.avatar_url, - alias: user.login, - text: text, - attachments: [attachment] - } - }; - }, - - issue_comment(request) { - const user = request.content.comment.user; - var attachment = { - author_icon: svg_inline_prefix + gh_iss_svg, - author_name: '#' + request.content.issue.number + ' - ' + request.content.issue.title, - author_link: request.content.comment.html_url, - fields: [] - }; - - if (request.content.issue.labels) { - attachment.fields.push(getLabelsField(request.content.issue.labels)); - } - - if (request.content.issue.assignee) { - attachment.fields.push({ - title: 'Assignee', - value: request.content.issue.assignee.login, - short: true - }); - } - - const text = ':speech_balloon: ' + request.content.comment.body; - - return { - content: { - icon_url: user.avatar_url, - alias: user.login, - text: text, - attachments: [attachment] - } - }; - }, - - pull_request(request) { - const user = request.content.sender; - const attachment = { - author_icon: svg_inline_prefix + gh_pr_svg, - author_name: '#' + request.content.pull_request.number + ' - ' + request.content.pull_request.title, - author_link: request.content.pull_request.html_url - }; - - let text = 'Pull request'; - switch (request.content.action) { - case 'assigned': - text += ' assigned to: ' + request.content.assignee.login; - break; - case 'unassigned': - text += ' unassigned of ' + request.content.assignee.login; - break; - case 'opened': - text += ' opened'; - break; - case 'closed': - if (request.content.pull_request.merged) { - text += ' merged'; - } else { - text += ' closed'; - } - break; - case 'reopened': - text += ' reopened'; - break; - case 'labeled': - text += ' added label: "' + request.content.label.name + '" '; - break; - case 'unlabeled': - text += ' removed label: "' + request.content.label.name + '" '; - break; - case 'synchronize': - text += ' synchronized'; - } - - return { - content: { - icon_url: user.avatar_url, - alias: user.login, - text: text, - attachments: [attachment] - } - }; - }, - - //// GitHub push event - push(request) { - var commits = request.content.commits; - var multi_commit = "" - var is_short = true; - var changeset = 'Changeset'; - if ( commits.length > 1 ) { - var multi_commit = " [Multiple Commits]"; - var is_short = false; - var changeset = changeset + 's'; - var output = []; - } - const user = request.content.sender; - const attachment = { - author_icon: svg_inline_prefix + gh_cmit_svg, - author_name: "Message: " + request.content.head_commit.message + multi_commit, - author_link: request.content.compare, - fields: [] - }; - - if (request.content.repository.full_name) { - attachment.fields.push({ - title: 'Repo', - value: "["+request.content.repository.full_name+"]("+request.content.repository.url+")", - short: is_short - }); - } - - for (var i = 0; i < commits.length; i++) { - var commit = commits[i]; - var shortID = commit.id.substring(0,7); - if ( commits.length > 1 ) { - output = '[' + shortID + '](' + commit.url + ') - ' + commit.message - if (i == 0){ - attachment.fields.push({ - title: changeset, - value: output, - short: is_short - }); - } else{ - attachment.fields.push({ - title: changeset, - value: output, - short: is_short - }); - } - } else { - output = "[" + shortID + "](" + commit.url + ")" - attachment.fields.push({ - title: changeset, - value: output, - short: is_short - }); - } - } - - const text = ':ballot_box_with_check: Pushed to ' + "["+request.content.ref.split('/').pop()+"]"; - - return { - content: { - icon_url: user.avatar_url, - alias: user.login, - text: text, - attachments: [attachment] - } - }; - }, // End GitHub Push -}; - -class Script { - process_incoming_request({ request }) { - const header = request.headers['x-github-event']; - if (githubEvents[header]) { - return githubEvents[header](request); - } - - return { - error: { - success: false, - message: 'Unsupported method' - } - }; - } -} -``` - -#### Customizing your integration scripts - -The purpose of the integration script is to transform data in one format \(the format provided by your incoming service, such as GitHub\) into another format \(the format expected by Rocket.Chat\). Therefore, should you wish to customize either of the scripts presented above, you will need two resources: - -* [GitHub API specifications](https://developer.github.com/v3/) -* [Specifications for Rocket.Chat integration message objects](./#incoming-webhook-script) - -Note that data comes _into_ your script from GitHub as the `request.content` object. - -### Send commands to GitHub - -`This script only works for public repositories` - -* Create a new **Outgoing WebHook** -* Select the channel where you will use the commands and receive the responses -* Set **URLs** as `https://api.github.com/repos/User-Or-Org-Name/Repo-Name` like `https://api.github.com/repos/RocketChat/Rocket.Chat` -* Enable Scripts -* Use this **Script** to listen for commands `pr ls`, `pr list` and `help` - -```javascript - /* exported Script */ - /* globals Store */ - - class Script { - prepare_outgoing_request({ request }) { - let match; - - console.log('lastCmd', Store.get('lastCmd')); - - match = request.data.text.match(/^pr last$/); - if (match && Store.get('lastCmd')) { - request.data.text = Store.get('lastCmd'); - } - - match = request.data.text.match(/^pr\s(ls|list)\s*(open|closed|all)?$/); - if (match) { - Store.set('lastCmd', request.data.text); - let u = request.url + '/pulls'; - if (match[2]) { - u += '?state='+match[2]; - } - return { - url: u, - headers: request.headers, - method: 'GET' - }; - } - - match = request.data.text.match(/^help$/); - if (match) { - Store.set('lastCmd', request.data.text); - return { - message: { - text: [ - '**GitHub commands**', - '```', - ' pr ls|list [open|closed|all] List Pull Requests', - '```' - ].join('\n') - } - }; - } - } - - process_outgoing_response({ request, response }) { - var text = []; - response.content.forEach(function(pr) { - text.push('> '+pr.state+' [#'+pr.number+']('+pr.html_url+') - '+pr.title); - }); - - return { - content: { - text: text.join('\n'), - parseUrls: false - } - }; - } - } -``` - -* Save your integration - diff --git a/guides/administration/administration/integrations/gitlab.md b/guides/administration/administration/integrations/gitlab.md deleted file mode 100644 index 5cc6fc550a..0000000000 --- a/guides/administration/administration/integrations/gitlab.md +++ /dev/null @@ -1,388 +0,0 @@ -# GitLab - -Add GitLab notifications via a new WebHook in Rocket.Chat - -1. In Rocket.Chat go to "Administration"->"Integrations" and create "New Integration". -2. Choose Incoming WebHook. -3. Follow all instructions like Enable, give it a name, link to channel etc. Set "Enable Script" to true and enter the javascript in the "Script" box. -4. Press Save changes and copy the _Webhook URL_ \(added just below the script box\). -5. Go to your GitLab project, ie. [https://gitlab.com/](https://gitlab.com/)< username >/< project >/hooks . It's in the project "settings" under Webhooks menu GitLab. -6. Add a new webhook by pasting the Rocket.Chat url you've copied in step 4, select at least 1 checkbox and press the button \(conveniently called "Add Webhook"\). -7. Test the webhook with the "Test Hook" button in GitLab, a topbar should appear with more info \(success or failure\). - -Paste this in javascript in the "Script" text area on Rocket.Chat webhook settings - -```javascript -/* eslint no-console:0, max-len:0 */ -// see for full json posted by GitLab -const MENTION_ALL_ALLOWED = false; // <- check that bot permission allow has mention-all before passing this to true. -const NOTIF_COLOR = '#6498CC'; -const IGNORE_CONFIDENTIAL = true; -const refParser = (ref) => ref.replace(/^refs\/(?:tags|heads)\/(.+)$/, '$1'); -const displayName = (name) => (name && name.toLowerCase().replace(/\s+/g, '.')); -const atName = (user) => (user && user.name ? '@' + displayName(user.name) : ''); -const makeAttachment = (author, text, color) => { - return { - author_name: author ? displayName(author.name) : '', - author_icon: author ? author.avatar_url : '', - text, - color: color || NOTIF_COLOR - }; -}; -const pushUniq = (array, val) => ~array.indexOf(val) || array.push(val); // eslint-disable-line - -class Script { // eslint-disable-line - process_incoming_request({ request }) { - try { - let result = null; - const channel = request.url.query.channel; - const event = request.headers['x-gitlab-event']; - switch (event) { - case 'Push Hook': - result = this.pushEvent(request.content); - break; - case 'Merge Request Hook': - result = this.mergeRequestEvent(request.content); - break; - case 'Note Hook': - result = this.commentEvent(request.content); - break; - case 'Confidential Issue Hook': - case 'Issue Hook': - result = this.issueEvent(request.content, event); - break; - case 'Tag Push Hook': - result = this.tagEvent(request.content); - break; - case 'Pipeline Hook': - result = this.pipelineEvent(request.content); - break; - case 'Build Hook': // GitLab < 9.3 - result = this.buildEvent(request.content); - break; - case 'Job Hook': // GitLab >= 9.3.0 - result = this.buildEvent(request.content); - break; - case 'Wiki Page Hook': - result = this.wikiEvent(request.content); - break; - default: - result = this.unknownEvent(request, event); - break; - } - if (result && result.content && channel) { - result.content.channel = '#' + channel; - } - return result; - } catch (e) { - console.log('gitlabevent error', e); - return this.createErrorChatMessage(e); - } - } - - createErrorChatMessage(error) { - return { - content: { - username: 'Rocket.Cat ErrorHandler', - text: 'Error occured while parsing an incoming webhook request. Details attached.', - icon_url: '', - attachments: [ - { - text: `Error: '${error}', \n Message: '${error.message}', \n Stack: '${error.stack}'`, - color: NOTIF_COLOR - } - ] - } - }; - } - - unknownEvent(data, event) { - return { - content: { - username: data.user ? data.user.name : (data.user_name || 'Unknown user'), - text: `Unknown event '${event}' occured. Data attached.`, - icon_url: data.user ? data.user.avatar_url : (data.user_avatar || ''), - attachments: [ - { - text: `${JSON.stringify(data, null, 4)}`, - color: NOTIF_COLOR - } - ] - } - }; - } - issueEvent(data, event) { - if (event === 'Confidential Issue Hook' && IGNORE_CONFIDENTIAL) { - return false; - } - const project = data.project || data.repository; - const state = data.object_attributes.state; - const action = data.object_attributes.action; - let user_action = state; - let assigned = ''; - - if (action === 'update') { - user_action = 'updated'; - } - - if (data.assignee) { - assigned = `*Assigned to*: @${data.assignee.username}\n`; - } - - return { - content: { - username: 'gitlab/' + project.name, - icon_url: project.avatar_url || data.user.avatar_url || '', - text: (data.assignee && data.assignee.name !== data.user.name) ? atName(data.assignee) : '', - attachments: [ - makeAttachment( - data.user, `${user_action} an issue _${data.object_attributes.title}_ on ${project.name}. -*Description:* ${data.object_attributes.description}. -${assigned} -See: ${data.object_attributes.url}` - ) - ] - } - }; - } - - commentEvent(data) { - const project = data.project || data.repository; - const comment = data.object_attributes; - const user = data.user; - const at = []; - let text; - if (data.merge_request) { - const mr = data.merge_request; - const lastCommitAuthor = mr.last_commit && mr.last_commit.author; - if (mr.assignee && mr.assignee.name !== user.name) { - at.push(atName(mr.assignee)); - } - if (lastCommitAuthor && lastCommitAuthor.name !== user.name) { - pushUniq(at, atName(lastCommitAuthor)); - } - text = `commented on MR [#${mr.id} ${mr.title}](${comment.url})`; - } else if (data.commit) { - const commit = data.commit; - const message = commit.message.replace(/\n[^\s\S]+/, '...').replace(/\n$/, ''); - if (commit.author && commit.author.name !== user.name) { - at.push(atName(commit.author)); - } - text = `commented on commit [${commit.id.slice(0, 8)} ${message}](${comment.url})`; - } else if (data.issue) { - const issue = data.issue; - text = `commented on issue [#${issue.id} ${issue.title}](${comment.url})`; - } else if (data.snippet) { - const snippet = data.snippet; - text = `commented on code snippet [#${snippet.id} ${snippet.title}](${comment.url})`; - } - return { - content: { - username: 'gitlab/' + project.name, - icon_url: project.avatar_url || user.avatar_url || '', - text: at.join(' '), - attachments: [ - makeAttachment(user, `${text}\n${comment.note}`) - ] - } - }; - } - - mergeRequestEvent(data) { - const user = data.user; - const mr = data.object_attributes; - const assignee = mr.assignee; - let at = []; - - if (mr.action === 'open' && assignee) { - at = '\n' + atName(assignee); - } else if (mr.action === 'merge') { - const lastCommitAuthor = mr.last_commit && mr.last_commit.author; - if (assignee && assignee.name !== user.name) { - at.push(atName(assignee)); - } - if (lastCommitAuthor && lastCommitAuthor.name !== user.name) { - pushUniq(at, atName(lastCommitAuthor)); - } - } - return { - content: { - username: `gitlab/${mr.target.name}`, - icon_url: mr.target.avatar_url || mr.source.avatar_url || user.avatar_url || '', - text: at.join(' '), - attachments: [ - makeAttachment(user, `${mr.action} MR [#${mr.iid} ${mr.title}](${mr.url})\n${mr.source_branch} into ${mr.target_branch}`) - ] - } - }; - } - - pushEvent(data) { - const project = data.project || data.repository; - const web_url = project.web_url || project.homepage; - const user = { - name: data.user_name, - avatar_url: data.user_avatar - }; - // branch removal - if (data.checkout_sha === null && !data.commits.length) { - return { - content: { - username: `gitlab/${project.name}`, - icon_url: project.avatar_url || data.user_avatar || '', - attachments: [ - makeAttachment(user, `removed branch ${refParser(data.ref)} from [${project.name}](${web_url})`) - ] - } - }; - } - // new branch - if (data.before == 0) { // eslint-disable-line - return { - content: { - username: `gitlab/${project.name}`, - icon_url: project.avatar_url || data.user_avatar || '', - attachments: [ - makeAttachment(user, `pushed new branch [${refParser(data.ref)}](${web_url}/commits/${refParser(data.ref)}) to [${project.name}](${web_url}), which is ${data.total_commits_count} commits ahead of master`) - ] - } - }; - } - return { - content: { - username: `gitlab/${project.name}`, - icon_url: project.avatar_url || data.user_avatar || '', - attachments: [ - makeAttachment(user, `pushed ${data.total_commits_count} commits to branch [${refParser(data.ref)}](${web_url}/commits/${refParser(data.ref)}) in [${project.name}](${web_url})`), - { - text: data.commits.map((commit) => ` - ${new Date(commit.timestamp).toUTCString()} [${commit.id.slice(0, 8)}](${commit.url}) by ${commit.author.name}: ${commit.message.replace(/\s*$/, '')}`).join('\n'), - color: NOTIF_COLOR - } - ] - } - }; - } - - tagEvent(data) { - const project = data.project || data.repository; - const web_url = project.web_url || project.homepage; - const tag = refParser(data.ref); - const user = { - name: data.user_name, - avatar_url: data.user_avatar - }; - let message; - if (data.checkout_sha === null) { - message = `deleted tag [${tag}](${web_url}/tags/)`; - } else { - message = `pushed tag [${tag} ${data.checkout_sha.slice(0, 8)}](${web_url}/tags/${tag})`; - } - return { - content: { - username: `gitlab/${project.name}`, - icon_url: project.avatar_url || data.user_avatar || '', - text: MENTION_ALL_ALLOWED ? '@all' : '', - attachments: [ - makeAttachment(user, message) - ] - } - }; - } - - createColor(status) { - switch (status) { - case 'success': - return '#2faa60'; - case 'pending': - return '#e75e40'; - case 'failed': - return '#d22852'; - case 'canceled': - return '#5c5c5c'; - case 'created': - return '#ffc107'; - case 'running': - return '#607d8b'; - default: - return null; - } - } - - pipelineEvent(data) { - const project = data.project || data.repository; - const commit = data.commit; - const user = { - name: data.user_name, - avatar_url: data.user_avatar - }; - const pipeline = data.object_attributes; - - return { - content: { - username: `gitlab/${project.name}`, - icon_url: project.avatar_url || data.user_avatar || '', - attachments: [ - makeAttachment(user, `pipeline returned *${pipeline.status}* for commit [${commit.id.slice(0, 8)}](${commit.url}) made by *${commit.author.name}*`, this.createColor(pipeline.status)) - ] - } - }; - } - - buildEvent(data) { - const user = { - name: data.user_name, - avatar_url: data.user_avatar - }; - - return { - content: { - username: `gitlab/${data.repository.name}`, - icon_url: '', - attachments: [ - makeAttachment(user, `build named *${data.build_name}* returned *${data.build_status}* for [${data.project_name}](${data.repository.homepage})`, this.createColor(data.build_status)) - ] - } - }; - } - - wikiPageTitle(wiki_page) { - if (wiki_page.action === 'delete') { - return wiki_page.title; - } - - return `[${wiki_page.title}](${wiki_page.url})`; - } - - wikiEvent(data) { - const user_name = data.user.name; - const project = data.project; - const project_path = project.path_with_namespace; - const wiki_page = data.object_attributes; - const wiki_page_title = this.wikiPageTitle(wiki_page); - const action = wiki_page.action; - - let user_action = 'modified'; - - if (action === 'create') { - user_action = 'created'; - } else if (action === 'update') { - user_action = 'edited'; - } else if (action === 'delete') { - user_action = 'deleted'; - } - - return { - content: { - username: project_path, - icon_url: project.avatar_url || data.user.avatar_url || '', - text: `The wiki page ${wiki_page_title} was ${user_action} by ${user_name}` - } - }; - } -} -``` - -This example contains code for several hooks. It can easily be extended with more. Source: [https://github.com/malko/rocketchat-gitlab-hook](https://github.com/malko/rocketchat-gitlab-hook). - -GitLab webhook help: [https://docs.gitlab.com/ee/user/project/integrations/webhooks.html](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) - diff --git a/guides/administration/administration/integrations/google-calendar.md b/guides/administration/administration/integrations/google-calendar.md deleted file mode 100644 index bb9a8b3c8c..0000000000 --- a/guides/administration/administration/integrations/google-calendar.md +++ /dev/null @@ -1,76 +0,0 @@ -# Google Calendar - -This integration uses Rocket.Chat incoming webhook. With this integration, you'll get your event notifications right into Rocket.Chat. - -### Prerequisites - -1. A Google Cloud Platform project with the Google Calendar API enabled. To create a project and enable an API, refer to [Create a project and enable the API](https://developers.google.com/workspace/guides/create-project). -2. Prepare authorization credentials for a desktop application. To learn how to create credentials for a desktop application, refer to [Create credentials](https://developers.google.com/workspace/guides/create-credentials#desktop) \(make sure you download the JSON file\). -3. Create a dedicated channel for the event messages to be posted. You can use an existing channel as well. - -### Prepare Incoming Webhook - -1. Go to `Administration` then `Integration`. -2. Click the "New" button on the top right corner, then select "incoming" for the webhook type. -3. Check "Enabled". Give it an optional name. Enter the channel name where the messages are going to be posted. For the "post as" box, enter a bot username like `rocket.cat`. You can use other usernames as well, you're free to experiment. -4. Enable the incoming webhook script. For the script, copy the contents of this file - [https://github.com/debdutdeb/rocketchat-google-calendar/blob/main/script.js](https://github.com/debdutdeb/rocketchat-google-calendar/blob/main/script.js) -5. Go to the bottom of the page and click "save". - -![Initial Configuration](../../../../.gitbook/assets/screenshot0%20%284%29%20%284%29%20%284%29.png) - -![Enable Script](../../../../.gitbook/assets/image%20%28560%29.png) - -![Save Webhook](../../../../.gitbook/assets/image%20%28510%29.png) - -As soon as the webhook is saved, you'll notice a webhook URL - - -![Webhook URL](../../../../.gitbook/assets/image%20%28523%29.png) - -We'll need this in the next step. - -### Run Integration Program - -The integration program runs on a server, periodically grabs the event data from your calendar and sends that data to your Rocket.Chat server to be processed and sent to the channel you set up in the previous section. - -To install the integration program, the easiest way is to first install the [go binary](https://golang.org/doc/install) and the run the following command - - -```bash -go get github.com/debdutdeb/rocketchat-google-calendar -``` - -Edit your `bashrc`, `zshrc` or `fish` config and add `$(go env GOPATH)/bin` to your `PATH`. This way you won't have to specify the whole path to the command every time. - -Use the help option to learn all the command line options and modify its execution process - `rocketchat-google-calendar -h` - -```text -Usage of ./rocketchat-google-calendar: - -calendars string - List of calendar IDs, separated by commas. (default "primary") - -credentials string - Enter path to the credentials file. (default "credentials.json") - -eventin string - The upper limit of upcoming event start time. Lower bound is the moment of API access. (default "30m") - -waitfor string - Time to wait before attempting a POST to Rocket.Chat webhook. (default "5m") - -webhook string - Enter the webhook url you got from Rocket.Chat. -``` - -Enter the appropriate values for the respective options. - -You'll then be asked to open a link. Click on it and use your Google account to authorize the app. - -![rocketchat-google-calendar](../../../../.gitbook/assets/image%20%28541%29.png) - -Once you get the token, copy and paste it on the terminal and hit enter. - -Your integration should now be running. - -### Notifying Once Every Day - -In the example command above, the event data is fetched from the Google servers every 5 minutes. You can change that behaviour however you like. - -One very common usecase is to be notified about all the meetings/events for each day, in the morning. You can acheive this by combining the two flags `-eventin` and `-waitfor`. - -Use `24h` for both of those options. This way the integration program will fetch data every 24 hours, list the events that's going to occur in those 24 hours and send them to your Rocket.Chat server. - diff --git a/guides/administration/administration/integrations/jenkins.md b/guides/administration/administration/integrations/jenkins.md deleted file mode 100644 index 2e6b97f572..0000000000 --- a/guides/administration/administration/integrations/jenkins.md +++ /dev/null @@ -1,8 +0,0 @@ -# Jenkins notifications via Rocket.Chat API - -_This plugin notify on build start, failure, success and much more per project basis._ - -1. Download [_RocketChat Notifier_ Plugin](https://plugins.jenkins.io/rocketchatnotifier) via Jenkins Update Center. -2. Go to _Manage Jenkins_ -> _Configure system_ and find settings for this plugin. Setup your Rocket.Chat URL, User/Password and default channel \(recommended\). -3. In project select _Post-build Actions_ and configure plugin for your needs. - diff --git a/guides/administration/administration/integrations/jfrog-xray.md b/guides/administration/administration/integrations/jfrog-xray.md deleted file mode 100644 index cb0b09f6d2..0000000000 --- a/guides/administration/administration/integrations/jfrog-xray.md +++ /dev/null @@ -1,6 +0,0 @@ -# JFrog Xray - -Add [JFrog Xray](https://jfrog.com/xray/) notifications via a new WebHook in Rocket.Chat. See the [project's documentation](https://github.com/crazy-max/rocketchat-xray) for integration instructions. - -![JFrog Xray Integration](../../../../.gitbook/assets/xray.png) - diff --git a/guides/administration/administration/integrations/jira.md b/guides/administration/administration/integrations/jira.md deleted file mode 100644 index ce73b2386d..0000000000 --- a/guides/administration/administration/integrations/jira.md +++ /dev/null @@ -1,22 +0,0 @@ -# Add Jira notifications via WebHook - -_notify on issue creation, deletion and status, resolution, comment or priority changes._ - -1. In Rocket.Chat go to "Administration"->"Integrations" and create "New Integration" -2. Choose Incoming WebHook -3. Follow all instructions like Enable, give it a name, link to channel etc. Set "Enable Script" to true and enter content of [_this script_](https://github.com/malko/rocketchat-jira-hook/blob/master/jira-rocketchat-hook.js) in the "Script" box -4. Press Save changes and copy the _Webhook URL_ \(added just below the script box\) -5. Go to your jira as administrator and follow instructions on adding outgoing webhook [here](https://developer.atlassian.com/jiradev/jira-apis/webhooks#Webhooks-configureConfiguringawebhook) - -You can tweak the content of the script to better suit your needs - -## Add Jira integration via Outgoing WebHook - -_Integration for Rocket.Chat that summarizes any JIRA issues mentioned._ - -1. Go to [https://github.com/gustavkarlsson/rocketchat-jira-trigger](https://github.com/gustavkarlsson/rocketchat-jira-trigger) and follow the instructions. - -Example of Jira integration: - -![Jira integration](../../../../.gitbook/assets/jira-webhook.png) - diff --git a/guides/administration/administration/integrations/microbadger.md b/guides/administration/administration/integrations/microbadger.md deleted file mode 100644 index e92a1511a5..0000000000 --- a/guides/administration/administration/integrations/microbadger.md +++ /dev/null @@ -1,6 +0,0 @@ -# MicroBadger - -Add [MicroBadger](https://microbadger.com) Docker image changes notifications via a new WebHook in Rocket.Chat. See the [project's documentation](https://github.com/crazy-max/rocketchat-microbadger) for integration instructions. - -![MicroBadger Intergration](../../../../.gitbook/assets/microbadger.png) - diff --git a/guides/administration/administration/integrations/microsoft-teams.md b/guides/administration/administration/integrations/microsoft-teams.md deleted file mode 100644 index 704dec138b..0000000000 --- a/guides/administration/administration/integrations/microsoft-teams.md +++ /dev/null @@ -1,116 +0,0 @@ -# Microsoft Teams - -## Goal - -* Receive message from Microsoft Teams \(**Incoming WebHook**\) -* Send message to Microsoft Teams Channel\(**Outgoing WebHook**\) - -## Create Incoming WebHook in Rocket.Chat - -_**Note:** I would advise to create New Team so not all members in your organisation have access to this Integration_ - -1. **Create Incoming Webhook with Default parameters:** - * Go to **Integrations** --> Create **New integration** --> Select **Incoming WebHook** - * Assign **Name** - * Assign **Post to Channel** \(This will be the Channel where you want to recieve msg from Teams\) - * Assign **Post as** \(Create Bot user and add bot the above mentioned Channel\) - * Copy and paste below script in **Script** section - -```javascript -class Script { - process_incoming_request({ request }) { - // UNCOMMENT THE BELOW LINE TO DEBUG IF NEEDED. - // console.log(request.content); - if ('edited_message' in request.content) { - request.content = request.content; - } - let from = request.content.from; - let who = from.name; - let icon_url = '/avatar/' + from.name + '.jpg' - let body = request.content.text.slice(16); - - if(!body) { - if(request.content.hasOwnProperty("sticker") && request.content.sticker.emoji) { - // It's a sticker - body = request.content.sticker.emoji - } else { - return {} - } - } - - return { - content: { - username: who, - icon_url: icon_url, - text: body - } - }; - } -} -``` - -1. **Save** and then open your **Incoming WebHook** You should be able to see **Webhook URL** just **copy** that, We will need that during Creating **Outgoing WebHook** in MS Teams. - -## Create Outgoing WebHook in MS Teams: - -1. Select the appropriate team and select **Manage team** from the \(**•••**\) drop-down menu. -2. Choose the **Apps** tab from the navigation bar. -3. From the window's lower right corner select Create an **outgoing webhook**. -4. In the resulting popup window complete the required fields: - - * **Name** - The webhook title and @mention tap. \(This will be your bot name in MS Teams\) - * **Callback URL** - Paste the URL here we copied from Rocket.Chat. - * **Description** - A detailed string that will appear in the profile card and the team-level App dashboard. - * **Profile Picture** \(optional\) an app icon for your webhook. - * Select the **Create** button from lower right corner of the pop-up window and the outgoing webhook will be added to the current team's channels. - - _**Note :**_ _The Name We mentioned above will be the bot name so when you send message to Rocket.Chat Mention to Bot example @namebot_ - - \_\_ - -## Create Incoming WebHook in MS Teams: - -1. Navigate to the **Team** where you want to add the webhook and select \(**•••**\) **More Options** from the top navigation bar and Select **Apps** and select **More apps**. - * Choose **Connectors** from the drop-down menu and search for **Incoming Webhook**. - * Select the **Configure** button, provide a name, and, optionally, upload an image avatar for your webhook. - * Select appropriate **Teams** and **Channel**. - * The dialog window will present a unique URL that will map to the channel. Make sure that you **copy and save the URL**—you will need to provide it to Rocket.Chat Outgoing WebHook. - * Select the **Done** button. The webhook will be available in the team channel. - -## Create Outgoing Webhook in Rocket.Chat: - -1. Create **Outgoing WebHook** from Integration: - * Select **Message Sent** as **Event Trigger** - * Select the **Channel** \(same as mentioned in Incoming Webhook\) - * Paste the **URL** we copied from Microsoft Teams - * Select Bot **Post as** \(same as in Incoming Webhook\) - * Paste Below **Script**: - -```javascript -class Script { - prepare_outgoing_request({ request }) { - console.log(request.data); - if (request.data.bot) { - //Don't repost messages from the bot. - return { }; - } else { - return { - url: request.url, - method: 'POST', - headers: {"ContentType":"application/json","Content-type":"application/json"}, - data: { - context: 'http://schema.org/extensions', - type: 'MessageCard', - // text: '{\'' + request.data.user_name+ ':': \"Isravel - Hello World\"}'; - text: request.data.user_name.bold() + ": " + request.data.text, - // text: encodeURIComponent( request.data.user_name.bold() + request.data.text) - }, - // method: 'GET' - }; - } - } - } -``` - -## Enjoy! - diff --git a/guides/administration/administration/integrations/newrelic.md b/guides/administration/administration/integrations/newrelic.md deleted file mode 100644 index 1b00dc61d1..0000000000 --- a/guides/administration/administration/integrations/newrelic.md +++ /dev/null @@ -1,10 +0,0 @@ -# NewRelic - -[NewRelic](https://newrelic.com) offers a performance management solution enabling developers to diagnose and fix application performance problems in real time. It also provides notification / alerting facet to their offerings. - -Full documentation/installation instruction: - -[https://github.com/kajisaap/rocketchat-newrelic](https://github.com/kajisaap/rocketchat-newrelic) - -Thanks to [**CloudFactory**](https://www.cloudfactory.com) - diff --git a/guides/administration/administration/integrations/nextcloud-and-webdav.md b/guides/administration/administration/integrations/nextcloud-and-webdav.md deleted file mode 100644 index fb279a316c..0000000000 --- a/guides/administration/administration/integrations/nextcloud-and-webdav.md +++ /dev/null @@ -1,22 +0,0 @@ -# Nextcloud and WebDAV integrations - -You can integrate Nextcloud with any application that uses the WebDAV protocol. - -To do so, you will need a server admin to go into `Administration -> Webdav Integration` and set the `Webdav Integration Enabled` setting to `true`. - -Users can then link their Nextcloud/WebDAV service to Rocket.Chat to access and share their stored files. - -## Adding a new Nextcloud/WebDAV server - -Once the integration has been enabled by the admin, any user will be able to link their servers to Rocket.Chat. - -To do that, you should simply press the file-sharing button on the message box \(the big "plus" at the end of the message box\) and select `add server` under the `WebDav` category. - -Then you will need your `WebDAV url`, your username and password for that server. You can find out how to get your WebDAV url on Nextcloud's docs [here](https://docs.nextcloud.com/server/14/user_manual/files/access_webdav.html). - -Usually NextCloud WebDAV urls looks like this: - -`https://example.com/nextcloud/remote.php/dav/files/USERNAME/` - -You should then be ready to start sharing files to Rocket.Chat via WebDav Protocol! - diff --git a/guides/administration/administration/integrations/nixstats.md b/guides/administration/administration/integrations/nixstats.md deleted file mode 100644 index 921c98921f..0000000000 --- a/guides/administration/administration/integrations/nixstats.md +++ /dev/null @@ -1,188 +0,0 @@ -# Nixstats notification - -Add Nixstats notifications via a new WebHook in Rocket.Chat - -1. In Rocket.Chat go to "Administration"->"Integrations" and create "New Integration". -2. Choose Incoming WebHook. -3. Follow all instructions like Enable, give it a name, link to channel etc. Set "Enable Script" to true and enter the javascript in the "Script" box. -4. Press Save changes and copy the _Webhook URL_ \(added just below the script box\). -5. Go to [https://nixstats.com](https://nixstats.com) -> Settings -> Notification Contacts -> Add \(or Edit a contact\) contact. -6. Paste the Rocket.Chat url you've copied in step 4. - -Paste this javascript in the "Script" textarea on Rocket.Chat webhook settings - -```javascript -/* exported Script */ -/* globals console, _, s */ - -/** Global Helpers - * - * console - A normal console instance - * _ - An underscore instance - * s - An underscore string instance - */ - -class Script { - /** - * @params {object} request - */ - process_incoming_request({ request }) { - var url; - var url_title; - if(request.content.domain_id) - { - url = 'https://nixstats.com/domains/'+request.content.domain_id; - url_title = request.content.name+" @ nixstats.com"; - } - else - { - url = 'https://nixstats.com/server/'+request.content.server_id; - url_title = request.content.server_name+" @ nixstats.com"; - } - return { - content:{ - text: request.content.subject, - "attachments": [ - { - "author_name": url_title, - "author_link": url, - "author_icon": "https://nixstats.com/images/favicon.png" - } - ] - } - }; - } -} -``` - -## Render nixstats graphs in Rocket.Chat - -Add Nixstats notifications via a new WebHook in Rocket.Chat - -1. In Rocket.Chat go to "Administration"->"Integrations" and create "New Integration". -2. Choose Outgoing WebHook. -3. Select **Message Sent** as Event trigger. -4. Enter **ns** as trigger word. -5. Enter `` as URLs. -6. Avatar URL ``. -7. **Token**, this is your nixstats API token, [create an API key](https://nixstats.com/settings/api). -8. Script Enabled set to **True**. - -Paste this javascript in the "Script" textarea on Rocket.Chat webhook settings - -```javascript -/* exported Script */ -/* globals Store */ - -class Script { - prepare_outgoing_request({ request }) { - let match; - - match = request.data.text.match(/^ns servers\s(ls|list)\s*(.*)?$/); - if (match) { - let u = request.url + 'servers?perpage=99&token='+request.data.token; - return { - url: u, - headers: request.headers, - method: 'GET' - }; - } - - match = request.data.text.match(/^ns graphs\s(.*)?$/); - if (match) { - var matched = false; - var options; - var serverrequest = HTTP('GET', request.url + 'servers?perpage=99&token='+request.data.token, options); - var serverlist = [] - JSON.parse(serverrequest.result.content).servers.forEach(function(pr) { - serverlist.push({'name': pr.name, 'id': pr.id}); - }); - - serverlist.forEach(function(serv) { - if(serv.id == match[1]) - { - matched = serv.id; - } - if(serv.name == match[1]) - { - matched = serv.id; - } - }); - - if(!matched){ - return { - message: { - text: 'Server not found.' - } - }; - } - else - { - let u = request.url + 'server/'+matched+'?charts=yes&token='+request.data.token; - return { - url: u, - headers: request.headers, - method: 'GET' - }; - } - } - - match = request.data.text.match(/^help$/); - if (match) { - return { - message: { - text: [ - '**Nixstats commands**', - '```', - ' ns servers ls|list', - ' ns graphs serverid|servername', - '```' - ].join('\n') - } - }; - } - } - - process_outgoing_response({ request, response }) { - var text = []; - var attach = []; - if(response.content.charts) - { - response.content.charts.forEach(function(pr) { - attach.push({ - "color": "#000000", - "text": pr.title+" on "+response.content.name, - "image_url": pr.url, - }); - }); - text.push('Performance of '+response.content.name); - } - else - { - text.push('```'); - response.content.servers.forEach(function(pr) { - text.push(''+pr.id+"\t "+pr.last_data.load.replace(",",",\t")+"\t"+pr.name+''); - }); - text.push('```'); - } - return { - content: { - text: text.join('\n'), - attachments: attach, - parseUrls: false - } - }; - } -} -``` - -After saving the data you can use the following commands to retrieve data. - -`ns servers list` to list your servers with their IDs and load average. - -![](https://github.com/NIXStats/Nixstats-integrations/blob/master/rocketchat/serverlist.png) - -`ns graphs [serverid]` to retrieve a graph of Memory, Network, Load average and Disk usage of the specified server. - -![](https://github.com/NIXStats/Nixstats-integrations/blob/master/rocketchat/graphs.png) - diff --git a/guides/administration/administration/integrations/pagerduty.md b/guides/administration/administration/integrations/pagerduty.md deleted file mode 100644 index 244d2ae3b6..0000000000 --- a/guides/administration/administration/integrations/pagerduty.md +++ /dev/null @@ -1,10 +0,0 @@ -# PagerDuty - -[PagerDuty](https://pagerduty.com) is an alarm aggregation and dispatching service for system administrators and support teams. It collects alerts from your monitoring tools, gives you an overall view of all of your monitoring alarms, and alerts an on duty engineer if there's a problem. - -Full documentation/installation instruction: - -[https://github.com/kajisaap/rocketchat-pagerduty](https://github.com/kajisaap/rocketchat-pagerduty) - -Thanks to [**CloudFactory**](https://www.cloudfactory.com) - diff --git a/guides/administration/administration/integrations/reviewboard.md b/guides/administration/administration/integrations/reviewboard.md deleted file mode 100644 index adbf1bd03c..0000000000 --- a/guides/administration/administration/integrations/reviewboard.md +++ /dev/null @@ -1,10 +0,0 @@ -# Review Board - -Add ReviewBoard notifications via a new WebHook in Rocket.Chat - -1. In Rocket.Chat go to "Administration"->"Integrations" and create "New Integration" -2. Choose Incoming WebHook -3. Follow all instructions like Enable, give it a name, link to channel etc. Set "Enable Script" to true and enter contents of [this script](https://github.com/almonteb/rocketchat-hook-reviewboard/blob/master/src/plugin.js) -4. Press Save changes and copy the _WebHook URL_ \(added just below the script box\) -5. In ReviewBoard, configure a new WebHook per [these instructions](https://www.reviewboard.org/docs/manual/dev/admin/configuration/webhooks/) - diff --git a/guides/administration/administration/integrations/rundeck.md b/guides/administration/administration/integrations/rundeck.md deleted file mode 100644 index 937cff5b0d..0000000000 --- a/guides/administration/administration/integrations/rundeck.md +++ /dev/null @@ -1,14 +0,0 @@ -# RunDeck Job Notifications - -_This plugin can be set to notify a channel when a job Starts, Fails or has Succeeded_ - -Rundeck is an open orchestration and scheduling platform used for operations support tasks, enterprise job scheduling, deployment, and more. - -It's commonly found in the ChatOps space due to its flexible API. - -1. Download the [rundeck-rocketchat-notifier](https://github.com/jszaszvari/rundeck-rocketchat-notifier) from GitHub. -2. Set up an Incoming Integration and take note of the URL. -3. Install the plugin on your RunDeck machine as per the instructions in the git repo linked above. - -Once configured you'll have notifications like the example below: ![image](../../../../.gitbook/assets/rundeck.png) - diff --git a/guides/administration/administration/integrations/sentry.md b/guides/administration/administration/integrations/sentry.md deleted file mode 100644 index 2956d59150..0000000000 --- a/guides/administration/administration/integrations/sentry.md +++ /dev/null @@ -1,40 +0,0 @@ -# Sentry - -Add Sentry notifications via a new WebHook in Rocket.Chat This script works for the sentry.com and self-hosted version. - -1. In Rocket.Chat go to "Administration"->"Integrations" and create "New Integration". -2. Choose Incoming WebHook. -3. Follow all instructions like Enable, give it a name, link to channel etc. Bonus: add [https://avatars.io/twitter/getsentry/medium](https://avatars.io/twitter/getsentry/medium) as Avatar URL. -4. Set "Enable Script" to true and enter the javascript in the "Script" box. -5. Press Save changes and copy the _Webhook URL_ \(added just below the script box\). -6. Go to your Sentry project, ie. [https://app.getsentry.com/](https://app.getsentry.com/)< organization >/< project >/settings/plugins/ and enable the "WebHooks" integration. It's in the project "settings" under All Integrations. A WebHooks integration is added there when enabled. -7. Add a new webhook by pasting the Rocket.Chat url you've copied in step 5 in the "Callback URLs" textarea \(1 URL per line\) and press the Save Changes button. -8. Test the webhook with the "Test Configuration" button in Sentry, a Test Results box should appear below, with more info \(success or failure\). - -Paste this in javascript in the "Script" textarea on Rocket.Chat WebHook settings - -```javascript -class Script { - - process_incoming_request({ request }) { - // console is a global helper to improve debug - // console.log(request.content); - - return { - content: { - text: "Error in project *" + request.content.project_name + "* (" + request.content.project + ").\n*Message:* "+ request.content.message+"\n*Culprit:* " + request.content.culprit +".\n*Check url:* " + request.content.url, - } - }; - - return { - error: { - success: false, - message: 'Error example' - } - }; - } -} -``` - -Use the console.log\(request.content\) line to debug the json content, posted by Sentry. - diff --git a/guides/administration/administration/integrations/telegram.md b/guides/administration/administration/integrations/telegram.md deleted file mode 100644 index 67bd8d6e68..0000000000 --- a/guides/administration/administration/integrations/telegram.md +++ /dev/null @@ -1,144 +0,0 @@ -# Simple Telegram Bot: - -_follow these instructions to get a simple Telegram Bot setup_ - -## Getting Started - -1. Open telegram chat in your browser or mobile phone -2. Add the user `BotFather` -3. Click start -4. Click `/newbot` -5. Follow the Instructions - -![instructions](http://i.imgur.com/8y9SG49.jpg?1) - -## Getting the Token - -1. Wait for the Token to be displayed referred to as \[myauthorization-token\] -2. Go to the Administration Portal of Rocket.Chat and the Integrations Page -3. Create a new Incoming Webhook following these instructions - * Enable script - * Paste the following - -### Incoming Webhook for Rocket.Chat - -```javascript -class Script { - addQuotePrefix(str) { - let tmp = str.split('\n'), - res = []; - - for (const frag of tmp) { - res.push(`> ${frag}`); - } - - return res.join('\n'); - } - - process_incoming_request({ request }) { - // UNCOMMENT THE BELOW LINE TO DEBUG IF NEEDED. - // console.log(request.content); - if ('edited_message' in request.content) { - request.content.message = request.content.edited_message; - } - let from = request.content.message.from; - let who = from.username - let icon_url = '/avatar/' + from.username + '.jpg' - if(!who) { - if (from.first_name && from.last_name) { - who = `${from.first_name} ${from.last_name}` - } else if (from.first_name) { - who = from.first_name - } else { - who = from.last_name - } - icon_url = `/avatar/${request.content.message.from.first_name}.jpg` - } - let body = request.content.message.text - - if(!body) { - if(request.content.message.hasOwnProperty("sticker") && request.content.message.sticker.emoji) { - // It's a sticker - body = request.content.message.sticker.emoji - } else { - return {} - } - } - - if(request.content.message.reply_to_message) { - var quotedMessage = - "*" + - request.content.message.reply_to_message.from.username + - "*\n" + - request.content.message.reply_to_message.text; - - quotedMessage = this.addQuotePrefix(quotedMessage); - body = quotedMessage + '\n' + body; - } - - return { - content: { - username: who, - icon_url: icon_url, - text: body - } - }; - } -} -``` - -## Letting Telegram Know About Rocket.Chat's WebHook - -1. Copy incoming webhook URL from Rocket.Chat -2. Change following URL with your token and Incoming webhookURL and execute in regular browser `https://api.telegram.org/bot[myauthorization-token]/setwebhook?url=[Incoming_Webhook_Link_from_Rocket.Chat]` -3. Receive the message `{ "ok": true, "result": true, "description": "Webhook successfully set" }` \(or similar\) -4. Test your incoming Webhook by sending a telegram message to the bot. It should be posted in the channel/user you specified in the incoming webhook. Check Rocket.Chat's Logs and write down `chat_id` \(or `[chat-id]`\) - -## Create Outgoing WebHook in Rocket.Chat - -* Create outgoing webhook and specify channel with the following url: `https://api.telegram.org/bot[myauthorization-token]/sendMessage?chat_id=[chat-id]` -* chat-id should be your group id in Telegram, You can get it buy adding @RawDataBot to your group - -```javascript -Message - ├ message_id: 338 - ├ from - ┊ ├ id: ***** - ┊ ├ is_bot: false - ┊ ├ first_name: 사이드 - ┊ ├ username: ****** - ┊ └ language_code: en - ├ chat - ┊ ├ id: -1001118554477 // This is Your Group id - ┊ ├ title: Test Group - ┊ └ type: supergroup - ├ date: 1544948900 - └ text: A -``` - -* Paste the Outgoing Webhook below. -* Enable listening at the Bot with /privacy and to disable \([example](http://i.imgur.com/xSjdAAy.jpg?1)\) -* Add Bot to telegram group and utilize nice cross platform communication. - -```javascript -class Script { - prepare_outgoing_request({ request }) { - if (request.data.bot) { - //Don't repost messages from the bot. - return { }; - } else { - return { - url: request.url + '&parse_mode=HTML' + '&text=' + encodeURIComponent('' + request.data.user_name+ ': ' + request.data.text), - method: 'GET' - }; - } - } -} -``` - -## Conclusion - -Enjoy! Please note, this was a community submission and is very simple. If you feel there are improvements which can be made, please feel free to submit improvements via pull requests!! :heart: - -![final product](http://i.imgur.com/LqpqUC8.jpg?1) - diff --git a/guides/administration/administration/integrations/trello.md b/guides/administration/administration/integrations/trello.md deleted file mode 100644 index 342180b75c..0000000000 --- a/guides/administration/administration/integrations/trello.md +++ /dev/null @@ -1,6 +0,0 @@ -# Trello - -A Rocket.Chat [Trello](https://trello.com/) integration to send activity notifications to Rocket.Chat channels. See the [project's documentation](https://github.com/GezimSejdiu/Rocket.Chat-Trello-Integration) for integration instructions. - -![Trello Integration](../../../../.gitbook/assets/trello-integration.png) - diff --git a/guides/administration/administration/integrations/uptime-robot.md b/guides/administration/administration/integrations/uptime-robot.md deleted file mode 100644 index 6bddcd0928..0000000000 --- a/guides/administration/administration/integrations/uptime-robot.md +++ /dev/null @@ -1,6 +0,0 @@ -# Uptime Robot - -Add [Uptime Robot](https://uptimerobot.com) notifications via a new WebHook in Rocket.Chat. See the [project's documentation](https://github.com/crazy-max/rocketchat-uptimerobot) for integration instructions. - -![Uptime Robot Integration](../../../../.gitbook/assets/uptimerobot.png) - diff --git a/guides/administration/administration/integrations/zapier/README.md b/guides/administration/administration/integrations/zapier/README.md deleted file mode 100644 index 60b6daf81f..0000000000 --- a/guides/administration/administration/integrations/zapier/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Zapier - -So, you're interested in connecting Zapier to Rocket.Chat? I have great news for you, the Rocket.Chat Zapier App is now in public Beta! - -Okay okay, before you get started there are a few things that you have to check. - -1. Is your server publicly accessible from the web? If **no**, Zapier requires it to be accessible via the web. -2. Zapier needs a specific oAuth App running to work. By default this Zapier oAuth App should be already configured, to check this go to `Admin -> oAuth Apps -> Zapier`. - -**Warning:** Make sure the `rocket.cat` user has _not_ been removed from your Rocket.Chat instance otherwise you won't be able to enable the Zaps! If it has been removed, you'll probably see an error message that says something like `(400) Bad Request and said "Invalid user [error-invalid-user]`. - diff --git a/guides/administration/administration/integrations/zapier/using-zaps.md b/guides/administration/administration/integrations/zapier/using-zaps.md deleted file mode 100644 index c2cdbb7a1e..0000000000 --- a/guides/administration/administration/integrations/zapier/using-zaps.md +++ /dev/null @@ -1,20 +0,0 @@ -# Connect Rocket.Chat to hundreds of other apps with Zapier - -[Zapier](https://zapier.com/zapbook/RocketChat/) lets you connect Rocket.Chat to hundreds of other web services. Automated connections called Zaps, set up in minutes with no coding, can automate your day-to-day tasks and build workflows between apps that otherwise wouldn't be possible. - -Each Zap has one app as the **Trigger**, where your information comes from and which causes one or more **Actions** in other apps, where your data gets sent automatically. - -## Getting Started with Zapier - -Sign up for a free [Zapier](https://zapier.com/zapbook/RocketChat) account, from there you can jump right in. To help you hit the ground running, here are some popular pre-made Zaps. - -## How do I connect Rocket.Chat to Zapier? - -* Log in to your [Zapier account](https://zapier.com/sign-up) or create a new account. -* Navigate to "Connected Accounts" from the top menu bar. -* Now click on "Connect new account" and search for "Rocket.Chat". -* Find the server you want to connect by using its URL. -* Use your credentials to connect your Rocket.Chat account to Zapier. -* Once that's done you can start creating an automation! Use a pre-made Zap or create your own with the Zap Editor. Creating a Zap requires no coding knowledge and you'll be walked step-by-step through the setup. -* Need inspiration? See everything that's possible with [Rocket.Chat and Zapier](https://zapier.com/zapbook/RocketChat). - diff --git a/guides/administration/administration/invites.md b/guides/administration/administration/invites.md deleted file mode 100644 index 981942fd3e..0000000000 --- a/guides/administration/administration/invites.md +++ /dev/null @@ -1,18 +0,0 @@ -# Invites - -Under **Invites**, you can view all the invite links generated to invite users to the workspace/channels. - -![](../../../.gitbook/assets/image%20%28349%29%20%281%29%20%281%29%20%281%29%20%281%29.png) - -## Delete a record - -If you want to delete any of these invite records: - -![](../../../.gitbook/assets/image%20%28410%29.png) - -![](../../../.gitbook/assets/image%20%28405%29%20%281%29%20%281%29.png) - -{% hint style="info" %} -This feature comes in handy when you have an invite link with an **Expiration** **date: Never**. In order to avoid abuse, you can revoke it by deleting the record. -{% endhint %} - diff --git a/guides/administration/administration/mailer.md b/guides/administration/administration/mailer.md deleted file mode 100644 index 81cf6e0c9d..0000000000 --- a/guides/administration/administration/mailer.md +++ /dev/null @@ -1,4 +0,0 @@ -# Mailer - -Document Under Development - diff --git a/guides/administration/administration/marketplace.md b/guides/administration/administration/marketplace.md deleted file mode 100644 index c2474cb3b4..0000000000 --- a/guides/administration/administration/marketplace.md +++ /dev/null @@ -1,18 +0,0 @@ -# Marketplace - -Rocket.Chat provides you with a lot of Rocket.Chat apps. They can be installed through the marketplace. You can search for any on the marketplace and can install it to your own Rocket.Chat server. - -You can access the marketplace in **Administration > Marketplace**. - -![](../../../.gitbook/assets/image%20%28413%29.png) - -{% hint style="info" %} -Your workspace should be \(registered and\) connected to Rocket.Chat Cloud in order to access the marketplace and install Rocket.Chat apps from it. -{% endhint %} - -To find information on marketplace roles please check out this article. - -{% embed url="https://docs.rocket.chat/guides/roles-in-rocket.chat/marketplace-roles" %} - - - diff --git a/guides/administration/administration/oauth-applications.md b/guides/administration/administration/oauth-applications.md deleted file mode 100644 index 8502fe4e9e..0000000000 --- a/guides/administration/administration/oauth-applications.md +++ /dev/null @@ -1,4 +0,0 @@ -# OAuth Applications - -Document Under Development - diff --git a/guides/administration/administration/permissions-1.md b/guides/administration/administration/permissions-1.md deleted file mode 100644 index 94ec6ee247..0000000000 --- a/guides/administration/administration/permissions-1.md +++ /dev/null @@ -1,134 +0,0 @@ -# Permissions - -Rocket.Chat has a vast and customizable permissions system. Most of the actions a user can make requires a certain permission so you can customize what users can do and see. - -You can find the permission grid under Administration -> Permissions. - -Permission changes are immediate and transparent. Users do not need to logout, login or refresh to change permissions. - -## Roles - -A `Role` is a set of permissions that can be given to users. Rocket.Chat already comes with a set of default roles that can be edited. You can also create new roles for users. - -When someone is registered in a Rocket.Chat server, it will normally receive the `user`. If the user is a bot or a guest from a livechat channel, it can receive different roles. Also the first user of a server always receives the role of `admin`. - -Roles can have different scopes. Currently we have two scopes `Users` and `Subscriptions`. The permissions of the `Users` roles are valid for the whole server, while the `Subscriptions` roles only apply to individual channels, where a user have to be elected to that role in that channel. - -An example of `Users` role would be an `admin`, that have permissions valid for the whole server, while a `moderator` that have a `Subscriptions` role would have permissions only in a channel that they were elected for that role. - -Also, by default roles are shown as little tags on the side of a username on messages. - -### Default Roles - -* **admin** `(Users)` - Have access to all settings and administrator tools. -* **moderator** `(Subscriptions)` - Have moderation permissions for a channel. Has to be elected by a channel owner. -* **owner** `(Subscriptions)` - Have owner permissions for a channel. When a user creates a channel they become the owner of that channel. They can also elect more owners for that channel. -* **user** `(Users)` - Normal user rights. Most users receive this role when registering. -* **bot** `(Users)` - Special Role for bot users, with some permissions related to bot functionality. -* **leader** `(Subscriptions)` - it doesn't have any special permissions, but is used when setting a `leader` to a channel. Leaders appear on the header of a channel. -* **anonymous** `(Users)` - unauthenticated users that access the server when the `Allow Anonymous Read` setting is activated. -* **guest** `(Users)` - anonymous users that want to write and participate in channels when the `Allow Anonymous Read` and `Allow Anonymous Write` settings are activated. -* **livechat-agent** `(Users)` - Agents of livechat. They can answer to livechat requests. -* **livechat-manager** `(Users)` - Manager of livechat, they can manage agents and guest. -* **livechat-guest** `(Users)` - Users coming from a livechat channel. - -## Permissions Available - -| Permission | Purpose | -| :--- | :--- | -| access-mailer | Permission to use the [Mailer Tool](settings/email/mailer.md). Accessible from Administration -> Mailer. | -| access-permissions | Permission to create and edit roles and permissions. Accessible from Administration -> Permissions. | -| add-oauth-service | Permission to manage different OAuth services and apps. Accessible from Administration -> OAuth Apps. | -| add-user-to-any-c-room | Permission to add a user to a public channel. | -| add-user-to-any-p-room | Permission to add a user to a private channel. | -| add-user-to-joined-room | Permission to add a user to a joined channel. | -| api-bypass-rate-limit | Permission to call api without rate limitation. See [Rate Limiter](https://docs.rocket.chat/developer-guides/rest-api/rate-limiter/). | -| archive-room | Permission to archive a channel. | -| assign-admin-role | Permission to promote user to Admin. Requires view-user-administration permission. Accessible from Administration -> Users. | -| assign-roles | Permission to assign roles for a user. Requires view-user-administration permission. Accessible from Administration -> Users. | -| auto-translate | Permission to use the [Auto Translate Tool](../misc.-admin-guides/google-cloud/auto-translate.md). Accessible from Administration -> Message -> Auto Translate. | -| ban-user | Permission to ban a user. | -| bulk-create-c | Permission to bulk create public channels. | -| bulk-register-user | Permission to bulk add users. | -| call-management | Permission to start a meeting. Requires Video Conference -> BigBlueButton enabled. Accessible from More -> BBB Video Chat -> Start Meeting. | -| clean-channel-history | Permission to prune a channel's messages and/or files. | -| clean-group-history | Permission to prune a group's messages and/or files. | -| clean-direct-history | Permission to prune direct messages and/or files. | -| close-livechat-room | Permission to close your own live chat channels. | -| close-others-livechat-room | Permission to close other live-chat channels. | -| create-c | Permission to create public channels. | -| create-d | Permission to start direct messages. | -| create-p | Permission to create private groups. | -| create-personal-access-tokens | Permission to create Personal Access Tokens. Accessible from My Account -> Personal Access Tokens. | -| create-user | Permission to create new users. Accessible from Administration -> Users. Click the + sign found on the top right hand corner of the Users list to create a new user. | -| delete-c | Permission to delete public channels. | -| delete-d | Permission to delete direct messages. | -| delete-message | Permission to delete a message within a channel. | -| delete-p | Permission to delete private channels. | -| delete-user | Permission to delete users. | -| edit-message | Permission to edit a message. | -| edit-other-user-active-status | Permission to enable or disable other accounts. Accessible from Administration -> Users. | -| edit-other-user-info | Permission to change other user's name, username or email address. Accessible from Administration -> Users. | -| edit-other-user-password | Permission to modify other user's passwords. Requires edit-other-user-info permission. Accessible from Administration -> Users. | -| edit-privileged-setting | Permission to edit privileged settings. | -| edit-room | Permission to edit a room's name, topic, type \(private or public status\) and status \(active or archived\). | -| edit-room-retention-policy | Permission to edit's a room's retention policy. | -| force-delete-message | Permission to forcefully delete messages, independent of any deletion blocking setting. | -| join-without-join-code | Permission to bypass join codes when entering a channel with a join code set. | -| leave-c | Permission to leave the public channel. | -| leave-p | Permission to leave the private channel. | -| mail-messages | Permission to use the "Mail Messages" tool in the channel actions menu. | -| manage-apps | Permission to manage all apps. Accessible from Administration -> Apps. | -| manage-assets | Permission to manage assets. Must also be admin Accessible from Administration -> Assets. | -| manage-cloud | Permission to manage cloud. Requires view-user-administration permission. Accessible from Administration -> Cloud. | -| manage-emoji | Permission to add custom emojis to the server. Accessible from Administration -> Custom Emoji. | -| manage-outgoing-integrations | Permission to manage all outgoing integrations. Accessible from Administration -> Integrations. | -| manage-incoming-integrations | Permission to manage all incoming integrations. Accessible from Administration -> Integrations. | -| manage-oauth-apps | Permission to manage OAuth apps. Accessible from Administration -> OAuth. | -| manage-own-outgoing-integrations | User can create and edit own outgoing integration - webhooks. | -| manage-own-incoming-integrations | User can create and edit own incoming integration - webhooks. | -| manage-sounds | Permission to manage sounds. Accessible from Administration -> Custom Sounds. | -| mention-all | Permission to mention everyone in a channel. | -| mention-here | Permission to notify active users in a channel. | -| message-impersonate | Permission to impersonate other users using message alias. Accessible from Administration -> Permissions. \| | -| mute-user | Permission to mute other users in the same channel. | -| pin-message | Permission to pin a message in a channel. | -| post-readonly | Permission to post messages on read-only channels. | -| preview-c-room | Permission to preview public channels. | -| remove-closed-livechat-rooms | Permission to close livechat rooms. Requires view-livechat-rooms permission. Accessible from Livechat -> Current Chats. | -| remove-user | Permission to remove users from channels. | -| reset-other-user-e2e-key | Permission to set E2E key. See [End to End Encryption](https://docs.rocket.chat/user-guides/end-to-end-encryption/). | -| run-import | Permission to use the data importer tools. Must also be an admin. Accessible from Administration -> Import. | -| run-migration | Permission to run migrations. | -| save-others-livechat-room-info | Permission to add additional information to both the visitor and livechat rooms. | -| send-many-messages | Permission to bypasses rate limit of 5 messages per second. | -| set-leader | Permission to set leaders for channels | -| set-moderator | Permission to set moderators for channels. | -| set-owner | Permission to set other users as owner of a public channel. | -| set-react-when-readonly | Permission to react to messages in only channels. | -| set-readonly | Permission to set room read-only. Accessible from Room Info -> Edit. | -| snippet-message | Permission to create message snippets. | -| start-discussion | Permission to start a discussion. | -| start-discussion-other-user | Permission to start a discussion, which gives permission to the user to create a discussion from a message sent by another user as well. | -| unarchive-room | Permission to unarchive channels. | -| user-generate-access-token | Permission to create authorization tokens for users. | -| view-broadcast-member-list | Permission to view the list of users in a broadcast channel. | -| view-c-room | Permission to view public channels. | -| view-d-room | Permission to view direct messages. Does not affect ability to begin / start a direct message with another user. | -| view-full-other-user-info | Permission to view full profile of other users including account creation date, last login, etc. | -| view-history | Permission to view the channel history. | -| view-join-code | Permission to view the join code of channels. | -| view-joined-room | Permission to view current joined channels. | -| view-l-room | Permission to view live chat channel. | -| view-livechat-analytics | Permission to view live chat analytics. Requires Livechat feature enabled and view-livechat-manager permission. | -| view-livechat-manager | Permission to view other livechat managers. | -| view-livechat-rooms | Permission to view list of live chat channels. | -| view-logs | Permission to view logs. Accessible from Administration -> View Logs. | -| view-other-user-channels | Permission to manage channels on the admin screen. | -| view-outside-room | Permission to find new channels and users. Users without this permission wont see channels that they are not part of when searching using the spotlight. | -| view-p-room | Permission to view private channels. | -| view-privileged-setting | Permission to view privileged settings. | -| view-room-administration | Enables Administration -> Channels module. Enables Permission to view public, private and direct message statistics. Does not include the permission to view conversations or archives. | -| view-statistics | Enables Administration -> Info module. Enables the permission to view system statistics such as number of users logged in, number of rooms, operating system information. | -| view-user-administration | Enables Administration -> Users module. Only includes partial, read-only list view of other user accounts currently logged into the system. No user account information is accessible with this permission. Add view-full-other-user-info to see complete list of other users via the Administration -> Users. | - diff --git a/guides/administration/administration/rooms-aka-channels.md b/guides/administration/administration/rooms-aka-channels.md deleted file mode 100644 index 270e8a8b6b..0000000000 --- a/guides/administration/administration/rooms-aka-channels.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -description: 'Here you can view room details, edit rooms and delete rooms.' ---- - -# Rooms \(aka Channels\) - -## Room Details - -To view room details: - -* go to the **Administration** tab -* select **Rooms** -* here you can see the all rooms that currently exist in your Rocket.Chat workspace along with details like number of users in a room, number of messages, type of room, etc as shown below: - -![](../../../.gitbook/assets/Screenshot%202021-05-19%20at%2011.22.38%20AM.png) - -You are provided with a variety of filters like **Public**, **Private**, etc available to help you sort them by type. - -![](../../../.gitbook/assets/Screenshot%202021-05-19%20at%2011.45.56%20AM.png) - -## Edit Room Details - -To edit room details: - -* click the room, you want to edit the details for -* here you have options to change room's avatar, edit room details, and to configure other settings with respect to this room like Read-Only, Private etc. as shown below: - -![](../../../.gitbook/assets/Screenshot%202021-05-19%20at%2011.48.45%20AM.png) - -* After making your desired changes, click **Save** button. - -![](../../../.gitbook/assets/Screenshot%202021-05-19%20at%2011.51.17%20AM.png) - -## Delete Room - -* Search and click on the room you want to delete in the **Rooms** under **Administration** -* Press **Delete** to delete the room. - -![](../../../.gitbook/assets/Screenshot%202021-05-19%20at%2011.58.29%20AM.png) - -* Click Y**es, delete it!** to delete it. - -![](../../../.gitbook/assets/Screenshot%202021-05-19%20at%2012.00.42%20PM.png) - diff --git a/guides/administration/administration/settings/README.md b/guides/administration/administration/settings/README.md deleted file mode 100644 index 29e82f8cf1..0000000000 --- a/guides/administration/administration/settings/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Settings - diff --git a/guides/administration/administration/settings/account-settings/README.md b/guides/administration/administration/settings/account-settings/README.md deleted file mode 100644 index 5f11271693..0000000000 --- a/guides/administration/administration/settings/account-settings/README.md +++ /dev/null @@ -1,109 +0,0 @@ -# Accounts - -In this section, you can modify various settings about the accounts of the users in your Rocket.Chat server. - -In this guide, we will go over all settings in the _Accounts_ Section. - -These are the basic Account configuration settings. Most of the options are either `True` or `False` depending on whether you want the setting enabled or not. - -* **Allow anonymous read**: Setting this to true will allow people to use the chat without having to create an account or log in. Anonymous users will be only allowed to read messages on public channels. -* **Allow anonymous write**: This will allow Anonymous users to post messages on public channels. -* **Allow users to delete own account**: Setting this to true allows users to delete their account. When a user is deleted all their messages are deleted too. -* **Allow User Profile Change**: Setting this to false will block users from changing the information on their profile. -* **Allow User Avatar Change**: Setting this to false will block users from changing their avatar. -* **Allow Name Change**: Setting this to false will block users from changing their name. -* **Allow User Username Change**: Setting this to false will block users from changing their usernames. -* **Allow User Email Change**: Setting this to false will block users from changing their email. -* **Allow User Password Change**: Setting this to false will block users from changing their password. -* **Custom Fields to Show in User Info**: Other fields to be displayed in the user info. Please see more at [Custom fields](custom-fields.md). -* **Login Expiration in Days**: After this number of days of inactivity, the user will be logged out. -* **Show Default Login Form**: Setting this to false will remove the login form from the login screen. This setting is useful when you are using a third-party login system. -* **Placeholder for email or username login field**: This will change the placeholder for the _email or username_ field on the login screen. -* **Placeholder for password login field**: This will change the placeholder for the _password_ field on the login screen. -* **Forget user session on window close**: This will log out users when they close the window running Rocket.Chat. -* **Fields to Consider in Search**: Specifies the fields to be considered when searching for users. Default is _username, name_. -* **Default Directory Listing**: This will set the default directory to be listed. - -Clicking on the `Reset` button will reset all these basic configurations back to their default value. - -## Default User Preferences - -* **Enable Auto-Away**: When set to True, it will automatically change the User's status to Away they exit Rocket.Chat. -* **Idle Time Limit**: Sets how long _in milliseconds_ for a User to go idle. -* **Notification Duration**: This will set how long _in milliseconds_ for a notification to be displayed. -* **Require Interaction to Dismiss Desktop Notification**: Enabling this will set the notification prompt active until the User interacts with it. -* **Audio Notifications Default Alert**: A dropdown to select when to play the default audio notification. Default to _Mentions_. -* **Desktop Notifications Default Alert**: Lets you set when the desktop notification alert is triggered. Default is _All messages_. This only concerns the groups and channels the user belongs to. -* **Mobile Notifications Default Alert**: Sets when the default notification alert will play on mobile devices. -* **Unread Tray Icon Alert**: Setting this to false will stop the unread tray icon from displaying. -* **Use Emojis**: Setting this to false will disable the use of emojis. -* **Convert ASCII to Emoji**: When this is true, ASCII characters will be converted to emoji. -* **Auto Load Images**: Setting this to false will prevent images from auto-loading when a room/chat is opened. -* **Save Mobile Bandwidth**: When enabled acts like a data saver. -* **Collapse Embedded Media by Default**: Setting this to true will cause embedded media cards to collapse. -* **Hide Usernames**: When enabled, it'll hide usernames in conversation rooms. -* **Hide Roles**: When set to true, user roles like _admin_, and _moderator_ will not be shown in chat rooms. -* **Hide Right Sidebar with Click**: Setting this true will give the ability for the right sidebar to be hidden. -* **Hide Avatars**: Enabling this will hide users avatar in chat. -* **Group by Type**: This lets you group conversations by type. -* **Sidebar Channel List Mode**: Lets you choose from _Extended, Medium, Condensed_ how the sidebar should be. -* **Hide Avatars in Sidebar**: Enabling this will disable avatars from showing at the sidebar. -* **Unread on top**: Setting this to true will display all unread messages at the top. -* **Group favorites**: Setting this to false will disable favoriting groups. -* **Enter key Behaviour**: Lets you configure the action of the Enter key. -* **MessageBox View Mode**: Lets you select how message boxes appear. -* **Offline Email Notifications**: Lets you set when users should receive email notifications. -* **New Room Notification**: Configures the notification when a new room is created/joined. -* **New Message Notification**: Lets you select the notification for new messages. -* **Mute Focused Conversations**: When set to true, no notification will be sent for focused/open conversations. -* **Notifications sound volume**: Lets you set the notification volume. -* **Group discussions**: When set to true allows group discussion. - -## Avatar - -* **Resize Avatar**: Set this to true to resize user avatars to a predefined size. You need ImageMagick or GraphicsMagick installed on your server for this feature to work. -* **Avatar Size**: The desired size after the avatar resizing. The unit is pixels \(px\). -* **Avatar External Provider URL**: Lets you set a URL from which avatars can be loaded. -* **Avatar cache time**: This will set how long _in milliseconds_ you want users avatar to be cached. -* **Block Unauthenticated Access to Avatars**: Enabling this will restrict access to users avatar for those that are not authenticated. -* **Set Default Avatar**: If this setting is set to true, Rocket.Chat will try to find a default avatar based on OAuth Account or Gravatar. - -## Iframe - -These settings are related to the Iframe Integration, please see the [Iframe integration page](https://developer.rocket.chat/guides/developer/iframe-integration) for more details. - -## Password Policy - -**Enable Password Policy**: When this is set to true, new passwords must follow the corresponding configured policies. - -The various settings that fall under this have simple descriptions for understanding. - -## Registration - -* **Send email to user when user is activated**: When enabled, an email will be sent to the user after their account has been activated. -* **Send email to user when user is deactivated**: If set to `true`, users will get an email after account deactivation. -* **Default username prefix suggestion**: This is the prefix that will be suggested when a user is creating a username. Default is `user`. -* **Require Name For Signup**: If this is set to true, the name of the user will be required to create an account. -* **Require Password Confirmation**: If this is set to true, the user will have to input his password twice when registering. -* **Email Verification**: If this is set to true, users will have to confirm their email via a confirmation email sent to their email. \(For this setting work, the SMTP settings must be already set up. See [Email Configuration](../email/setup.md)\) -* **Manually Approve New Users**: If this is set to true, new users will have to wait for a user with the `view-user-administration` permission to approve their account before using Rocket.Chat. -* **Allowed Domains List**: This will block emails with different domains than the ones on this list. -* **Blocked Domains List**: This will block emails with domains that are on this list. -* **Use Default Blocked Domains List**: Will block the email domains listed [here](https://github.com/RocketChat/Rocket.Chat/blob/develop/app/lib/server/lib/defaultBlockedDomainsList.js) -* **Use DNS Domain Check**: When this is set to true, users won't be able to register with invalid domains. -* **Registration Form**: This will change how the registration form is presented. Currently, there are 3 options: - * Public: The form will be public and anyone will be able to access it; - * Disabled: The form will be disabled and users won't be able to register through it; - * Secret URL: The form will be only accessible using a specific URL; -* **Registration Form Secret URL**: String to be added to the secret URL. Is recommended to use a random string for that. Example: `https://open.rocket.chat/register/[secret_hash]`. -* **Invite URL Type**: URL type can either be direct or through a proxy. -* **Registration Form Link Replacement Text**: Text to be shown in place of the registration form when the registration form is disabled. -* **Registration with Authentication Services**: Set this to true to allow registration with third-party authentication services like Google or Twitter. -* **Default Roles for Authentication Services**: Default roles users will be given when registering through authentication services. -* **Password Reset**: Set this to true to allow users to reset their password. -* **Custom Fields**: A valid `JSON` of key values pairs of additional fields to be added during user registration. - -## Two Factor Authentication - -Here you can enable or disable Two Factor Authentication for users, and set for how long a token is valid. - diff --git a/guides/administration/administration/settings/analytics.md b/guides/administration/administration/settings/analytics.md deleted file mode 100644 index 737f23d047..0000000000 --- a/guides/administration/administration/settings/analytics.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -description: >- - This feature allows you to view the chat flow (conversation) and your livechat - agents' performance (productivity) over a span of time that you choose. ---- - -# Analytics - -To access **Analytics** settings: - -Go to Analytics in the omnichannel panel settings, as shown below: - -![](../../../../.gitbook/assets/0%20%2811%29.png) - -## To view conversation history: - -1. Select Conversations from the drop-down. - -![](../../../../.gitbook/assets/1%20%2810%29.png) - - 2. Select your desired department. - -![](../../../../.gitbook/assets/8%20%286%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29.png) - - 3. Select your desired start date and end date. - -![](../../../../.gitbook/assets/9%20%285%29%20%281%29%20%281%29.png) - -### Details of conversation matrices: - -![](../../../../.gitbook/assets/4%20%2810%29.png) - -**Total Conversations:** It represents the total number of conversations during the selected period of time. - -**Open Conversations:** It represents the total number of open conversations for your selected department during the chosen period. - -**Total Messages:** It represents the total number of messages received in all the conversations during a selected period. - -**Busiest Day:** It shows the day during which you received the most chats for your selected time. - -**Conversation Per Day:** It shows the average count of conversations you received per day. - -**Busiest Time:** It shows the hour during which you received most chats for your selected period of time. - -You can also see the **percentage of conversations**, an **average of chat duration**, and **total messages handled** by each one of your agents from your selected department, as shown below: - -![](../../../../.gitbook/assets/5%20%2810%29.png) - -![](../../../../.gitbook/assets/6%20%289%29.png) - -## To view productivity history of your agents: - -1. Select Productivity from the drop-down. - -![](../../../../.gitbook/assets/7%20%287%29.png) - -2. Select your desired department. - -![](../../../../.gitbook/assets/8%20%286%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29.png) - -3. Select your desired start date and end date. - -![](../../../../.gitbook/assets/9%20%285%29%20%281%29.png) - -### Details of productivity matrices: - -![](../../../../.gitbook/assets/image%20%2871%29.png) - -**Average of Response Time:** This matrix represents the average of your agent’s team’s responses to all the conversations that are automatically assigned to them during a selected time. - -**Average of First Response Time:** This matrix represents the average of the team’s first response to all the chats they pick up. - -**Average of Reaction Time:** This matrix represents the average of the team’s reaction to the assigned chats. - -You can also see the **Average of First Response Time**, **Best First Response Time**, **Average of Response Time**, and **Average of Reaction Time** of each one of your agents from your selected department, as shown below: - -![](../../../../.gitbook/assets/11%20%284%29.png) - -![](../../../../.gitbook/assets/image%20%2872%29.png) - diff --git a/guides/administration/administration/settings/assets.md b/guides/administration/administration/settings/assets.md deleted file mode 100644 index 386ee6984e..0000000000 --- a/guides/administration/administration/settings/assets.md +++ /dev/null @@ -1,4 +0,0 @@ -# Assets - -Document Under Development - diff --git a/guides/administration/administration/settings/atlassian-crowd.md b/guides/administration/administration/settings/atlassian-crowd.md deleted file mode 100644 index fdb5ea4059..0000000000 --- a/guides/administration/administration/settings/atlassian-crowd.md +++ /dev/null @@ -1,4 +0,0 @@ -# Atlassian Crowd - -Document Under Development - diff --git a/guides/administration/administration/settings/blockstack.md b/guides/administration/administration/settings/blockstack.md deleted file mode 100644 index 684661ada4..0000000000 --- a/guides/administration/administration/settings/blockstack.md +++ /dev/null @@ -1,4 +0,0 @@ -# Blockstack - -Document Under Development - diff --git a/guides/administration/administration/settings/bots.md b/guides/administration/administration/settings/bots.md deleted file mode 100644 index 0d96eb35a8..0000000000 --- a/guides/administration/administration/settings/bots.md +++ /dev/null @@ -1,4 +0,0 @@ -# Bots - -Document Under Development - diff --git a/guides/administration/administration/settings/canned-responses-rocket.chat-admins-guides.md b/guides/administration/administration/settings/canned-responses-rocket.chat-admins-guides.md deleted file mode 100644 index f52c56b895..0000000000 --- a/guides/administration/administration/settings/canned-responses-rocket.chat-admins-guides.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -description: Rocket.Chat Enterprise feature ---- - -# Canned Responses Rocket.Chat Admin's Guides - -![](../../../../.gitbook/assets/2021-06-10_22-31-38%20%283%29%20%283%29%20%283%29.jpg) - -{% hint style="info" %} -Canned responses allow you to save message snippets that you can call with shortcuts \(preceded with `!`\) to communicate a quick note to your visitors in Omnichannel and for messaging in regular conversations inside your Rocket.Chat workspace. -{% endhint %} - -## Enable Canned Responses on your workspace - -To enable canned responses on your workspace: - -1. Go to **Administration**: - -![](../../../../.gitbook/assets/image%20%28241%29.png) - -2. Search **Canned Responses** in **Settings**, **Enable** it, and hit **Save Changes**: - -![](../../../../.gitbook/assets/image%20%28535%29.png) - -## Canned Responses Permissions: - -Define which user roles should be able to view, create and delete the canned responses. Go to `Administration` -> `Permissions` and use search to filter the canned responses permissions only: - -![](../../../../.gitbook/assets/image%20%28550%29.png) - -Please enable `Omnichannel` - -{% hint style="info" %} -Using canned responses in regular conversations with other users of your workspace will require the Omnichannel feature to be enabled. -{% endhint %} - -![](../../../../.gitbook/assets/screenshot-2020-07-28-at-00.23.19.png) - -Please check the omnichannel manager's guide for canned responses to save a new canned response for your workspace. - -{% page-ref page="../../../omnichannel/canned-responses-omnichannel-managers-guide/" %} - - - diff --git a/guides/administration/administration/settings/cas.md b/guides/administration/administration/settings/cas.md deleted file mode 100644 index 6136db6aa5..0000000000 --- a/guides/administration/administration/settings/cas.md +++ /dev/null @@ -1,38 +0,0 @@ -# CAS - -Central Authentication Service \(CAS\) allows users to use one set of credentials to sign into many sites over many different protocols. - -Rocket.Chat includes a CAS plugin that allows you to use your existing CAS server for user authentication. - -For more information on CAS, see [github.com/apereo/cas](https://github.com/apereo/cas). - -### Rocket.Chat CAS Administration - -These settings are in the `CAS` settings page under `Administration`: - -1. Visit [https://my.rocket.chat.url/admin/CAS](https://my.rocket.chat.url/admin/CAS) - -or - -1. Log into your Rocket.Chat instance as a user with administrator privileges. -2. Click the "Options" button \(3 dots at the top left of the screen\). -3. Click the "Administration" link that drops down. \(If you do not see one of these links, you are not logged in as a user with enough privileges. Log out and back in with an admin user\). -4. Click the "CAS" link on the left side of the administration section. - -Your Rocket.Chat instance is the _CAS client_. You must provide a compatible _CAS Server_. - -Once you know your CAS server's URL, enter it into the Rocket.Chat CAS Administration page: - -* **SSO Base URL**: `https://<>/cas` -* **SSO Login URL**: `https://<>/cas/login` -* **CAS Version**: `(1.0|2.0)` - -The `/cas` and `/cas/login` URLs are the standard, but not required. Check with your CAS server provider if the defaults do not work. - -The **CAS Version** must be matched to the _CAS Server_ provider. Most modern providers will use `CAS 2.0`. - -## Notes - -1. CAS by ja-sig requires ssl/tls for all connections. -2. Any Drupal 7 or 8 site can serve as a compatible CAS Server. See [drupal.org/project/cas](https://www.drupal.org/project/cas). - diff --git a/guides/administration/administration/settings/custom-emoji-filesystem.md b/guides/administration/administration/settings/custom-emoji-filesystem.md deleted file mode 100644 index 3815a6a71a..0000000000 --- a/guides/administration/administration/settings/custom-emoji-filesystem.md +++ /dev/null @@ -1,4 +0,0 @@ -# Custom Emoji Filesystem - -Document Under Development - diff --git a/guides/administration/administration/settings/discussion.md b/guides/administration/administration/settings/discussion.md deleted file mode 100644 index f37fe74431..0000000000 --- a/guides/administration/administration/settings/discussion.md +++ /dev/null @@ -1,4 +0,0 @@ -# Discussion - -Document Under Development - diff --git a/guides/administration/administration/settings/e2e-encryption.md b/guides/administration/administration/settings/e2e-encryption.md deleted file mode 100644 index 8e3ed7c54e..0000000000 --- a/guides/administration/administration/settings/e2e-encryption.md +++ /dev/null @@ -1,4 +0,0 @@ -# E2E Encryption - -Document Under Development - diff --git a/guides/administration/administration/settings/email/README.md b/guides/administration/administration/settings/email/README.md deleted file mode 100644 index 148844e6e1..0000000000 --- a/guides/administration/administration/settings/email/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Email - -Here you find various Email settings and tools: - -* [Email Configuration](setup.md) -* [Edit Email Content](editing-emails-content.md) -* [Mailer](mailer.md) -* [Direct Email Reply](direct-reply.md) - diff --git a/guides/administration/administration/settings/email/direct-reply.md b/guides/administration/administration/settings/email/direct-reply.md deleted file mode 100644 index 2d1dbc2512..0000000000 --- a/guides/administration/administration/settings/email/direct-reply.md +++ /dev/null @@ -1,96 +0,0 @@ -# Direct Email reply - -## Introduction - -Enable this feature to allow users to reply to chat messages by directly replying to email notifications they receive. We currently use [subaddressing](https://en.wikipedia.org/wiki/Email_address#Subaddressing) for this feature. - -## Set up credentials - -Go to `Administration settings > Email > Direct reply`. - -After that: - -* select the email server protocol \(`IMAP` or `POP`\) -* your email server host name \(e.g. `imap.example.com` or `pop.example.com`\) -* the port \(143 or 993 for IMAP and 110 or 995 for POP\) -* ignore TLS `true` if port 143 or 110 -* email check frequency \(in minutes\) if POP server \(>=2\) -* delete intercepted emails. We recommend to select/keep `true` if you don't want to keep copy of email messages, in case IMAP server. -* a separator \(default and recommended\) is the character separating base and tag part of the email. E.g.: `base+tag@domain` \(separator: +\). [More info here](https://en.wikipedia.org/wiki/Email_address#Subaddressing) -* your credentials \(Username & password\) - - Once filled, click **Save changes**. - -## Example settings - -### IMAP settings - -![IMAP server configuration.](../../../../../.gitbook/assets/imap-1.png) - -### POP3 settings - -Make sure your **POP3** server keeps keep **no** copy of emails, otherwise it is treated as a new message every time. - -![POP server configuration.](../../../../../.gitbook/assets/pop-1.png) - -Now, you can reply chat messages via email. It supports full formatting like inline, multiline, bold, italics etc. - -### Switch from IMAP to POP - -* Before you switch from IMAP to POP over the same email address, you must empty all the folders. Keeping all emails results in duplicate messages, because all those messages in POP are treated as new messages. - -## Note - -* Currently, only emails in English are supported, or at least the quote `On , wrote:` is in English. - -An Email body in languages other than English may also work until and unless `On , wrote:` is in English or a copy of older email is removed manually. - -* Only text messages are supported; attachments are not supported yet. - -## Known issues - -### Quoted headers - -Quoted headers aren't picked up if the email client breaks it up into multiple lines. - -GMail breaks up any lines over 80 characters for you. - -```text -On , -wrote: -> blah -``` - -Not to mention that we are searching for `on` and `wrote`. It doesn't work with other languages. - -**Possible solution**: while replying, remove everything else than your actual message. - -### Weird signatures - -Lines starting with `-` or `_` sometimes mark the beginning of signatures: - -```text -Hello - --- -Rick -``` - -But some users change this convention: - -```text -Hello - -Mr Rick Olson -Galactic President Superstar Mc Awesomeville -GitHub - -**********************DISCLAIMER*********************************** -* Note: blah blah blah * -**********************DISCLAIMER*********************************** -``` - -## Problem? - -Your message wasn't posted? Did you get an `Invalid Email` in the `Admin` console? This most likely means that the email format was not as expected. Maybe you were blocked or the message/room was deleted. - diff --git a/guides/administration/administration/settings/email/editing-emails-content.md b/guides/administration/administration/settings/email/editing-emails-content.md deleted file mode 100644 index 5d1c77f70c..0000000000 --- a/guides/administration/administration/settings/email/editing-emails-content.md +++ /dev/null @@ -1,8 +0,0 @@ -# Edit your Email Content - -Almost all predefined emails sent to users in your Rocket.Chat server can be customized. - -To customize email content, simply select the email you want to change. From there you can change the subject and the body of an email. When you write the body of your email, you can add _placeholders_ that change to real data when you send it. E.g. `[Site_Name]` changes to your Rocket.Chat server name. - -Your access to more _placeholders_ depends on which email you are editing. For a detailed list of available _placeholders_, check the text under the `Body` field. - diff --git a/guides/administration/administration/settings/email/mailer.md b/guides/administration/administration/settings/email/mailer.md deleted file mode 100644 index c92192cf0b..0000000000 --- a/guides/administration/administration/settings/email/mailer.md +++ /dev/null @@ -1,18 +0,0 @@ -# Mailer - -Use the Mailer tool to send email to users inside your Rocket.Chat server. - -Use the `From` field to set the address to send the email. Check the `Dry Run`option to send the email only to the address defined in `From`. - -You can also filter who receives the email by using a valid user query in the `Query` field. - -Then, you can write a subject and a body for the email. When you write the body, add brackets to add dynamic data to the body. - -Add the following brackets to the email body: - -* `[unsubscribe]`: creates an unsubscribe link. The email body **must** have an unsubscribe link. -* `[name]`: uses the full name of the user that receives the email -* `[fname]`: uses the first name of the user that receives the email -* `[lname]`: uses the last name of the user that receives the email -* `[email]`: uses the email address of the user that receives the email - diff --git a/guides/administration/administration/settings/email/setup.md b/guides/administration/administration/settings/email/setup.md deleted file mode 100644 index d5421861f3..0000000000 --- a/guides/administration/administration/settings/email/setup.md +++ /dev/null @@ -1,31 +0,0 @@ -# Email Configuration - -Rocket.Chat features include using emails, notifications, email verification, mailer, and much more. - -Before using those features, you must connect a SMTP server to Rocket.Chat. To do that, you must have access to a SMTP server and a valid SMTP log in credentials. - -{% hint style="info" %} -**This configuration is only possible for Self-managed servers and/or is pre-configured for Cloud workspaces.** -{% endhint %} - -## Set up your Credentials - -Go to `Administration settings > Email > SMTP`. - -Enter: - -* Your SMTP server host name \(e.g. `mail.example.com`\) -* The port \(usually 587 for modern secured SMTP servers\) -* Your credentials -* A name and email to appear in the `From` field of the emails - -Once completed, click **Save changes**. - -![SMTP server configuration.](https://user-images.githubusercontent.com/20342522/53436704-a4989080-39b0-11e9-8ea6-f320affc798f.png) - -## Test Changes - -Go back into the `SMTP settings` and click **Test SMTP settings**. You should receive an email within a few minutes. If you do not, check the logs \(`Administration > View Logs`\) to see what happened. - -**Note**: Make sure `Debug logging` is on; the default is to log information only. - diff --git a/guides/administration/administration/settings/enterprise.md b/guides/administration/administration/settings/enterprise.md deleted file mode 100644 index d92b466997..0000000000 --- a/guides/administration/administration/settings/enterprise.md +++ /dev/null @@ -1,4 +0,0 @@ -# Enterprise - -Document Under Development - diff --git a/guides/administration/administration/settings/federation.md b/guides/administration/administration/settings/federation.md deleted file mode 100644 index 89247abf05..0000000000 --- a/guides/administration/administration/settings/federation.md +++ /dev/null @@ -1,168 +0,0 @@ -# Federation - -## Introduction - -Rocket.Chat Federation allows servers to communicate with each other, with no limits to the number of servers connected. - -We use industry standards, like DNS records, to keep the process as seamless as possible, and seek the most hassle-free communication between servers. - -When enabling federation on your server, your server becomes part of the Rocket.Chat Federated Network, which allows it to find and exchange messages and files with other Federation-enabled Rocket.Chat servers. - -## Features - -* **Current** - * Invite users from remote servers - * Direct chats between servers - * Private and broadcast rooms with remote users from any number of servers - * Read receipts, notifications and alerts distributed to remote servers - * Mute/Unmute remote users - * Share files among servers -* **Confirmed Next Features** - * Encrypted rooms - * Whitelist servers to communicate with - * Better federation set-up process, with helpers to validate the configuration - * Public rooms with remote users from any number of servers - -## Configuration - -When you open the Federation config screen, this is what you see: - -![Initial Federation Screen](../../../../.gitbook/assets/initial.png) - -The following is a brief explanation of each configuration option: - -### Enabled - -It determines whether or not Federation is enabled on this server. - -### Status - -It is the current Federation status, which can be one of the following: - -* **Could not enable, settings are not fully set :** make sure all the options are correctly filled and saved -* **Booting... :** the federation is initializing -* _\[HUB Only\]_ **Registering with Hub... :** the federation is trying to register with the Hub -* _\[HUB Only\]_ **Disabled, could not register with Hub :** the federation could not register with the Hub -* **Disabled :** the federation is disabled -* **Running :** the federation is running and ready to communicate with other servers - -### Domain - -Fill this option with your domain name, usually the one that hosts the Rocket.Chat. - -### Public Key - -All Federation communications are double-encrypted, which means messages cannot be delivered by mistake to a wrong peer. This is your public key, which is specially generated for Rocket.Chat and by Rocket.Chat, and is shared with peers you communicate with. - -The encryption process encrypts the message using the Server A private key, and the Server B public key. - -When a server receives the message, it uses the Server B private key and the Server A public key to decrypt it. - -So, let's say the message ended up on Server C: this server won't have Server B private key to decrypt it, so the message can't be read at all. - -### Discovery Method - -How are you going to be found in the Rocket.Chat Federated Network? You can choose through DNS or, as a fallback, the Rocket.Chat Hub. - -**Important:** We recommend using the DNS method. The Hub is a tool to allow users to easily adopt, try and validate the feature or as a different way to be part of the Rocket.Chat Federated Network until DNS record changes are made. Also, the Hub requires external communication and access to a specific e-mail address owned by your domain, as explained below, which introduces extra configuration steps in some protected internal networks. - -## Adding Federation to your Server - -You have two ways to add your server to the Rocket.Chat Federated Network: - -### Recommended: Configure your DNS - -To add your server to the Federated Network using the DNS, fill all the configuration fields required. Make sure to pick `true` on the `Enabled`, and select **DNS** as your `Discovery Method` option, save and follow the guide below. - -Let's suppose we have a domain named `mydomain.com`, and my Rocket.Chat server is hosted at `mydomain.com`, port `443`. - -You must add two DNS records: - -#### SRV Record \(2.0.0 or newer\) - -* Service: `_rocketchat` -* Protocol: `_https` -* Name: `mydomain.com` -* Weight: `1` -* Priority: `1` -* TTL: `1 hour` -* Target: `mydomain.com` -* Port: `443` - -#### Public Key TXT Record - -* Host: `rocketchat-public-key.mydomain.com` -* Value: `` - -**Note**: Some DNS providers do not allow to enter the full public key string. So, after saving, make sure the string is complete: it starts as `-----BEGIN PUBLIC KEY-----` and ends as `-----END PUBLIC KEY-----`. If that is not the case, follow your provider's instructions. For example, AWS Route 53 needs to split the string in two pieces, as follows: - -```text -"-----BEGIN PUBLIC KEY-----...." -"...-----END PUBLIC KEY-----" -``` - -#### If you use http instead of https - -We recommend to use `HTTPS` for all kinds of communications, but sometimes that is not possible. If you need, in the SRV DNS entry replace: - -* the protocol: change `_https` to `_http` -* the port: change `443` to `80` - -#### Legacy Support: If your DNS provider does not support SRV records with `_http` or `_https` - -Some DNS providers will not allow setting `_https` or `_http` on SRV records, so we have support for those cases, using our old DNS record resolution method. - -#### Legacy Support: SRV Record - -* Service: `_rocketchat` -* Protocol: `_tcp` -* Name: `mydomain.com` -* Weight: `1` -* Priority: `1` -* TTL: `1 hour` -* Target: `mydomain.com` -* Port: `443` - -#### Legacy Support: protocol TXT Record \(if not provided, HTTPS will be use\) - -* Host: `rocketchat-tcp-protocol.mydomain.com` -* Value: `https` or `http` - -#### Test your configuration from CLI - -From your CLI, issue the following commands and make sure the answers look like the following: - -```text -dig srv _rocketchat._https.mydomain.com -... -;; ANSWER SECTION: -_rocketchat._https.mydomain.com. 1800 IN SRV 1 1 443 mydomain.com. -... - -dig -t txt rocketchat-public-key.mydomain.com -... -;; ANSWER SECTION: -rocketchat-public-key.mydomain.com. 1799 IN TXT "-----BEGIN PUBLIC KEY----- THEPUBLICKEY :) -----END PUBLIC KEY-----" -... -``` - -#### Conclusion - -When the SRV and the Public Key TXT records are added to the DNS records, other peers should be able to find you after the propagation. - -### Alternative: Register on Hub - -To add your server to the Federated Network using the Hub, fill all the configuration fields needed. Make sure to pick **true** on the `Enabled` field\), pick the **Hub** as your `Discovery Method` option, save and follow the guide below. - -#### Confirm Domain Ownership - -When you click **Save** on the Federation config screen, you begin your registration process. This process takes a few seconds and if you are not yet registered to the Hub, you should receive an email at `webmaster@mydomain.com`, where `mydomain.com` is the domain address you configured on the `Domain` field. - -Make sure the data is correct and confirm the changes. - -After that step, other peers should be able to find you in the Rocket.Chat Federated Network. - -## Using Rocket.Chat Federation - -Click [here](../../../user-guides/talking-to-users-from-another-server.md) to learn how to use Rocket.Chat Federation. - diff --git a/guides/administration/administration/settings/file-upload/README.md b/guides/administration/administration/settings/file-upload/README.md deleted file mode 100644 index 2311f62172..0000000000 --- a/guides/administration/administration/settings/file-upload/README.md +++ /dev/null @@ -1,231 +0,0 @@ -# File Upload - -In this article you will find all of the settings related to File Uploads. - -## General Settings - -### File Uploads Enabled - -Use this setting to enable or restrict file uploads on your server - -### File Uploads Enabled in Direct Messages - -Use this setting to enable or restrict file uploads on Direct Messages - -### Maximum File Upload Size \(in bytes\) - -Use this setting to define the maximum allowed file size for uploads. - -> Set it to -1 to remove the file size limitation. - -### Accepted Media Types - -Use this setting to define what types of files the users will be able to upload. - -> Comma-separated list of media types. Leave it blank for accepting all media types. - -### Protect Uploaded Files - -* **Yes**: Only authenticated users will have access to the uploaded files. -* **No**: If in possession of the uploaded file's URL, unauthenticated users will be able to access and download said files. - -### Storage Type - -* **GridFS**: Uses the GridFS storage type -* **AmazonS3**: Uses the [Amazon S3](./#amazon-s3) storage type -* **Google Cloud Storage**: Uses the [Google Cloud Storage](./#google-cloud-storage) storage type -* **WebDAV**: Uses the [WebDav](./#webdav) storage type -* **FileSystem**: Uses the [FileSystem](./#filesystem) storage type - -## Amazon S3 - -You can find a more detailed guide on how to set your Amazon S3 server [here](amazon-s3.md). - -### Access Key - -Your Amazon Access Key ID \(optional\) - -### Secret Key - -Your Amazon Secret Access Key \(optional\) - -> **Note**: If no `AWSAccessKeyId` and `AWSSecretAccessKey` are set, the underlying AWS SDK will fallback to trying to retrieve credentials from the [usual locations](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-node.html). - -### Acl - -\(Optional\) - -A _Canned ACL_ configuration \(see a full list [here](http://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl)\) - -### Bucket name - -The bucket name you've created on Amazon S3 - -### Bucket URL - -\(Optional\) - -Override URL to which files are uploaded. This URL will also be used for downloads unless a CDN is given - -### CDN Domain for Downloads - -\(Optional\) - -If you had set a CDN for your bucket, put it here - -### Proxy Avatars - -Proxy avatar file transmissions through your server instead of direct access to the asset's URL - -### Proxy Uploads - -Proxy upload file transmissions through your server instead of direct access to the asset's URL - -### Region - -\(Optional\) - -If you have created your bucket on region different from the US Standard, you **have** to set their code here \(see a list of region codes [here](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-available-regions)\) - -### Signature Version - -Identifies the version of AWS Signature that you want to support for authenticated requests. - -### URLs Expiration Timespan - -Time after which Amazon S3 generated URLs will no longer be valid \(in seconds\). If set to less than 5 seconds, this field will be ignored. - -> If you run into issues with files not loading consistently for some users located further from server location. Increasing this time might help. - -## FileSystem - - - -### System Path - -The local path for where the uploaded files will be stored. - -## Google Cloud Storage - -Settings used when configuring a Google Cloud Storage server. You can find more details in [here](google-cloud-storage.md) - -### Google Storage Access Id - -The access ID \(or username\) of the service account which has access to your Cloud Storage bucket. - -> The Access Id is generally in an email format, for example: "example-test@example.iam.gserviceaccount.com" - -### Google Storage Bucket Name - -The name of the bucket which the files should be uploaded to. - -### Proxy Avatars - -Proxy avatar file transmissions through your server instead of direct access to the asset's URL - -### Proxy Uploads - -Proxy upload file transmissions through your server instead of direct access to the asset's URL - -### Google Storage Secret - -What is a essentially a .pem containing your private key and certificate. - -> You can find a guide [here](https://github.com/CulturalMe/meteor-slingshot#google-cloud) on how to get your keys. - -## Google Vision - -Settings related to the _Google Vision_ feature. - -> Google vision is a **Paid** API from Google, using it on Rocket.Chat may generate fees, see [Google Vision](https://cloud.google.com/vision/) page. - -### Block Adult Images - -This setting enables the blocking of adult images - -> Blocking adult images will not work once the monthly limit has been reached - -### Current Month Calls - -Here it will be displayed how many calls were made this month - -### Enable Google Vision - -This enables the Google vision feature on your server. - -### Max Monthly Calls - -Here you can define the max amount of calls that should be made in a month. - -> Use 0 for unlimited - -### Google Vision Service Account - -Create a [server key](https://cloud.google.com/vision/docs/auth) \(JSON format\) and paste the JSON content in the field. - -### Document Text Detection - -This will enable text detection on images, when text is detected on an image, a property with the text will be added on the file entry in the database. - -### Face Detection - -This will enable face detection on images, when a face is detected on an image, a property with the face information will be added on the file entry in the database. - -### Labels Detection - -This will enable labeling on uploaded images, then a property with the image labels will be added on the file entry in the database. - -> E.g If you post an image of a cat with glasses, the categories `CAT` and `GLASSES` will be added to the file. - -### Landmarks Detection - -This will enable landmarks detection on images, when a landmark is detected on an image, a property with the landmark information will be added on the file entry in the database. - -### Logos Detection - -This will enable logos detection on images, when a logo is detected on an image, a property with the logo information will be added on the file entry in the database. - -### Properties \(Color\) Detection - -This will enable color detection on images, this will create a property with the colors used on the image on the file entry in the database. - -### SafeSearch Detection - -Safe Search Detection detects explicit content such as adult content or violent content within an image. This feature uses five categories \("adult", "spoof", "medical", "violence", and "racy"\) and returns the likelihood that each is present in a given image - -Categories will be added as a property on the file entry on the database. - -### Search Similar Images - -This will enable users to search for similar images directly from Rocket.Chat. - -## WebDAV - -Settings used in the setting of a WebDAV storage server. - -### WebDAV Password - -Password for the remote webdav server. - -### Proxy Avatars - -Proxy avatar file transmissions through your server instead of direct access to the asset's URL. - -### Proxy Uploads - -Proxy upload file transmissions through your server instead of direct access to the asset's URL. - -### WebDAV Server Access URL - -The URL of the WebDAV server \([WebDAV URLs of Common Cloud Storage Services](https://community.cryptomator.org/t/webdav-urls-of-common-cloud-storage-services/75)\). - -### Upload Folder Path - -WebDAV folder path which the files should be uploaded to. - -### WebDAV Username - -Username for the remote WebDav server. - - - diff --git a/guides/administration/administration/settings/file-upload/amazon-s3.md b/guides/administration/administration/settings/file-upload/amazon-s3.md deleted file mode 100644 index 9a66fe63de..0000000000 --- a/guides/administration/administration/settings/file-upload/amazon-s3.md +++ /dev/null @@ -1,75 +0,0 @@ -# Amazon S3 - -Set set the following _CORS Configuration_ to your bucket. - -XML format \(if using the old AWS console Interface\): - -```markup -[ - { - "AllowedHeaders": [ - "*" - ], - "AllowedMethods": [ - "PUT", - "POST", - "GET", - "HEAD" - ], - "AllowedOrigins": [ - "*ROCKET_CHAT_DOMAIN*" - ], - "ExposeHeaders": [], - "MaxAgeSeconds": 3000 - } -] -``` - -JSON format \(if using the new AWS console Interface\): - -```javascript -[ - { - "AllowedHeaders": [ - "*" - ], - "AllowedMethods": [ - "PUT", - "POST", - "GET", - "HEAD" - ], - "AllowedOrigins": [ - "*ROCKET_CHAT_DOMAIN*" - ], - "ExposeHeaders": [], - "MaxAgeSeconds": 3000 - } -] -``` - -**Note**: Replace `*ROCKET_CHAT_DOMAIN*` with the domain of your Rocket.Chat installation, e.g. `https://chat.example.com`. If for some reason you want to make your CORS configuration ridiculously insecure, you can set it to `*` to allow CORS requests from any host on the Internet, but do so at your own risk. - -## Basic Configuration - -Set the following fields: - -| Config. Name | Description | -| :--- | :--- | -| **Amazon S3 bucket name** | The bucket name you created on Amazon S3 | -| **Amazon S3 AWSAccessKeyId** | Your Amazon Access Key ID \(optional\) | -| **Amazon S3 AWSSecretAccessKey** | Your Amazon Secret Access Key \(optional\) | - -**Note**: If no `AWSAccessKeyId` and `AWSSecretAccessKey` are set, the underlying AWS SDK will fallback and try to retrieve credentials from the [usual locations](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-node.html). - -## Advanced Configuration - -The following fields are optional, and you don't need to set them to get the upload to S3 working. - -| Config. Name | Description | -| :--- | :--- | -| **Region** | If you created your bucket on a region different from the US Standard, this is where you **must** set their code \(see a list of region codes [here](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-available-regions)\) | -| **Amazon S3 acl** | A _Canned ACL_ configuration \(see a full list [here](http://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl)\) | -| **CDN domain for downloads** | If you set a CDN for your bucket, put it here | -| **Bucket URL** | Override URL to which files are uploaded. This URL is also used for downloads, unless youset a CDN. | - diff --git a/guides/administration/administration/settings/file-upload/file-upload-faqs.md b/guides/administration/administration/settings/file-upload/file-upload-faqs.md deleted file mode 100644 index c02e515618..0000000000 --- a/guides/administration/administration/settings/file-upload/file-upload-faqs.md +++ /dev/null @@ -1,14 +0,0 @@ -# File Upload FAQs - -## Why am I getting the "**Request Entity Too Large"** error on file upload? - -The error shown below is when the upload limit is less than the size of the file in rocket.chat. - -![](../../../../../.gitbook/assets/image%20%28178%29.png) - -If you are using nginx as your load balancer, it could be nginx limit that is throwing the following error not your rocket.chat limit. - -![](../../../../../.gitbook/assets/image%20%28289%29%20%281%29.png) - -Please follow the nginx instructions [here](https://www.cyberciti.biz/faq/linux-unix-bsd-nginx-413-request-entity-too-large/) to resolve this issue. - diff --git a/guides/administration/administration/settings/file-upload/google-cloud-storage.md b/guides/administration/administration/settings/file-upload/google-cloud-storage.md deleted file mode 100644 index f83a7a83e8..0000000000 --- a/guides/administration/administration/settings/file-upload/google-cloud-storage.md +++ /dev/null @@ -1,29 +0,0 @@ -# Google Cloud Storage - -Here is more information on the fields required to set up your Google Cloud Storage with Rocket.Chat using a service account. - -Set the following fields: - -| Config. Name | Description | -| :--- | :--- | -| **Google Storage Bucket Name** | The bucket name you created on Google Storage | -| **Google Storage Access Id** | The access ID \(or username\) of the service account that has access to your Cloud Storage bucket, usually in the following format: example-test@example.iam.gserviceaccount.com | -| **Google Storage Secret** | Essentially a PEM that contains your private key and certificate | - -## More Information - -**Google Storage Secret**: the value pushed here takes an argument of a PEM file to connect to your Cloud Storage bucket. When you create a service account, you have the ability to download a JSON file that contains a number of variables. You need the unescaped private key, along with one of the certificates linked at the bottom of the JSON. - -Syntax then looks just like a regular PEM file: - -```text ------BEGIN PRIVATE KEY----- -unescaped private key goes here ------END PRIVATE KEY----- -----BEGIN CERTIFICATE----- -first certificate goes here ------END CERTIFICATE----- -``` - -Enter this into Rocket.Chat to allow the authentication with Google and store items in the bucket. - diff --git a/guides/administration/administration/settings/file-upload/minio.md b/guides/administration/administration/settings/file-upload/minio.md deleted file mode 100644 index 2844f16532..0000000000 --- a/guides/administration/administration/settings/file-upload/minio.md +++ /dev/null @@ -1,58 +0,0 @@ -# Minio - -## Introduction - -Minio is an object storage server built for cloud applications and DevOps. Minio is S3 compatible and provides an open source alternative to AWS S3. You can [download and install](https://minio.io/downloads) Minio pretty quickly. Minio also provides an [official Docker image](https://hub.docker.com/r/minio/minio/). For further details, check out [Minio documentation website](https://docs.minio.io/). - -## AccessKey and SecretKey - -Once you install and deploy Minio server, you can get the AccessKey and SecretKey from the startup message. - -```bash -2017-01-24T19:53:21.141689279Z -2017-01-24T19:53:21.141730078Z Endpoint: http://172.17.0.2:9000 http://127.0.0.1:9000 -2017-01-24T19:53:21.141735582Z AccessKey: 5fD3434325fDaGE77BNJlSoV1xGp -2017-01-24T19:53:21.141738933Z SecretKey: Quie2teech4oofoo9Dahsoo7aithauja -2017-01-24T19:53:21.141742292Z Region: us-east-1 -2017-01-24T19:53:21.141745405Z SQS ARNs: -2017-01-24T19:53:21.141749472Z -2017-01-24T19:53:21.141752499Z Browser Access: -2017-01-24T19:53:21.141755711Z http://172.17.0.2:9000 http://127.0.0.1:9000 -2017-01-24T19:53:21.141758830Z -2017-01-24T19:53:21.141762000Z Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide -2017-01-24T19:53:21.141765638Z $ mc config host add myminio http://172.17.0.2:9000 1H2MI5BCU45990DZ3WRL flJlSoV1xGp+u2fhfDaGE77BNE6OdyvAsdI15kPq -2017-01-24T19:53:21.141768751Z -2017-01-24T19:53:21.141771631Z Object API (Amazon S3 compatible): -2017-01-24T19:53:21.141774638Z Go: https://docs.minio.io/docs/golang-client-quickstart-guide -2017-01-24T19:53:21.142003548Z Java: https://docs.minio.io/docs/java-client-quickstart-guide -2017-01-24T19:53:21.142019474Z Python: https://docs.minio.io/docs/python-client-quickstart-guide -2017-01-24T19:53:21.142024004Z JavaScript: https://docs.minio.io/docs/javascript-client-quickstart-guide -2017-01-24T19:53:21.142027614Z -2017-01-24T19:53:21.142030994Z Drive Capacity: 262 GiB Free, 303 GiB Total -``` - -To override Minio auto-generated keys, you may pass secret and access keys explicitly as environment variables. Find more details [here](https://docs.minio.io/docs/minio-docker-quickstart-guide). - -## Setup Rocket.Chat to use Minio - -To setup Minio as the file storage server in Rocket.Chat, go to `File Uploads` section under `Administration`, then set `Storage Type: GridFS (default)` to `AmazonS3`. Next, access the `AmazonS3` menu and update the following details: - -| Configuration Name | Description | -| :--- | :--- | -| Bucket name | Minio Bucket Name | -| Access Key | Minio server Access Key | -| Secret Key | Minio server Secret Access Key | -| Region | us-east-1 | -| Bucket URL | `http://[your.minio.domain/bucketname]` | -| Signature Version | v2 \(This may not be needed if using ssl\) | -| Force Path Style | true \(this may not be needed if using ssl\) | -| URLs expiration time | 0 \(if you want that your files don't have an expiry date\) | - -## Set up Production - -In production, you can use a reverse proxy with Minio server. Check out the documentation for [Nginx](https://docs.minio.io/docs/setup-nginx-proxy-with-minio#main), [Apache](https://docs.minio.io/docs/setup-apache-http-proxy-with-minio-server) and [Apache2](https://www.digitalocean.com/community/tutorials/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension). - -You can secure access to Minio server with TLS. Check out the documentation [here](https://docs.minio.io/docs/how-to-secure-access-to-minio-server-with-tls). - -**Note**: If you specify a different region in Minio, make sure it is the same as the S3 region. Find a full list of regions [here](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-available-regions). - diff --git a/guides/administration/administration/settings/file-upload/recommendations-for-file-upload.md b/guides/administration/administration/settings/file-upload/recommendations-for-file-upload.md deleted file mode 100644 index 081eae27a3..0000000000 --- a/guides/administration/administration/settings/file-upload/recommendations-for-file-upload.md +++ /dev/null @@ -1,30 +0,0 @@ -# Recommendations for File Upload - -## GridFS - -GridFS is the MongoDB specification for storing and retrieving large files such as images, audio files, video files, etc. It is a kind of a file system to store files but its data is stored within MongoDB collections. GridFS has the capability to store files even greater than its document size limit of 16MB. - -GridFS divides a file into chunks and stores each chunk of data in a separate document, each of maximum size 255k. - -GridFS by default uses two collections **fs.files** and **fs.chunks** to store the file's metadata and the chunks. Each chunk is identified by its unique \_id ObjectId field. The fs.files serves as a parent document. The **files\_id** field in the fs.chunks document links the chunk to its parent. - -Though GridFS is used in rocket.chat for file storage because MongoDB offers this functionality with zero configuration but GridFS is not recommended for day to day file storage needs in a production environment because it puts an immense amount of load on the database. - -{% hint style="info" %} -**GridFS** is only sustainable if you are using Retention Policy and only storing a small number of files per week which are not hefty but it is not recommended by us because it is not scalable. -{% endhint %} - -## FileSystem - -It stores the files on the FileSystem of the server where your rocket.chat instance is running. It is a good option but the problem arises when you start to scale. Because if you decide to have multiple rocket.chat servers to support a larger number of users, the FileSystem needs to be shared between all the rocket.chat servers. - -If you want to have two separate virtual/physical servers you will somehow have to share the folder too where your files are stored using for example NFS. It will require a lot of configurations. - -{% hint style="info" %} -We suggest **FileSystem** only when you are running a single rocket.chat instance. -{% endhint %} - -{% hint style="info" %} -What we recommend as the best option for the file upload system are **Amazon** **S3** and **Google Cloud Storage**. -{% endhint %} - diff --git a/guides/administration/administration/settings/file-upload/webdav.md b/guides/administration/administration/settings/file-upload/webdav.md deleted file mode 100644 index 1a092c9646..0000000000 --- a/guides/administration/administration/settings/file-upload/webdav.md +++ /dev/null @@ -1,11 +0,0 @@ -# WebDAV - -Set the following fields: - -| Config. Name | Description | -| :--- | :--- | -| **WebDAV Server Access URL** | WebDAV server URL [WebDAV URLs of Common Cloud Storage Services](https://bit.ly/2M0T9mv) | -| **WebDAV Username** | Username for the remote server | -| **WebDAV Password** | Password for the remote server | -| **Upload Folder Path** | WebDAV folder path to which you want to upload the files. | - diff --git a/guides/administration/administration/settings/general/README.md b/guides/administration/administration/settings/general/README.md deleted file mode 100644 index 30d94a44f4..0000000000 --- a/guides/administration/administration/settings/general/README.md +++ /dev/null @@ -1,221 +0,0 @@ -# General - -## General Settings - -### Allow Invalid Self-Signed Certs - -Allow invalid and self-signed SSL certificates for link validation and previews. - -### Bugsnag API Key - -If you are integrating Bugsnag with Rocket.Chat, you should put your Bugsnag API Key here. - -### CDN Prefix for JS/CSS - -Insert here the prefix for the CDN that should load the JS/CSS assets - -### CDN Prefix - -If you want to use a CDN to load the assets of your server, insert here your CDN Prefix. - -### Use CDN Prefix for all assets - -This will define if all assets from the server will come from a CDN. - -### Enable Favorite Rooms - -* **Yes**: Users will be able to favorite public, private and direct channels. -* **No**: Users won't be able to favorite channels. - -### First Channel After Login - -Insert here the name of the channel that the user will enter after logging in. Setting this field to empty or setting a invalid name will result in the user being directed to the server's home page. - -### Force Disable OpLog for Cache - -Will not use OpLog to sync cache even when it's available - -### Force SSL - -You can use this setting to force SSL on your server. We **Strongly Discourage** the usage of this setting, this should be done at the reverse proxy level by redirecting to https. - -> _Caution!_ _Force SSL_ should never be used with reverse proxy. If you have a reverse proxy, you should do the redirect THERE. This option exists for deployments like Heroku, that does not allow the redirect configuration at the reverse proxy. - -### Google Tag Manager Id - -You can use Google Tag Manager on Rocket.Chat by setting your Id on this setting. - -### Language - -This sets the default language for the server. This setting will be overridden if the user has changed his language preference. - -### Restart - -This button restarts the server. - -### Robots.txt File Contents - -This sets the content of the Robots.txt file, used to help indexing your server on different search engines and crawlers. - -### Show Setup Wizard - -For now this setting **SHOULD NOT** be changed. Setting this to `pending` and logging out can basically lock down your server. Please refer to this [issue](https://github.com/RocketChat/Rocket.Chat/issues/13840). - -### Site Name - -This sets the name of the server. - -### Site URL - -This sets the URL of the server. - -> Example: `https://chat.domain.com/` - -### Store Last Message - -Store last message sent on each room. This will enable the viewing of the last message on the left sidebar \(should be on by default\) - -### Unread Count - -This setting changes the behavior of the unread counter - -* **All messages**: All messages will be counted on the counter, regardless if they are a mention or not. -* **User mentions only**: Only mentions using `@yourUsername` will be counted on the counter. -* **Group mentions only**: Only group mentions using `@all` or `@here` will be counted on the counter. -* **User and group mentions only**: All mentions will be counted, this includes `@all`, `@here` and `@yourUsername` - -### Unread Count for Direct Messages - -This setting changes the behavior of the unread counter on Direct Messages - -* **All messages**: All messages sent by another user will be counted on the counter. -* **Mentions only**: Only mentions using `@yourUsername` will be counted on the counter. - -## Apps - -### Enable the App Framework - -Use this setting to enable the Rocket.Chat Apps Framework. This allows you to add Rocket.Chat Apps from our Marketplace to your server. - -## Iframe Integration - -### Enable Receive - -This setting defines if a parent window can send commands to Rocket.Chat. - -### Receive Origins - -Origins with protocol prefix, separated by commas, which are allowed to receive commands e.g. `https://localhost`, `http://localhost`, or \* to allow receiving from anywhere. - -### Enable Send - -This setting defines if Rocket.Chat can send events to the parent window. - -### Send Target Origin - -Origin with protocol prefix, which commands are sent to e.g. `https://localhost`, or \* to allow sending to anywhere. - -## Notifications - -### Always notify mobile - -Choose to always notify mobile device regardless of presence status. - -### Max Room Members Before Disabling All Message Notifications - -Max number of members in room when notifications for all messages gets disabled. Users can still change per room setting to receive all notifications on an individual basis. \(0 to disable\) - -## REST API - -### Allow Getting Everything - -This setting affects the `count` query parameter. See more at [Offset and Count Information](https://developer.rocket.chat/api/rest-api/offset-and-count-and-sort-info) - -* **Yes**: Allows the usage of the number `0` as `count` parameter. Setting `count` to `0` will return **ALL** the data from that endpoint -* **No**: Setting the number `0` on `count`, will return `0` results. - -> Should calls to the REST API be allowed to return everything in one call? - -### CORS Origin - -Here you can set what origins are allowed to make requests to your server. - -> You can use `*` to accept from all origins. For multiple Origins use a comma separated list. E.g `https://domain1.com, https://domain2.com, https://domain3.com` - -### Default Count - -The default count for REST API results if the consumer did not provided any. - -### Enable CORS - -Use this setting to enable [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) for the REST API. Enabling CORS will make the server only accept API Calls from specific origins. - -> **Note**: Setting this to `false`, will make your server only accept requests from the same domain of said server. E.g. `rocket.chat` server will only accept requests from the `rocket.chat` domain. - -### Enable Direct Message History Endpoint - -This enables the `/api/v1/im.history.others` which allows the viewing of direct messages sent by other users that the caller is not part of. - -### Enable Shields - -Enables the usage of [Shields](https://developer.rocket.chat/api/rest-api/methods/miscellaneous/shield-svg) via API - -> Enabled shields are available at `/api/v1/shield.svg` - -### Shield Types - -Types of shields to enable as a comma separated list, choose from `online`, `channel` or `*` for all - -### Max Record Amount - -This sets the maximum number of records the REST API should return when not set to unlimited - -### User Limit for Adding All Users to Channel - -This limits the amount of users that can be added to a Channel at the same time. - -## Reporting - -### Send Statistics to Rocket.Chat - -By sending your statistics, you'll help us identify how many instances of Rocket.Chat are deployed, as well as how good the system is behaving, so we can further improve it. Don't worry, as no user information is sent and all the information we receive is kept confidential. - -## Stream Cast - -### Stream Cast Address - -IP or Host of your Rocket.Chat central Stream Cast. E.g. `192.168.1.1:3000` or `localhost:4000` - -## Translations - -### Custom Translations - -With this setting you can configure custom translations for your server. - -Should be a valid JSON where keys are languages containing a dictionary of key and translations. Example: - -```javascript -{ - "en": { -  "Channels": "Rooms" - }, - "pt": { -  "Channels": "Salas" - } -} -``` - -## UTF8 - -### UTF8 Names Validation - -RegExp that will be used to validate usernames and channel names - -> **Note**: If you are having problems with names when creating channels \(when using non-english characters for example\) changing these values will probably fix it. For example using `[\w_-]+` should allow any non-space character to be part of a name. - -## Update - -### Update Latest Available Version - -Whenever we have a new version available, it will show up on this field. - diff --git a/guides/administration/administration/settings/general/net-promoter-score-nps-survey.md b/guides/administration/administration/settings/general/net-promoter-score-nps-survey.md deleted file mode 100644 index 71e1d2dbf9..0000000000 --- a/guides/administration/administration/settings/general/net-promoter-score-nps-survey.md +++ /dev/null @@ -1,59 +0,0 @@ -# Net Promoter Score \(NPS\) survey - -This feature aims to assess user satisfaction and make the Rocket.Chat experience even more pleasant for users. - -By allowing it to run on your workspace you are helping Rocket.Chat to: - -* Build a better product & better user experience -* Develop and prioritize features aligned with our users’ needs -* Get accurate user feedback on what needs fixing versus what needs improvements. - -## **What users will see?** - -A banner will be exhibited with the question: “**How likely are you to recommend us to a friend or colleague?**” and a scale from 0-10 to collect the answer. - -If the user clicks on a score, a modal will be exhibited to collect text feedback. - -Both actions can be dismissed by the user. - -![](https://lh6.googleusercontent.com/4BBASQyWUP1BM9x1Qouv-cxLUNY3TZBwobJV-N5LVzDZYxOjRmSOPDS9e2twv19d6D24UZhSjDwcwlK7H1U1em9OlWLaoueg0HcEUNcKIr6gSu0z6YGjAKovbj7E_YEA2aC3CmuW) - -![](https://lh5.googleusercontent.com/fbYrzTYf-5ybS8kbgjM6QFf7q8hjrHBf2KRrpiwoF1_D1wBpBS2QjBnskXWmjvFXK-MWQj0VhHytBJaq9bJ1mqo887nENWgxim4y6BD4aoql6LZGEbBuqzUJwgAnKc3JSIFcoEky) - -## How does NPS work? - -NPS surveys will be triggered every 6 months via Rocket.Chat cloud. The workspace needs to be registered in Rocket.Chat cloud, otherwise, the survey will never be triggered. - -All users in the workspace will receive the survey on the same day. - -Admins will get notified two months before the NPS is rolled out via in-app banner and alert via Rocket.Cat. That means admins can quickly turn off the NPS in case they prefer. - -It’s possible to check more details directly in the code [here](https://github.com/RocketChat/Rocket.Chat/blob/3.17.0/server/services/nps/service.ts). - - -## How is NPS data collected? - -All feedback received through the NPS is anonymous. It does not collect any personal data. - -The following data elements are transmitted via statistics collector: - -* Per-user who participates in the NPS - * An anonymous, but unique hash value per user. The hash is created locally in form of a SHA256-hash of the combined user ID and NPS ID. - * The user ID is a local server value per user and is not transmitted outside of the server for the NPS campaign. - * The NPS ID is a string that identifies the NPS campaign to which the user is responding \(as there are multiple campaigns over the years\). - * From the hash itself, user ID and NPS ID cannot be reversely identified. - * The user role \(e.g. guest, admin\) - * The numerical NPS score of the user \(a number between 1-10\) - * An optional comment from the user \(e.g. “I like the emojis a lot!”\) -* A workspace ID, which is a unique string per server, but does not indicate who uses it - -## How to turn it off NPS survey? - -Our users have total freedom to disable the NPS survey. Simply follow the steps below to switch NPS off: - -* Within Rocket.Chat, access **Administration > General** -* **NPS** > Uncheck “**Enable NPS Survey**” -* Once the setting is turned off, the NPS survey stays off indefinitely. - -![](https://lh5.googleusercontent.com/dy4TrUEoeGsj3rFes4or0m5hZ-Jvxp1mtz_zrt2f-Diaox-CTttatqaVWLkSpQ2TJt6n9j3Zd-yCf_RQS1H1zeH4M8gYPpLm2Gpk_lp50NulU56arxdL5zyQTZRzGG6uKlEr7KMY) - diff --git a/guides/administration/administration/settings/irc-federation.md b/guides/administration/administration/settings/irc-federation.md deleted file mode 100644 index c06dc8a033..0000000000 --- a/guides/administration/administration/settings/irc-federation.md +++ /dev/null @@ -1,4 +0,0 @@ -# IRC Federation - -Document Under Development - diff --git a/guides/administration/administration/settings/layout.md b/guides/administration/administration/settings/layout.md deleted file mode 100644 index f57684aa3a..0000000000 --- a/guides/administration/administration/settings/layout.md +++ /dev/null @@ -1,4 +0,0 @@ -# Layout - -Document Under Development - diff --git a/guides/administration/administration/settings/ldap/README.md b/guides/administration/administration/settings/ldap/README.md deleted file mode 100644 index 16fe305aae..0000000000 --- a/guides/administration/administration/settings/ldap/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# LDAP - -To configure LDAP authentication, go to the LDAP section of administration settings, enable LDAP, and add configurations to connect with your LDAP server. [Rocket.Chat](http://rocket.chat/) supports a variety of LDAP capabilities and associated identity management features. Below is a listing of key features sets associated with each of the [Rocket.Chat](http://rocket.chat/) versions. - -## [**LDAP**](https://docs.rocket.chat/guides/administration/administration/settings/ldap) - -| Functionality | CE/ Bronze/ Silver/ Pro | EE/ Gold | Description | -| :--- | :--- | :--- | :--- | -| Basic LDAP Login | Yes | Yes | | -| Login Fallback | Yes | Yes | This option allows regular password users to log in on Rocket.Chat. It will let LDAP users continue using Rocket.Chat if the LDAP server is down. | -| Filter what LDAP users can log in | | Yes | There are two settings to manage this: Search Filter and Group Filter | -| Merge with existing Rocket.Chat users | Yes | Yes | Detect if the LDAP user is already registered on Rocket.Chat and use the same user for both authentication types | -| LDAP encryptions | Yes | Yes | The encryption method used to secure communications to the LDAP server | -| Sync User Data | | | Load information from the LDAP user to Rocket.Chat | -| Load Basic User Data from LDAP | Yes | Yes | Email, name, and username | -| Load Custom User Data from LDAP | | Yes | Load any LDAP attribute to a custom field on Rocket.Chat | -| Load Avatars | | Yes | Load the user's avatar from an LDAP attribute | -| Advanced-Data Sync | | | Perform additional operations based on data from LDAP | -| Load Roles | | Yes | You can map any LDAP group to a Rocket.Chat role | -| Auto-Subscribe to Channels | | Yes | You can map any LDAP group to a Rocket.Chat channel | -| Auto-Unsubscribe from Channels | | Yes | You can also remove users from Rocket.Chat channels on LDAP | -| Auto-Join Teams | | Yes | You can map any LDAP group to a Rocket.Chat team | -| Auto-Leave Teams | | Yes | You can also remove users from Rocket.Chat teams on LDAP | -| Background Sync | | Yes | Periodic background sync | -| Incremental Sync | | Yes | Give the option to use Incremental Sync \(better performance\) | -| Sync User Active State | | Yes | Determine if users should be enabled or disabled on Rocket.Chat based on the LDAP status | -| Auto logout | | Yes | Auto logout user on next sync when it's removed/disabled on LDAP group | - -## [**SAML**](https://docs.rocket.chat/guides/administration/administration/settings/saml) - -| Functionality | CE/ Bronze/ Silver/ Pro | EE/ Gold | Description | -| :--- | :--- | :--- | :--- | -| Basic Sync User Data | Yes | Yes | Keep user data in sync with the server on login \(email, name, and username\) | -| Customizable User Interface | Yes | Yes | Ability to customize button color and text | -| Roles | | Yes | Role mapping from user groups | -| Mapping | | Yes | Select any field you want to sync with RC | -| Advanced | | Yes | Advanced settings \(eg. login with username and password x win user\) | - -## [**OAuth**](https://docs.rocket.chat/guides/administration/administration/settings/oauth) - -| Functionality | CE/ Bronze/ Silver/ Pro | EE/ Gold | Description | -| :--- | :--- | :--- | :--- | -| All available Oauth options | Yes | Yes | Keep user data in sync with the server on login \(Unique identifier and username\) | -| Apple | Yes | Yes | Sync user data with Apple | -| Dolphin | Yes | Yes | Sync user data with Dolphin | -| Drupal | Yes | Yes | Sync user data with Drupal | -| Facebook | Yes | Yes | Sync user data with Facebook | -| GitHub | Yes | Yes | Sync user data with GitHub | -| GitHub Enterprise | Yes | Yes | Sync user data with GitHub Enterprise | -| GitLab | Yes | Yes | Sync user data with GitLab | -| Google | Yes | Yes | Sync user data with Google | -| Linkedin | Yes | Yes | Sync user data with Linkedin | -| Meteor | Yes | Yes | Sync user data with Meteor | -| Nextcloud | Yes | Yes | Sync user data with Nextcloud | -| Tokenpass | Yes | Yes | Sync user data with Tokenpass | -| Twitter | Yes | Yes | Sync user data with Twitter | -| WordPress | Yes | Yes | Sync user data with WordPress | -| Custom OAuth Role mapping | | Yes | Role mapping from user groups | -| Sync User Avatar | | Yes | Toggle avatar syncing on or off | - diff --git a/guides/administration/administration/settings/ldap/ldap-authentication-settings.md b/guides/administration/administration/settings/ldap/ldap-authentication-settings.md deleted file mode 100644 index 3fcea2e9ac..0000000000 --- a/guides/administration/administration/settings/ldap/ldap-authentication-settings.md +++ /dev/null @@ -1,18 +0,0 @@ -# LDAP Authentication Settings - -## Enable - -Disable Authentication to skip binding the user DN and password. - -## User DN - -The LDAP user that performs user lookups to authenticate other users when they sign in. This is typically a service account created specifically for third-party integrations. Use a fully qualified name, such as - -```text -cn=Administrator,cn=Users,dc=Example,dc=com -``` - -## Password - -The password for the User DN above. - diff --git a/guides/administration/administration/settings/ldap/ldap-basic-settings.md b/guides/administration/administration/settings/ldap/ldap-basic-settings.md deleted file mode 100644 index ae7a086447..0000000000 --- a/guides/administration/administration/settings/ldap/ldap-basic-settings.md +++ /dev/null @@ -1,60 +0,0 @@ -# LDAP Basic Settings - -### Enable - -Turns LDAP Authentication ON or OFF. - -### Login Fallback - -Enable this option to also allow regular password users to log in on Rocket.Chat. It will also let LDAP users continue using Rocket.Chat if the LDAP server is down. - -### Find user after login - -After a successful login, Rocket.Chat will search for the user on the LDAP server and reject the login if it is not found. Use this to prevent anonymous logins to Rocket.Chat when the LDAP Server allows anonymous logins. - -### Host - -The LDAP connection host, e.g. ldap.example.com or 10.0.0.30 - -## Port - -The LDAP connection Port, usually 389 or 636. - -### Reconnect - -Try to reconnect automatically when the connection is interrupted by some reason while executing operations - -### Encryption - -The encryption method used to secure communications to the LDAP server. - -| Value | Usage | -| :--- | :--- | -| No Encryption | | -| StartTLS | Upgrade to encrypted communication once connected | -| SSL/LDAPS | Encrypted from the start | - -### CA Cert - -### Reject Unauthorized - -Disable this option to allow certificates that can not be verified. Usually, Self Signed Certificates will require this option disabled to work - -### Base DN - -The fully qualified Distinguished Name \(DN\) of an LDAP subtree you want to search for users and groups. You can add as many as you like; however, each group must be defined in the same domain base as the users that belong to it. Example: - -```text - ou=Users+ou=Projects,dc=Example,dc=com -``` - -If you specify restricted user groups, only users that belong to those groups will be in scope. We recommend that you specify the top level of your LDAP directory tree as your domain base and use a search filter to control access. - -### Internal Log Level - -What log level should be used for the internal LDAP communication logs. - -### Test Connection - -Use this button to test if the connection settings are valid. This will test the authentication and encryption, but not the syncing settings. - diff --git a/guides/administration/administration/settings/ldap/ldap-faq.md b/guides/administration/administration/settings/ldap/ldap-faq.md deleted file mode 100644 index a56f4e04b9..0000000000 --- a/guides/administration/administration/settings/ldap/ldap-faq.md +++ /dev/null @@ -1,75 +0,0 @@ -# LDAP FAQ - -## What exactly will be moved from Community \(CE\) to Enterprise Edition \(EE\)? When? \(More than LDAP.\) - -Rocket.Chat will be launching a re-factored set of advanced LDAP features by September 28th. The ability to connect to your LDAP server to sync user names and unique identifiers will remain in the Community Edition together with existing social login features. All advanced LDAP features including extended user attribute sync, group/team management, background sync and SAML integration will move to the Enterprise edition. This change will enable Rocket to support ongoing improvements to our suite of identity management solutions while continuing to make our basic LDAP directory synchronization codebase available for use and extension by the Rocket.Chat community. - - -## What LDAP, Active Directory, OAuth, SAML mean, and how do these things work together? - -These resources mean: - -* **Directory service** Directory service is a shared information infrastructure for locating, managing, administering, and organizing everyday items and network resources, which can include volumes, folders, files, printers, users, groups, devices, telephone numbers, and other objects. Eg. Microsoft AD, NetIQ eDirectory, Apache Directory. -* **LDAP** Lightweight Directory Access Protocol is an open, vendor-neutral, industry-standard application protocol for accessing and maintaining distributed directory information services, that allows the sharing of information about users, systems, networks, services, and applications. -* **SAML** Security Assertion Markup Language is an open standard for exchanging authentication and authorization data between parties, in particular, between an identity provider and a service provider. -* **OAuth** - -Open Authorization is an open standard for access delegation, commonly used as a way for Internet users to grant websites or applications access to their information on other websites but without giving them the passwords. - -Eg. Google, Facebook, LinkedIn, Twitter. - - -* **SSO** Single sign-on is an authentication scheme that allows a user to log in with a single ID and password to any of several related, yet independent, software systems. - -## Why is Identity Management \(and authentication/authorization services\) important? - -The ability to integrate with your organization’s user directory service is important for keeping your users’ access up to date at all times. For example, when someone joins your organization their Rocket user can be created automatically and when they leave their user can be promptly deactivated. This becomes more important with scale, the greater the count of users. - - -## What will community users not be able to do anymore? Examples. - -In order to access the re-factored advanced LDAP, SAML and, Oauth features workspaces will require an Enterprise license. Advanced features include extended user attribute synchronization, group and team management, SAML integration, and advanced Oauth configuration. \(View full functionalities [here](https://docs.google.com/spreadsheets/d/10OUEXyQvuum3M2cbgOowaeIaYnPbSIcoTP0I7gDe8jk/edit?usp=sharing).\) - - -## What will community users still be able to do? Examples. - -Community users will be able to connect an LDAP service used by their organization to and sync user email, name, and username; use the fallback option and encrypted settings. Basic SAML sync options, and Oauth for all providers \(Apple, Dolphin, Drupal, Facebook, GitHub, GitHub, Enterprise, GitLab, Google, Linkedin, Meteor, Nextcloud, Tokenpass, Twitter, WordPress\) will continue available in Community Edition. - -\(View full functionalities [here](https://docs.google.com/spreadsheets/d/10OUEXyQvuum3M2cbgOowaeIaYnPbSIcoTP0I7gDe8jk/edit?usp=sharing).\) - -## Will the move affect single sign-on capabilities? Please explain single sign-on. - -Single sign-on \(SSO\) is an authentication scheme that allows a user to log in with a single ID and password to any of several related, yet independent, software systems. True single sign-on allows the user to log in once and access services without re-entering authentication factors. Workspaces that use social login capabilities \(users sign-on via Google, LinkedIn, etc.\) will not be impacted by this change. - - -## How will this affect my air-gapped \(no internet connection\) environment? Can’t we just pull from our intranet easily anyway? - -If the Rocket.Chat server is air-gapped but integrated with an internal LDAP server, then there is a need to apply an enterprise edition license to continue to use advanced LDAP/SAML/Oauth features when you upgrade. - - - -## The reason a division of our team/company uses RC is for security, and/or it is air-gapped. This LDAP change doesn’t seem to affect us for our purposes – but will this have some sort of unanticipated effect on our security processes/ability to maintain data privacy? If so, please explain so we can consider it further. - -No there will not be ancillary effects. -**** - -## What's the "Bind successful but user was not found via search" error? - -This error means that the login attempt was successful, but a subsequent search for the user on the LDAP Server returned no results. If you want to disable this search, you can turn off the "Find user after login" setting. - -## How do I stop disabled LDAP users from logging in on Rocket.Chat? - -You need to use the "Sync User Active State" setting under Advanced Sync, but it is not yet compatible with all LDAP Servers. - -### I cannot log in even everything looks good - -If you cannot log in without getting any error messages \(the last thing in the log you see is `Attempt to bind `\), make sure the username of your LDAP account does not match any username of a local account. For example if you created a local user with a username`joe`, then enable LDAP and try to login with a username `joe` \(who exists on your LDAP server\), it will silently fail without any error message in your log simply saying username or password does not match. You cannot log in by`joe,`your LDAP password nor by your local password anymore. - -### No users are created even if everything looks good - -Every rocket.chat-user has to have an email. So either the LDAP users need to have an email or you have to set a default domain using the setting "default domain". - -## References - -MS LDAP Info: [https://msdn.microsoft.com/en-us/library/windows/desktop/aa746475\(v=vs.85\).aspx](https://msdn.microsoft.com/en-us/library/windows/desktop/aa746475%28v=vs.85%29.aspx) - diff --git a/guides/administration/administration/settings/ldap/ldap-sync-settings.md b/guides/administration/administration/settings/ldap/ldap-sync-settings.md deleted file mode 100644 index b7d8f714cf..0000000000 --- a/guides/administration/administration/settings/ldap/ldap-sync-settings.md +++ /dev/null @@ -1,163 +0,0 @@ -# LDAP Sync Settings - -## Sync / Import - -### Username Field - -Usually`sAMAccountName`or `uid` field will be used as username for new users. Leave empty to let the user pick their own Rocket.Chat username. You can use template tags too, for example: - -```text -#{givenName}.#{sn} -``` - -### Unique Identifier Field - -Which field will be used to link the LDAP user and the Rocket.Chat user. You can inform multiple values separated by a comma to try to get the value from LDAP record. - -### Default Domain - -If provided the Default Domain will be used to create a unique email for users where email was not imported from LDAP. The email will be mounted as `username@default_domain` or `unique_id@default_domain`. - -### Merge Existing Users - -**Caution!** When importing a user from LDAP and a user with same username already exists the LDAP info and password will be set into the existing user. This will let LDAP users take over password accounts with the same username. - -### Sync User Data - -Keep user data in sync with the server on **login** or on **background sync** \(eg: name, email, and custom fields\). - -### User Data Field Map - -Configure how user account fields \(like email\) are populated from a record in LDAP \(once found\). - -As an example, `{"cn":"name", "mail":"email"}` will choose a person's human-readable name from the cn attribute, and their email from the mail attribute. - -Additionally, it is possible to use variables, for example, the following object will use a combination of the user's first name and last name for the rocket chat. - -```text -{ - "#{givenName} #{sn}": "name", - "mail": "email" -} -``` - -### Sync LDAP Groups - -Enable this setting to activate role mapping from user groups on the community edition of Rocket.Chat. - -### Auto Remove User Roles - -Enable this setting to automatically remove roles from LDAP users that don't have the corresponding group. This will only remove roles automatically that are set under the user data group map below. - -### User Group Filter - -The LDAP search filter is used to check if a user is in a group. If the search returns any results the user is considered to be in the group. When performing the search, the following strings, if present in the filter, will be substituted with data from the user and group whose membership status is being checked: - -* `#{username}` - Replaced with the username of the user in RocketChat -* `#{groupName}` - Replaced with the name of the group in LDAP -* `#{userdn}` - Replaced with the LDAP Distinguished Name of the user - -### LDAP Group BaseDN - -The LDAP BaseDN used to lookup if users are in a group. - -### User Data Group Map - -The mapping of LDAP groups to Rocket.Chat roles, in JSON format. - -As an example, the following object will map the rocket-admin LDAP group to Rocket.Chat's "admin" role and the "tech-support" group to the "support" role. - -```text -{ - "rocket-admin":"admin", - "tech-support":"support" -} -``` - -### Auto Sync LDAP Groups to Channels - -Enable this feature to automatically add users to a channel based on their LDAP group. - -### Channel Admin - -When the above setting causes a channel to be created automatically during user sync, this setting will determine what user will become the admin of the channel. - -### LDAP Group Channel Map - -The map of LDAP groups to Rocket.Chat channels, in JSON format. As an example, the following objectives will add any user in the LDAP group "employee" to the general channel on Rocket.Chat. - -```text -{ - "employee":"general" -} -``` - -### Auto Remove Users from Channels - -Enabling this will remove any users in a channel that does not have the corresponding LDAP group! This will happen in every login and background sync, so removing a group on LDAP will not instantly remove access to channels on Rocket.Chat. - -### Sync User Avatar - -Toggle avatar syncing on or off. - -### User avatar field - -What LDAP field will be used as **avatar** for users. Leave empty to use `thumbnailPhoto` first and `jpegPhoto` as fallback. - -### Background Sync - -Enable periodic background sync. - -### Background Sync interval - -The interval between synchronizations, using the [Cron Text](https://bunkat.github.io/later/parsers.html#text) format. - -### Background Sync Import New Users - -Will import all users \(based on your filter criteria\) that exist in LDAP and do not exist in Rocket.Chat. - -### Background Sync Update Existing Users - -Will sync the avatar, fields, username, etc \(based on your configuration\) of all users already imported from LDAP on every **Sync Interval**. - -### Execute Synchronization Now - -Will execute the Background Sync now rather than wait for the Sync Interval even if Background Sync is False. This Action is asynchronous, please see the logs for more information about the process. - -## Enhanced Sync \(Enterprise only\) - -### Sync User Active State - -Determine if users should be enabled or disabled on Rocket.Chat based on the LDAP status. The 'pwdAccountLockedTime' attribute will be used to determine if the user is disabled. This setting is not yet compatible with all LDAP Servers, so if you don't use the 'pwdAccountLockedTime' attribute, you may want to disable it completely. - -## Role Mapping Settings - -### Role mapping from LDAP to Rocket.Chat. - -Use this setting to map LDAP groups into Rocket.Chat roles. - -You need to use an object format where the object key must be the LDAP group and the object value must be an array of RC roles. Example: - -```text -{ - 'ldapRole': [ - 'rcRole', - 'anotherRCRole' - ] -} -``` - -### Validate mapping for each login - -If the validation should occur for each login. - -Be careful with this setting because it will overwrite the user roles in each login, otherwise, this will be validated only at the moment of user creation. - -### Default role to the user - -The default RC role to be applied to the user if the user has some LDAP group that is not mapped. - -### LDAP query to get user groups - -LDAP query to get the LDAP groups that the user is part of. - diff --git a/guides/administration/administration/settings/ldap/settings.md b/guides/administration/administration/settings/ldap/settings.md deleted file mode 100644 index 04980bf863..0000000000 --- a/guides/administration/administration/settings/ldap/settings.md +++ /dev/null @@ -1,309 +0,0 @@ -# Settings - -## Basic Settings - -#### Enable - -Turns LDAP Authentication ON or OFF. - -#### Login Fallback - -Enable this option to also allow regular password users to log in on Rocket.Chat. It will also let LDAP users continue using Rocket.Chat if the LDAP server is down. - -#### Find user after login - -After a successful login, Rocket.Chat will search for the user on the LDAP server and reject the login if it is not found. Use this to prevent anonymous logins to Rocket.Chat when the LDAP Server allows anonymous logins. - -#### Host - -The LDAP connection host, e.g. ldap.example.com or 10.0.0.30 - -### Port - -The LDAP connection Port, usually 389 or 636. - -#### Reconnect - -Try to reconnect automatically when the connection is interrupted by some reason while executing operations. - -#### Encryption - -The encryption method used to secure communications to the LDAP server. - -| Value | Usage | -| :--- | :--- | -| No Encryption | | -| StartTLS | Upgrade to encrypted communication once connected | -| SSL/LDAPS | Encrypted from the start | - -#### CA Cert - -#### Reject Unauthorized - -Disable this option to allow certificates that can not be verified. Usually, Self Signed Certificates will require this option disabled to work. - -#### Base DN - -The fully qualified Distinguished Name \(DN\) of an LDAP subtree you want to search for users and groups. You can add as many as you like; however, each group must be defined in the same domain base as the users that belong to it. Example: - -```text - ou=Users+ou=Projects,dc=Example,dc=com -``` - -If you specify restricted user groups, only users that belong to those groups will be in scope. We recommend that you specify the top level of your LDAP directory tree as your domain base and use search filter to control access. - -#### Internal Log Level - -What log level should be used for the internal LDAP communication logs. - -#### Test Connection - -Use this button to test if the connection settings are valid. This will test the authentication and encryption, but not the syncing settings. - -## Authentication - -#### Enable - -Disable Authentication to skip binding the user DN and password. - -#### User DN - -The LDAP user that performs user lookups to authenticate other users when they sign in. This is typically a service account created specifically for third-party integrations. Use a fully qualified name, such as: - -```text -cn=Administrator,cn=Users,dc=Example,dc=com -``` - -#### Password - -The password for the User DN above. - -## Enhanced Sync \(Enterprise only\) - -#### Sync User Active State - -Determine if users should be enabled or disabled on Rocket.Chat, based on the LDAP status. The 'pwdAccountLockedTime' attribute will be used to determine if the user is disabled. This setting is not yet compatible with all LDAP Servers, so if you don't use the 'pwdAccountLockedTime' attribute, you may want to disable it completely. - -## Role Mapping - -#### Role mapping from LDAP to Rocket.Chat. - -Use this setting to map LDAP groups into Rocket.Chat roles. - -You need to use an object format where the object key must be the LDAP group and the object value must be an array of RC roles. Example: - -```text -{ - 'ldapRole': [ - 'rcRole', - 'anotherRCRole' - ] -} -``` - -#### Validate mapping for each login - -If the validation should occur for each login. - -Be careful with this setting because it will overwrite the user roles in each login, otherwise, this will be validated only at the moment of user creation. - -#### Default role to the user - -The default RC role to be applied to the user if the user has some LDAP group that is not mapped. - -#### LDAP query to get user groups - -LDAP query to get the LDAP groups that the user is part of. - -## Sync / Import - -#### Username Field - -Which field will be used as a username for new users. Usually `sAMAccountName` or `uid`. Leave empty to let the user pick their own Rocket.Chat username. You can use template tags too, for example: - -```text -#{givenName}.#{sn} -``` - -#### Unique Identifier Field - -Which field will be used to link the LDAP user and the Rocket.Chat user. You can inform multiple values separated by a comma to try to get the value from the LDAP record. - -#### Default Domain - -If provided the Default Domain will be used to create a unique email for users where email was not imported from LDAP. The email will be mounted as `username@default_domain` or `unique_id@default_domain`. - -#### Merge Existing Users - -**Caution!** When importing a user from LDAP and a user with the same username already exists the LDAP info and password will be set into the existing user. This will let LDAP users take over password accounts with the same username. - -#### Sync User Data - -Keep user data in sync with a server on **login** or on **background sync** \(eg: name, email, and custom fields\). - -#### User Data Field Map - -Configure how user account fields \(like email\) are populated from a record in LDAP \(once found\). - -As an example, `{"cn":"name", "mail":"email"}` will choose a person's human-readable name from the cn attribute, and their email from the mail attribute. - -Additionally, it is possible to use variables, for example, the following objectives will use a combination of the user's first name and last name for the rocket chat. - -```text -{ - "#{givenName} #{sn}": "name", - "mail": "email" -} -``` - -#### Sync LDAP Groups - -Enable this setting to activate role mapping from user groups on the community edition of Rocket.Chat. - -#### Auto Remove User Roles - -Enable this setting to automatically remove roles from LDAP users that don't have the corresponding group. This will only remove roles automatically that are set under the user data group map below. - -#### User Group Filter - -The LDAP search filter used to check if a user is in a group. - -#### LDAP Group BaseDN - -The LDAP BaseDN used to lookup if users are in a group. - -#### User Data Group Map - -The mapping of LDAP groups to Rocket.Chat roles, in JSON format. - -As an example, the following object will map the rocket-admin LDAP group to Rocket.Chat's "admin" role and the "tech-support" group to the "support" role. - -```text -{ - "rocket-admin":"admin", - "tech-support":"support" -} -``` - -#### Auto Sync LDAP Groups to Channels - -Enable this feature to automatically add users to a channel based on their LDAP group. - -#### Channel Admin - -When the above setting causes a channel to be created automatically during user sync, this setting will determine what user will become the admin of the channel. - -#### LDAP Group Channel Map - -The map of LDAP groups to Rocket.Chat channels, in JSON format. As an example, the following objective will add any user in the LDAP group "employee" to the general channel on Rocket.Chat. - -```text -{ - "employee":"general" -} -``` - -#### Auto Remove Users from Channels - -Enabling this will remove any users in a channel that does not have the corresponding LDAP group! This will happen in every login and background sync, so removing a group on LDAP will not instantly remove access to channels on Rocket.Chat. - -#### Sync User Avatar - -Toggle avatar syncing on or off. - -#### User avatar field - -What LDAP field will be used as **avatar** for users. Leave empty to use `thumbnailPhoto` first and `jpegPhoto` as fallback. - -#### Background Sync - -Enable periodic background sync. - -#### Background Sync interval - -The interval between synchronizations, using the [Cron Text](https://bunkat.github.io/later/parsers.html#text) format. - -#### Background Sync Import New Users - -Will import all users \(based on your filter criteria\) that exist in LDAP and do not exist in Rocket.Chat. - -#### Background Sync Update Existing Users - -Will sync the avatar, fields, username, etc \(based on your configuration\) of all users already imported from LDAP on every **Sync Interval**. - -#### Execute Synchronization Now - -Will execute the Background Sync now rather than wait for the Sync Interval even if Background Sync is False. This Action is asynchronous, please see the logs for more information about the process. - -## Timeouts - -#### Timeout \(ms\) - -How many milliseconds to wait for a search result before returning an error. - -#### Connection Timeout \(ms\) - -#### Idle Timeout \(ms\) - -How many milliseconds to wait after the latest LDAP operation before closing the connection. \(Each operation will open a new connection\) - -## User Search - -#### Filter - -If specified, only users that match this filter will be allowed to log in. If no filter is specified, all users within the scope of the specified domain base will be able to sign in. - -E.g. for Active Directory - -```text -memberOf=cn=ROCKET_CHAT,ou=General Groups -``` - -E.g. for OpenLDAP \(extensible match search\) - -```text -ou:dn:=ROCKET_CHAT -``` - -#### Scope - -#### Search Field - -The LDAP attribute that identifies the LDAP user who attempts authentication. This field should be`sAMAccountName`for most Active Directory installations, but it may be`uid`for other LDAP solutions, such as OpenLDAP. You can use`mail`to identify users by email or whatever attribute you want. - -You can use multiple values separated by a comma to allow users to login using multiple identifiers like username or email. - -#### Search Page Size - -The maximum number of entries each result page will return to be processed. - -#### Search Size Limit - -The maximum number of entries to return. **Attention** This number must be larger than the one on **Search Page Size**. - -## User Search \(Group Validation\) - -#### Enable LDAP User Group Filter - -Restrict access to users in an LDAP group Useful for allowing OpenLDAP servers without a **memberOf** filter to restrict access by groups. - -#### Group ObjectClass - -The **objectclass** that identify the groups. E.g. **OpenLDAP**:groupOfUniqueNames - -#### Group ID Attribute - -E.g. OpenLDAP:cn - -#### Group Member Attribute - -E.g. **OpenLDAP**:uniqueMember - -#### Group Member Format - -E.g. **OpenLDAP**:uid=\#{username},ou=users,o=Company,c=com - -#### Group name - -Group name to which the user should belong. - diff --git a/guides/administration/administration/settings/ldap/timeouts-settings.md b/guides/administration/administration/settings/ldap/timeouts-settings.md deleted file mode 100644 index 32cec4860e..0000000000 --- a/guides/administration/administration/settings/ldap/timeouts-settings.md +++ /dev/null @@ -1,12 +0,0 @@ -# Timeouts Settings - -## Timeout \(ms\) - -How many milliseconds to wait for a search result before returning an error. - -## Connection Timeout \(ms\) - -## Idle Timeout \(ms\) - -How many milliseconds to wait after the latest LDAP operation before closing the connection. \(Each operation will open a new connection\) - diff --git a/guides/administration/administration/settings/ldap/user-search-settings.md b/guides/administration/administration/settings/ldap/user-search-settings.md deleted file mode 100644 index ef0d6805e8..0000000000 --- a/guides/administration/administration/settings/ldap/user-search-settings.md +++ /dev/null @@ -1,62 +0,0 @@ -# User Search Settings - -## User Search - -### Filter - -If specified, only users that match this filter will be allowed to log in. If no filter is specified, all users within the scope of the specified domain base will be able to sign in. - -E.g. for Active Directory - -```text -memberOf=cn=ROCKET_CHAT,ou=General Groups -``` - -E.g. for OpenLDAP \(extensible match search\) - -```text -ou:dn:=ROCKET_CHAT -``` - -### Scope - -### Search Field - -The LDAP attribute that identifies the LDAP user who attempts authentication. This field should be `sAMAccountName` for most Active Directory installations, but it may be `uid` for other LDAP solutions, such as OpenLDAP. You can use `mail` to identify users by email or whatever attribute you want. - -You can use multiple values separated by comma to allow users to login using multiple identifiers like username or email. - -### Search Page Size - -The maximum number of entries each result page will return to be processed. - -### Search Size Limit - -The maximum number of entries to return. **Attention**, this number must be larger than the one on **Search Page Size**. - -## User Search \(Group Validation\) - -### Enable LDAP User Group Filter - -Restrict access to users in a LDAP group Useful for allowing OpenLDAP servers without a **memberOf** filter to restrict access by groups. - -### Group ObjectClass - -The **objectclass** that identify the groups. E.g. **OpenLDAP**:groupOfUniqueNames - -### Group ID Attribute - -E.g. OpenLDAP:cn - -### Group Member Attribute - -E.g. **OpenLDAP**:uniqueMember - -### Group Member Format - -E.g. **OpenLDAP**:uid=\#{username},ou=users,o=Company,c=com - -### Group name - -Group name to which the user should belong. - diff --git a/guides/administration/administration/settings/message.md b/guides/administration/administration/settings/message.md deleted file mode 100644 index 58efe81e85..0000000000 --- a/guides/administration/administration/settings/message.md +++ /dev/null @@ -1,4 +0,0 @@ -# Message - -Document Under Development - diff --git a/guides/administration/administration/settings/meta.md b/guides/administration/administration/settings/meta.md deleted file mode 100644 index 96669fcffa..0000000000 --- a/guides/administration/administration/settings/meta.md +++ /dev/null @@ -1,4 +0,0 @@ -# Meta - -Document Under Development - diff --git a/guides/administration/administration/settings/mobile.md b/guides/administration/administration/settings/mobile.md deleted file mode 100644 index 280f6b72e9..0000000000 --- a/guides/administration/administration/settings/mobile.md +++ /dev/null @@ -1,4 +0,0 @@ -# Mobile - -Document Under Development - diff --git a/guides/administration/administration/settings/oauth/README.md b/guides/administration/administration/settings/oauth/README.md deleted file mode 100644 index 57e705993a..0000000000 --- a/guides/administration/administration/settings/oauth/README.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -description: >- - Rocket.Chat supports several different ways to authenticate, beyond the basic - username/password authentication. Most authentication providers require a - clientID and a secret. ---- - -# OAuth - -To set up your desired provider: - -1. Go to **Administration.** - -![](../../../../../.gitbook/assets/image%20%2830%29.png) - -2. Search '**OAuth'** in **Settings** and open it. - -![](../../../../../.gitbook/assets/image%20%28153%29.png) - -## Facebook - -* Callback URL: `<>/_oauth/facebook?close` - -## GitHub - -* Callback URL: `<>/_oauth/github?close` - -### GitHub Set up - -1. Go to your [Application Settings](https://github.com/settings/applications) -2. Under the `Developer applications` tab, click the **Register new application** button -3. Fill in the form, and make sure you use the correct callback URL. - -**Note**: If your callback URL is wrong, GitHub does not display any error. Instead of logging in, you receive an error message saying, "No matching login attempt found." - -## Google - -* Callback URL: `<>/_oauth/google?close` - -### Google Set up - -1. Go to the [Google Developer Console](https://console.developers.google.com), and create a new project -2. Set up your project by creating an "OAuth 2.0 client ID" \(under `APIs & Auth` and `Credentials`\) -3. After that, make sure you define a **Product Name** in the OAuth consent screen, and select **Web App** as the application type. Otherwise, you won't be able to provide a callback URL - -## Apple - -To use Apple account for authentication: - -1. Turn on **Sign in with Apple**. - -![](../../../../../.gitbook/assets/image%20%28152%29.png) - -## LinkedIn - -* Callback URL: `<>/_oauth/linkedin` - -### LinkedIn Set up - -1. Go to the [Developers Linkedin](https://www.linkedin.com/developers/) and create a new app -2. Go to Auth tab. -3. Set up your project by creating an OAuth client ID and Client Secret. - -## Twitter - -* Callback URL: `<>/_oauth/twitter` - -## WordPress - -Please follow the instructions [here](https://docs.rocket.chat/guides/administrator-guides/authentication/oauth/wordpress). - -## Add Custom OAuth - -To add custom OAuth: - -1. Click **Add custom oAuth** - -![](../../../../../.gitbook/assets/image%20%28151%29.png) - -2. Give a unique name for the custom oauth - -![](../../../../../.gitbook/assets/image%20%28150%29.png) - -## Refresh OAuth Services - -Click Refresh OAuth Services to refresh the options that are displayed on the login screen based on the settings you saved, as shown below: - - - diff --git a/guides/administration/administration/settings/oauth/wordpress.md b/guides/administration/administration/settings/oauth/wordpress.md deleted file mode 100644 index b520b3c302..0000000000 --- a/guides/administration/administration/settings/oauth/wordpress.md +++ /dev/null @@ -1,69 +0,0 @@ -# WordPress OAuth Setup - -The easiest way to configure Rocket.Chat using WordPress as your identity backend is to use the MiniOrange oAuth Plugin Version 2.5.6 or higher: [https://wordpress.org/plugins/miniorange-oauth-20-server/](https://wordpress.org/plugins/miniorange-oauth-20-server/) - -## Instructions - -* Sign into your Rocket.Chat instance with an administrator account. -* Procced to the `oAuth` section under `Administration`. -* Click on **Add custom oAuth** to create a new OAuth Application, as depicted below: - -![](https://savvymatthew.sfo2.cdn.digitaloceanspaces.com/rocketchat-docs/rct-oauth-step-03.png) - -* In the **Application Configuration** tab, copy the `Callback URL` \(example: `http://your.domain.com/_oauth/id`\), and put it into a notepad, or another text application, as we will need it in the next few steps. -* Log into your WordPress site as an administrator and navigate to **Add New** under `Plugins`. -* Search for "MiniOrange oAuth Server" \(Red below\). -* Install and activate the `MiniOrange oAuth Server` plugin \(Purple, and then Green\). - -![](https://savvymatthew.sfo2.cdn.digitaloceanspaces.com/rocketchat-docs/rct-oauth-step-8.png) - -* Navigate to the `MiniOrange oAuth Server` Menu item, and click though the quick guided tour. -* Click **Add client** \(Red\). - -![](https://savvymatthew.sfo2.cdn.digitaloceanspaces.com/rocketchat-docs/rct-oauth-step-10.png) - -* Give your client a name \(Red\), enter the Callback URL you saved before \(Purple\), and click **Save client**. - -![](https://savvymatthew.sfo2.cdn.digitaloceanspaces.com/rocketchat-docs/rct-oauth-step-11.png) - -* It now shows your `Client ID` \(Red\) and `Client Secret` \(Purple\). Copy them into the same notepad, or another text application where you have your Callback URL. - -![](https://savvymatthew.sfo2.cdn.digitaloceanspaces.com/rocketchat-docs/rct-oauth-step-12.png) - -* Click the **Endpoints** tab, and copy each line from the purple box to your notepad. Don't forget to note the endpoint each line represents. - -![](https://savvymatthew.sfo2.cdn.digitaloceanspaces.com/rocketchat-docs/rct-oauth-step-13.png) - -* Go back to the custom oAuth you already created in Rocket.Chat, and match the information saved in the notepad into the correct fields listed below and in the screenshot: -* **Enable** = True -* **URL** = `https://your.domain.com` \(do not include a trailing “/”\) -* **Token Path** = Access Token Endpoint -* **Token Sent Via** = Payload -* **Identity Token Sent Via** = Payload -* **Identity Path** = Get User Info Endpoint -* **Authorize Path** = Authorize Endpoint -* **Scope** = Profile -* **Id** = Client ID -* **Secret** = Client Secret -* **Login Style** = Redirect \(you can use any of them, but redirect is really the only one that plays nice with mobile and desktop apps\) -* **Username field** = username \(a normal hook for a WordPress username is user\_login, but the plugin rewrites this in the JSON response to Rocket for username\) -* **Merge users** = true - -![](https://savvymatthew.sfo2.cdn.digitaloceanspaces.com/rocketchat-docs/rct-oauth-step-14.png) - -### Button Customization - -In regards to the customization of the **Log in** button, you can customize it without affecting oAuth working. - -**Note**: When using mobile and desktop apps, your imputed **Button** text is not displayed. Instead, the apps will display your custom oAuth name at the top. - -### Troubleshooting oAuth - -The first thing to do when having an issue with oAuth is to enable `Level 2 Logging` to see what's going on: `Administration > Logs > Log Level > View Logs`. - -When looking at the logs, you may want to open an incognito mode browser window for the log in screen, and have the logs and your login screen side-by-side. When you attempt a login, the log displays the oAuth response in real time, which gives you valuable information to help you troubleshoot your issue. - -Here are some forum threads that provide issues experienced by others: - -**The redirect URI provided is missing or does not match** [https://wordpress.org/support/topic/rocketchat-wordpress-the-redirect-uri-provided-is-missing-or-does-not-match/](https://wordpress.org/support/topic/rocketchat-wordpress-the-redirect-uri-provided-is-missing-or-does-not-match/) - diff --git a/guides/administration/administration/settings/omnichannel-admins-guide/README.md b/guides/administration/administration/settings/omnichannel-admins-guide/README.md deleted file mode 100644 index 598e31318c..0000000000 --- a/guides/administration/administration/settings/omnichannel-admins-guide/README.md +++ /dev/null @@ -1,159 +0,0 @@ ---- -description: >- - OmniChannel adds the ability to receive conversations from a pop-up livechat - support on your website or your business Facebook chat or any other channel - directly in Rocket.chat. ---- - -# Omnichannel Admin's Guide - -## Activation - -### Enable Livechat feature - -To enable the Livechat feature on your Rocket.Chat instance: - -1. Go to **Administration** - -![](../../../../../.gitbook/assets/image%20%28594%29.png) - -2. Search '**Omnichannel**' in **Settings** and enable it - -![](../../../../../.gitbook/assets/image%20%2829%29.png) - -Now the admin will have access to _**Omnichannel Panel Settings**_ through a new menu called `Omnichannel`, as shown below: - -![](../../../../../.gitbook/assets/image%20%28597%29.png) - -## Configuration - -### **OmniChannel Basic Settings** - -1. Enable Omnichannel on your Rocket.Chat instance -2. Enable/Disable request comment from the agent when closing a conversation -3. Enable/Disable acceptance of new omnichannel requests when the agent is idle -4. Enable/Disable continuous sound notification for new omnichannel room/conversation -5. Enable/Disable file uploads in the livechat widget -6. Enable/Disable asking the visitor if they would like a transcript of the conversation. -7. Enter the message to show when asking for a transcript. - -![](../../../../../.gitbook/assets/image%20%2854%29.png) - -### Business Hour - -The feature turns on the omnichannel toggle for the set business hours automatically. And you will be able to receive omnichannel conversations after. The toggle will be turned off during off-hours. The enterprise workspaces can set up multiple business hours according to different time zones and their business needs. Community workspaces can only set up one set of business hours. - -1. Enable business hours -2. Choose multiple business hours according to your enterprise needs - -![](../../../../../.gitbook/assets/image%20%2857%29.png) - -### CRM Integration - -Please follow the steps given [here](https://docs.rocket.chat/guides/omnichannel/webhook). - -### External Frame - -If you have an app that you want to integrate with Rocket.Chat and use that app to embed an iFrame in Rocket.Chat to interact with your CRM. You can do so using External Frame. - -1. Enable external frame -2. Add the URL of your external frame -3. Enter the encryption key, as shown below: - -![](../../../../../.gitbook/assets/image%20%2858%29.png) - -### Facebook - -If your organization wishes to communicate with users of Facebook, you can enable integration within Rocket.Chat to do so. - -First, you will need to request an API key from Rocket.Chat Support then set it up within your Administration area. - -Send an email to [omni@rocket.chat](mailto:omni@rocket.chat) to request an API key. These are processed as time allows, and may take a few days, but you should have your key and secret soon enough. - -1. Enable Facebook integration -2. Enter your _OmniChannel API Key_ -3. _Enter OmniChannel API Secret_. **Save** the changes - -‌ - -![](https://gblobscdn.gitbook.com/assets%2F-M418Ul0aSTwf2PYsyPW%2F-MIz0NPAavAh0lU_m6WU%2F-MIz2cI9LQb6iNIthxPa%2Fimage.png?alt=media&token=b082edb1-8ac9-4f9b-84d5-5434d74bbbbf) - -### GDPR - -If you are a GDPR compliant company and want to allow your visitors to request to remove their data, Rocket.chat allows you to do that for all your incoming chats, as shown below: - -![](../../../../../.gitbook/assets/image%20%2861%29.png) - -### Livechat - -1. Set the title of your widget -2. Set the color of the title bar of your widget -3. Enable message character limit -4. Set the allowed message character length -5. Display offline form -6. Validate email address - -as shown below: - -![](../../../../../.gitbook/assets/image%20%2866%29.png) - -Now customize the appears of your livechat widget here for the hours when none of your agents are online/working. - -1. Set **Offline Form Unavailable Message**, if any -2. Set **Offline Tittle** -3. Set title bar **Color** for the offline widget -4. Give instructions, if any -5. Set the email address where you want to receive your offline messages -6. Set success message to display to the visitor when they have sent their message offline - -as shown below: - -![](../../../../../.gitbook/assets/image%20%2862%29.png) - -Some more settings that you can customize according to your needs are shown below: - -![](../../../../../.gitbook/assets/image%20%2863%29.png) - -### RD Station - -This is a CRM integration with RD Station. - -We set up your token, and when a new livechat conversation starts, your visitor information is sent to the RD station. - -![](../../../../../.gitbook/assets/image%20%2859%29.png) - -### Routing - -Routing allows you to define the behavior of your livechat queues. - -Detail of every setting is listed below: - -1. Select your preferred routing method \(Please refer to [this](https://docs.rocket.chat/guides/omnichannel-guides/omnichannel/livechat-queues) article for information on types of routing methods used in rocket chat\) -2. Enable acceptance of incoming omnichannel requests even if there are no online agents if you want -3. Enable if you want the routing system to attempt to find a bot agent before addressing new conversations to a human agent -4. Set the limit of **Max number of items displayed in the queue** if you want -5. Enable if you want to show the livechat queue to all the agents -6. Mention your External Queue Service URL if your _Omnichannel Routing Method_ is **External** **Service** -7. Enter **Secret Token** -8. Enable the **Waiting queue** if you want -9. Enter the **max. number of simultaneous chats** that you want your agents to attend -10. The **Number of recent chats to calculate estimated wait time** defines the number of last served rooms that will be used to calculate queue wait times -11. Enable **The Last-Chatted Agent Prefered** setting allocates chats to the agent who previously interacted with the same visitor if the agent is available when the chat starts - -![](../../../../../.gitbook/assets/image%20%2870%29.png) - -### Sessions - -Sessions allow you to decide how you want to handle your chat sessions when an agent goes offline: - -1. You can either forward the chat to another agent, close it or do nothing -2. Mention the amount of time in seconds that you want to wait before you want to consider that the agent has abandoned the chat -3. Enter the message to display to the visitor on closing the session -4. Mention the time you want to wait to consider visitor abandonment -5. Enable automatic closing of rooms abandoned by the visitor if you want -6. Enter the message to display to the visitor when the room is automatically closed by visitor inactivity - -As shown below: - -![](../../../../../.gitbook/assets/image%20%2869%29.png) - diff --git a/guides/administration/administration/settings/omnichannel-admins-guide/queue-types-routing-algorithm.md b/guides/administration/administration/settings/omnichannel-admins-guide/queue-types-routing-algorithm.md deleted file mode 100644 index a774b193eb..0000000000 --- a/guides/administration/administration/settings/omnichannel-admins-guide/queue-types-routing-algorithm.md +++ /dev/null @@ -1,57 +0,0 @@ -# Queue Types \(Routing Algorithm\) - -There are the following types of queues in Rocket.Chat omnichannel solutions: - -* [Auto Selection \[default\]](queue-types-routing-algorithm.md#auto-selection) -* [Manual Selection](queue-types-routing-algorithm.md#manual-selection) -* [External Service](queue-types-routing-algorithm.md#external-service) -* [Load Balancing](queue-types-routing-algorithm.md#load-balancing)![](../../../../../.gitbook/assets/2021-06-10_22-31-38%20%283%29%20%283%29%20%283%29%20%281%29.jpg) -* [Load Rotation](queue-types-routing-algorithm.md#load-rotation)![](../../../../../.gitbook/assets/2021-06-10_22-31-38%20%283%29%20%283%29%20%283%29%20%281%29.jpg) - -## Auto Selection - -Each new chat will be routed to the agent that are accepting chats with the lower count. If there is more than one available agent with the same count, the chat will get the first in order. - -Consider the following department configuration: - -When a new chat comes, it'll be routed to `agent-1`, because he has `0` count and is the first in order, and the `agent-1`'s count will be increased to `1`: - -A new incoming chat will be routed to `agent-2` and so on until all agents have one chat each. So the next round comes, starting with `agent-1`. - -## Manual Selection - -With this queue method active, agents will have a new `Incoming Livechats` section: - -Each new chat will be available on the `Incoming Livechats` section to **all** agents. So any agent can take a new incoming chat. - -When the agent clicks on the incoming Livechat, the system will show the preview of the chat containing the messages sent by the visitor, so the agent can decide if he will take the chat or not. If the agent decides to take it, the incoming chat will be removed from the incoming chats list of the other agents. - -## External Service - -You can use an `External Service` to integrate your own agent routing rule into Livechat. - -Once you set up the `External Service` as the Livechat routing method, you must define the `External Queue Service URL` and `Secret Token` settings in the omnichannel admin panel. - -Rocket.Chat will send a GET request to the `External Queue Service URL` and the setting `Secret Token` is sent as a header `X-RocketChat-Secret-Token`, so you can validate if the request came from the Rocket.Chat. - -If your endpoint returns a response status other than 200, Rocket.Chat will try 10 times until it receives a valid response. - -Here is an example of the JSON data format that Livechat will wait for after submitting the get request: - -```javascript -{ - "_id": "CbbQkRAifP6HtDLSr", - "username": "valid.username" -} -``` - -After receiving the return from the endpoint in the format described above, Livechat will check that the `username` the field represents a valid Livechat agent and then follows the normal process flow. - -## Load Balancing![](../../../../../.gitbook/assets/2021-06-10_22-31-38%20%283%29%20%283%29%20%283%29%20%281%29.jpg) - -Load Balancing is an enterprise-only feature. It is also an auto-assignment algorithm, but it will consider the agent's online status and the time they have been chatting, contrary to auto-selection, which only considers the agent's online status. For instance, an agent was away on a short break; once he comes back, he will be assigned more chats than his fellow agent. So in this way, the algorithm will maintain a chat load balance between agents. - -## Load Rotation![](../../../../../.gitbook/assets/2021-06-10_22-31-38%20%283%29%20%283%29%20%283%29%20%281%29.jpg) - -Agent queues for service between online agents, without considering the previous chat's history attended or the number of open rooms in attendance. It's a mix between the Load Balancing and Auto Selection algorithms. - diff --git a/guides/administration/administration/settings/otr.md b/guides/administration/administration/settings/otr.md deleted file mode 100644 index e53689c197..0000000000 --- a/guides/administration/administration/settings/otr.md +++ /dev/null @@ -1,12 +0,0 @@ -# OTR - -{% hint style="info" %} -This feature is currently in beta. Search operations will not find encrypted messages of encrypted rooms. The mobile apps and multi-DMs may not support the encrypted messages \(currently under implementation\). File Uploads will not be encrypted in this version. -{% endhint %} - -Off-the-record \(OTR\) Messaging is a feature that allows users to exchange **temporary, encrypted messages directly between each other**. This happens by using the local**,** non-persistent session storage of their browser rather than storing messages on the Rocket.Chat server. After an OTR session ends and the session storage is cleared, the OTR messages are removed and can no longer be restored. - -As an administrator, you can enable/disable OTR for your workspace, as shown below: - -![](../../../../.gitbook/assets/image%20%28387%29.png) - diff --git a/guides/administration/administration/settings/push-notifications-admin-guide.md b/guides/administration/administration/settings/push-notifications-admin-guide.md deleted file mode 100644 index 54a0525db1..0000000000 --- a/guides/administration/administration/settings/push-notifications-admin-guide.md +++ /dev/null @@ -1,175 +0,0 @@ -# Push \(Notifications Admin Guide\) - -By default, the community users have 10k push notifications for free. If you are a deployment that uses mobile clients a lot, you might feel the need to extend your per-month push notification limit. To subscribe to your desired push notification bundle, you first need to [subscribe to our cloud account](https://docs.rocket.chat/guides/administrator-guides/connectivity-services) if you don't have one. - -## Subscribe a Package - -To subscribe to a push notification package: - -1. Please go to our [sponsorship page](https://sponsorship.rocket.chat/) -2. Choose your desired package from the packages below: - -![](../../../../.gitbook/assets/image%20%281%29.png) - -3. Login with your GitHub account - -4. Login with [Rocket.Chat Cloud](https://cloud.rocket.chat/) - -5. Select **the workspace you want to apply the cap to**. The cap will be applied automatically with the respective limit according to the selected sponsorship perk. - -{% hint style="info" %} -Please note that only **one** sponsorship subscription can be applied to a workspace. You can not stack a few subscriptions to get more push messages. If you need more than 20k you will need to contact our sales representative at [sales@rocket.chat](mailto:sales@rocket.chat) -{% endhint %} - -## Set default user preferences \(admin and users\) - -{% hint style="info" %} -Default user preferences are universal for all the users until individual users change them for themselves. -{% endhint %} - -To check user preferences for push notifications: - -1. Go to **Administration** - -![](../../../../.gitbook/assets/image%20%2830%29.png) - -2. Goto '**Account'** in **Settings** and scroll down to **Default User Preference** - -![](../../../../.gitbook/assets/image%20%2821%29.png) - -3. Set **Mobile Notifications Default Alert** to Mentions. It will send notifications in case of a mention of the user's name or only the threads the user has intentionally subscribed to. - -![](../../../../.gitbook/assets/image%20%2841%29.png) - -{% hint style="warning" %} -We suggest you should check the push notification configuration in user preferences before enabling them because you might want to use your limit wisely. -{% endhint %} - -## Push Notifications Configuration - -To enable push notifications: - -1. Go to **Administration** - -![](../../../../.gitbook/assets/image%20%2830%29.png) - -2. Search '**Push'** in **Settings** - -![](../../../../.gitbook/assets/image%20%28137%29.png) - -3. **Enable** push notifications - -4. **Enable** your Gateway \(_Option not available on a cloud server_\) - -{% hint style="info" %} -If you are on a cloud server, you don't get to choose as there is a default rocket.chat gateway. On a self-hosted server, you have an option to either use rocket.chat gateway or configure your own. -{% endhint %} - -5. Enable **Production** - -6. You are all set to send a test push to your user now. - -{% hint style="info" %} -To successfully send a test push to your user, you will have to be logged in to the server on your mobile client and then close or minimize the application. -{% endhint %} - -![](../../../../.gitbook/assets/image%20%2860%29.png) - -### Privacy - -In Privacy, you can configure what amount of information you want your push notification to have. - -1. Go to **Administration** - -![](../../../../.gitbook/assets/image%20%2830%29.png) - -2. Search '**Push'** in **Settings** - -![](../../../../.gitbook/assets/image%20%28137%29.png) - -3. Go to **Privacy** - -![](../../../../.gitbook/assets/image%20%28165%29.png) - -![](../../../../.gitbook/assets/image%20%2891%29.png) - -{% hint style="info" %} -Above are the default settings. If **Fetch full message content from the server on the receipt** is enabled and you're running the _Enterprise Edition or Gold_, the notification payload sent through the Apple Push Notification service or Firebase Cloud Messaging service contains no message content. Instead, it contains only the message ID, which is then used by the mobile app to fetch the message content from the [Rocket.Chat](http://rocket.chat/) server to display the notification. If something happens and the app cannot reach the server in time, a generic push notification message is shown. When the setting is disabled, the whole message content is sent via push notification payload so the mobile app can display the notification right away. -{% endhint %} - -## Cloud Service Privacy Terms Agreement - -Make sure you have agreed to terms and conditions. - -1. Go to **Administration** - -![](../../../../.gitbook/assets/image%20%2830%29.png) - -2. Search '**Setup Wizard'** in **Settings** - -![](../../../../.gitbook/assets/image%20%28163%29.png) - -3. Go to '**Cloud Info'** - -![](../../../../.gitbook/assets/image%20%28162%29.png) - -4. Turn the **Cloud Service Privacy Terms Agreement** toggle on - -![](../../../../.gitbook/assets/image%20%28160%29.png) - -{% hint style="info" %} -If **Cloud Service Privacy Terms Agreement** is not toggled ON, the push won't work. -{% endhint %} - -5. Hit **Save changes** - -![](../../../../.gitbook/assets/image%20%28156%29.png) - -## Connect to cloud - -When you purchase any package of push notifications as a self-managed customer, you need to connect your workspace to our cloud. - -1. Go to connectivity services; check if you are connected. Cloud workspace should be connected by default. -2. If not, go to [connectivity services](https://docs.rocket.chat/guides/administrator-guides/connectivity-services) and follow the guide. -3. Once done, go to Push and send a test message to your user. - -## Check the count of notification used per month - -To check the count of notification used per month: - -1. Go to [cloud.rocket.chat](http://cloud.rocket.chat/) - -![](../../../../.gitbook/assets/image%20%28157%29.png) - -2. Go to Workspaces and select the workspace you want to check count for. - -3. Push notifications block will show the number of used notifications per your current limit per month. - -![](../../../../.gitbook/assets/image%20%28158%29.png) - -## Enable push notifications for channels - -Users can configure what notifications they want to receive on mobile for each channel. - -To enable push notifications for channels: - -1. Open room actions - -![](../../../../.gitbook/assets/image%20%28161%29.png) - -2. Notification preferences - -![](../../../../.gitbook/assets/image%20%28166%29.png) - -3. Mobile - -![](../../../../.gitbook/assets/image%20%28164%29.png) - -4. Select what type of notifications you want to receive. - -![](../../../../.gitbook/assets/image%20%28159%29.png) - -{% hint style="info" %} -On some channels, notifications can stop if the number of users exceeds the set limit. The limit is set in the Administration -> General -> Notifications. -{% endhint %} - diff --git a/guides/administration/administration/settings/rate-limiter.md b/guides/administration/administration/settings/rate-limiter.md deleted file mode 100644 index 815ad21422..0000000000 --- a/guides/administration/administration/settings/rate-limiter.md +++ /dev/null @@ -1,4 +0,0 @@ -# Rate Limiter - -Document Under Development - diff --git a/guides/administration/administration/settings/retention-policies.md b/guides/administration/administration/settings/retention-policies.md deleted file mode 100644 index 2407f71e16..0000000000 --- a/guides/administration/administration/settings/retention-policies.md +++ /dev/null @@ -1,62 +0,0 @@ -# Retention Policy - -This feature adds the ability to set retention policies on channels and globally. Such retention policies can automatically remove old messages and files with custom rules. - -**Note**: This feature is only available from version 0.67 or later. - -## Permissions - -The ability to set retention policies depends on two permissions: `edit-privileged-setting` and `edit-room-retention-policy`: - -* To set **a global policy**, the `edit-privileged-setting` permission is required -* To set **a per-channel policy**, the `edit-room-retention-policy` permission is required - -If you want to enable channel owners to set their own policies, assign the `edit-room-retention-policy` permission to channel owners - by default, it is assigned to Admins only. - -## Configuration - -Retention policies have two levels, global policies \(enforced everywhere\) and per-channel policies \(enforced in specific channels\). - -To turn on retention policies, set `Enabled` to `True`. - -**Note**: If you wish to use per-channel policies but not a global policy, set all three `Applies to` options to `False` but set the global `Enabled` option to `True`. - -### Global policies - -**Note**: Tweaking these settings without extreme caution can **destroy** **all message history across your server**. Please read this entire section **before** you turn the feature on. - -You can find the settings for this feature in `Retention Policy` in the Admin panel, under the `Global Policy` section. - -The policy is split up into three parts, a policy for all channels, one for all private groups, and one for all direct messages. Each type has two options: - -* **Applies to channels/private groups/direct messages**: establishes whether the global retention policy should apply to this type. For example, if you only wish to prune messages in private groups, set this to `True` for private groups, and to `False` for all others. -* **Maximum message age in channels/private groups/direct messages**: establishes how old messages maybe, in days. For example, to make the policy automatically delete all messages older than 30 days, enter `30`; to make the policy automatically delete all messages older than a year, enter `365`, etc. - -Furthermore, three more options allow you to specify how the policy works: - -* **Exclude pinned messages**: when set to `True`, pinned messages are not deleted. For example, when you pin a few messages with important links, these messages stay intact. -* **Only delete files**: when set to `True`, messages are not deleted, but files are. They are replaced by a simple _File removed by automatic prune_ message. When used together with **Exclude pinned messages**, only unpinned files are deleted. -* **Timer Precision**: establishes how often the deletion script should run. when your policies have long lifetime, or you simply do not care about the policy's precision, you can lower this to save processing power. - -### Per-channel Policies - -**Note**: Tweaking these settings without extreme caution can **destroy** **all message history across your server**. Please read this entire section **before** you turn the feature on. - -Find the settings for this feature in the `Settings` screen of a channel, if you have the `edit-room-retention-policy` permission. - -The `Automatically prune old messages` option has three states: - -* **Default**: uses the global policy if enabled, otherwise do nothing -* **Disabled**: does nothing; the retention policy never applies to the channel -* **Enabled**: uses the retention policy described below, instead of any global policy - -If you set `Automatically prune old messages` to `Enabled`, there are a few settings you can tweak to specify the new policy: - -* **Maximum message age in days**: establishes how old messages may be, in seconds. For example, to make the policy automatically delete all messages older than 30 days, enter `30`; to make the policy automatically delete all messages older than a year, enter `365`, etc. -* **Exclude pinned messages**: if enabled, pinned messages are not deleted. For example, if you pinned a few messages with important links, they stay intact. -* **Prune files only, keep messages**: if enabled, messages are not be deleted, but files are; they are replaced by a simple _File removed by automatic prune_ message. When used together with **Exclude pinned messages**, only unpinned files are deleted. - -## Info Available to Users - -Users can see if a channel's messages will be pruned by either scrolling to the very top of the message history, or opening the channel info. A message is displayed if a policy, \(global or per-channel\) is present, for example: _Messages older than 30 days are automatically pruned here_ or _Unpinned files older than a year are automatically pruned here_. - diff --git a/guides/administration/administration/settings/saml/README.md b/guides/administration/administration/settings/saml/README.md deleted file mode 100644 index ee2ff8b80d..0000000000 --- a/guides/administration/administration/settings/saml/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# SAML - -{% page-ref page="rocket.chat-server-settings.md" %} - -{% page-ref page="simple-saml-php.md" %} - -{% page-ref page="active-directory-federation-services.md" %} - -{% page-ref page="oracle-cloud.md" %} - diff --git a/guides/administration/administration/settings/saml/active-directory-federation-services.md b/guides/administration/administration/settings/saml/active-directory-federation-services.md deleted file mode 100644 index b3a4411d6c..0000000000 --- a/guides/administration/administration/settings/saml/active-directory-federation-services.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -description: Authenticating Rocket.Chat and Microsoft ADFS via SAML ---- - -# Active Directory Federation Services - -It is possible to set up the authentication between Rocket.Chat and Active Directory Federation Services by setting up SAML authentication scenario. - -Microsoft ADFS provides an IdP service that can be consumed by Rocket.Chat for authentication. Important: If you are using Active Directory _without_ Federation Services, you should perform the user synchronization via LDAP only. - - This document takes into consideration that your ADFS environment is deployed and running. For further info, please refer to [this guide](https://docs.microsoft.com/en-us/previous-versions/dynamicscrm-2016/deployment-administrators-guide/gg188612%28v=crm.8%29). - -The Rocket.Chat configuration should be done as follows: - -1. Go to Administration -> SAML and configure the entry points and the IdP path. - -![](../../../../../.gitbook/assets/adfs_1.png) - -2. Add the private key certificate related to the ADFS server. - -Important: ADFS uses .pfx certificate extensions \(widely used on Windows landscapes\) and Rocket.Chat uses .pem files. So, before setting the certificate here, it must be converted. - -![](../../../../../.gitbook/assets/adfs_2.png) - -3. Set the _Custom Authn Context_ and _User Data Field Map_ according to the scenario you have on your Active Directory Federation Services - -![](../../../../../.gitbook/assets/image%20%28190%29.png) - -**Important:** The Custom Authorization context fields must match the authentication methods selected on ADFS. Microsoft Federation Services provides two authentication methods: Forms authentication and Windows Authentication. - -![](../../../../../.gitbook/assets/adfs_1%20%281%29.png) - -* Forms authentication: If this option is selected as 'primary', a login form provided by ADFS will be called by the SAML assertion to perform the login operation. For this method, the recommended "Custom Authn Context" in Rocket.Chat should be _**urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport**_ -* Windows authentication: if this option is selected as **'**primary', ADFS will expect the login assertions on the Windows Domain level. To set a full SSO scenario between Rocket.Chat and ADFS, the recommended "Custom Authn Context" should be _**urn:federation:authentication:windows**_ - - - - - - - - - diff --git a/guides/administration/administration/settings/saml/keycloak.md b/guides/administration/administration/settings/saml/keycloak.md deleted file mode 100644 index cd5392f70b..0000000000 --- a/guides/administration/administration/settings/saml/keycloak.md +++ /dev/null @@ -1,44 +0,0 @@ -# Keycloak - -[https://www.keycloak.org/](https://github.com/RocketChat/docs/tree/383996fe726bc870c25c540068bd6a4b8cb8b7b5/guides/administrator-guides/authentication/saml/Keycloak/README.md) is another popular open-source IdP that you can use in connection with Rocket.Chat. - -## Prerequisites - -* Rocket.Chat server accessible like e.g. [https://r.example.com](https://r.example.com) -* Keycloak server accessible like e.g. [https://sso.example.com](https://sso.example.com) - -Keycloak: - -* Decide/set up a realm you want to use, e.g. `master`. The realm will be referenced by the placeholder ``. - -## Setting up Rocketchat - -Go to the SAML settings in Rocketchat administration: - -* Decide the keycloak server "nickname" - e.g. `keycloak`. -* For the custom entry point and IDP SLO Redirect URL, go for `https://sso.example.com/auth/realms//protocol/saml` -* Note the Custom Certificate - this is the Keycloak's realm certificate. Check out the realm settings, examine the Keys tab, and get the RSA Certificate and paste it to the field. Don't include the `-----BEGIN/END CERTIFICATE-----` headers/footers. -* Generate the Public Certificate and Private Key if needed, or leave them as they are if they are present. - -## Setting up Keycloak - -Go to `https://r.example.com/_saml/metadata/keycloak` - you should get an XML file. Save the raw file to your disk. Go to keycloak and open the "Add Client" dialogue. Select the SAML protocol, and import the XML file from the previous step. You will be redirected to a partially pre-filled client setting page. The client ID referenced by Keycloak should be the same as the metadata URL. - -Create client, and now revisit its settings: - -* Check out Valid Redirect URIs - make sure that it is set to `https://r.example.com/_saml/validate/keycloak`. -* Set the `Name ID Format` to `email`. -* Go to the `SAML Keys` tab, and make sure that the public key \(certificate\) is the same as the Rocketchat's public key. Note that the `-----BEGIN/END CERTIFICATE-----` header/footer is not supposed to be part of the Keycloak's public key view, but the rest should be the same. If they are not the same, save the Rocketchat public key one into a text file, and import it from Keycloak - use the import PEM functionality. -* Go to the Mappers tab, and create mappers for the required data that Rocketchat expects. You shouldn't need `email` or `username`, but you probably need `cn`. - - Click Create, and choose the type `User Property` and set the `SAML Attribute NameFormat` to `basic`. For the first name, set `Name` and `Property` to `firstName`, and `SAML Attribute name` to `cn`. - -## Troubleshooting - -You should be done by now. However, you may run into some problems for various reasons: - -* Q: I keep getting the `Unable to validate response url: Error: Status is: urn:oasis:names:tc:SAML:2.0:status:Responder` error. -* A: Make sure that the respective Keycloak user has an e-mail address. This may not be the case e.g. for Keycloak admin. -* Q: How do I generate a certificate pair? -* A: Try `openssl req -newkey rsa:3072 -new -x509 -days 3652 -nodes -out saml.crt -keyout saml.pem`. Then, just copy file contents to the respective fields. - diff --git a/guides/administration/administration/settings/saml/oracle-cloud.md b/guides/administration/administration/settings/saml/oracle-cloud.md deleted file mode 100644 index 5d87f0f07c..0000000000 --- a/guides/administration/administration/settings/saml/oracle-cloud.md +++ /dev/null @@ -1,58 +0,0 @@ -# Oracle Identity Cloud Service - -## Configuring the Identity Provider - -Oracle Identity Cloud Service is integrated as a SAML Identity Provider. For a detailed explanation of the SAML options on Rocket.Chat, check the [SAML Documentation](./). - -## Step by Step configuration of Oracle Identity Cloud Service - -### Before you begin - -Before you create your IDCS application, make sure you have enabled SAML per the [SAML Documentation](../../../misc.-admin-guides/authentication/). You will need to have entered a _Custom Provider_ and a _Custom Issuer_ URL on the SAML settings page in Rocket.Chat. - -**Note:** Leave the _Custom Entry Point_ and _IDP SLO Redirect URL_ values as the default values for now. We will obtain these URLs below, but you must save the SAML settings with your _Custom Issuer_ URL so you can visit this URL and obtain values that are necessary when creating the IDCS application below. - -### Adding a new Application - -On your Oracle Cloud Applications Dashboard, find a button to add a new application. It should open the following pop-up: - -![](../../../../../.gitbook/assets/addapplication.png) - -Select **SAML Application** to open the configuration wizard. - -### App Details - -![](../../../../../.gitbook/assets/appdetails.png) - -The only information needed on this page is the application name and URL. The URL you need to use here is the same one that is set on the _Custom Issuer_ SAML configuration field on the Rocket.Chat settings. - -### SSO Configuration - -![](../../../../../.gitbook/assets/ssoconfiguration.png) - -To get the values for those new settings, you need to access the same _Custom Issuer_ URL that you used on the previous page. It should show an XML file similar to the one below: - -![](../../../../../.gitbook/assets/samplexmlconfiguration.png) - -On the **AssertionConsumerService** tag, you need to copy the value of the _Location_ attribute. Then paste this value on the _Assertion Consumer URL_ field on the Oracle Settings. On the **SingleLogoutService** tag, you need to copy the value of the _Location_ attribute, then paste it in the _Single Logout URL_ param of the Advanced Settings. On the same **SingleLogoutService** tag, you need to copy the value of the _ResponseLocation_ attribute, then paste it in the _Logout Response URL_ param of the Advanced Settings. - -Finally, the _Entity Id_ param receives the URL of the XML file itself \(same URL you used as the application URL\). - -Before clicking on **Finish**, click the **Download Identity Provider Metadata** button to download another XML file. - -### Rocket.Chat Settings - -![](../../../../../.gitbook/assets/rocketchatsettings.png) - -There are two Rocket.Chat settings that need to be copied from the IDP Metadata you just downloaded: _Custom Entry Point_ and _IDP SLO Redirect URL_. - -For the first one, locate the tag **md:SingleSignOnService** and copy the value of the _Location_ attribute, \(ends with `/idp/sso`\). - -For the second param, locate the tag **md:SingleLogoutService** and copy the value of the _Location_ attribute \(ends with `/idp/slo`\). - -There may be multiple occurrences of those tags in the XML file, so make sure that the copied URLs end with `/idp/sso` and `/idp/slo` and not `/sp/sso` and `/sp/slo`. - -### Testing - -Everything should be properly configured now. You can now add users to your SAML Integration app on the Oracle Dashboard and then test the login on your Rocket.Chat instance. - diff --git a/guides/administration/administration/settings/saml/rocket.chat-server-settings.md b/guides/administration/administration/settings/saml/rocket.chat-server-settings.md deleted file mode 100644 index c74a277fc7..0000000000 --- a/guides/administration/administration/settings/saml/rocket.chat-server-settings.md +++ /dev/null @@ -1,54 +0,0 @@ -# Rocket.Chat server settings - -### Custom Provider \(Suffix to SP entityID\) - -This is the unique name for your application as a Service Provider \(SP\) for SAML. Whatever you enter here produces a metadata XML file you need in order to populate the metadata your IdP \(Identity Provider\) requires. For example, if you put 'my-app', then your metadata will be at: - -`https://my-rocketchat-domain.tld/_saml/metadata/my-app` - -### Custom Entry Point \(IDP SSO Redirect URL\) - -This is the URL provided by your IdP for logging in. In SAML-terminology, it refers to the location \(URL\) of the SingleSignOnService with the Redirect binding \(urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\). - -### IDP SLO Redirect URL - -This is the URL provided by your IdP for logging out. In SAML-terminology, it refers to the location \(URL\) of the SingleLogoutService with the Redirect binding \(urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\). - -### Custom Issuer \(SP entityID\) - -The URI is the unique identifier of your service. By convention, this is also the URL of your \(unedited\) metadata. Again, where you set Custom Provider to 'my-app', this will be: - -`https://my-rocketchat-domain.tld/_saml/metadata/my-app` - -### Custom Certificate \(IDP Signing Certificate\) - -This is the public certificate for IdP providers used to verify SAML requests. Format for this is PEM without `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`. - -### Public Cert Contents \(SP Signing Certificate\) - -The public part of the self-signed certificate you created for encrypting your SAML transactions. [Example of self-signed certificate on the SimpleSAMLphp website here.](https://simplesamlphp.org/docs/stable/simplesamlphp-sp#section_1_1) - -Format for this is PEM WITH `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`. - -### Private Key Contents \(SP Signing Private Key\) - -The private key matches the self-signed certificate you created as PKCS\#1 PEM. Format for this is PEM WITH `-----BEGIN PRIVATE KEY-----` and `-----END PRIVATE KEY-----`. - -### SAML Assertion - -You must send the **Email** field in your assertion, or it doesn't work. When the email matches the existing user, it overwrites the user's username with the username value, if that is in your assertion. - -### SAML Encryption - -SAML Assertions encryption on **either** site might not work and cause signature validation to fail. See [\#10556](https://github.com/RocketChat/Rocket.Chat/issues/10556) for more up to date information on this issue. - -As a popular open-source IdP, SimpleSAMLphp can be used to provide an authentication endpoint for Rocket.Chat and the build-in SAML support. Assuming that you have a SimpleSAMLphp IdP up and running - [quickstart instructions here](https://simplesamlphp.org/docs/stable/simplesamlphp-idp), you can find the metadata for the Rocket.Chat SAML Service Provider \(SP\) here, where 'my-app' is whatever you put in the **Custom Provider** box in the Rocket.Chat SAML admin page: - -`https://my-rocketchat-domain.tld/_saml/metadata/my-app` - -1. Copy the XML on this page -2. Open the metadata converter page in your SimpleSAMLphp admin UI found at: `/admin/metadata-converter.php` -3. Paste the XML, and submit it -4. Copy the resulting PHP output to the file in your SimpleSAMLphp installation under metadata: `/metadata/saml20-sp-remote.php` -5. You should now see your SP on the SimpleSAMLphp Federation page, listed as a trusted SAML 2.0 SP at: `module.php/core/frontpage_federation.php` - diff --git a/guides/administration/administration/settings/saml/simple-saml-php.md b/guides/administration/administration/settings/saml/simple-saml-php.md deleted file mode 100644 index 1d270180ac..0000000000 --- a/guides/administration/administration/settings/saml/simple-saml-php.md +++ /dev/null @@ -1,22 +0,0 @@ -# Simple SAML php - -As a popular open-source IdP, SimpleSAMLphp can be used to provide an authentication endpoint for Rocket.Chat and the build-in SAML support. Assuming that you have a SimpleSAMLphp IdP up and running - [quickstart instructions here](https://simplesamlphp.org/docs/stable/simplesamlphp-idp), you can find the metadata for the Rocket.Chat SAML Service Provider \(SP\) here, where 'my-app' is whatever you put in the **Custom Provider** box in the Rocket.Chat SAML admin page: - -`https://my-rocketchat-domain.tld/_saml/metadata/my-app` - -1. Copy the XML on this page -2. Open the metadata converter page in your SimpleSAMLphp admin UI found at: `/admin/metadata-converter.php` -3. Paste the XML, and submit it -4. Copy the resulting PHP output to the file in your SimpleSAMLphp installation under metadata: `/metadata/saml20-sp-remote.php` -5. You should now see your SP on the SimpleSAMLphp Federation page, listed as a trusted SAML 2.0 SP at: `module.php/core/frontpage_federation.php` - -## IdP Attribute Mapping - -Use the following attributes required to return user information to Rocket.Chat: - -| Idp Returned Attribute Name | Usage | -| :--- | :--- | -| cn | User's Full Name | -| email | User's Email Address | -| username | User's username | - diff --git a/guides/administration/administration/settings/setup-wizard.md b/guides/administration/administration/settings/setup-wizard.md deleted file mode 100644 index 931428894b..0000000000 --- a/guides/administration/administration/settings/setup-wizard.md +++ /dev/null @@ -1,4 +0,0 @@ -# Setup Wizard - -Document Under Development - diff --git a/guides/administration/administration/settings/slackbridge.md b/guides/administration/administration/settings/slackbridge.md deleted file mode 100644 index 293e957799..0000000000 --- a/guides/administration/administration/settings/slackbridge.md +++ /dev/null @@ -1,4 +0,0 @@ -# SlackBridge - -Document Under Development - diff --git a/guides/administration/administration/settings/smarsh.md b/guides/administration/administration/settings/smarsh.md deleted file mode 100644 index 0695228caf..0000000000 --- a/guides/administration/administration/settings/smarsh.md +++ /dev/null @@ -1,4 +0,0 @@ -# Smarsh - -Document Under Development - diff --git a/guides/administration/administration/settings/sms.md b/guides/administration/administration/settings/sms.md deleted file mode 100644 index ef167bb5fd..0000000000 --- a/guides/administration/administration/settings/sms.md +++ /dev/null @@ -1,4 +0,0 @@ -# SMS - -Document Under Development - diff --git a/guides/administration/administration/settings/threads.md b/guides/administration/administration/settings/threads.md deleted file mode 100644 index 0a17c0b394..0000000000 --- a/guides/administration/administration/settings/threads.md +++ /dev/null @@ -1,4 +0,0 @@ -# Threads - -Document Under Development - diff --git a/guides/administration/administration/settings/troubleshoot.md b/guides/administration/administration/settings/troubleshoot.md deleted file mode 100644 index 0ccd7ae7c4..0000000000 --- a/guides/administration/administration/settings/troubleshoot.md +++ /dev/null @@ -1,4 +0,0 @@ -# Troubleshoot - -Document Under Development - diff --git a/guides/administration/administration/settings/untitled.md b/guides/administration/administration/settings/untitled.md deleted file mode 100644 index 2e473a8c62..0000000000 --- a/guides/administration/administration/settings/untitled.md +++ /dev/null @@ -1,4 +0,0 @@ -# Search - -Document Under Development - diff --git a/guides/administration/administration/settings/user-data-download.md b/guides/administration/administration/settings/user-data-download.md deleted file mode 100644 index 5da92bee20..0000000000 --- a/guides/administration/administration/settings/user-data-download.md +++ /dev/null @@ -1,4 +0,0 @@ -# User Data Download - -Document Under Development - diff --git a/guides/administration/administration/settings/video-conference.md b/guides/administration/administration/settings/video-conference.md deleted file mode 100644 index 432429f2ea..0000000000 --- a/guides/administration/administration/settings/video-conference.md +++ /dev/null @@ -1,4 +0,0 @@ -# Video Conference - -Document Under Development - diff --git a/guides/administration/administration/settings/webdav-integration.md b/guides/administration/administration/settings/webdav-integration.md deleted file mode 100644 index 50b6295ddf..0000000000 --- a/guides/administration/administration/settings/webdav-integration.md +++ /dev/null @@ -1,4 +0,0 @@ -# Webdav Integration - -Document Under Development - diff --git a/guides/administration/administration/settings/webrtc.md b/guides/administration/administration/settings/webrtc.md deleted file mode 100644 index 4db72b1a1d..0000000000 --- a/guides/administration/administration/settings/webrtc.md +++ /dev/null @@ -1,4 +0,0 @@ -# WebRTC - -Document Under Development - diff --git a/guides/administration/administration/settings/youtube-broadcasting.md b/guides/administration/administration/settings/youtube-broadcasting.md deleted file mode 100644 index af8b229424..0000000000 --- a/guides/administration/administration/settings/youtube-broadcasting.md +++ /dev/null @@ -1,20 +0,0 @@ -# Livestream & Broadcasting \(Youtube\) - -> Please note that this feature will only be available from versions 0.66 and forward. - -This feature adds an integration between Rocket.Chat and Youtube Live, when enabled and set up, your channel owners will be able to broadcast their camera feed live to the Livestream feature which allows all users on the channel to watch a common stream. - -## Configuration - -The Broadcasting feature can only be used with the Livestream Tab feature. - -You can find the settings for this feature on `Livestream & Broadcasting` in the admin panel. - -If you set the `Broadcasting Enable` setting to false, users wont be able to create live streams using their webcams, but will still be able to link a live stream from youtube. - -_Currently the admin needs a valid Google app with access to the Youtube API to use youtube live integration \(More details on the_ [_Google Developer page_](https://developers.google.com/youtube/v3/)_\), this will allow the administrator to have a valid API Key, Client ID & Secret which are used on the Broadcasting feature._ - -## Livestream tab - -After a correct set up, the Livestream tab will now allow you to Broadcast your camera when editing the source url. When opening the popout, it might take a moment while we prepare the broadcast and livestream for your session, this will be indicated by the blinking icon and "Preparing" status displayed in the control bar. After that initial phase, the broadcast will be Ready and available to start with your click. - diff --git a/guides/administration/administration/users.md b/guides/administration/administration/users.md deleted file mode 100644 index cce9400312..0000000000 --- a/guides/administration/administration/users.md +++ /dev/null @@ -1,4 +0,0 @@ -# Users - -Document Under Development - diff --git a/guides/administration/administration/view-logs.md b/guides/administration/administration/view-logs.md deleted file mode 100644 index 35a6d2f037..0000000000 --- a/guides/administration/administration/view-logs.md +++ /dev/null @@ -1,4 +0,0 @@ -# View Logs - -Document Under Development - diff --git a/guides/administration/misc.-admin-guides/README.md b/guides/administration/misc.-admin-guides/README.md deleted file mode 100644 index 23499ddce2..0000000000 --- a/guides/administration/misc.-admin-guides/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Misc. Admin Guides - diff --git a/guides/administration/misc.-admin-guides/authentication/README.md b/guides/administration/misc.-admin-guides/authentication/README.md deleted file mode 100644 index 95ed0e430e..0000000000 --- a/guides/administration/misc.-admin-guides/authentication/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Authentication - -{% page-ref page="open-id-connect/" %} - -{% page-ref page="single-sign-on-iframe.md" %} - -## External Authentication - -If you need to automatically login users from your own website you can look at [Iframe integration page]() or you can use the REST API [Login]() in combination with [deeplinking]() and the resumeToken. - -```text -# get the resumeToken from your REST API login - it's the authToken field -https://yourown.rocket.chat/home?resumeToken=abcd123456789 -``` - diff --git a/guides/administration/misc.-admin-guides/authentication/open-id-connect/README.md b/guides/administration/misc.-admin-guides/authentication/open-id-connect/README.md deleted file mode 100644 index 200e5ffda8..0000000000 --- a/guides/administration/misc.-admin-guides/authentication/open-id-connect/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# OpenID Connect - -{% page-ref page="gluu-server-4.0.md" %} - -{% page-ref page="keycloak.md" %} - -{% page-ref page="okta.md" %} - - - - - diff --git a/guides/administration/misc.-admin-guides/authentication/open-id-connect/gluu-server-4.0.md b/guides/administration/misc.-admin-guides/authentication/open-id-connect/gluu-server-4.0.md deleted file mode 100644 index ac74abd9ee..0000000000 --- a/guides/administration/misc.-admin-guides/authentication/open-id-connect/gluu-server-4.0.md +++ /dev/null @@ -1,6 +0,0 @@ -# Gluu Server 4.0 - -Gluu Server 4.0 comes out of the box with excellent SSO support for Rocket.Chat. - -Please see their documenation, [Gluu Server OpenID Connect Provider for Rocket.Chat](https://gluu.org/docs/gluu-server/4.0/integration/saas/rocketchat/), for up-to-date information. - diff --git a/guides/administration/misc.-admin-guides/authentication/open-id-connect/keycloak.md b/guides/administration/misc.-admin-guides/authentication/open-id-connect/keycloak.md deleted file mode 100644 index 18512f3a3a..0000000000 --- a/guides/administration/misc.-admin-guides/authentication/open-id-connect/keycloak.md +++ /dev/null @@ -1,69 +0,0 @@ -# Keycloak - -## Configuring Keycloak OpenID Connect - -Create a client in Keycloak. - -1. Provide a client ID: `rocket-chat-client` -2. Select the client protocol as openid-connect -3. Select the client access type as confidential -4. Standard flow implemented: ON -5. Valid Redirect URL: `http:{Rocket.Chat_server_address}/*` - -The following image shows the minimal configurations needed to setup Keycloak as an Identity Provider to Rocket.Chat. - -![](../../../../../.gitbook/assets/client_configurations.png) - -After saving the changes a new credentials tab will be created for the client. This credentials tab will provide the client secrets which will be used when configuring the Rocket.Chat. - -## Configuring Rocket.Chat - -### Create a Custom Oauth provider - -* Login to Rocket.Chat with an administrator account and navigate to OAuth page. -* Click the Add custom OAuth button and provide the following configurations - -The URL paths provided in the below configurations can be also obtained by navigating to the Realm setting and clicking the endpoints link in the `General Tab`. While configuring the below settings replace the `realm_name` with the appropriate realm name. The default realm provided by Keycloak is `master`. - -1. URL: `http://{keycloak_ip_address}:{port}/auth` -2. Token Path: `/realms/{realm_name}/protocol/openid-connect/token` -3. Token sent via: Header -4. Identity Token Sent Via: Same As "Token Sent Via" -5. Identity Path `/realms/{realm_name}/protocol/openid-connect/userinfo` -6. Authorize Path `/realms/{realm_name}/protocol/openid-connect/auth` -7. Scope: `openid` -8. Param Name for access token: `access_token` -9. Id: This is the id of the Rocket.Chat client created in the keycloak `rocket-chat-client` -10. Secret: Secret key provided in the credentials tab when creating the Rocket.Chat client -11. Button Text: `Login with Keycloak` - -Leave the rest of the configurations as default. Click the blue button Save Changes at the top. - -Next, make sure you enable the new Keycloak provider. And click the Refresh OAuth Services button. - -Now logout from Rocket.Chat to view the keycloak based login option visible in the login page. - -![](../../../../../.gitbook/assets/keycloak_federation.png) - -## Mapping non-federated keycloak user roles to Rocket.Chat roles - -This section documents how client-specific roles of keycloak managed user can be mapped to Rocket.Chat roles. This does not work for federated users \(e.g. LDAP managed users\). - -For this example, we map the `admin` and `livechat-manager` role, as documented in [Permissions](https://docs.rocket.chat/administrator-guides/permissions/). - -First we add the required roles to the client - -![](../../../../../.gitbook/assets/client_roles_configurations.png) - -then we have to add a mapper entry, that maps our client roles to OpenId, passing the value to Rocket.Chat - -![](../../../../../.gitbook/assets/client_roles_mapper_roles.png) - -Now in order to grant the Rocket.Chat role to a user, we have to modify the users Role Mappings. - -!\[User Role Mapping\]\[User Role Mapping\] - -The roles are only synced on first login, and not being refreshed on each login. Please see the [bug report](https://github.com/RocketChat/Rocket.Chat/issues/15225) for current state. - -\[User Role Mapping\]: user\_role\_mapping.png - diff --git a/guides/administration/misc.-admin-guides/authentication/open-id-connect/okta.md b/guides/administration/misc.-admin-guides/authentication/open-id-connect/okta.md deleted file mode 100644 index 4349cf106c..0000000000 --- a/guides/administration/misc.-admin-guides/authentication/open-id-connect/okta.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -description: Open ID Connect ---- - -# Okta Identity Cloud Service - -Okta Identity Cloud Service can be integrated as an Identity Provider for Rocket.Chat via its Open ID Connect support. - -## Rocket.Chat Settings - -On the Rocket.Chat OAuth settings page **add a custom auth**. - -Give the custom OAuth a unqiue name. For this example we will use _okta_. - -Set the following: - -* **Enabled**: _True_ -* **URL**: The URL to your okta domain on okta.com with a suffix of _/oauth2/v1_. For example: _`https://mycompany.okta.com/oauth2/v1`_ -* **Token**: _/token_ -* **Token Sent Via**: _Header_ -* **Identity Token Sent Via**: _Same as Token Sent Via_ -* **Identity Path**: _/userinfo_ -* **Authorize Path**: _/authorize_ -* **Scope**: _openid email profile groups offline\_access_ -* **Param Name for access token**: _access\_token_ -* **id**: Set to the **Client ID** in the Okta app **Client Credentials** below. -* **Secret**: Set to the **Client secret** in the Okta app **Client Credentials** below. -* **Login Style**: Either setting works. Popup with pop up the Okta check/login in another window. Redirect will redirect the current page. -* **Button Text**: Set to personal preference. -* **Button Text Color**: Set to personal preference. -* **Button Color**: Set to personal preference. -* **Username field**: _preferred\_username_ -* **Avatar field**: Was not used on our Okta instance. Further research will be required to use this. -* **Roles/Groups field name**: roles -* **Merge Roles from SSO**: Our server syncs from ldap so we left this _false_. -* **Merge users**: Our server syncs from ldap so we left this _false_. - -## Configuring the Identity Provider - -### Adding a new Application in Okta - -On your Okta Applications Dashboard, find the button to create a new app. It should open the following pop-up: - -![](../../../../../.gitbook/assets/addapp.png) - -Select **OpenID Connect** and select **Create** to open the window to create the new integration. - -### Create Integration - -!\[Create Integration\]\[CreateIntegration\] - -The only information needed on this page is the **application name** and **redirect URI**. The URI you need to use here is the same one that is shown on the **callback URL** listed at the top of the page after creating the custom OAuth section in the Rocket.Chat settings. In this example the custom oauth will be called _okta_. This will result in a **redirect URI** of _`https://my-rocketchat-server.org/_oauth/okta`_. - -Select **Save** to be taken to the **General Settings** for the new app. - -### Client Credentials - -Copy the **Client ID** to the Rocket.Chat **id** field on the oauth settings page. - -Copy the **Client secret** to the Rocket.Chat **secret** field on the oauth settings page. - -### Testing - -Everything should be properly configured now. You can now assign users or groups users to your Integration app on the Okta Dashboard and then test the login on your Rocket.Chat instance. - -\[CreateIntegration\]: CreateIntegration.png - diff --git a/guides/administration/misc.-admin-guides/authentication/single-sign-on-iframe.md b/guides/administration/misc.-admin-guides/authentication/single-sign-on-iframe.md deleted file mode 100644 index da4c82457d..0000000000 --- a/guides/administration/misc.-admin-guides/authentication/single-sign-on-iframe.md +++ /dev/null @@ -1,47 +0,0 @@ -# iframe based Single Sign On - -## Introduction - -It's possible to authenticate users inside Rocket.Chat automatically from a third-party application, useful when embedding the chat inside another application or to make the users' life easier. - -### Iframe - -There are two ways to use the Iframe integration for this purpose and we will describe them below. It's important to note that both options require you to handle the user creation from your own application server using our APIs and make the login to retrieve the user's session token in order to pass it to the Rocket.Chat client via one of those ways: - -#### Embedding Rocket.Chat inside an Iframe - -If you already have the Rocket.Chat inside an iframe you can use call commands inside the Rocket.Chat's an iframe, [there is a command to login the user passing a token](), for that you need to make your own way to retrieve the token from your own APIs and then pass it to the iframe. - -We suggest one common way, once your application loads: - -1. Call your own API to retrieve the token, let's say `/api/rocketchat/token` -2. Your API will validate your own session, probably via cookies -3. Your API will then call the [Rocket.Chat APIs]() to check if the user exists - 1. If it doesn't exists call the Rocket.Chat APIs to create the user -4. If the user exists, call the Rocket.Chat APIs to make the login and receive the token -5. Return the token in your API response -6. In your client, with the token in hands, call the [iframe methods to execute the login]() - -#### Embedding your own "Loading page" inside the Rocket.Chat - -Even using Rocket.Chat inside an iframe you can still use this method to make the login flow rather than use the iframe commands above. - -This flow requires a page to be rendered in place of the normal Rocket.Chat's login page, it can be a basic loading screen since it's used just for information purposes. - -The other setting you configure here is the [API URL and Method ]()to be called once a not authenticated user opens the Rocket.Chat. Then Rocket.Chat will make an HTTP call to you endpoint expecting a [JSON response containing the authToken](), so you should use cookies to identify if the user calling your own API is authenticated and make the process to generate the Rocket.Chat's token and return it: - -1. Rocket.Chat will call the configured API and Method to retrieve the token -2. The API should validate your own session via cookies -3. The API will then call the Rocket.Chat APIs to check if the user exists - 1. If it doesn't exists call the Rocket.Chat APIs to create the user -4. If the user exists, call the Rocket.Chat APIs to make the login and receive the token -5. Return the token in your API response in JSON format as [described here]() -6. Rocket.Chat will use the token automatically to make the authentication - -{% hint style="warning" %} -For this implementation you will need to configure [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) and [X-FRAME](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options): - -1. Your server should **not** block the page you want to load inside the iframe, check the [X-FRAME](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options) for more information on how to prevent this. -2. Your server should **not** block the calls **from** the Rocket.Chat's domain to your configured API endpoint, calls between domains are often blocked by default, please check the [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options) for more information on how to prevent this. -{% endhint %} - diff --git a/guides/administration/misc.-admin-guides/cdn.md b/guides/administration/misc.-admin-guides/cdn.md deleted file mode 100644 index 54ae7489a1..0000000000 --- a/guides/administration/misc.-admin-guides/cdn.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -description: CDN Setup instructions ---- - -# CDN - -Rocket.Chat allows for the usage of a CDN to server static assets such as JS, CSS and images such as avatars. - -{% hint style="info" %} -If you provide a CDN prefix that is not live or incorrect you may lose access to your Rocket.Chat instance as the required assets will not be found. -{% endhint %} - -## Enabling CDN - -By navigating to the General section of the Administration system in Rocket.Chat there are the options to provide a CDN for **all** assets and optionally set a separate CDN for just JS & CSS assets. - -### CDN Prefix - -This is a string that depending on the value provided will generate different outcomes. - -| Value | Example Url for Asset | -| :--- | :--- | -| cdn | /cdn/example-asset.js | -| [http://cdn.domain.com](http://cdn.domain.com) | [http://cdn.domain.com/example-asset.js](http://cdn.domain.com/example-asset.js) | -| [https://cdn.domain.com](https://cdn.domain.com) | [https://cdn.domain.com/example-asset.js](https://cdn.domain.com/example-asset.js) | - -### Use CDN Prefix for all assets - -Enable this for serving all assets from the same CDN. - -### CDN Prefix for JS/CSS - -This option takes the same style input as CDN Prefix. The value provided will be applied only to JS and CSS assets. - -## Troubleshooting - -If the situation occurs where CDN stops working or the provided values are incorrect, then there are a few work arounds to allow a fix to be implemented inside the Administration settings, which may be inaccessible. - -### Database Fix - -As the front end of Rocket.Chat may be inaccessible, the backend Mongo database can be updated to remove the CDN. The following Mongo commands should reset the value to the default state. - -```text -db.rocketchat_settings.update({_id:"CDN_PREFIX"},{$set:{"value":""}}) -``` - -```text -db.rocketchat_settings.update({_id:"CDN_JSCSS_PREFIX"},{$set:{"value":""}}) -``` - -### Use a Browser Extension - -A browser extension can be used to rewrite URLs from the CDN address to the same location as where Rocket.Chat is running. Please take care when selecting an appropriate extension for your browser. - diff --git a/guides/administration/misc.-admin-guides/client-compatibility-matrix.md b/guides/administration/misc.-admin-guides/client-compatibility-matrix.md deleted file mode 100644 index 7f37dc98aa..0000000000 --- a/guides/administration/misc.-admin-guides/client-compatibility-matrix.md +++ /dev/null @@ -1,24 +0,0 @@ -# Client Compatibility Matrix - -## Desktop - -| Electron Version | Supported releases | -| :---: | :---: | -| 2.15 | 1.0+ | -| 2.14 | ⩽ 0.70 | -| 2.13 | ⩽ 0.69 | -| 2.12 | ⩽ 0.68 | -| 2.11 | ⩽ 0.65 | -| 2.10 | ⩽ 0.59 | -| 2.9 | ⩽ 0.58 | -| 2.8 | ⩽ 0.56 | -| 2.7 | ⩽ 0.55 | - -## Mobile - -Our mobile applications have a maximum of 3 major servers versions being supported on each release, all the past releases are not officially supported and may cause problems. The reason for that is that our APIs are evolving a lot on each release and sometimes is really hard to maintain the compatibility with older versions when they don’t have support to specific feature. - -| App Version | Supported releases | -| :---: | :---: | -| 4.0.0+ | 0.70+ | - diff --git a/guides/administration/misc.-admin-guides/create-the-first-admin.md b/guides/administration/misc.-admin-guides/create-the-first-admin.md deleted file mode 100644 index 72fbd8e71a..0000000000 --- a/guides/administration/misc.-admin-guides/create-the-first-admin.md +++ /dev/null @@ -1,17 +0,0 @@ -# Create the first administrator - -After you deploy your server, the first user to register becomes the administrator, with power to set other users as administrators. - -In case your server has no administrators, you can create the first admin account by defining the environment variables ADMIN\_PASS and ADMIN\_EMAIL once. - -```bash -export ROOT_URL=http://your-host-name.com-as-accessed-from-internet:3000/ -export MONGO_URL=mongodb://localhost:27017/rocketchat -export PORT=3000 -export ADMIN_USERNAME=admin -export ADMIN_PASS=supersecret -export ADMIN_EMAIL=admin@example.com - -node main.js -``` - diff --git a/guides/administration/misc.-admin-guides/custom-emoji.md b/guides/administration/misc.-admin-guides/custom-emoji.md deleted file mode 100644 index e65cbd1021..0000000000 --- a/guides/administration/misc.-admin-guides/custom-emoji.md +++ /dev/null @@ -1,33 +0,0 @@ -# Custom Emoji - -Rocket.Chat provides a comprehensive set of emojis to make the chats more interesting. But also allow its users to add custom emojis to make the chats more personalized. - -You can add your own image files that can be JPG, GIF, or PNG. - -## Add a custom emoji - -* Go to the Administration tab -* Select the Custom Emoji -* Click on the Add symbol \(+\) in the right side bar -* Enter a name for your emoji, add space separated list of the aliases for the emoji which can be entered to display the emoji in the chats -* Browse and choose an image file -* Press the SAVE button - -![Add emoji example](../../../.gitbook/assets/example-add-emoji.png) - -## Accessing custom emoji - -Custom emoji can be used to add in the message, react to other messages. These emojis can be found in the emoji picker under the Rocket.Chat icon. - -![Access emoji example](../../../.gitbook/assets/access-emoji.png) - -You can also use these emojis using their name and aliases like `:hammy:` or `:savage:` - -## Delete/Edit custom emoji - -Search and click on the emoji you want to delete in the Custom Emoji section under Administration tab. - -Press the DELETE or EDIT button to delete or update the selected emoji respectively. - -> Admins might have set the [permissions](../administration/permissions-1.md) about who can manage these emojis. - diff --git a/guides/administration/misc.-admin-guides/database-migration.md b/guides/administration/misc.-admin-guides/database-migration.md deleted file mode 100644 index 85e90358b3..0000000000 --- a/guides/administration/misc.-admin-guides/database-migration.md +++ /dev/null @@ -1,36 +0,0 @@ -# Database Migration - -As features are added to Rocket.Chat, the database schema may change between versions. - -The action of updating an older schema to a newer one \(or vice versa\) is called database migration. - -When you incrementally update Rocket.Chat versions, database migration is automatic and you do not have to take any explicit action. - -However, from time to time, you may need to skip multiple versions in your Rocket.Chat upgrades. - -Database migration may fail in a scenario like this. - -A typical failure message is similar to: - -```bash -| Your database migration failed: | -| Object [object Object] has no method 'addUsersToRoles' | -(...) -| This Rocket.Chat version: 0.39.0 | -| Database locked at version: 18 | -| Database target version: 58 | -``` - -As an example, the migration above is locked and stuck on 18. We need a target of 19 before migrating to 58. - -One way to force this migration is to manually unlock the migration in Mongo and also increase the database version to the target version \(19\). - -```javascript -use rocketchat -db.migrations.update({_id: 'control'},{$set:{locked:false,version:19}}) -``` - -Restart Rocket.Chat and the migration should succeed now to the latest version. - -**Note**: certain new values that are vital to Rocket.Chat operations may remain unpopulated when you skip versions. For example, you may have to manually apply roles to users. - diff --git a/guides/administration/misc.-admin-guides/google-cloud/README.md b/guides/administration/misc.-admin-guides/google-cloud/README.md deleted file mode 100644 index 0290739dad..0000000000 --- a/guides/administration/misc.-admin-guides/google-cloud/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Google Cloud Features - -This guide will help you use Google Cloud Features with your Rocket.Chat server: - -Here you will find how to use them on your server. - -[Auto Translate](auto-translate.md) - diff --git a/guides/administration/misc.-admin-guides/google-cloud/auto-translate.md b/guides/administration/misc.-admin-guides/google-cloud/auto-translate.md deleted file mode 100644 index f9832516ba..0000000000 --- a/guides/administration/misc.-admin-guides/google-cloud/auto-translate.md +++ /dev/null @@ -1,40 +0,0 @@ -# Google Auto Translate - -You can use Google's translation engine to translate every message received on a channel. - -For that you will need a Google Translation API key, you can find how to get one and pricing for its usage from the [Official Google API documentation](https://cloud.google.com/translate/pricing). - -## Getting the key - -Follow these steps: - -1. Go to [http://cloud.google.com/console/](http://cloud.google.com/console/) -2. Create a Project and select it. -3. On the navigation menu, go to "APIs & Services" => Dashboard Tab -4. Click on ENABLE APIS AND SERVICES and search for Cloud Translation API. -5. Go to “Credentials” Tab -6. Click on "Create credentials" -7. Choose "API key" - -You can find more info on the [Official Google API documentation](https://cloud.google.com/translate). - -## Configuration - -Now that you have your API key, it's time to set up the auto translate feature in Rocket.Chat. - -To do that you can simply go to `Auto-Translate` under `Administration -> Message`, enable the setting and add your API key on the `Google API Key` field. After that save your settings and you're ready to go! - -Only users with the `auto-translate` permission will be able to use this feature. See [Permissions](../../administration/permissions-1.md) - -## Enabling AutoTranslate on a Channel - -When you enable Auto Translate on a channel all messages written in a Google Translate supported language will be translated to your selected language. - -> Note: only you will see the translated messages. Users who have not enabled Auto Translate will see the original, untranslated messages. - -To activate Auto Translate on a channel you must open the channel contextual menu \(the three dots on the top right of the screen\) and select Auto Translate, there you will be able to select your desired language. - -After that you will note a new symbol on the header of the channel, that indicates the Auto Translate feature is active in this channel. - -You can also see the original message by opening the message action menu \(the three dots on the message hover\) and selecting `View Original Message`. - diff --git a/guides/administration/misc.-admin-guides/notifications.md b/guides/administration/misc.-admin-guides/notifications.md deleted file mode 100644 index 1f50924f1a..0000000000 --- a/guides/administration/misc.-admin-guides/notifications.md +++ /dev/null @@ -1,22 +0,0 @@ -# Notifications - -Use the **Bell** icon to configure notifications within your channel or room. Other preferences are available in the`Personel Settings`dialog. Make sure your preferences include Receiving unread messages to get notifications. - -## Desktop - -Upon starting Rocket.Chat, you are asked to allow desktop notifications. Notifications appear as small boxes on the right corner, depending on the general or per-room settings. - -## Mobile - -Depending on your settings per room or channel, you receive notifications on your mobile device for all messages or only if somebody mentions you. Notifications in rooms are only sent when the desktop client goes with no use for more than five minutes. Currently, changing your status to "Away" does not speed up the countdown. - -Depending on the privacy settings set by the administrator, you will see the sender, room name or the first line of the message as a notification on your mobile device. - -## Emails - -Notifications of direct messages or mentions by @username are sent by Email to your E-Mail address, but only if no web-client is connected. - -## Mentions - -@username - notifies this person @all - notifies all members of this room or channel @here - notifies all members of this room or channel who are online - diff --git a/guides/administration/misc.-admin-guides/plug-ins/README.md b/guides/administration/misc.-admin-guides/plug-ins/README.md deleted file mode 100644 index ba8f040dea..0000000000 --- a/guides/administration/misc.-admin-guides/plug-ins/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Plug-ins - -Integrate Rocket.Chat \(or Live Chat\) features into popular applications via these Plug-ins. - -## Authentication - -* [Drupal](https://docs.rocket.chat/administrator-guides/plug-ins/drupal/) -* [Pidgin](https://docs.rocket.chat/administrator-guides/plug-ins/pidgin/) - diff --git a/guides/administration/misc.-admin-guides/plug-ins/drupal.md b/guides/administration/misc.-admin-guides/plug-ins/drupal.md deleted file mode 100644 index fd93be4f7d..0000000000 --- a/guides/administration/misc.-admin-guides/plug-ins/drupal.md +++ /dev/null @@ -1,12 +0,0 @@ -# Drupal Plug-in - -[![](https://raw.githubusercontent.com/Sing-Li/bbug/master/images/drupal.png)](https://www.drupal.org/) - -This is a Rocket.Chat module for Drupal 8 and 7. - -Add Rocket.Chat's Live Chat feature to your Drupal based website. This widget offers you the ability to communicate directly with your website 'guests'. - -For download information, see [Rocket.Chat module for Drupal 8 and 7](https://www.drupal.org/project/rocket_chat). To contribute to the source code, see [GitHub repository](https://github.com/jelhouss/rocket_chat). - -Thanks to Angry Cactus. And community member @jelhouss. - diff --git a/guides/administration/misc.-admin-guides/plug-ins/pidgin.md b/guides/administration/misc.-admin-guides/plug-ins/pidgin.md deleted file mode 100644 index c2e6df2d8b..0000000000 --- a/guides/administration/misc.-admin-guides/plug-ins/pidgin.md +++ /dev/null @@ -1,14 +0,0 @@ -# Pidgin Plug-in - -[![](https://raw.githubusercontent.com/Sing-Li/bbug/master/images/pidgin.png)](https://pidgin.im) - -Now you can enjoy ultra-lightweight `Rocket.Chat` side by side with IRC, ICQ, Yahoo messenger, Google Talk, AIM, MSN, or Groupwise! - -Try the alpha Rocket.Chat for Pidgin Plugin today. Please help improve the plug-in and report bugs or feedback. - -Installation instructions [here](https://github.com/EionRobb/purple-rocketchat#readme). - -Download plugin DLL [here](https://eion.robbmob.com/librocketchat.dll). - -Thanks to community member @eionrobb ! - diff --git a/guides/administration/misc.-admin-guides/restoring-an-admin.md b/guides/administration/misc.-admin-guides/restoring-an-admin.md deleted file mode 100644 index 8ebccddd34..0000000000 --- a/guides/administration/misc.-admin-guides/restoring-an-admin.md +++ /dev/null @@ -1,87 +0,0 @@ -# Restoring an Admin User - -You might accidentally lost access to an important admin user \(or the only admin in the server\) and need to restore it without using another admin user. This guide will help you in this process. - -_Note: To do this, you will need access to the database_ - -## Finding the database - -### Docker based installations - -Open Mongo shell within Mongo container - -Change into docker-compose directory \(where your `docker-compose.yml` is located\): - -```bash -cd /opt/docker/Rocket.Chat -docker-compose run mongo bash -``` - -or run - -```text -docker exec -it -u root mongo-image /bin/bash -``` - -Make sure to replace `mongo` with your MongoDB container name in case you use a different one. - -Login to mongo shell using : - -```text -mongo -``` - -On the Mongo shell: - -```sql -use rocketchat -``` - -Make sure to replace `rocketchat` with your actual Mongo database. If you're not sure how it's called either check your `docker-compose.yml` file or run: - -```sql -show dbs -``` - -### Ubuntu Snaps - -Connect to MongoDB: - -```bash -sudo rocketchat-server.mongo -``` - -Select Rocket.Chat Database: - -```sql -use parties -``` - -## Updating the admin password - -You can either use a one time access token \(that will require the user to change his password\): - -```javascript -db.getCollection('users').update({username:"administrator"}, {$set: { "services":{"loginToken":{"token":"some-token-id-that-you-will-use-to-login-once"}}, "requirePasswordChange":true} }) -``` - -Then access `http://{your server url}/login-token/some-token-id-that-you-will-use-to-login-once` to login - -or you can update the admin password to `12345` - -```javascript -db.getCollection('users').update({username:"administrator"}, { $set: {"services" : { "password" : {"bcrypt" : "$2a$10$n9CM8OgInDlwpvjLKLPML.eizXIzLlRtgCh3GRLafOdR9ldAUh/KG" } } } }) -``` - -_Replace `administrator` with the admin username in question._ - -Make sure to restart your application container in case the new password is not accepted yet. - -### Reset user role to "admin" - -```javascript -db.users.update({username:"administrator"}, {$set: {'roles' : [ "admin" ]}}) -``` - -Again, make sure to replace `administrator` with the admin username in question. - diff --git a/guides/administration/misc.-admin-guides/setting-up-video-conferencing/README.md b/guides/administration/misc.-admin-guides/setting-up-video-conferencing/README.md deleted file mode 100644 index a81a40356b..0000000000 --- a/guides/administration/misc.-admin-guides/setting-up-video-conferencing/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Video Conferencing - -Rocket.Chat offers three options for video conferencing. - -We recommend using Big Blue Button and Jitsi for video conference since Rocket.Chat Meet is still a work in progress. - - - diff --git a/guides/administration/misc.-admin-guides/setting-up-video-conferencing/big-blue-button-bbb-admin-guide.md b/guides/administration/misc.-admin-guides/setting-up-video-conferencing/big-blue-button-bbb-admin-guide.md deleted file mode 100644 index ce61b94f57..0000000000 --- a/guides/administration/misc.-admin-guides/setting-up-video-conferencing/big-blue-button-bbb-admin-guide.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -description: >- - BigBlueButton is a free software web conferencing system designed for online - learning. It has integrations for many of the major learning and content - management systems. ---- - -# BigBlueButton \(BBB\) Admin Guide - -**To enable BBB:** - -1. Go to **Administration** - -![](../../../../.gitbook/assets/image%20%28215%29.png) - -1. **Video conference** - -![](../../../../.gitbook/assets/image%20%28237%29.png) - -1. **BigBlueButton** - -![](../../../../.gitbook/assets/image%20%28231%29.png) - -1. Enable BigBlueButton. -2. Enter **Domain** name [https://bbb.yourownserver.com](https://bbb.yourownserver.com) -3. Enter your **Secret Token**. \(Follow the [instructions](https://docs.bigbluebutton.org/admin/bbb-conf.html) and generate your secret token in BBB CLI\) -4. Enable BigBlueButton for **Direct Messages** if you want \(default\) -5. Enable BigBlueButton for **Private Channels** \(default\) -6. Enable BigBlueButton for **Public Channels** -7. Hit **Save**. - -![](../../../../.gitbook/assets/image%20%28277%29.png) - -BigBlueButton is successfully configured on your server. - diff --git a/guides/administration/misc.-admin-guides/setting-up-video-conferencing/jitsi-meet-admin-guide.md b/guides/administration/misc.-admin-guides/setting-up-video-conferencing/jitsi-meet-admin-guide.md deleted file mode 100644 index eb3ccf2af1..0000000000 --- a/guides/administration/misc.-admin-guides/setting-up-video-conferencing/jitsi-meet-admin-guide.md +++ /dev/null @@ -1,24 +0,0 @@ -# Jitsi Meet Admin Guide - -You can use the [Jitsi Meet](https://jitsi.org/jitsi-meet/) video conferencing platform embedded in Rocket.Chat. - -The [Jitsi Meet project](https://jitsi.org/Projects/JitsiMeet) \(Jitsi Video Bridge\) is a tried and true bandwidth-efficient WebRTC compatible SFU \(server-based\) solution from our gracious FOSS partner, [Jitsi](https://jitsi.org/). - -Through the collaboration arrangement with Jitsi, Rocket.Chat users can enjoy reliable and robust group video chat, audio chat, and screen sharing experience out of the box. - -To enable Jitsi: - -Go to `Administration -> SETTINGS -> Video Conference` then set `Enabled` to `True`. - -![](../../../../.gitbook/assets/image%20%28239%29.png) - -Here, you can set where video conferences can be held \(channels, private rooms, and direct messages\). - -## How to set up your own Jitsi Meet server - -In some use-cases, where the Jitsi.org infrastructure may be remote or inaccessible, or where you require total privacy, setting up your own Jitsi Meet servers stack may be necessary. - -You can find extensive instructions on setting up a Jitsi Meet servers stack at the [official Jisti Meet repository](https://github.com/jitsi/jitsi-meet). - -After setting your Jitsi Meet Server, you can set the meeting Domain to the one on your server. - diff --git a/guides/administration/misc.-admin-guides/setting-up-video-conferencing/rocket.chat-admin-guide.md b/guides/administration/misc.-admin-guides/setting-up-video-conferencing/rocket.chat-admin-guide.md deleted file mode 100644 index 2cacf7d809..0000000000 --- a/guides/administration/misc.-admin-guides/setting-up-video-conferencing/rocket.chat-admin-guide.md +++ /dev/null @@ -1,10 +0,0 @@ -# Rocket.Chat Meet Admin Guide - -## Rocket.Chat Meet \(Powered by WebRTC\) - -Rocket.Chat Meet \(in some places named as WebRTC\) is our own take on implementing pure WebRTC. It still a work in progress but if you want to use it you can go to `Administration -> WebRTC`. - -From there you can set where video conferences can be held \(channels, private rooms, and direct messages\). - -You can also define a list of `STUN/TURN` Servers to be used. - diff --git a/guides/administration/misc.-admin-guides/settings-via-env-vars.md b/guides/administration/misc.-admin-guides/settings-via-env-vars.md deleted file mode 100644 index 8960e059ab..0000000000 --- a/guides/administration/misc.-admin-guides/settings-via-env-vars.md +++ /dev/null @@ -1,60 +0,0 @@ -# Managing Settings Using Environment Variables - -You can set any settings value via an environment variable when starting your server. You will only have to know the setting id and what type of setting it is \(boolean, string, integer, etc...\). - -## Set Setting - -To set a setting for the first time you need only to add the env var `SETTING_ID=VALUE` when starting the server. - -Example: - -```text -FileUpload_Storage_Type=GoogleCloudStorage -``` - -**Note: This only works if the setting isn't already set. So this is most useful for setting on initial start. If the setting already has a value you will need to use the syntax below** - -## Overwrite Setting - -You can overwrite any setting by setting an environment variable prefixed with: `OVERWRITE_SETTING_` - -Example: - -```text -OVERWRITE_SETTING_FileUpload_Storage_Type=GoogleCloudStorage -``` - -## Block Settings - -You can block a setting from being changed by specifying the `SETTINGS_BLOCKED` environment variable. This is a comma separated list. Any setting you want to block you need to add to this list. - -Example: - -```text -SETTINGS_BLOCKED=FileUpload_Storage_Type,FileUpload_GoogleStorage_AccessId,FileUpload_GoogleStorage_Secret -``` - -**Even you as an admin will not be able to change this via the UI. If you want to change the setting you will need to remove it from the list and reboot the server** - -## Hide Settings - -Example: - -You can hide settings from the client by using the `SETTINGS_HIDDEN` environment variable - -```text -SETTINGS_HIDDEN=FileUpload_GoogleStorage_AccessId,FileUpload_GoogleStorage_Secret -``` - -**Be careful with this setting some settings like `FileUpload_Storage_Type` are needed by the client so cannot be hidden** - -## **Wizard Required** Settings - -Example: - -You can force settings to be required on wizard pages by using the `SETTINGS_REQUIRED_ON_WIZARD` environment variable - -```text -SETTINGS_REQUIRED_ON_WIZARD=Organization_Type,Organization_Name -``` - diff --git a/guides/administration/misc.-admin-guides/troubleshooting.md b/guides/administration/misc.-admin-guides/troubleshooting.md deleted file mode 100644 index 8539744b1c..0000000000 --- a/guides/administration/misc.-admin-guides/troubleshooting.md +++ /dev/null @@ -1,17 +0,0 @@ -# Troubleshooting - -Sometimes we get ourselves into a bit of trouble. Here we will try to provide common problems and their solutions. - -## Invalid Site URL Warning - -If you receive an alert that you have an invalid Site URL. This means that some how your Site URL and the URL you are accessing from don't match. This causes assets in Rocket.Chat to not be able to load properly. - -This usually happens when someone changes the setting. To resolve this you will need to modify the site url. - -Setting the following environment variables will correct this issue: - -```text -OVERWRITE_SETTING_Site_Url=https://the-address-you-use-to-access -ROOT_URL=https://the-address-you-use-to-access -``` - diff --git a/guides/administration/misc.-admin-guides/white-labeling/README.md b/guides/administration/misc.-admin-guides/white-labeling/README.md deleted file mode 100644 index 6bb08bee5b..0000000000 --- a/guides/administration/misc.-admin-guides/white-labeling/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# White-Labeling \(Server and Web App\) - -When using Rocket.Chat you have a plethora of customization options, ranging from basic color switching to full css control. Here you will find all the guides you need to customize your Rocket.Chat Server. - -In these guides we will be talking about customizations without changing the source code, for that you can check our \[Developer Guides\]. - -We will be separating these guides into 2 categories: basic and advanced. - -* [Basic White-Labeling](https://docs.rocket.chat/guides/administrator-guides/white-labeling/basic-white-labeling) -* [Advanced White-Labeling](https://docs.rocket.chat/guides/administrator-guides/white-labeling/advanced-white-labeling) - diff --git a/guides/administration/misc.-admin-guides/white-labeling/advanced-white-labeling.md b/guides/administration/misc.-admin-guides/white-labeling/advanced-white-labeling.md deleted file mode 100644 index e0f9f93142..0000000000 --- a/guides/administration/misc.-admin-guides/white-labeling/advanced-white-labeling.md +++ /dev/null @@ -1,130 +0,0 @@ -# Advanced White-Labeling - -In these guides we will cover how to customize styling in more depth and how to add custom Javascript scripts to your server. - -Please use caution when using these settings, as the misuse of them can cause problems on your server - -## Custom CSS - -Can be found in Administration => Layout. This allows you to overwrite styling on ui. For the full maestry of this setting we recommend studying the source code, as seen that overwriting classes directly can lead to side effects on styling. - -### CSS Variables - -Rocket.Chat uses css variables to store key values when styling. Rocket.Chat recommends only overwriting the css variables, as you will have more control on what will be changed. - -You can find the full list of variables here - -## Custom Scripts - -You can add custom scripts for when a user takes specific actions. Scripts must be written in Javascript. - -### Logout Flow - -This script runs after the user has logged out. - -### Custom Script for Logged Out Users - -Custom Script that will run whenever a user that is not logged in accesses your server url. e.g. \(whenever you enter the login page\) - -### Custom Script for Logged In Users - -Custom Script that will run whenever a user that is logged in accesses your server url \(eg. opens a browser page or the desktop app\) - -## Email Templates - -Here you can configure various email settings, in this guide we will be going over only email templating sections. Found in the administration menu. Here you can use HTML for formatting. You can also use placeholders that will be changed to actual data when sending \(for example \[email\] will turn into the user's email\). You can also use Rocket.Chat internationalization engine by wrapping the sentence string with `{}`, see all our internationalization strings [here](https://github.com/RocketChat/Rocket.Chat/blob/develop/packages/rocketchat-i18n/i18n/en.i18n.json#L1198) - -### Email Address Changed - -Informs that the user has changed the email Is triggered when the user changes the email You may use the following placeholders: - -* \[email\] for the user's email. -* \[Site\_Name\] and \[Site\_URL\] for the Application Name and URL respectively. - -### Forgot Password - -Resets the password Is triggered when the user clicks on 'Forgot Password' - -You may use the following placeholders: - -* \[Forgot\_Password\_Url\] for the password recovery URL. -* \[name\], \[fname\], \[lname\] for the user's full name, first name or last name, respectively. -* \[email\] for the user's email. -* \[Site\_Name\] and \[Site\_URL\] for the Application Name and URL respectively. - -### Header and Footer - -Any changes made here will be reflected in the every header and footer Changes the header, footer and direct reply warning HTML You may use the following placeholders: - -* \[Site\_Name\] and \[Site\_URL\] for the Application Name and URL respectively. - -### Invitation - -Invitation to use the site Is triggered when the admin invites the person by email - -You may use the following placeholders: - -* \[email\] for the recipient email. -* \[Site\_Name\] and \[Site\_URL\] for the Application Name and URL respectively. - -### Password Changed - -Informs that the password has been changed by the admin Is triggered when the admin change user's password You may use the following placeholders: - -* \[password\] for the temporary password. -* \[name\], \[fname\], \[lname\] for the user's full name, first name or last name, respectively. -* \[email\] for the user's email. -* \[Site\_Name\] and \[Site\_URL\] for the Application Name and URL respectively. - -### Registration - -Is triggered when the user registers You may use the following placeholders: - -* \[name\], \[fname\], \[lname\] for the user's full name, first name or last name, respectively. -* \[email\] for the user's email. -* \[Site\_Name\] and \[Site\_URL\] for the Application Name and URL respectively. - -### Registration via Admin - -Is triggered when the admin creates an account for the user You may use the following placeholders: - -* \[name\], \[fname\], \[lname\] for the user's full name, first name or last name, respectively. -* \[email\] for the user's email. -* \[password\] for the user's password. -* \[Site\_Name\] and \[Site\_URL\] for the Application Name and URL respectively. - -### Style - -Here you can edit the emails styling using CSS. - -### Subject - -Here you can define what email users will receive when they recieve certain message notifications: - -### Direct Message: - -Is triggered when a user receives a direct message. You may use the following placeholders: - -* \[Site\_Name\], \[Site\_URL\], \[User\] & \[Room\] for the Application Name, URL, Username and Roomname respectively. - -### Mention: - -Is triggered when a user is mentioned using `@username`. You may use the following placeholders: - -* \[Site\_Name\], \[Site\_URL\], \[User\] & \[Room\] for the Application Name, URL, Username and Roomname respectively. - -### Mention All: - -Is triggered when a user is mentioned using `@all`. You may use the following placeholders: - -* \[Site\_Name\], \[Site\_URL\], \[User\] & \[Room\] for the Application Name, URL, Username and Roomname respectively. - -### Verification - -Email that the user receives to verify his account. You may use the following placeholders: - -* \[Verification\_Url\] for the verification URL. -* \[name\], \[fname\], \[lname\] for the user's full name, first name or last name, respectively. -* \[email\] for the user's email. -* \[Site\_Name\] and \[Site\_URL\] for the Application Name and URL respectively. - diff --git a/guides/administration/misc.-admin-guides/white-labeling/basic-white-labeling.md b/guides/administration/misc.-admin-guides/white-labeling/basic-white-labeling.md deleted file mode 100644 index f09fa40ad0..0000000000 --- a/guides/administration/misc.-admin-guides/white-labeling/basic-white-labeling.md +++ /dev/null @@ -1,490 +0,0 @@ -# Basic White-labeling - -This guide will focus on customizations that non technical users can make to their Rocket.Chat Server. To achieve this you will be using only the admin settings. - -## Layout - -Here is where most of the changes to the UI will happen. Found in the administration menu. - -### Colors - -Let’s start out with the most basic changes you can make to your server, changing colors. Rocket.Chat offers the ability to change most of its elements colors - -### Error - -The Error variable will change these elements: The background on switch buttons \(when disabled\) - -![Disabled switch button](../../../../.gitbook/assets/disabled-switch%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%284%29.png) - -```text -The color of the line when you have unread messages (same day or another) -``` - -![Unread messages](../../../../.gitbook/assets/unread-message.png) ![Unread messages in another day](../../../../.gitbook/assets/new-day-unread-message.png) - -```text -The close button in the audio upload area (inside message box) -``` - -![Message box with audio recording](../../../../.gitbook/assets/audio-message-box%20%281%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%285%29%20%285%29%20%285%29%20%281%29.png) - -```text -The leave/delete button in the room info -``` - -![Leave and Delete buttons](../../../../.gitbook/assets/leave-delete-buttons.png) - -```text -The busy status -``` - -![Busy status](../../../../.gitbook/assets/busy-status.png) - -```text -Remove button inside the user preferences (Don't ask me again list) -``` - -![Remove button](../../../../.gitbook/assets/remove-dont-ask-me-again.png) - -```text -Textbox with error on the text verification -``` - -![Text box with error](../../../../.gitbook/assets/error-text-box.png) - -```text -Remove user from room button (user info -> more actions) -``` - -![Remove from room button](../../../../.gitbook/assets/remove-from-room-message.png) - -### Error Light - -The Error Light variable will change these elements: The border color when disabled - -![Disabled switch button](../../../../.gitbook/assets/disabled-switch%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%284%29%20%284%29.png) - -```text -Icon on the burger menu in mobile-view -``` - -![Burger menu with 1 unread message](../../../../.gitbook/assets/1-unread-message-burger.png) - -### Alert - -The Alert variable will change these elements: Warning icon - -![Warning-image](../../../../.gitbook/assets/warning-image.png) - -```text -Away status color -``` - -![Away status](../../../../.gitbook/assets/away-status.png) - -### Alert Light - -The Alert Light variable will change these elements: Favorite button color - -![Favorite button](../../../../.gitbook/assets/favorite-star.png) - -### Success - -The Success variable will change these elements: The online status - -![Online status](../../../../.gitbook/assets/online-status.png) - -```text -The switch button (when enabled) -``` - -![Enabled switch button](../../../../.gitbook/assets/enabled-switch.png) - -```text -The done button in the audio upload area (inside message box) -``` - -![Message box with audio recording](../../../../.gitbook/assets/audio-message-box%20%281%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%285%29%20%285%29%20%285%29%20%281%29%20%285%29.png) - -### Success Light - -The Success light variable will change these elements: Confirmation Icon - -![Success message](../../../../.gitbook/assets/success-message.png) - -### Button Primary - -The Button Primary variable will change these elements: The home page links colors - -![Links list](../../../../.gitbook/assets/home-links.png) - -```text -The clip icon color in files list -``` - -![Enabled switch button](../../../../.gitbook/assets/files-list-clip.png) - -```text -Reply in Thread and Reactions button color (message actions / on hover) -``` - -![Reply in Thread and Reactions buttons](../../../../.gitbook/assets/thread-reaction-message.png) - -```text -The room actions buttons color (on hover) -``` - -![Room action button hover](../../../../.gitbook/assets/room-actions-hover.png) - -```text -The switch button in the room settings -``` - -![Enabled blue switch button](../../../../.gitbook/assets/blue-switch-enabled.png) - -```text -The reply counter -``` - -![Reply counters](../../../../.gitbook/assets/badger-thread.png) - -```text -Regular expression link in 'Search Messages' -``` - -![Regular expression link](../../../../.gitbook/assets/regular-expression-link.png) - -```text -Record and Ok buttons in Video Message -``` - -![Record a video message box](../../../../.gitbook/assets/video-message-box.png) - -```text -Directory active tab -``` - -![DIrectory active tab](../../../../.gitbook/assets/directory-tabs.png) - -```text -Member list actions -``` - -![Add users and invite users button](../../../../.gitbook/assets/add-users-invite-users.png) - -```text -Room info save button -``` - -![Reply in Thread and Reactions buttons](../../../../.gitbook/assets/cancel-reset-save-buttons.png) - -```text -Checkbox background (Don't ask me again / modal) -``` - -![Don't ask me again checkbox](../../../../.gitbook/assets/checked-dont-ask-me-again%20%281%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%281%29.png) - -### Button Primary Light - -The Button Primary Light variable will change these elements: Checkbox border \(Don't ask me again / modal\) - -![Don't ask me again checkbox](../../../../.gitbook/assets/checked-dont-ask-me-again%20%281%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%281%29%20%281%29.png) - -### Alert Message Primary - -The Alert Message Primary variable will change these elements: The thread icon and the responded message - -![Replying in thread](../../../../.gitbook/assets/replying-in-thread.png) - -```text -Border and font color in mail messages instructions (inside room -> more actions -> mail messages // when you haven't selected any messages) -``` - -![Send messages by email alert](../../../../.gitbook/assets/mail-messages-blue-div%20%281%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%284%29%20%284%29%20%284%29%20%281%29%20%281%29.png) - -### Alert Message Primary Background - -The Alert Message Primary Background variable will change these elements: Background color in mail messages instructions - -![Send messages by email alert](../../../../.gitbook/assets/mail-messages-blue-div%20%281%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%284%29%20%284%29%20%284%29%20%281%29%20%283%29.png) - -### Alert Message Secondary - -The Alert Message Secondary variable will change these elements: Border and font color in mail messages instructions - -![Clear section alert](../../../../.gitbook/assets/clear-section-alert%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%281%29%20%284%29.png) - -### Alert Message Secondary Background - -The Alert Message Secondary Background variable will change these elements: Background color in mail message instructions - -![Clear section alert](../../../../.gitbook/assets/clear-section-alert%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%281%29%20%286%29.png) - -### Alert Message Warning - -The Alert Message Warning variable will change these elements: Border and font color in mail messages instructions error - -![Invalis email alert](../../../../.gitbook/assets/email-error%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%284%29%20%281%29%20%286%29.png) - -```text -Border and font color in prune messages warning (room -> more actions -> prune messages) -``` - -![Delete all messages alert](../../../../.gitbook/assets/delete-all-messages%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%284%29%20%284%29.png) - -### Alert Message Warning Background - -The Alert Message Warning Background variable will change these elements: Background color in mail messages instructions error - -![Invalis email alert](../../../../.gitbook/assets/email-error%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%284%29%20%281%29%20%287%29.png) - -```text -Background color in prune messages warning -``` - -![Delete all messages alert](../../../../.gitbook/assets/delete-all-messages%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%284%29%20%284%29%20%285%29.png) - -### Primary - -The Primary variable will change these elements: Sidebar background - -![Sidebar header](../../../../.gitbook/assets/top-sidebar.png) - -```text -Directory channel/user list -``` - -![Channels list](../../../../.gitbook/assets/directory-channels-list.png) - -```text -Rooms list ADMIN -``` - -![All rooms list](../../../../.gitbook/assets/all-rooms-list.png) - -```text -Users list ADMIN -``` - -![Users list](../../../../.gitbook/assets/users-list.png) - -```text -Invites list ADMIN -``` - -![List of invitation](../../../../.gitbook/assets/invitation-token.png) - -```text -Name, details and price of apps on marketplace -``` - -![List of apps](../../../../.gitbook/assets/apps-list%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%284%29%20%283%29%20%283%29.png) - -### Primary Darkest - -The Primary Darkest variable will change these elements: On hover in rooms and users in the sidebar - -![Active room](../../../../.gitbook/assets/list-rooms-hover.png) - -```text -Search on the top of sidebar -> text box background -``` - -![Sidebar search](../../../../.gitbook/assets/sidebar-search.png) - -### Primary Dark - -The Primary Dark variable will change these elements: The open room - -![Open room](../../../../.gitbook/assets/active-room.png) - -```text -The border of text box in search option -``` - -![Sidebar search](../../../../.gitbook/assets/sidebar-search-box.png) - -### Primary Light - -The Primary Light variable will change these elements: Fonts and icons color/ sidebar - -![Sidebar](../../../../.gitbook/assets/sidebar.png) - -```text -Search and rooms font color -``` - -![Sidebar search](../../../../.gitbook/assets/search-box.png) - -```text -Directory/ channels list font color -``` - -![Directory/ channels list](../../../../.gitbook/assets/directory-channel-list.png) - -```text -Directory/ users list font color -``` - -![Directory/ users list](../../../../.gitbook/assets/directory-user-list.png) - -```text -Credits on emoji box footer -``` - -![Emoji Box](../../../../.gitbook/assets/emoji-picker.png) - -```text -Admin tabs on hover -``` - -![Admin tabs on hover](../../../../.gitbook/assets/admin-sidebar-hover.png) - -```text -Settings title on admin -``` - -![Search bar](../../../../.gitbook/assets/settings-search-bar.png) - -```text -Font color in marketplace -``` - -![Apps list](../../../../.gitbook/assets/apps-list%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%284%29%20%283%29.png) - -### Primary Light Medium - -The Primary Light Medium variable will change these elements: Don't ask me again unchecked border of checkbox - -![Don't ask me again checkbox](../../../../.gitbook/assets/dont-ask-me-again.png) - -```text -Invite users placeholder -``` - -![Send invitation email](../../../../.gitbook/assets/send-invitation-email.png) - -### Primary Lightest - -The Primary Lightest variable will change these elements: directory hover on room - -![Directory/ channel list hover](../../../../.gitbook/assets/directory-channel-list-hover.png) - -```text -directory hover on user -``` - -![Directory/ user list hover](../../../../.gitbook/assets/directory-user-list-hover.png) - -```text -admin sidebar background -``` - -![Admin sidebar](../../../../.gitbook/assets/administration-sidebar.png) - -```text -admin rooms list on hover -``` - -![Admin/ room list hover](../../../../.gitbook/assets/admin-room-list.png) - -```text -admin users list on hover -``` - -![Admin/ user list hover](../../../../.gitbook/assets/users-admin-list.png) - -### Content - -The Content variable will change these elements: color of the number of unread messages \(mobile view\) - -![Burger menu with unread messages notification](../../../../.gitbook/assets/6-unread-messages-burger.png) - -```text -color of the name, number and more actions when you have unread messages -``` - -![Name with unread messages notification](../../../../.gitbook/assets/room-unread-messages.png) - -### Link Active - -The Link Active variable will change these elements: the hover and active color on icons / room actions - -![Room action icons](../../../../.gitbook/assets/active-link-room-actions.png) - -```text -the loader when you prune messages -``` - -![Loader](../../../../.gitbook/assets/prune-messages-loader.png) - -## Content - -The content section allows you to change the HTML content of a number of screens on your Rocket.Chat server. The following screens are available to be edited: - -* **Home Title:** The title on the header of the first screen that your users will see when they log in. -* **Home Body:** The content of the first screen that your users will see when logging in. -* **Login Terms:** This is the text under the login page. -* **Terms of Service:** By default this screen is accessed on the links under the login page, here you can set the terms of service of your server. Can also be accessed via YOUR-SERVER-URL/terms-of-service -* **Privacy Policy:** By default this screen is accessed on the links under the login page, here you can set the privacy policy of your server. Can also be accessed via YOUR-SERVER-URL/privacy-policy -* **Legal Notice:** By default this screen is accessed on the links under the login page, here you can set the legal notice of your server. Can also be accessed via YOUR-SERVER-URL/legal-notice -* **Side navigation footer:** This is the logo on the left sidebar. We recommend using the images set on your [Assets](basic-white-labeling.md#assets) for better consistency. - -### Fonts - -Here you can define the font family for the system in a list separated by commas, Rocket.Chat will try to use the available fonts starting from left to right. - -### User Interface - -* **Display Roles:** Toggles the display of user roles by the usernames on messages -* **Group Channels By Type:** Enabling this will separate the channels by category \(Channel, Private Room, DM or discussion\) on the left sidebar. -* **Use Full Name Initials to Generate Default Avatar:** This will make so the default avatars are generated using the person Full Name instead of Username. E.g. By default the user `blue.ducks` with the name `Richards Nate` will have an avatar with the letters `BD`, if this setting is active, it will be `RN`. -* **Use Real Name:** Enabling this will change the display of Usernames to Full Names -* **Click to Create Direct Message:** Enabling this will make it so when you click an avatar, it will open a DM with the selected user. - -Unread Counter Style: - -* **Different Style for user mentions:** This will make the notification counter differentiate normal messages from mentions -* **Same style for mentions:** This will make the counter mark mentions and normal messages as the same -* **Allow Special Characters in Room Names:** This will enable the use of special characters like `! @ # $ % ^ & *` in room names -* **Show top navbar in embedded layout:** This toggles the top navbar when using `?layout=embedded` in the end of the url - -## Assets - -Here you will be able to change most of the logos on your server. Found in the administration menu. - -* logo \(svg, png, jpg\) - * Changes the logo on the footer of the left sidebar - * Changes the logo on the login page -* login background \(svg, png, jpg\) - * Changes the background of the login page - -The next items are mostly icons for different operational systems and platforms, we recommend using the same image with the specified size and format on each item: Favicons are used in the browser tabs and as the icon for the server on the desktop application: - -* favicon \(ico\) -* favicon \(svg\) -* favicon 16x16 \(png\) -* favicon 32x32 \(png\) - -Icons for the notifications on chrome in android: - -* android-chrome 192x192 \(png\) -* android-chrome 512x512 \(png\) - -Icons for favorites on Iphone: - -* apple-touch-icon 180x180 \(png\) -* apple-touch-icon-precomposed 180x180 \(png\) - -Tiles on Microsoft Windows 10 start menu: - -* mstile 70x70 \(png\) -* mstile 144x144 \(png\) -* mstile 150x150 \(png\) -* mstile 310x310 \(png\) -* mstile 310x150 \(png\) - -Safari pinned tab Icon: - -* safari pinned tab \(svg\) - diff --git a/guides/administrator-guides/administration/integrations.md b/guides/administrator-guides/administration/integrations.md deleted file mode 100644 index 66d3d994a4..0000000000 --- a/guides/administrator-guides/administration/integrations.md +++ /dev/null @@ -1,6 +0,0 @@ -# Integrations - -Document Under Development - - - diff --git a/guides/administrator-guides/administration/integrations/rollbar.md b/guides/administrator-guides/administration/integrations/rollbar.md deleted file mode 100644 index 572e0eebb7..0000000000 --- a/guides/administrator-guides/administration/integrations/rollbar.md +++ /dev/null @@ -1,39 +0,0 @@ -# Rollbar - -Add Rollbar notifications via a new WebHook in Rocket.Chat This script works for the Rollbar.com - -1. In Rocket.Chat go to "Administration"->"Integrations" and create "New Integration" -2. Choose Incoming WebHook -3. Follow all instructions like Enable, give it a name, link to channel etc. Bonus: add [https://avatars.io/twitter/rollbar/medium](https://avatars.io/twitter/rollbar/medium) as Avatar URL -4. Set "Enable Script" to true and enter the javascript in the "Script" box -5. Press Save changes and copy the _Webhook URL_ \(added just below the script box\) -6. Go to your Rollbar project, ie. [https://rollbar.com/](https://rollbar.com/)< organization >/< project >/settings/notifications/webhook/ and enable the "WebHook" integration. It's in the project "settings" under Integrations and then Notifications. A WebHook integration is added there when enabled. -7. Add a new webhook by pasting the Rocket.Chat url you've copied in step 5 in the "URLs" textarea \(1 URL per line\) and press the Enable Webhook Integration button -8. Test the webhook with the "Send Test Notification" button in Rollbar, a Test Results box should appear below, with more info \(success or failure\) - -Paste this in javascript in the "Script" textarea on Rocket.Chat WebHook settings - -```javascript -class Script { - - process_incoming_request({ request }) { - // console is a global helper to improve debug - console.log(request.content); - - return { - content: { - text: "(" + request.content.event_name + ") \n*" + request.content.data.item.title + "* \n*Environment:* "+ request.content.data.item.environment, - } - }; - - return { - error: { - success: false, - message: 'Error example' - } - }; - } -} -``` - -Use the console.log\(request.content\) line to debug the json content, posted by Rollbar. diff --git a/guides/app-guides/README.md b/guides/app-guides/README.md deleted file mode 100644 index e3f746fc3b..0000000000 --- a/guides/app-guides/README.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -description: Here you will find all guides about installing and managing Rocket.Chat Apps ---- - -# App Guides - -## Where to find Rocket.Chat Apps? - -There are a number of apps available to increase the quality of your team's workflow. You can add gif to spice up the chat or connect it with GitLab so that the team gets notified of new code changes. - -You can browse these apps either on our [marketplace](https://rocket.chat/marketplace) or access them directly from the Admin Panel. - -## How to install Rocket.Chat Apps? - -In order to install Rocket.Chat apps from the marketplace, first you need to register your workplace \(even if it is a community edition \) on [Rocket.Chat Cloud](https://cloud.rocket.chat/). - -Once your workplace is registered, you can install the apps from the marketplace from the Admin panel of your Rocket.Chat instance. - -{% hint style="info" %} -Different Rocket.Chat Apps might have different installation steps. -{% endhint %} - - - diff --git a/guides/app-guides/atlassian/bamboo-integration.md b/guides/app-guides/atlassian/bamboo-integration.md deleted file mode 100644 index c359a5ede5..0000000000 --- a/guides/app-guides/atlassian/bamboo-integration.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -description: Atlassian Bamboo Integration ---- - -# Bamboo - -## Installation - -You can install our Bamboo Integration Rocket.Chat App from your Rocket.Chat Administration area. - -* Go to **Administration** > **Marketplace** -* Search for the **Bamboo Integration** and click on the item -* Click on the **Install** button -* Click on **Activate** - -Now that you have the app installed in your server, it is time to configure the integration with your Bamboo instance. - -## Configuration - -Go to any channel or private group and execute the slashcommand `/bamboo install`. You will receive an ephemeral message with instructions on how to configure your Bamboo, as follows: - -1. On your Bamboo, install the [Rocket.Chat Notifications for Bamboo](https://marketplace.atlassian.com/apps/1220022/rocket-chat-notifications-for-bamboo) add-on -2. Add a notification on a Build Plan or Deployment Environment -3. Select the "Rocket.Chat" recipient type -4. On the "Rocket.Chat URL" field, insert the URL given to you by the step \#4 in the ephemeral message \(e.g., `https://example.com:3000/api/apps/private/6a7b5a37-b9bb-4d49-ae38-c6ebcb3fe479/ejDjQ9Kyh2wBgrSwt/webhook`\) -5. On the "Rocket.Chat channel" field, type the name of the channel or private group you want to be notified of the events - -After that, your Rocket.Chat will start receiving the configured notifications. - -> **Note**: Not all Build/Deployment events are supported by the Bamboo Integration at the time of this writing. Unsupported events will not result in any notification sent in Rocket.Chat. The list of supported events is as follows: - -* Plans: - * All Builds Completed - * Failed Builds and First Successful -* Jobs: - * All Jobs Completed - * Failed Jobs and First Successful - * Job Error -* Deployments: - * Deployment Started and Finished - * Deployment Failed - diff --git a/guides/app-guides/atlassian/bitbucket-server-integration.md b/guides/app-guides/atlassian/bitbucket-server-integration.md deleted file mode 100644 index 8d8f4c35df..0000000000 --- a/guides/app-guides/atlassian/bitbucket-server-integration.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -description: Atlassian Bitbucket Server Integration ---- - -# Bitbucket Server - -Here you will find how to install and use the Bitbucket Server Integration. - -## Installation - -You can install our Bitbucket Server Integration Rocket.Chat App from your Rocket.Chat Administration area. - -* Go to **Administration > Marketplace** -* Search for the **Bitbucket Server Integration** and click on the item -* Click on the **Install** button -* Click on **Activate** - -Now that you have the app installed in your server, it is time to configure the integration with your Bitbucket instance. - -## Configuration - -In order to enable notifications, you have to connect a channel or private group to one or more Bitbucket repositories; To connect the channel or private group, access it and execute the slashcommand `/bitbucket-server connect REPO_URL`, where: - -* **REPO\_URL**: is the url of the repository you want to connect to, e.g. `http://example.com:7990/bitbucket/projects/PROJECT_1/repos/repo1/browse`. - -You will receive an ephemeral message with further instructions on how to add a Webhook to your Bitbucket repository. - -![Example of the ephemeral message](../../../.gitbook/assets/image1%20%281%29.png) - -Now go to your Bitbucket repository and [create a new Webhook](https://confluence.atlassian.com/bitbucketserver/managing-webhooks-in-bitbucket-server-938025878.html). In the URL field, paste the URL that was generated for you in the ephemeral message \(e.g., `https://example.com:3000/api/apps/private/d98e7da9-2398-4bd1-a596-d5cac28468bd/zC5r4DxBQSTHfrhLg/webhook?repoId=aHR0cDovL2xcY2FsaG9zdDo30TkwL2Jpd6J1Y2t1dHxQUk9KRUNUXzF8cmVwzE=`\) - -![Example of Webhook creation](../../../.gitbook/assets/image2%20%281%29.png) - -After that Bitbucket will send notifications on some events to the connected channel or private room. - -> **Note**: Only some of the available events are interpreted by the Rocket.Chat App. Those are **Repository Push, Pull Request Opened, Approved, Merged** and **Declined**. Any webhook sent to Rocket.Chat from other events will not result in any kind of notification being sent. - -![Example of chosen events](../../../.gitbook/assets/image3.png) - -### Tips - -* If you want to connect the same repository to another channel or private group, simply repeat the process on them, using the same repository URL; - diff --git a/guides/app-guides/atlassian/jira-server-v2.0.md b/guides/app-guides/atlassian/jira-server-v2.0.md deleted file mode 100644 index 5347bcc720..0000000000 --- a/guides/app-guides/atlassian/jira-server-v2.0.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -description: How to install and configure your Jira Server integration with Rocket.Chat ---- - -# Jira Server v2.0 - -## Features - -This app lets you connect your channels or private groups to different projects from different Jira Servers. - -The following notifications are supported: - -* Project created -* Project deleted -* Issue created -* Issue transitioned -* Issue updated - -## Installation - -{% hint style="warning" %} -**Migrating from version 1.x:** Please note that this is a _major_ version update, which means it includes breaking changes. You _will need_ to configure your connections again after the update. -{% endhint %} - -You can install our Jira Server Integration Rocket.Chat App from your Rocket.Chat Administration area. - -* Go to **Administration > Marketplace** -* Search for the **Jira Server Integration** and click on the item -* Click on the **Install** button -* Click on **Activate** - -Now that you have the app installed in your server, it is time to configure the integration with your Jira instance. - -## Configuration - -Go to any channel or private group and execute the slashcommand `/jira-server`. You will be prompted with the _Room Preferences_ dialog_:_ - -![Room Preferences dialog](../../../.gitbook/assets/image%20%2813%29.png) - -Here you can connect your channel or private group to different Jira Servers. The server list is currently empty as this is a fresh install, so let's connect to a new Jira Server - -### Connecting to Jira Servers - -To add a new Jira Server connection from the _Room Preferences_ dialog, click on the "Connect to another Jira Server" button. You will be prompted with a form to fill in the details for the connection: - -![New Jira Server form](../../../.gitbook/assets/image%20%286%29.png) - -> **Note**: We advise against using your own Jira user in the installation process. That is because the Rocket.Chat App has to persist the credentials to be able to search for projects and issues later on. We recommend creating a new user with administrative privileges. After the installation process, you can revoke those privileges from the user. - -After successfully connecting to the server \(the app will let you know if anything goes wrong\), just select the new server from the list to integrate it with your channel/private group. - -![Select the new server to integrate with it](../../../.gitbook/assets/image%20%2812%29.png) - -Hit "Save" and you're good to go! - -Now we have to subscribe your channel to specific projects, so it starts receiving notifications from Jira. - -### Subscribing to Jira Projects - -Go to the channel/private group that you want to receive notifications on and run the Jira slash command `/jira-server`. You will be prompted with the _Room Integration_ dialog: - -![Room Integration dialog](../../../.gitbook/assets/image%20%2814%29.png) - -You can click the "Subscribe" button to subscribe to any project you wish. - -### Managing your Integration - -If you want to manage your channel/private group integration, you can use the menu in the _Room Integration_ dialog to do so: - -![Room Integration dialog menu](../../../.gitbook/assets/image%20%2810%29.png) - -* **Manage Connections** - Takes you to the [_Room Preferences_ dialog above](jira-server-v2.0.md#configuration). From there you can manage to which servers your channel/private group is connected, add new servers, etc. -* **Reset Connections** - Will reset all connected servers and projects from this room. Use this if you no longer want to receive notifications on your channel/private group. - diff --git a/guides/app-guides/data-loss-prevention-dlp-app.md b/guides/app-guides/data-loss-prevention-dlp-app.md deleted file mode 100644 index a05feeabf9..0000000000 --- a/guides/app-guides/data-loss-prevention-dlp-app.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -description: >- - Data loss prevention (DLP), in its simplest terms, is a set of tools and - processes used to ensure that sensitive data is not unduly shared, misused, - lost, or accessed by unauthorized users. ---- - -# Data Loss Prevention \(DLP\) App Admin Guide - -## **To Enable DLP App:** - -1. Go to **Administration** - -![](../../.gitbook/assets/image%20%28215%29.png) - -2. **Marketplace** - -![](../../.gitbook/assets/image%20%28257%29.png) - -3. Search the DLP app and enable it - -![](../../.gitbook/assets/image%20%28267%29.png) - -5. Click and open to view DLP app details - -![](../../.gitbook/assets/image%20%28268%29.png) - -6. Define the rules as Regular expressions. Add each Regular Expression on a new line - -![](../../.gitbook/assets/image%20%28261%29.png) - -{% hint style="info" %} -Through DLP features, admins can create a list of regular expressions to be monitored in Rocket.Chat and it can be applied to any conversation. -Once a regular expression is detected, it appears blurred in the room where it was originally written. The original message then is forwarded to a predefined channel for auditing flow, where a moderator can approve or reject its content to be exhibited in the room. You can add as many moderators as you want. -It’s also possible to select the rooms to apply the DLP app. If you have channels in your Rocket.Chat where it’s more likely to happen a leak of sensitive information, such as the finance team channel, for example, you can set the tool to run just in this specific channel. -{% endhint %} - -7. Mention the channel name in **Moderator Channel** to which you want the blacklisted messages to be forwarded to, as shown below: - -![](../../.gitbook/assets/image%20%28260%29.png) - -8. Mention any channels that you don't want to be monitored under Content Control type **Ignore Channels** if any, as shown below: - -![](../../.gitbook/assets/image%20%28266%29.png) - -Or mention the channels only which you want to be monitored under Content Control type **Target Channels,** as shown below: - -![](../../.gitbook/assets/image%20%28263%29.png) - -9. Toggle switch **Censor only Sensitive Information** to only replace sensitive information by hashtags. Switch it off to censor the full message containing that sensitive information. - -![](../../.gitbook/assets/image%20%28262%29.png) - -10. Set the title of this temporary message under **Custom Blacklisted Message title** that you want the blacklisted message to be replaced by temporarily in the channel until the blacklisted message has been approved by moderators. - -![](../../.gitbook/assets/image%20%28269%29%20%281%29.png) - -11. **Custom Pending approval message** will be shown if the user clicks on the **More info** button under the blacklisted message in a room until the blacklisted message gets approved, as shown below: - -![](../../.gitbook/assets/image%20%28272%29.png) - -12. **Custom Rejected Message** will be shown in place of the blacklisted message in a channel when a moderator has rejected the blacklisted message. - -![](../../.gitbook/assets/image%20%28271%29.png) - -13. Hit **Save changes** to save your settings - -![](../../.gitbook/assets/image%20%28264%29.png) - -Your DLP app functional now. - diff --git a/guides/app-guides/omnichannel-apps/README.md b/guides/app-guides/omnichannel-apps/README.md deleted file mode 100644 index 39e686372a..0000000000 --- a/guides/app-guides/omnichannel-apps/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Omnichannel Apps - diff --git a/guides/app-guides/omnichannel-apps/dialogflow-app/README.md b/guides/app-guides/omnichannel-apps/dialogflow-app/README.md deleted file mode 100644 index f21492f2c5..0000000000 --- a/guides/app-guides/omnichannel-apps/dialogflow-app/README.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -description: >- - Dialogflow lets you easily add like-life conversational AI to your websites, - applications, messaging platforms, and contact center with intuitive, advanced - virtual agents. ---- - -# Dialogflow App - -Using Rocket.Chat and the Dialogflow Chatbot platform integration, you can set up and train your chatbot to respond to any query it's been trained for and configure it to act as an omnichannel agent. - -{% page-ref page="dialogflow-app-installation.md" %} - -{% page-ref page="dialogflow-app-configuration/" %} - -{% page-ref page="dialogflow-app-configuration/bot-user-configuration.md" %} - -{% page-ref page="dialogflow-app-configuration/delete-dialogflow-app.md" %} - - - diff --git a/guides/app-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/README.md b/guides/app-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/README.md deleted file mode 100644 index c95cd92f09..0000000000 --- a/guides/app-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# Dialogflow App Configuration - -Search Dialogflow in the **Apps** menu on your Rocket.Chat administration panel, as shown below: - -![](../../../../../.gitbook/assets/image%20%28444%29.png) - -Click open your Dialogflow app to see the settings available to you as an administrator: - -Following are the settings available: - -1. Set the[ name of the bot you have already configured](https://docs.rocket.chat/guides/apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/bot-user-configuration) in **Bot Username**. This is the user who will assist the conversations through Dialogflow integration. -2. **Project Id**, **Client Email**, **Private Key** are the credentials available inside your dialog flow instance. -3. Suppose the omnichannel end-user asks something that the bot is not trained to answer and fails. **Fallback Responses Limit** defines how many failures of the conversation should be forwarded to a human agent. -4. Upon bot-to-live agent handover, the visitor is transferred to **Target Department for Handover.** -5. The Bot sends a **Handover Message** to the visitor upon handover. -6. The Bot sends **Service Unavailable Message** to Visitor if service is unavailable. -7. The **Close Chat Message** is sent automatically when a chat is closed. -8. If **Hide Quick Replies** is enabled, then all quick-replies will hide when a visitor clicks on any one of them. -9. Hit **Save.** - -![](../../../../../.gitbook/assets/image%20%28452%29.png) - -Dialogflow app is successfully configured. - diff --git a/guides/app-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/bot-user-configuration.md b/guides/app-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/bot-user-configuration.md deleted file mode 100644 index ab274359e8..0000000000 --- a/guides/app-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/bot-user-configuration.md +++ /dev/null @@ -1,16 +0,0 @@ -# Bot User Configuration - -To configure a bot user: - -1. Go to **Administration>Users** and search your bot agent - -![](../../../../../.gitbook/assets/image%20%28451%29.png) - -2. Click it open and hit **Edit** - -![](../../../../../.gitbook/assets/image%20%28450%29.png) - -3. Make sure the _Bot_ and _LiveChat Agent_ role is assigned to this user. - -![](../../../../../.gitbook/assets/image%20%28453%29.png) - diff --git a/guides/app-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/delete-dialogflow-app.md b/guides/app-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/delete-dialogflow-app.md deleted file mode 100644 index 13be0699f1..0000000000 --- a/guides/app-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/delete-dialogflow-app.md +++ /dev/null @@ -1,10 +0,0 @@ -# Delete Dialogflow App - -To delete the Dialogflow app from your workspace: - -Goto **Adminisitration**>**Apps**>**Dialogflow** - -![](../../../../../.gitbook/assets/image%20%28592%29.png) - -![](../../../../../.gitbook/assets/image%20%28590%29.png) - diff --git a/guides/app-guides/omnichannel-apps/dialogflow-app/dialogflow-app-installation.md b/guides/app-guides/omnichannel-apps/dialogflow-app/dialogflow-app-installation.md deleted file mode 100644 index d927ce4317..0000000000 --- a/guides/app-guides/omnichannel-apps/dialogflow-app/dialogflow-app-installation.md +++ /dev/null @@ -1,20 +0,0 @@ -# Dialogflow App Installation - -To install Dialogflow App: - -1. Go to **Administration>Marketplace** and search Dialogflow - -![](../../../../.gitbook/assets/image%20%28449%29.png) - -2. Click **Install** - -![](../../../../.gitbook/assets/image%20%28448%29.png) - -Dialogflow app is installed successfully**.** - -It appears in the **Apps** menu on your Rocket.Chat administration panel, as shown below: - -![](../../../../.gitbook/assets/image%20%28447%29.png) - - - diff --git a/guides/app-guides/omnichannel-apps/email-inboxes/README.md b/guides/app-guides/omnichannel-apps/email-inboxes/README.md deleted file mode 100644 index f4055762bf..0000000000 --- a/guides/app-guides/omnichannel-apps/email-inboxes/README.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -description: Omnichannel Integration between Rocket.Chat and Email. ---- - -# Email Inboxes - -{% page-ref page="email-inbox-admin-guide.md" %} - -{% page-ref page="email-inbox-agent-guide.md" %} - - - diff --git a/guides/app-guides/omnichannel-apps/email-inboxes/email-inbox-admin-guide.md b/guides/app-guides/omnichannel-apps/email-inboxes/email-inbox-admin-guide.md deleted file mode 100644 index ba92500761..0000000000 --- a/guides/app-guides/omnichannel-apps/email-inboxes/email-inbox-admin-guide.md +++ /dev/null @@ -1,37 +0,0 @@ -# Email Inbox Admin Guide - -As an omnichannel administrator, you can configure and manage omnichannel email inboxes or email accounts for the email channels. - -To set up a new email inbox: - -1. Go to **Administration**: - -![](../../../../.gitbook/assets/image%20%28241%29.png) - -2. Click **Email Inboxes**: - -![](../../../../.gitbook/assets/image%20%28242%29.png) - -3. Click **+ New Email Inbox**: - -![](../../../../.gitbook/assets/image%20%28252%29.png) - -Enter the following details: - -1. Add **Name** of the email inbox -2. Specify the **Email** address -3. Assign it to a **Department;** it is optional -4. Configure SMTP server -5. Toggle switch **Connect with SSL/TLS;** it is optional -6. Configure IMAP server and -7. Toggle switch **Connect with SSL/TLS** for IMAP**;** it is optional -8. Hit **Save** - -![](../../../../.gitbook/assets/image%20%28240%29.png) - -Your email inbox is set up and, your agents can receive emails within Rocket.Chat now, as shown below: - -![](../../../../.gitbook/assets/image%20%28255%29.png) - - - diff --git a/guides/app-guides/omnichannel-apps/email-inboxes/email-inbox-agent-guide.md b/guides/app-guides/omnichannel-apps/email-inboxes/email-inbox-agent-guide.md deleted file mode 100644 index 4db8e169b0..0000000000 --- a/guides/app-guides/omnichannel-apps/email-inboxes/email-inbox-agent-guide.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -description: >- - You can receive emails inside your Rocket.Chat from your contacts, on an email - address your administration has configured within Rocket.Chat. ---- - -# Email Inbox Agent Guide - -Once an email is part of a channel, your contacts can send emails to it to start a conversation. It will appear inside Rocket.Chat just like any other omnichannel livechat conversation. When you reply to an email message that has been sent to you, it will appear just like any other email in your contact’s inbox. - -As soon as your contact sends an email to the registered email address, it will appear in the queue just like any other omnichannel conversation, as shown below: - -![](../../../../.gitbook/assets/image%20%28222%29.png) - -Click **Take it!** to take it off of the **Queued Chats** and be able to reply to it: - -![](../../../../.gitbook/assets/image%20%28223%29.png) - -As soon as you take it, it will appear in **Chats in Progress** and, you can click **Reply via Email** to reply to it. - -![](../../../../.gitbook/assets/image%20%28227%29.png) - -{% hint style="info" %} -Note that if you type without clicking **Reply via Email**, your contact will **NOT** receive your reply at all. -{% endhint %} - -Type your message and hit **Send** - -![](../../../../.gitbook/assets/image%20%28226%29.png) - -It appears on your Rocket.Chat interface as shown below: - -![](../../../../.gitbook/assets/image%20%28224%29.png) - -Your contact receives the message in email instantly. - -![](../../../../.gitbook/assets/image%20%28225%29.png) - -## Invite a fellow agent to an email inbox - -Suppose you get an email and you need the assistance of your fellow agent on it; you can invite them to this inbox using `/invite @username`. - -![](../../../../.gitbook/assets/image%20%28245%29.png) - -They are invited to the channel, as shown below: - -![](../../../../.gitbook/assets/image%20%28244%29.png) - -{% hint style="info" %} -As soon as the fellow omnichannel agent is invited to an email inbox, they are all able to see all the old conversation that has happened before they arrival to that email inbox. -{% endhint %} - -And you can conversate with them internally on the same channel. - -![](../../../../.gitbook/assets/image%20%28246%29.png) - -![](../../../../.gitbook/assets/image%20%28248%29.png) - -{% hint style="info" %} -As stated above, to talk to your contact, you need to click **Reply via Email**. Every message sent without clicking the button remains internal. -{% endhint %} - -## Sending an Attachment - -To send an attachment: - -1. The agent first needs to upload the file in the channel, as shown below: - -![](../../../../.gitbook/assets/image%20%28249%29.png) - -1. Click **Send via Email as attachment** - -![](../../../../.gitbook/assets/image%20%28247%29.png) - -**It appears in the email of your omnichannel contact, as shown below:** - -![](../../../../.gitbook/assets/image%20%28251%29.png) - diff --git a/guides/app-guides/omnichannel-apps/facebook-app/README.md b/guides/app-guides/omnichannel-apps/facebook-app/README.md deleted file mode 100644 index 33ddc82d9f..0000000000 --- a/guides/app-guides/omnichannel-apps/facebook-app/README.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -description: Omnichannel Integration between Rocket.Chat and Facebook. ---- - -# Facebook App - -Omnichannel Integration between Rocket.Chat and Facebook Messenger. With the Facebook Messenger app, you can handle messages from your Facebook contacts directly in Rocket.Chat. It works simply: your FB customers contact you via Messenger, you answer chats from Rocket.Chat. Some key features of this integration include sending messages with quick reply buttons, welcome messages\(starting/closing chat\), file sharing, and the correlation between your FB pages and your Rocket.Chat departments. - -{% page-ref page="facebook-app-installation.md" %} - -{% page-ref page="facebook-app-configuration/" %} - -{% page-ref page="facebook-app-configuration/facebook-app-authentication.md" %} - -{% page-ref page="facebook-app-agents-guide.md" %} - - - diff --git a/guides/app-guides/omnichannel-apps/facebook-app/facebook-app-agents-guide.md b/guides/app-guides/omnichannel-apps/facebook-app/facebook-app-agents-guide.md deleted file mode 100644 index 0adc8b4cec..0000000000 --- a/guides/app-guides/omnichannel-apps/facebook-app/facebook-app-agents-guide.md +++ /dev/null @@ -1,14 +0,0 @@ -# Facebook App Agent's Guide - -If you have Facebook app integration in place and a user sends you a message on your Facebook business page using their Facebook account, as shown below: - -![](../../../../.gitbook/assets/image%20%28534%29.png) - -it appears in your Rocket.Chat workspace, just like any other omnichannel conversation. - -![](../../../../.gitbook/assets/image%20%28491%29.png) - - Click **Take It!** to serve this conversation. You can also send to and receive files from your Facebook end-user, as shown below: - -![](../../../../.gitbook/assets/image%20%28423%29.png) - diff --git a/guides/app-guides/omnichannel-apps/facebook-app/facebook-app-configuration/README.md b/guides/app-guides/omnichannel-apps/facebook-app/facebook-app-configuration/README.md deleted file mode 100644 index 4d008649dc..0000000000 --- a/guides/app-guides/omnichannel-apps/facebook-app/facebook-app-configuration/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Facebook App Configuration - -Search Facebook in the **Apps** menu on your Rocket.Chat administration panel, as shown below: - -![](../../../../../.gitbook/assets/image%20%28503%29.png) - -Click open your Facebook app to see the settings available to you as an administrator: - -Following are the settings available: - -1. You can choose to display the agent's name or username: - -![](../../../../../.gitbook/assets/image%20%28399%29.png) - -2. You can enable/disable file sharing and also set a limit for maximum upload size - -![](../../../../../.gitbook/assets/image%20%28391%29.png) - -3. And you can select the type of files you wish the Agents and your Facebook Contacts can share under **Accepted Media Types** - -![](../../../../../.gitbook/assets/image%20%28394%29.png) - -4. Hit **Save Changes** to save your settings - -![](../../../../../.gitbook/assets/image%20%28537%29.png) - -Your Facebook app is successfully configured and you can see the new Facebook channel upon closing the administration panel, as shown below: - -![](../../../../../.gitbook/assets/image%20%28392%29.png) - diff --git a/guides/app-guides/omnichannel-apps/facebook-app/facebook-app-configuration/delete-facebook-app.md b/guides/app-guides/omnichannel-apps/facebook-app/facebook-app-configuration/delete-facebook-app.md deleted file mode 100644 index 7e80cd6ce0..0000000000 --- a/guides/app-guides/omnichannel-apps/facebook-app/facebook-app-configuration/delete-facebook-app.md +++ /dev/null @@ -1,10 +0,0 @@ -# Delete Facebook App - -To delete Facebook app from your workspace: - -Goto **Adminisitration**>**Apps**>**Facebook** - -![](../../../../../.gitbook/assets/image%20%28574%29.png) - -![](../../../../../.gitbook/assets/image%20%28579%29%20%281%29%20%281%29%20%281%29.png) - diff --git a/guides/app-guides/omnichannel-apps/facebook-app/facebook-app-configuration/facebook-app-authentication.md b/guides/app-guides/omnichannel-apps/facebook-app/facebook-app-configuration/facebook-app-authentication.md deleted file mode 100644 index 0ee7622522..0000000000 --- a/guides/app-guides/omnichannel-apps/facebook-app/facebook-app-configuration/facebook-app-authentication.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -description: >- - Authorise Omni-Gateway to send and receive Facebook messages on behalf your - account. ---- - -# Facebook App Authentication - -The first step after the configuration and resolving the dependencies is authentication with Facebook. - -1. Please click on the button shown below to start the authentication process with Facebook. - -![](../../../../../.gitbook/assets/image%20%28513%29.png) - -2. As soon as you click **Start Authentication** the Authentication process is started. Please authorize [Rocket.Chat](http://rocket.chat/)'s Facebook app to complete this process. - -![](../../../../../.gitbook/assets/image%20%28525%29.png) - -3. You are redirected to the following page where you can use your business email to authorize Facebook. - -![](../../../../../.gitbook/assets/image%20%28554%29.png) - - - -4. Confirm here. - -![](../../../../../.gitbook/assets/image%20%28552%29.png) - -You receive a success message with credentials, as shown below: - -![](../../../../../.gitbook/assets/image%20%28540%29.png) - - - -## Subscribe/Unsubscribe - -After successful authentication, as an admin, you are subscribed to the Facebook page by default. But you can choose to unsubscribe if you want, as shown below: - -![](../../../../../.gitbook/assets/image%20%28564%29.png) - -![](../../../../../.gitbook/assets/image%20%28567%29.png) - -## Edit Page Configuration - -You can edit page configuration as shown below: - -![](../../../../../.gitbook/assets/image%20%28565%29.png) - - - -Following are the settings available: - -1. You can route all the conversations coming from this page to a specific **Department**. Only the agents of this department are able to serve Facebook conversations coming from this page. -2. You can set the **Welcome Message** that will be sent to visitors when they send their first message. -3. The **Conversation Finished Message** will be sent to visitors when the conversation is closed -4. You can set the **Default message for offline service** that will be sent to your visitor when no agents are available online - -{% hint style="info" %} -Only the agents of this particular department are able to see and take the chats. -{% endhint %} - -![](../../../../../.gitbook/assets/image%20%28566%29.png) - -## Slash Commands - -{% hint style="info" %} -Here are the shortcuts you can use in Facebook Bot: - -1. **/facebook authorize** Starts the facebook authorization process -2. **/facebook unauthorize** Revoke facebook authorization -3. **/facebook edit pageId** Edit Page configuration for the given pageId -4. **/facebook help** Shows help message -{% endhint %} - diff --git a/guides/app-guides/omnichannel-apps/facebook-app/facebook-app-installation.md b/guides/app-guides/omnichannel-apps/facebook-app/facebook-app-installation.md deleted file mode 100644 index 37a2118724..0000000000 --- a/guides/app-guides/omnichannel-apps/facebook-app/facebook-app-installation.md +++ /dev/null @@ -1,17 +0,0 @@ -# Facebook App Installation - -To install Facebook App: - -1. Go to **Administration>Marketplace** and search Facebook -2. Click **Install** - -![](../../../../.gitbook/assets/image%20%28576%29%20%281%29.png) - -3. You are notified about all the permissions the app would access. Click **Agree**. - -![](https://gblobscdn.gitbook.com/assets%2F-M418Ul0aSTwf2PYsyPW%2F-M_S_NwTIbuGoUv-w4SR%2F-M_ScoA_OTPVMlMDjXlL%2Fimage.png?alt=media&token=a8aa5b13-ba19-41f9-86b0-c4563863e833) - -Facebook app is installed successfully and appears in the **Apps** menu on your Rocket.Chat administration panel, as shown below: - -![](../../../../.gitbook/assets/image%20%28573%29.png) - diff --git a/guides/app-guides/omnichannel-apps/rasa-app/README.md b/guides/app-guides/omnichannel-apps/rasa-app/README.md deleted file mode 100644 index 301addcc64..0000000000 --- a/guides/app-guides/omnichannel-apps/rasa-app/README.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -description: >- - Rasa is a framework for developing AI powered, industrial grade chatbots. It - is an open-source alternative for Dialogflow app. ---- - -# Rasa App - -Using Rocket.Chat and the Rasa Chatbot platform integration, you can set up and train your chatbot to respond to any query it's been trained for and configure it to act as an omnichannel agent. - -{% page-ref page="rasa-app-installation.md" %} - -{% page-ref page="rasa-app-configuration/" %} - -{% page-ref page="rasa-app-configuration/delete-rasa-app.md" %} - - - diff --git a/guides/app-guides/omnichannel-apps/rasa-app/rasa-app-configuration/README.md b/guides/app-guides/omnichannel-apps/rasa-app/rasa-app-configuration/README.md deleted file mode 100644 index 16916189d3..0000000000 --- a/guides/app-guides/omnichannel-apps/rasa-app/rasa-app-configuration/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# Rasa App Configuration - -Search Rasa in the **Apps** menu on your Rocket.Chat administration panel, as shown below: - -![](../../../../../.gitbook/assets/image%20%28461%29%20%281%29.png) - -Click open your Rasa app to see the settings available to you as an administrator. - -Following are the settings available: - -1. Set the[ name of the bot you have already configured](https://docs.rocket.chat/guides/apps-guides/omnichannel-apps/dialogflow-app/dialogflow-app-configuration/bot-user-configuration) in **Bot Username**. This is the user who will assist the conversations through Rasa integration. -2. **Rasa Server URL** is available inside your Rasa instance. -3. The Bot sends **Service Unavailable Message** to the visitor if service is unavailable. -4. The **Close Chat Message** is sent automatically when a chat is closed. -5. The Bot sends a **Handover Message** to the Visitor upon handover. -6. Upon bot-to-live agent handover, the visitor is transferred to **Default Handover Department Name.** -7. Enabling **Enable Callbacks** setting will allow the app to use only callback messages. This feature is useful when you are using Reminder messages in your RASA bot. -8. If **Hide Quick Replies** enabled, then all quick-replies will hide when a visitor clicks on any one of them. -9. Hit **Save.** - -![](../../../../../.gitbook/assets/image%20%28463%29.png) - -Rasa app is successfully configured. - diff --git a/guides/app-guides/omnichannel-apps/rasa-app/rasa-app-configuration/delete-rasa-app.md b/guides/app-guides/omnichannel-apps/rasa-app/rasa-app-configuration/delete-rasa-app.md deleted file mode 100644 index fd7ecac3cc..0000000000 --- a/guides/app-guides/omnichannel-apps/rasa-app/rasa-app-configuration/delete-rasa-app.md +++ /dev/null @@ -1,10 +0,0 @@ -# Delete Rasa App - -To delete the Rasa app from your workspace: - -Goto **Adminisitration**>**Apps**>**Rasa** - -![](../../../../../.gitbook/assets/image%20%28586%29.png) - -![](../../../../../.gitbook/assets/image%20%28583%29.png) - diff --git a/guides/app-guides/omnichannel-apps/rasa-app/rasa-app-installation.md b/guides/app-guides/omnichannel-apps/rasa-app/rasa-app-installation.md deleted file mode 100644 index af3257303d..0000000000 --- a/guides/app-guides/omnichannel-apps/rasa-app/rasa-app-installation.md +++ /dev/null @@ -1,20 +0,0 @@ -# Rasa App Installation - -To install Rasa App: - -1. Go to **Administration>Marketplace** and search Rasa - -![](../../../../.gitbook/assets/image%20%28468%29.png) - -2. Click **Install** - -![](../../../../.gitbook/assets/image%20%28469%29.png) - -Rasa app is installed successfully**.** - -![](../../../../.gitbook/assets/image%20%28460%29.png) - -It appears in the **Apps** menu on your Rocket.Chat administration panel, as shown below: - -![](../../../../.gitbook/assets/image%20%28461%29%20%281%29%20%281%29.png) - diff --git a/guides/app-guides/omnichannel-apps/salesforce-crm-integration/README.md b/guides/app-guides/omnichannel-apps/salesforce-crm-integration/README.md deleted file mode 100644 index 633847927c..0000000000 --- a/guides/app-guides/omnichannel-apps/salesforce-crm-integration/README.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -description: Integration between Rocket.Chat and Salesforce CRM platform. ---- - -# Salesforce CRM Integration - - - -{% page-ref page="salesforce-crm-installation.md" %} - -{% page-ref page="salesforce-crm-configuration/" %} - -{% page-ref page="salesforce-crm-configuration/delete-salesforce-crm-integration.md" %} - -{% page-ref page="salesforce-crm-agents-guide.md" %} - - - diff --git a/guides/app-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-agents-guide.md b/guides/app-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-agents-guide.md deleted file mode 100644 index 0f7631d334..0000000000 --- a/guides/app-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-agents-guide.md +++ /dev/null @@ -1,52 +0,0 @@ -# Salesforce CRM Agent's Guide - -If you have Salesforce CRM integration in place and a user sends you a message, - -![](../../../../.gitbook/assets/image%20%28482%29.png) - -It appears in your Rocket.Chat workspace just like any other omnichannel conversation, as shown below: - -![](../../../../.gitbook/assets/image%20%28478%29.png) - - But you can see your Salesforce CRM Integration in action as soon as you Click **Take It!** to serve this conversation. - -## Create Contact - -If it is a new visitor, you can create their contact inside your Salesforce CRM from within Rocket.Chat. - -![](../../../../.gitbook/assets/image%20%28470%29.png) - -![](../../../../.gitbook/assets/image%20%28480%29.png) - -![](../../../../.gitbook/assets/image%20%28479%29.png) - -## Contact Info - -If it is an existing contact, you can view their contact info, as shown below: - -![](../../../../.gitbook/assets/image%20%28477%29.png) - -## View Cases - -You can view their cases from within Rocket.Chat. - -![](../../../../.gitbook/assets/image%20%28476%29.png) - -## Create Cases - -You can create a new case for them from within Rocket.Chat. - -![](../../../../.gitbook/assets/image%20%28474%29.png) - -![](../../../../.gitbook/assets/image%20%28483%29.png) - -You can also view the Tasks, Events, and Calls for this visitor. - -![](../../../../.gitbook/assets/image%20%28446%29.png) - -{% hint style="info" %} -Use `/salesforce help` command to see all the slash commands we have made available to you in this integration. -{% endhint %} - -![](../../../../.gitbook/assets/image%20%28475%29.png) - diff --git a/guides/app-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-configuration/README.md b/guides/app-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-configuration/README.md deleted file mode 100644 index 686ae890e1..0000000000 --- a/guides/app-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-configuration/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Salesforce CRM Configuration - -Search Salesforce CRM Configuration in the **Apps** menu on your Rocket.Chat administration panel, as shown below: - -![](../../../../../.gitbook/assets/image%20%28464%29.png) - -Click open your Salesforce CRM app to see the settings available to you as an administrator. - -Following are the settings available: - -1. **Consumer Key** is available inside your Salesforce instance. -2. **Private Key** is also available inside your Salesforce instance. -3. **Salesforce Username**: This is the salesforce username used here for identification. -4. **Display Contact information when assigning the agent to the chat**: If enabled, Salesforce contact information will be displayed to agents when they are assigned to chats. -5. **Auto-Save/Update Contacts when a Chat Ends**: If enabled, the app will auto-save/update the visitor info on Salesforce once an agent closes the chat. -6. **Metadata Refresh Interval\(in Minutes\)**: For better user experience, the app will cache some meta-data information from Salesforce. This setting defines the duration within which the app will automatically refresh its cache -7. **Salesforce Session Timeout\(in Minutes\)**: This should be the same as Session Timeout setting on your Salesforce Setting \( Setup --> Session Settings --> Session Timeout --> Timeout Value \) -8. Hit **Save.** - -![](../../../../../.gitbook/assets/image%20%28466%29.png) - -Rasa app is successfully configured. - diff --git a/guides/app-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-configuration/delete-salesforce-crm-integration.md b/guides/app-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-configuration/delete-salesforce-crm-integration.md deleted file mode 100644 index d0a4076643..0000000000 --- a/guides/app-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-configuration/delete-salesforce-crm-integration.md +++ /dev/null @@ -1,10 +0,0 @@ -# Delete Salesforce CRM Integration - -To delete your Salesforce CRM Integration from your workspace: - -Goto **Adminisitration**>**Apps**>**Salesforce CRM Integration** - -![](../../../../../.gitbook/assets/image%20%28587%29.png) - -![](../../../../../.gitbook/assets/image%20%28593%29.png) - diff --git a/guides/app-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-installation.md b/guides/app-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-installation.md deleted file mode 100644 index f1da5a0c71..0000000000 --- a/guides/app-guides/omnichannel-apps/salesforce-crm-integration/salesforce-crm-installation.md +++ /dev/null @@ -1,18 +0,0 @@ -# Salesforce CRM Installation - -To install Salesforce CRM App: - -1. Go to **Administration>Marketplace** and search Salesforce CRM - -![](../../../../.gitbook/assets/image%20%28485%29.png) - -2. Click **Install** - -![](../../../../.gitbook/assets/image%20%28462%29.png) - -Salesforce CRM Integration is installed successfully. - -It appears in the **Apps** menu on your Rocket.Chat administration panel, as shown below: - -![](../../../../.gitbook/assets/image%20%28487%29.png) - diff --git a/guides/app-guides/omnichannel-apps/telegram-app/README.md b/guides/app-guides/omnichannel-apps/telegram-app/README.md deleted file mode 100644 index 04f4352027..0000000000 --- a/guides/app-guides/omnichannel-apps/telegram-app/README.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -description: Omnichannel Integration between Rocket.Chat and Telegram. ---- - -# Telegram App - -{% page-ref page="telegram-app-installation.md" %} - -{% page-ref page="telegram-app-configuration/" %} - -{% page-ref page="telegram-app-configuration/delete-telegram-app.md" %} - -{% page-ref page="telegram-app-agents-guide.md" %} - - - diff --git a/guides/app-guides/omnichannel-apps/telegram-app/telegram-app-agents-guide.md b/guides/app-guides/omnichannel-apps/telegram-app/telegram-app-agents-guide.md deleted file mode 100644 index 43396d39e0..0000000000 --- a/guides/app-guides/omnichannel-apps/telegram-app/telegram-app-agents-guide.md +++ /dev/null @@ -1,14 +0,0 @@ -# Telegram App Agent's Guide - -If you have Telegram app integration in place and a user sends you a message on your Telegram business page using their Telegram account, as shown below: - -![](../../../../.gitbook/assets/img_3509.png) - -it appears in your Rocket.Chat workspace just like any other omnichannel conversation. - -![](../../../../.gitbook/assets/image%20%28581%29.png) - - Click **Take It!** to serve this conversation. You can also send to and receive files and voice notes from your Telegram end-user, as shown below: - -![](../../../../.gitbook/assets/image%20%28584%29.png) - diff --git a/guides/app-guides/omnichannel-apps/telegram-app/telegram-app-configuration/README.md b/guides/app-guides/omnichannel-apps/telegram-app/telegram-app-configuration/README.md deleted file mode 100644 index dbc9d84798..0000000000 --- a/guides/app-guides/omnichannel-apps/telegram-app/telegram-app-configuration/README.md +++ /dev/null @@ -1,45 +0,0 @@ -# Telegram App Configuration - -Search Telegram in the **Apps** menu on your Rocket.Chat administration panel, as shown below: - -![](../../../../../.gitbook/assets/image%20%28505%29.png) - -Click open your Telegram app to see the settings available to you as an administrator: - -Following are the settings available: - -**Bot Token** sent by Telegram during Bot user activation. You can find the instructions [here](https://core.telegram.org/bots#6-botfather). - -Other Settings include: - -1. You can set a **Default Department**. Only the agents of this department are able to serve Telegram conversations -2. You can set the **Service Unavailable Message** that will be sent to the user if some error occurs like if no agents are online -3. You can set the **Welcome Message** that will be sent to visitors when they send their first message -4. The **Conversation Finished Message** will be sent to visitors when the conversation is closed - -{% hint style="info" %} -Only the agents of that particular department are able to see and take the chats. -{% endhint %} - - - -![](../../../../../.gitbook/assets/image%20%28524%29.png) - -6. You can choose to display the agent's name or username: - -![](../../../../../.gitbook/assets/image%20%28399%29.png) - -7. You can enable/disable file sharing and also set a limit for maximum upload size - -![](../../../../../.gitbook/assets/image%20%28391%29.png) - -8. And you can select the type of files you wish the Agents and your Telegram Contacts can share under **Accepted Media Types** - -![](../../../../../.gitbook/assets/image%20%28570%29.png) - -8. Hit **Save Changes** to save your settings - -![](../../../../../.gitbook/assets/image%20%28544%29.png) - -Your Telegram app is successfully configured and you can see the new Telegram channel upon closing the administration panel, as shown below: - diff --git a/guides/app-guides/omnichannel-apps/telegram-app/telegram-app-configuration/delete-telegram-app.md b/guides/app-guides/omnichannel-apps/telegram-app/telegram-app-configuration/delete-telegram-app.md deleted file mode 100644 index fbbe21a4d1..0000000000 --- a/guides/app-guides/omnichannel-apps/telegram-app/telegram-app-configuration/delete-telegram-app.md +++ /dev/null @@ -1,10 +0,0 @@ -# Delete Telegram App - -To Delete Telegram app from your workspace: - -Goto **Adminisitration**>**Apps**>**Telegram** - -![](../../../../../.gitbook/assets/image%20%28575%29.png) - -![](../../../../../.gitbook/assets/image%20%28578%29.png) - diff --git a/guides/app-guides/omnichannel-apps/telegram-app/telegram-app-installation.md b/guides/app-guides/omnichannel-apps/telegram-app/telegram-app-installation.md deleted file mode 100644 index 3eeef69964..0000000000 --- a/guides/app-guides/omnichannel-apps/telegram-app/telegram-app-installation.md +++ /dev/null @@ -1,17 +0,0 @@ -# Telegram App Installation - -To install Telegram App: - -1. Go to **Administration>Marketplace** and search Telegram -2. Click **Install** - -![](../../../../.gitbook/assets/image%20%28569%29.png) - -1. You are notified about all the permissions the app would access. Click **Agree**. - -![](../../../../.gitbook/assets/image%20%28401%29%20%281%29.png) - -Telegram app is installed successfully and appears in the **Apps** menu on your Rocket.Chat administration panel, as shown below: - -![](../../../../.gitbook/assets/image%20%28568%29.png) - diff --git a/guides/app-guides/omnichannel-apps/twitter-app/README.md b/guides/app-guides/omnichannel-apps/twitter-app/README.md deleted file mode 100644 index 788c73ab83..0000000000 --- a/guides/app-guides/omnichannel-apps/twitter-app/README.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -description: Omnichannel Integration between Rocket.Chat and Twitter. ---- - -# Twitter App - -{% page-ref page="twitter-app-installation.md" %} - -{% page-ref page="twitter-app-configuration/" %} - -{% page-ref page="twitter-app-configuration/twitter-app-authentication.md" %} - -{% page-ref page="twitter-app-agents-guide.md" %} - - - diff --git a/guides/app-guides/omnichannel-apps/twitter-app/twitter-app-agents-guide.md b/guides/app-guides/omnichannel-apps/twitter-app/twitter-app-agents-guide.md deleted file mode 100644 index afda6e324a..0000000000 --- a/guides/app-guides/omnichannel-apps/twitter-app/twitter-app-agents-guide.md +++ /dev/null @@ -1,14 +0,0 @@ -# Twitter App Agent's Guide - -If you have Twitter app integration in place and a user sends you a message on your Twitter business page using their Twitter account, as shown below: - -![](../../../../.gitbook/assets/1621376643503.jpg) - -it appears in your Rocket.Chat workspace just like any other omnichannel conversation. - -![](../../../../.gitbook/assets/image%20%28422%29.png) - - Click **Take It!** to serve this conversation. You can also send to and receive files from your Twitter end-user, as shown below: - -![](../../../../.gitbook/assets/image%20%28423%29.png) - diff --git a/guides/app-guides/omnichannel-apps/twitter-app/twitter-app-configuration/README.md b/guides/app-guides/omnichannel-apps/twitter-app/twitter-app-configuration/README.md deleted file mode 100644 index dac00f933c..0000000000 --- a/guides/app-guides/omnichannel-apps/twitter-app/twitter-app-configuration/README.md +++ /dev/null @@ -1,43 +0,0 @@ -# Twitter App Configuration - -Search Twitter in the **Apps** menu on your Rocket.Chat administration panel, as shown below: - -![](../../../../../.gitbook/assets/image%20%28409%29.png) - -Click open your Twitter app to see the settings available to you as an administrator: - -Following are the settings available: - -1. You can set a **Default Department**. Only the agents of this department are able to serve Twitter conversations -2. You can set the **Service Unavailable Message** that will be sent to your visitor when no agents are available online -3. You can set the **Welcome Message** that will be sent to visitors when they send their first message -4. The **Conversation Finished Message** will be sent to visitors when the conversation is closed - -{% hint style="info" %} -Only the agents of that particular department are able to see and take the chats. -{% endhint %} - - - -![](../../../../../.gitbook/assets/image%20%28400%29.png) - -5. You can choose to display the agent's name or username: - -![](../../../../../.gitbook/assets/image%20%28399%29.png) - -6. You can enable/disable file sharing and also set a limit for maximum upload size - -![](../../../../../.gitbook/assets/image%20%28391%29.png) - -7. And you can select the type of files you wish the Agents and your Twitter Contacts can share under **Accepted Media Types** - -![](../../../../../.gitbook/assets/image%20%28394%29.png) - -8. Hit **Save Changes** to save your settings - -![](../../../../../.gitbook/assets/image%20%28393%29.png) - -Your Twitter app is successfully configured and you can see the new Twitter channel upon closing the administration panel, as shown below: - -![](../../../../../.gitbook/assets/image%20%28392%29.png) - diff --git a/guides/app-guides/omnichannel-apps/twitter-app/twitter-app-configuration/delete-twitter-app.md b/guides/app-guides/omnichannel-apps/twitter-app/twitter-app-configuration/delete-twitter-app.md deleted file mode 100644 index ac6513702b..0000000000 --- a/guides/app-guides/omnichannel-apps/twitter-app/twitter-app-configuration/delete-twitter-app.md +++ /dev/null @@ -1,10 +0,0 @@ -# Delete Twitter App - -To delete the Twitter app from your workspace: - -Goto **Adminisitration**>**Apps**>**Twitter** - -![](../../../../../.gitbook/assets/image%20%28577%29.png) - -![](../../../../../.gitbook/assets/image%20%28582%29.png) - diff --git a/guides/app-guides/omnichannel-apps/twitter-app/twitter-app-configuration/twitter-app-authentication.md b/guides/app-guides/omnichannel-apps/twitter-app/twitter-app-configuration/twitter-app-authentication.md deleted file mode 100644 index dd4f9c88fa..0000000000 --- a/guides/app-guides/omnichannel-apps/twitter-app/twitter-app-configuration/twitter-app-authentication.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -description: >- - Authorise Omni-Gateway to send and receive Twitter messages on behalf your - account. ---- - -# Twitter App Authentication - -The first step after the configuration is authentication with Twitter. - -1. Please click on the button shown below to start the authentication process with Twitter. - -![](../../../../../.gitbook/assets/image%20%28398%29.png) - -2. As soon as you click **Start Authentication** the Authentication process is started. Please authorize [Rocket.Chat](http://rocket.chat/)'s Twitter app to complete this process. - -![](../../../../../.gitbook/assets/image%20%28414%29.png) - -3. You will be redirected to the following page where you can use your business email to authorize Twitter. - -![](../../../../../.gitbook/assets/image%20%28418%29.png) - -4. Confirm email. - -![](../../../../../.gitbook/assets/image%20%28417%29.png) - -6. Authorize. - -![](../../../../../.gitbook/assets/image%20%28416%29.png) - -You receive a success message with credentials, as shown below: - -![](../../../../../.gitbook/assets/image%20%28421%29.png) - diff --git a/guides/app-guides/omnichannel-apps/twitter-app/twitter-app-installation.md b/guides/app-guides/omnichannel-apps/twitter-app/twitter-app-installation.md deleted file mode 100644 index 8554115588..0000000000 --- a/guides/app-guides/omnichannel-apps/twitter-app/twitter-app-installation.md +++ /dev/null @@ -1,30 +0,0 @@ -# Twitter App Installation - -To install Twitter App: - -1. Go to **Administration>Marketplace** and search Twitter - -![](../../../../.gitbook/assets/image%20%28403%29.png) - -2. Click **Install** - -![](../../../../.gitbook/assets/image%20%28402%29.png) - -3. You are notified about all the permissions the app would access. Click **Agree**. - -![](../../../../.gitbook/assets/image%20%28401%29%20%281%29.png) - -Twitter app is installed successfully, as shown below: - -![](../../../../.gitbook/assets/image%20%28397%29.png) - -It appears in the **Apps** menu on your Rocket.Chat administration panel, as shown below: - -![](../../../../.gitbook/assets/image%20%28405%29.png) - -{% hint style="info" %} -Please note that Twitter is a paid app. The screenshots you see above are from our testing server that is why the price is $0.00. -{% endhint %} - -![](../../../../.gitbook/assets/image%20%28459%29%20%281%29%20%281%29%20%281%29%20%281%29.png) - diff --git a/guides/app-guides/omnichannel-apps/whatsapp-integration-twilio.md b/guides/app-guides/omnichannel-apps/whatsapp-integration-twilio.md deleted file mode 100644 index f9671d9cdb..0000000000 --- a/guides/app-guides/omnichannel-apps/whatsapp-integration-twilio.md +++ /dev/null @@ -1,66 +0,0 @@ -# SMS - -In this guide, we'll quickly lay out how to integrate Rocket.Chat with WhatsApp using Twilio's programmable SMS. - -## Step 1 - -Create an account at [Twilio](https://twilio.com/whatsapp/request-access). - -## Step 2 - -Log into your Twilio account. The default landing page is the **Dashboard** for your account. On the left side panel, click on the **All Products and Services** icon to expand it. - -Click on **Programmable SMS** and then on **WhatsApp**. - -## Step 3 - -For production purposes, you will need to have your account approved by WhatsApp \(see the **Senders** link on the same section\). In the meantime, you can do the same configuration in the **Sandbox** environment provided by Twilio. Click on **Sandbox.** - -On the first section, **Sandbox Configuration**, you'll need to enter your Rocket.Chat server details on the **When a message comes in** field. The format is as follows: - -`https:///api/v1/livechat/sms-incoming/twilio` - -## Step 4 - -On the Twilio console, “Programmable SMS Dashboard” -> “Whatsapp” -> “Senders” -> Select the Whatsapp number. This will open the “Configuration” screen, where the webhook configuration must be done in order to connect Twilio to Rocket.Chat Livechat - -![](../../../.gitbook/assets/image%20%28198%29.png) - -The webhook must be configured following the steps mentioned at [https://rocket.chat/docs/developer-guides/rest-api/livechat/sms-incoming/\#payload](https://rocket.chat/docs/developer-guides/rest-api/livechat/sms-incoming/#payload). Important: the webhook POST URL should be set only on “WHEN A MESSAGE COMES IN” field -**** - -## Step 5 - -On the Twilio console, go to “Programmable SMS Dashboard” and copy the “ACCOUNT SID” and “AUTH TOKEN” - -![](../../../.gitbook/assets/image%20%28197%29.png) - -## Step 6 - -Go to Rocket.Chat Server -> Administration -> Settings-> SMS -> Set to “Enabled” and select “Twilio” as service - - -![](../../../.gitbook/assets/image%20%28210%29.png) - -## Step 7 - -Go to Rocket.Chat Server -> Administration -> Settings -> SMS -> Section “Twilio” and add the “Account SID” and Auth Token you had copied on Step 5. After that, the Livechat+Whatsapp integration will be working properly in both directions. - -**** - -## Step 8 \(For SaaS customers only\) - -For Cloud customers, the file-sharing \(images, audio, videos, etc\) between LiveChat and Whatsapp might not work properly. - -To fix this issue go to Settings -> File Upload -> Amazon S3 -> Enable the “Proxy Uploads” setting. - - -**That's it!** - -Important Links: - -* [https://twilio.com](https://twilio.com) -* [https://twilio.com/whatsapp/request-access](https://twilio.com/whatsapp/request-access) -* [https://www.twilio.com/docs/sms/whatsapp/api\#facebook-business-manager-account](https://www.twilio.com/docs/sms/whatsapp/api#facebook-business-manager-account) -* [https://www.twilio.com/docs/sms/whatsapp/api\#using-phone-numbers-with-whatsapp](https://www.twilio.com/docs/sms/whatsapp/api#using-phone-numbers-with-whatsapp) - diff --git a/guides/app-guides/omnichannel-apps/whatsapp/README.md b/guides/app-guides/omnichannel-apps/whatsapp/README.md deleted file mode 100644 index 081b516f54..0000000000 --- a/guides/app-guides/omnichannel-apps/whatsapp/README.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -description: Omnichannel Integration between Rocket.Chat and WhatsApp Business. ---- - -# WhatsApp - -{% page-ref page="whatsapp-installation.md" %} - -{% page-ref page="whatsapp-configuration/" %} - -{% page-ref page="whatsapp-configuration/whatsapp-omnichannel-setup/" %} - -{% page-ref page="whatsapp-configuration/whatsapp-omnichannel-setup/create-360dialog-account.md" %} - -{% page-ref page="whatsapp-configuration/whatsapp-omnichannel-setup/connect-whatsapp-number-to-your-workspace.md" %} - -{% page-ref page="whatsapp-configuration/whatsapp-omnichannel-setup/whatsapp-set-up-with-360dialog-account.md" %} - -{% page-ref page="whatsapp-configuration/delete-whatsapp.md" %} - -{% page-ref page="whatsapp-agents-guide.md" %} - diff --git a/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-agents-guide.md b/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-agents-guide.md deleted file mode 100644 index 32d1abb20a..0000000000 --- a/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-agents-guide.md +++ /dev/null @@ -1,23 +0,0 @@ -# WhatsApp Agent's Guide - -If you have WhatsApp integration in place and a user sends you a message using their WhatsApp account, - -![](../../../../.gitbook/assets/image%20%28456%29.png) - -it appears in your Rocket.Chat workspace just like any other omnichannel conversation, as shown below: - -![](../../../../.gitbook/assets/image%20%28442%29.png) - - Click **Take It!** to serve this conversation. You can also send to and receive files from your WhatsApp end-user, as shown below: - -![](../../../../.gitbook/assets/image%20%28441%29.png) - -![](../../../../.gitbook/assets/image%20%28465%29.png) - -{% hint style="info" %} -Here are the shortcuts you can use in WhatsApp Bot: -1. Type **/whatsapp view-templates** to see all Template messages. -2. Type **/whatsapp send-template** to send a Template message -3.. Type **/whatsapp help** to see this shortcut again -{% endhint %} - diff --git a/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/README.md b/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/README.md deleted file mode 100644 index ce48681dc0..0000000000 --- a/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/README.md +++ /dev/null @@ -1,54 +0,0 @@ -# WhatsApp Configuration - -Search WhatsApp in the **Apps** menu on your Rocket.Chat administration panel, as shown below: - -![](../../../../../.gitbook/assets/image%20%28401%29.png) - -Click open your WhatApp instance to see the settings available to you as an administrator:‌ - -![](../../../../../.gitbook/assets/image%20%28430%29.png) - -Following are the settings available:‌ - -![](../../../../../.gitbook/assets/image%20%28434%29.png) - -* You can set a **Notification of undeliverable message**. It alerts the agent that a message was not delivered to the WhatsApp platform. - -![](../../../../../.gitbook/assets/image%20%28433%29.png) - -* You can choose to display the agent's name or username in **Agents Display Info**: - -![](../../../../../.gitbook/assets/image%20%28432%29.png) - -* You can enable/disable file sharing and also set a limit for maximum upload size. - -![](../../../../../.gitbook/assets/image%20%28438%29.png) - -* You can provide a list of media types comma-separated. Please leave it blank for accepting all media types. - -![](../../../../../.gitbook/assets/image%20%28437%29.png) - -* For a better user experience, the app caches some Template Messages meta-data information. You can define the duration \(in minutes\) within which the app will automatically refresh its cache.[ Further information on template messages is available here](https://developer.rocket.chat/guides/developer/apps-dev-guides/whatsapp-integration). - -![](../../../../../.gitbook/assets/image%20%28428%29.png) - -* Enter an endpoint URL here under **Message Status Endpoint URL**, where you want to receive the status of each message exchanged. - -![](../../../../../.gitbook/assets/image%20%28440%29.png) - -* Filter the statuses you wish to receive at the endpoint \("Message Status Endpoint URL"\) based on Message Type. - -![](../../../../../.gitbook/assets/image%20%28429%29.png) - -* The following information is provided by 360Dialog and is updated by Rocket.Chat, so you don't have to worry about it. - -![](../../../../../.gitbook/assets/image%20%28431%29.png) - -* Hit **Save Changes** to save your settings. - -![](../../../../../.gitbook/assets/image%20%28435%29.png) - -‌Your WhatsApp is successfully configured, and you can see the new WhatsApp channel upon closing the administration panel, as shown below: - -![](../../../../../.gitbook/assets/image%20%28436%29.png) - diff --git a/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/delete-whatsapp.md b/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/delete-whatsapp.md deleted file mode 100644 index 4e0cf809d9..0000000000 --- a/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/delete-whatsapp.md +++ /dev/null @@ -1,10 +0,0 @@ -# Delete Whatsapp - -To delete the Whatsapp app from your workspace: - -Goto **Adminisitration**>**Apps**>**Whatsapp** - -![](../../../../../.gitbook/assets/image%20%28589%29.png) - -![](../../../../../.gitbook/assets/image%20%28588%29.png) - diff --git a/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/README.md b/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/README.md deleted file mode 100644 index 0af8112c86..0000000000 --- a/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/README.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -description: >- - In order to support WhatsApp business API messages it is mandatory for you to - 360Dialog account. ---- - -# WhatsApp Omnichannel Setup - -After configuration, you see the following message: - -![](../../../../../../.gitbook/assets/image%20%28449%29%20%281%29.png) - - - diff --git a/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/connect-whatsapp-number-to-your-workspace.md b/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/connect-whatsapp-number-to-your-workspace.md deleted file mode 100644 index 2f2a1f8fce..0000000000 --- a/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/connect-whatsapp-number-to-your-workspace.md +++ /dev/null @@ -1,37 +0,0 @@ -# Connect WhatsApp Number to your Workspace - -After copying your newly generated API key on 360Dialog, come back to your Rocket.Chat workspace and click **Connect WhatsApp Number**. - -![](../../../../../../.gitbook/assets/image%20%28457%29%20%281%29%20%281%29.png) - -1. Paste your API key in API Key, -2. Select the **Environment**, -3. Associate this WhatsApp number to a specific **Department** if you want, -4. Set a **Welcome Message** if you want, -5. Set a **Conversation Finished Message** if you want. It is a message sent to your customer when an agent closes the conversation, -6. Set a **Default message for offline service** if you want. It is a message sent to your customer when no agents are available online, -7. Click **Connect**, - -as shown below: - -![](../../../../../../.gitbook/assets/image%20%28447%29%20%281%29%20%281%29.png) - -Your WhatsApp number is now connected to Rocket.Chat, as shown below: - -![](../../../../../../.gitbook/assets/image%20%28446%29%20%281%29%20%281%29.png) - -Your WhatsApp end-users can use this number to communicate with you using WhatsApp. - -{% hint style="info" %} -You can set up as many WhatsApp numbers as you want. -{% endhint %} - -{% hint style="info" %} -Here are the shortcuts you can use in WhatsApp Bot: -1. Type \***/whatsapp connect**\* to connect a new WhatsApp number. -2. Type \***/whatsapp numbers**\* to view and edit all connected WhatsApp numbers. -3. Type \***/whatsapp view-templates**\* to see all Template messages. -4. Type \***/whatsapp send-template**\* to send a Template message -5. Type \***/whatsapp help**\* to see this shortcut again -{% endhint %} - diff --git a/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/create-360dialog-account.md b/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/create-360dialog-account.md deleted file mode 100644 index 0dacf239cc..0000000000 --- a/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/create-360dialog-account.md +++ /dev/null @@ -1,34 +0,0 @@ -# Create 360Dialog Account - -If you don't have a 360Dialog account: - -Click **No, I don't** - -![](../../../../../../.gitbook/assets/image%20%28468%29%20%281%29.png) - -You are given the instructions to create one, as shown below: - -![](../../../../../../.gitbook/assets/image%20%28469%29%20%281%29%20%281%29.png) - -{% hint style="info" %} -Please follow the 360Dialog [documentation](https://docs.360dialog.com/360-client-hub/submission-process) to create your 360Dialog account. -{% endhint %} - -To create a new 360Dialog account: - -1. Click **Create Account** - -![](../../../../../../.gitbook/assets/image%20%28443%29%20%281%29.png) - -1. WhatsApp Business Account Submission form opens up, as shown below and you can see Rocket.Chat as partners with 360Dialog. - -![](../../../../../../.gitbook/assets/image%20%28453%29%20%281%29.png) - -Please fill out your details and click Accept Terms. - -![](../../../../../../.gitbook/assets/image%20%28445%29%20%281%29.png) - -{% hint style="info" %} -Please follow the 360Dialog [documentation](https://docs.360dialog.com/360-client-hub/submission-process) and follow the rest of the process mentioned there to create your 360Dialog account. After you get through the process you get the API you need to set up the App. -{% endhint %} - diff --git a/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/whatsapp-set-up-with-360dialog-account.md b/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/whatsapp-set-up-with-360dialog-account.md deleted file mode 100644 index c3eea1b3cb..0000000000 --- a/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/whatsapp-set-up-with-360dialog-account.md +++ /dev/null @@ -1,16 +0,0 @@ -# WhatsApp Set up With 360Dialog Account - -If you do have a 360Dialog account: - -Click **Yes, I do** - -![](../../../../../../.gitbook/assets/image%20%28448%29%20%281%29%20%281%29%20%281%29%20%281%29.png) - -You are given the instructions to login your 360Dialog account and add your company's WhatsApp number, as shown below: - -![](../../../../../../.gitbook/assets/image%20%28467%29.png) - -Please visit the below link to Connect your WhatsApp number after the above mentioned steps. - -{% page-ref page="connect-whatsapp-number-to-your-workspace.md" %} - diff --git a/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-installation.md b/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-installation.md deleted file mode 100644 index c8fc131efe..0000000000 --- a/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-installation.md +++ /dev/null @@ -1,28 +0,0 @@ -# WhatsApp Installation - -To install WhatsApp:‌ - -1. Go to **Administration>Marketplace** and search WhatsApp. - -![](../../../../.gitbook/assets/image%20%28424%29.png) - -1. Click **Install** - -![](../../../../.gitbook/assets/image%20%28426%29.png) - -1. You are notified about all the permissions the app would access. Click **Agree**. - -‌ - -![](../../../../.gitbook/assets/image%20%28427%29.png) - -WhatsApp is installed successfully, as shown below: - -‌ - -![](../../../../.gitbook/assets/image%20%28425%29.png) - -It appears in the **Apps** menu on your Rocket.Chat administration panel, as shown below: - -![](../../../../.gitbook/assets/image%20%28420%29.png) - diff --git a/guides/app-guides/poll.md b/guides/app-guides/poll.md deleted file mode 100644 index bc30f9f70b..0000000000 --- a/guides/app-guides/poll.md +++ /dev/null @@ -1,36 +0,0 @@ -# Poll - -Here you will find information on how to install and use the Poll App. - -## Installation - -You can install our _Poll_ Rocket.Chat App from your Rocket.Chat Administration area. - -* Go to **Administration > Marketplace** -* Search for the **Poll** app and click on the item -* Click on the **Install** button - -## How to use the Poll App - -After the installation, the Poll app will be available by using the slash command _/poll_ in the message box of the channel you want to create the poll - -![](../../.gitbook/assets/poll_3.png) - -After executing the /poll command, a pop-up will be triggered for the user to create the poll as below: - -![](../../.gitbook/assets/poll_1.png) - -* Insert your question: Field to add the question related to the poll -* Options field: the options available to reply the poll -* Choice type: you can select if the poll will be multiple choice or single choice -* Add a choice: Here you can add as many options you need for the poll -* Vote type: You can decide if the poll will have "open vote" or "confidential vote" - -After creating the poll, the same will be available within the channel/room for the users to vote - -![](../../.gitbook/assets/poll_5.png) - -In order to finish the poll, select the options menu available in the poll itself and select "Finish poll" - -![](../../.gitbook/assets/poll_6%20%281%29.png) - diff --git a/guides/app-guides/zoom.md b/guides/app-guides/zoom.md deleted file mode 100644 index 026d0e45fe..0000000000 --- a/guides/app-guides/zoom.md +++ /dev/null @@ -1,41 +0,0 @@ -# Zoom - -Here you will find information on how to install and use the Zoom App. - -## Installation - -You can install our Zoom Rocket.Chat App from your Rocket.Chat Administration area. - -* Go to **Administration > Marketplace** -* Search for the **Zoom** and click on the item -* Click on the **Install** button - -Now that you have the app installed in your server, it is time to configure the integration with your Zoom account. - -## Configuration - -### Requirements - -* First, you'll need to have at least a [Pro account](https://zoom.us/pricing) for users \(besides you\) to be able to create Zoom links. Those users will need to be added to your Zoom account. -* For other users to be able to use the Zoom App, their Rocket.Chat registered emails need to be the same as registered at Zoom. - -### Step 1: JWT App at Zoom Marketplace - -You'll need to create a new JWT app at [Zoom's Marketplace](https://marketplace.zoom.us/). - -* Sign in at [marketplace.zoom.us](https://marketplace.zoom.us/) -* Go to "Develop" at the top of the screen and select "Build app" in the menu -* Choose the "JWT" type and hit "Create" -* Enter a name for the app and hit "Create" -* Enter the Company Name and Developer Contact Information for your app and then hit "Continue". -* At the App Credentials tab page, _get the app's API Key and API Secret_. - -### Step 2: Configure the Slash command at Rocket.Chat - -* Go to the settings of the Zoom App in **Administration > Apps > Zoom** -* Place the API Key and API Secret at their respective fields and save. - -## Usage - -At any room, type "/zoom start" to generate a Zoom link. You can also type "/zoom start _topic_" to add a topic to the room. The topic can be any word or sentence. - diff --git a/guides/bots-guides/README.md b/guides/bots-guides/README.md deleted file mode 100644 index b6a7fff56a..0000000000 --- a/guides/bots-guides/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Bots Guides - diff --git a/guides/bots-guides/bot-glossary.md b/guides/bots-guides/bot-glossary.md deleted file mode 100644 index b7e62d5e05..0000000000 --- a/guides/bots-guides/bot-glossary.md +++ /dev/null @@ -1,2 +0,0 @@ -# Bot Glossary - diff --git a/guides/bots-guides/bots-architecture.md b/guides/bots-guides/bots-architecture.md deleted file mode 100644 index 0a3c625bbe..0000000000 --- a/guides/bots-guides/bots-architecture.md +++ /dev/null @@ -1,2 +0,0 @@ -# Bots Architecture - diff --git a/guides/bots-guides/configure-bot-environments.md b/guides/bots-guides/configure-bot-environments.md deleted file mode 100644 index 36d4cc6c8a..0000000000 --- a/guides/bots-guides/configure-bot-environments.md +++ /dev/null @@ -1,2 +0,0 @@ -# Configure bot environments - diff --git a/guides/bots-guides/create-a-bot-user.md b/guides/bots-guides/create-a-bot-user.md deleted file mode 100644 index c5074989fc..0000000000 --- a/guides/bots-guides/create-a-bot-user.md +++ /dev/null @@ -1,2 +0,0 @@ -# Create a Bot User - diff --git a/guides/bots-guides/create-and-run-a-bot/README.md b/guides/bots-guides/create-and-run-a-bot/README.md deleted file mode 100644 index 8e5928e38d..0000000000 --- a/guides/bots-guides/create-and-run-a-bot/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Create and run a Bot - diff --git a/guides/bots-guides/create-and-run-a-bot/run-a-botkit-bot.md b/guides/bots-guides/create-and-run-a-bot/run-a-botkit-bot.md deleted file mode 100644 index 79825b30db..0000000000 --- a/guides/bots-guides/create-and-run-a-bot/run-a-botkit-bot.md +++ /dev/null @@ -1,2 +0,0 @@ -# Run a Botkit Bot - diff --git a/guides/bots-guides/create-and-run-a-bot/run-a-botpress-bot.md b/guides/bots-guides/create-and-run-a-bot/run-a-botpress-bot.md deleted file mode 100644 index 428b0552c9..0000000000 --- a/guides/bots-guides/create-and-run-a-bot/run-a-botpress-bot.md +++ /dev/null @@ -1,2 +0,0 @@ -# Run a Botpress Bot - diff --git a/guides/bots-guides/create-and-run-a-bot/run-a-hubot-bot.md b/guides/bots-guides/create-and-run-a-bot/run-a-hubot-bot.md deleted file mode 100644 index e658825f08..0000000000 --- a/guides/bots-guides/create-and-run-a-bot/run-a-hubot-bot.md +++ /dev/null @@ -1,2 +0,0 @@ -# Run a Hubot bot - diff --git a/guides/bots-guides/create-and-run-a-bot/run-a-rasa-bot.md b/guides/bots-guides/create-and-run-a-bot/run-a-rasa-bot.md deleted file mode 100644 index 7efc1265f0..0000000000 --- a/guides/bots-guides/create-and-run-a-bot/run-a-rasa-bot.md +++ /dev/null @@ -1,2 +0,0 @@ -# Run a Rasa Bot - diff --git a/guides/bots-guides/create-and-run-a-bot/run-a-rocket.chat-sdk-bot.md b/guides/bots-guides/create-and-run-a-bot/run-a-rocket.chat-sdk-bot.md deleted file mode 100644 index f068cc46ea..0000000000 --- a/guides/bots-guides/create-and-run-a-bot/run-a-rocket.chat-sdk-bot.md +++ /dev/null @@ -1,2 +0,0 @@ -# Run a Rocket.Chat SDK Bot - diff --git a/guides/bots-guides/running-a-bbot-bot.md b/guides/bots-guides/running-a-bbot-bot.md deleted file mode 100644 index 339e0da15b..0000000000 --- a/guides/bots-guides/running-a-bbot-bot.md +++ /dev/null @@ -1,2 +0,0 @@ -# Running a bBot Bot - diff --git a/guides/bots-guides/running-a-hubot-bot.md b/guides/bots-guides/running-a-hubot-bot.md deleted file mode 100644 index 5ef01481c0..0000000000 --- a/guides/bots-guides/running-a-hubot-bot.md +++ /dev/null @@ -1,2 +0,0 @@ -# Running a Hubot bot - diff --git a/guides/bots-guides/running-a-rasa-bot.md b/guides/bots-guides/running-a-rasa-bot.md deleted file mode 100644 index a536055ebf..0000000000 --- a/guides/bots-guides/running-a-rasa-bot.md +++ /dev/null @@ -1,2 +0,0 @@ -# Running a Rasa Bot - diff --git a/guides/brand-and-visual-guidelines/README.md b/guides/brand-and-visual-guidelines/README.md deleted file mode 100644 index 6a64fae0b7..0000000000 --- a/guides/brand-and-visual-guidelines/README.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -description: Here you will find Guidelines about Rocket.Chat's Brand ---- - -# Brand and Visual Guidelines - -## Brand Positioning - -### Golden Circle - -![](../../.gitbook/assets/group-85.png) - -### Our Values - -![](../../.gitbook/assets/group-98.png) - -### Brand Product Personas - -![](../../.gitbook/assets/group-99.png) - -### Brand Idea - -![](../../.gitbook/assets/rocketscience-creates-magic.png) - -### Emotional Qualities - -![](../../.gitbook/assets/group-71.png) - -### Functional Qualities - -![](../../.gitbook/assets/group-87.png) - -### Features and Attributes - -![](../../.gitbook/assets/group-73.png) - diff --git a/guides/brand-and-visual-guidelines/brand-usage-examples.md b/guides/brand-and-visual-guidelines/brand-usage-examples.md deleted file mode 100644 index c261cb6dac..0000000000 --- a/guides/brand-and-visual-guidelines/brand-usage-examples.md +++ /dev/null @@ -1,26 +0,0 @@ -# Brand Usage Examples - -### Examples - -Below are some examples of how to use the new Rocket.Chat brand from online applications to offline. Be sure to maintain consistency in the application of all elements of the brand. - - - -### Brand in use - -![](../../.gitbook/assets/01.jpg) - -![](../../.gitbook/assets/insta.jpg) - -![](../../.gitbook/assets/insta02.jpg) - -![](../../.gitbook/assets/02.jpg) - -![](../../.gitbook/assets/03.jpg) - -![](../../.gitbook/assets/04.jpg) - -![](../../.gitbook/assets/05.jpg) - -![](../../.gitbook/assets/07.jpg) - diff --git a/guides/brand-and-visual-guidelines/colors.md b/guides/brand-and-visual-guidelines/colors.md deleted file mode 100644 index b23aa4d84d..0000000000 --- a/guides/brand-and-visual-guidelines/colors.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -description: Here you will find Guidelines about Rocket.Chat's Color ---- - -# Colors - -Here are our spacing tokens. They make easy to add padding, margins, and position coordinates. - -![HEX: \#F5455C RGB:245,69,92,1](../../.gitbook/assets/01_color%20%281%29.jpg) - -![HEX:\#1D74F5 RGB:29,116,245](../../.gitbook/assets/02_color.jpg) - -![HEX:\#FFD031 RGB:255,208,49 HEX:\#F38C39 RGB:243,140,57](../../.gitbook/assets/03_color.jpg) - -![HEX:\#9F22C7 RBG:159,34,199 HEX:\#2DE0A5 RGB:45,224,165](../../.gitbook/assets/04_color.jpg) - -![HEX:\#030C1A RGB:3,12,26 HEX:\#2F343D RGB:47,52,61](../../.gitbook/assets/05_color.jpg) - -![HEX:\#F7F8FA RGB:247,248,250 HEX:\#F2F3F5 RBG:242,243,245](../../.gitbook/assets/06_color.jpg) - -![HEX:\#CBCED1 RGB:203,206,209 HEX:9EA2A8 RGB:158,162,168](../../.gitbook/assets/08_color.jpg) - -![HEX:\#6C727A RGB:108,114,122](../../.gitbook/assets/09_color.jpg) - diff --git a/guides/brand-and-visual-guidelines/compositionsed.md b/guides/brand-and-visual-guidelines/compositionsed.md deleted file mode 100644 index 81e7104a50..0000000000 --- a/guides/brand-and-visual-guidelines/compositionsed.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -description: Here you will find Guidelines about Rocket.Chat's Modular Compositions ---- - -# Compositionsed - -Our identity system is modular, inspired by the open source concept. Regardless of the format, the patterns or pixel icons fit together, resulting in a simple system to assemble and easy to reproduce. Below are some examples of the use of modules in the construction of layouts from on to offline layouts. - -![](../../.gitbook/assets/01_modular.jpg) - - - -### Dont's - -![](../../.gitbook/assets/02_modular.jpg) - diff --git a/guides/brand-and-visual-guidelines/iconography.md b/guides/brand-and-visual-guidelines/iconography.md deleted file mode 100644 index 83f474dc66..0000000000 --- a/guides/brand-and-visual-guidelines/iconography.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -description: Here you will find Guidelines about Rocket.Chat's Iconography ---- - -# Iconography - -An icon must be a simple and direct graphic representation of the product, service or functions, such as actions and signage. Besides being very functional, it is a powerful tool for building our brand. - -The Rocket.chat icons translate the path between digital and physical. Used to convey our personality at all of our touch points. - - - -### Producing an icon - -Use the grid below to build new icons within the language Rocket.chat visual. Our grid is simple and functional, always calculating 2 in 2. Below, examples of grid for icons of 24px by 24 px. - -![](../../.gitbook/assets/01_icones.jpg) - - - -### More icons - -![](../../.gitbook/assets/02_icones.jpg) - diff --git a/guides/brand-and-visual-guidelines/logo.md b/guides/brand-and-visual-guidelines/logo.md deleted file mode 100644 index fffc0e29d7..0000000000 --- a/guides/brand-and-visual-guidelines/logo.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -description: Here you will find Guidelines about Rocket.Chat's Logo ---- - -# Logo - -The logo is one of the main resources to identify Rocket.Chat. So, use it consistently and coherent is fundamental to strengthen the brand image. - -![](../../.gitbook/assets/01_logo.jpg) - -![](../../.gitbook/assets/02_logo.jpg) - -![](../../.gitbook/assets/03_logo.jpg) - -![](../../.gitbook/assets/04_logo.jpg) - - - -### Protection area - -The proximity to other elements can reduce the visual impact of the logo. When applying any of the versions, an area of non-interference around the logo must be protected, equivalent to at least 3 balls from our symbol. - -![](../../.gitbook/assets/05_logo.jpg) - - - -### Position in icons - -Whenever placing the Rocket.Chat symbol in circular or square formats, use the circle in the center of our symbol as a reference for centering. - -![](../../.gitbook/assets/06_logo.jpg) - - - diff --git a/guides/brand-and-visual-guidelines/patterns.md b/guides/brand-and-visual-guidelines/patterns.md deleted file mode 100644 index 5bcf7ab48d..0000000000 --- a/guides/brand-and-visual-guidelines/patterns.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -description: Here you will find the Guidelines about Rocket.Chat's Patterns ---- - -# Patterns - -Our pattern style starts from pixel repetition within a modular grid. It is an important element for decorative use at all points of contact. - -## Producing a pattern - -Use the grid below to build new patterns within the language Rocket.Chat visual. Our grid is simple and functional, always calculating 2 in 2. Below, examples of pattern grids of 8 modules, 6 modules and 4 modules. - -![](../../.gitbook/assets/01_padrao.jpg) - -## Rounded corners - -**Watch out!** There are some rounded corners in our patterns keeping the calculation in 2 according to the module size that it was built in. - -![](../../.gitbook/assets/02_padrao.jpg) - -## More patterns - -![](../../.gitbook/assets/03_padrao.jpg) - diff --git a/guides/brand-and-visual-guidelines/photos.md b/guides/brand-and-visual-guidelines/photos.md deleted file mode 100644 index 4635086754..0000000000 --- a/guides/brand-and-visual-guidelines/photos.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -description: Here you will find Guidelines about Rocket.Chat's Photos ---- - -# Photos - -We increasingly want to appropriate a unique, contemporary language that conveys our value proposition in the stories that we are telling. So, we have some guidelines to inspire the way the Rocket.Chat style must be. - - - -### Treatment - -Our photos are high temperature and saturated, resulting in a simple, proprietary effect. - -![](../../.gitbook/assets/01_photo.jpg) - - - -### Image Bank - -First of all, when choosing a bank image photo, it is necessary to understand the content and context that it will bring to your art. Then you will do the right search and filter the best image. The more specific your search term is, the easier it will be to find the right image. - -![](../../.gitbook/assets/02_photo.jpg) - -![](../../.gitbook/assets/03_photo.jpg) - -![](../../.gitbook/assets/04_photo.jpg) - diff --git a/guides/brand-and-visual-guidelines/typography.md b/guides/brand-and-visual-guidelines/typography.md deleted file mode 100644 index 4e60bf662b..0000000000 --- a/guides/brand-and-visual-guidelines/typography.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -description: Here you will find Guidelines about Rocket.Chat's Typography ---- - -# Typography - -The Rocket.Chat typeface family brings flexibility and recognition. Its primary function is to have a fluid performance in the digital medium. Its unique design also helps to highlight aspects such as modernity, technology and simplicity. - -![](../../.gitbook/assets/01_typo.jpg) - -![](../../.gitbook/assets/02_typo.jpg) - -![](../../.gitbook/assets/03_typo.jpg) - - - -### Type Scale - -We follow a 6px baseline grid for achieving a vertical rhythm on all block-level elements in the app. - -![](../../.gitbook/assets/04_typo.jpg) - -![](../../.gitbook/assets/05_typo.jpg) - -![](../../.gitbook/assets/06_typo.jpg) - -![](../../.gitbook/assets/07_typo.jpg) - diff --git a/guides/developer-guides/README.md b/guides/developer-guides/README.md deleted file mode 100644 index a4de48f578..0000000000 --- a/guides/developer-guides/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Developer Guides - diff --git a/guides/developer-guides/code-styleguide/README.md b/guides/developer-guides/code-styleguide/README.md deleted file mode 100644 index a78af96e2e..0000000000 --- a/guides/developer-guides/code-styleguide/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Code Styleguide - diff --git a/guides/developer-guides/code-styleguide/css-styleguide.md b/guides/developer-guides/code-styleguide/css-styleguide.md deleted file mode 100644 index 2bcb42d5c1..0000000000 --- a/guides/developer-guides/code-styleguide/css-styleguide.md +++ /dev/null @@ -1,2 +0,0 @@ -# CSS Styleguide - diff --git a/guides/developer-guides/contributors-instant-start-on-gitpod.md b/guides/developer-guides/contributors-instant-start-on-gitpod.md deleted file mode 100644 index a02db4eafe..0000000000 --- a/guides/developer-guides/contributors-instant-start-on-gitpod.md +++ /dev/null @@ -1,2 +0,0 @@ -# Contributors instant start on Gitpod - diff --git a/guides/developer-guides/deeplink.md b/guides/developer-guides/deeplink.md deleted file mode 100644 index 88b3a70c31..0000000000 --- a/guides/developer-guides/deeplink.md +++ /dev/null @@ -1,2 +0,0 @@ -# Deeplink - diff --git a/guides/developer-guides/deprecation.md b/guides/developer-guides/deprecation.md deleted file mode 100644 index 88a8d0f027..0000000000 --- a/guides/developer-guides/deprecation.md +++ /dev/null @@ -1,2 +0,0 @@ -# Deprecation - diff --git a/guides/developer-guides/developing-on-windows-10.md b/guides/developer-guides/developing-on-windows-10.md deleted file mode 100644 index f0c0c80f4d..0000000000 --- a/guides/developer-guides/developing-on-windows-10.md +++ /dev/null @@ -1,2 +0,0 @@ -# Developing on Windows 10 - diff --git a/guides/developer-guides/development-workflow.md b/guides/developer-guides/development-workflow.md deleted file mode 100644 index 48f68fd9db..0000000000 --- a/guides/developer-guides/development-workflow.md +++ /dev/null @@ -1,2 +0,0 @@ -# Development Workflow - diff --git a/guides/developer-guides/embedded-layout.md b/guides/developer-guides/embedded-layout.md deleted file mode 100644 index 922d376ab6..0000000000 --- a/guides/developer-guides/embedded-layout.md +++ /dev/null @@ -1,2 +0,0 @@ -# Embedded Layout - diff --git a/guides/developer-guides/iframe-integration/README.md b/guides/developer-guides/iframe-integration/README.md deleted file mode 100644 index 2b4da8357b..0000000000 --- a/guides/developer-guides/iframe-integration/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Iframe Integration - diff --git a/guides/developer-guides/iframe-integration/iframe-events.md b/guides/developer-guides/iframe-integration/iframe-events.md deleted file mode 100644 index e860a6165d..0000000000 --- a/guides/developer-guides/iframe-integration/iframe-events.md +++ /dev/null @@ -1,2 +0,0 @@ -# Iframe Events - diff --git a/guides/developer-guides/iframe-integration/iframe-integration-sending-commands.md b/guides/developer-guides/iframe-integration/iframe-integration-sending-commands.md deleted file mode 100644 index bb7c0f9b59..0000000000 --- a/guides/developer-guides/iframe-integration/iframe-integration-sending-commands.md +++ /dev/null @@ -1,2 +0,0 @@ -# Iframe integration: Sending commands - diff --git a/guides/developer-guides/iframe-integration/what-is-iframe-auth/README.md b/guides/developer-guides/iframe-integration/what-is-iframe-auth/README.md deleted file mode 100644 index 3407e5c61a..0000000000 --- a/guides/developer-guides/iframe-integration/what-is-iframe-auth/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# What is iframe auth? - diff --git a/guides/developer-guides/iframe-integration/what-is-iframe-auth/testing-the-iframe-authentication.md b/guides/developer-guides/iframe-integration/what-is-iframe-auth/testing-the-iframe-authentication.md deleted file mode 100644 index 197744fc9f..0000000000 --- a/guides/developer-guides/iframe-integration/what-is-iframe-auth/testing-the-iframe-authentication.md +++ /dev/null @@ -1,2 +0,0 @@ -# Testing the iFrame Authentication - diff --git a/guides/developer-guides/internationalization.md b/guides/developer-guides/internationalization.md deleted file mode 100644 index 10b7570c85..0000000000 --- a/guides/developer-guides/internationalization.md +++ /dev/null @@ -1,2 +0,0 @@ -# Internationalization - diff --git a/guides/developer-guides/mobile-apps/README.md b/guides/developer-guides/mobile-apps/README.md deleted file mode 100644 index 97113902ba..0000000000 --- a/guides/developer-guides/mobile-apps/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Mobile apps - diff --git a/guides/developer-guides/mobile-apps/analytics-and-data-usage.md b/guides/developer-guides/mobile-apps/analytics-and-data-usage.md deleted file mode 100644 index 15d82f3a14..0000000000 --- a/guides/developer-guides/mobile-apps/analytics-and-data-usage.md +++ /dev/null @@ -1,2 +0,0 @@ -# Analytics & Data Usage - diff --git a/guides/developer-guides/mobile-apps/supporting-ssl-for-development-on-rocket.chat.md b/guides/developer-guides/mobile-apps/supporting-ssl-for-development-on-rocket.chat.md deleted file mode 100644 index 7a60fae1dd..0000000000 --- a/guides/developer-guides/mobile-apps/supporting-ssl-for-development-on-rocket.chat.md +++ /dev/null @@ -1,2 +0,0 @@ -# Supporting SSL for development on Rocket.Chat - diff --git a/guides/developer-guides/mobile-apps/whitelabeling-mobile-apps.md b/guides/developer-guides/mobile-apps/whitelabeling-mobile-apps.md deleted file mode 100644 index ee6e02e291..0000000000 --- a/guides/developer-guides/mobile-apps/whitelabeling-mobile-apps.md +++ /dev/null @@ -1,2 +0,0 @@ -# Whitelabeling mobile apps - diff --git a/guides/developer-guides/testing.md b/guides/developer-guides/testing.md deleted file mode 100644 index fd198fa058..0000000000 --- a/guides/developer-guides/testing.md +++ /dev/null @@ -1,2 +0,0 @@ -# Testing - diff --git a/guides/developer-guides/troubleshooting.md b/guides/developer-guides/troubleshooting.md deleted file mode 100644 index 8554af65aa..0000000000 --- a/guides/developer-guides/troubleshooting.md +++ /dev/null @@ -1,2 +0,0 @@ -# Troubleshooting - diff --git a/guides/developer-guides/two-factor-authentication.md b/guides/developer-guides/two-factor-authentication.md deleted file mode 100644 index c6786308f0..0000000000 --- a/guides/developer-guides/two-factor-authentication.md +++ /dev/null @@ -1,2 +0,0 @@ -# Two Factor Authentication - diff --git a/guides/developer-guides/ui-and-theming/README.md b/guides/developer-guides/ui-and-theming/README.md deleted file mode 100644 index 245cb3022f..0000000000 --- a/guides/developer-guides/ui-and-theming/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# UI and Theming - diff --git a/guides/developer-guides/ui-and-theming/custom-themes.md b/guides/developer-guides/ui-and-theming/custom-themes.md deleted file mode 100644 index d37748808b..0000000000 --- a/guides/developer-guides/ui-and-theming/custom-themes.md +++ /dev/null @@ -1,2 +0,0 @@ -# Custom Themes - diff --git a/guides/developer-guides/ui-and-theming/ui-colors.md b/guides/developer-guides/ui-and-theming/ui-colors.md deleted file mode 100644 index 263e2b30d1..0000000000 --- a/guides/developer-guides/ui-and-theming/ui-colors.md +++ /dev/null @@ -1,2 +0,0 @@ -# UI Colors - diff --git a/guides/developer-guides/ui-and-theming/ui-components.md b/guides/developer-guides/ui-and-theming/ui-components.md deleted file mode 100644 index c15b8d69ae..0000000000 --- a/guides/developer-guides/ui-and-theming/ui-components.md +++ /dev/null @@ -1,2 +0,0 @@ -# UI Components - diff --git a/guides/message-auditing-log.md b/guides/message-auditing-log.md deleted file mode 100644 index 95de82c0d7..0000000000 --- a/guides/message-auditing-log.md +++ /dev/null @@ -1,15 +0,0 @@ -# Message Auditing Log - -To check the details about who used the Message Auditing Panel and their search results, you must have the `auditor-log` role or the `can-audit-log` permission. - -To access message editing log: - -1. Click your user icon -2. Click **Message Auditing log** - -as shown below: - -![](../.gitbook/assets/image%20%28304%29.png) - -![](../.gitbook/assets/image%20%28305%29.png) - diff --git a/guides/message-auditing/README.md b/guides/message-auditing/README.md deleted file mode 100644 index 91c32ddb95..0000000000 --- a/guides/message-auditing/README.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -permalink: /administrator-guides/message-auditing/ -official: true -enterprise: true -description: Enterprise and Gold only feature ---- - -# Message Auditing Panel - -It allows the authorized user to: - -* Review messages between users in the Message Auditing Panel. -* Check details in the Auditing Log about the individuals who used the Message Auditing Panel. - -{% hint style="info" %} -Note that the auditor does not have to be a participant in the room to be able to read the messages. -{% endhint %} - -To access the message auditing panel: - -1. Click your user icon -2. Click **Message Auditing** - -as shown below: - -![](../../.gitbook/assets/image%20%28290%29.png) - -The message auditing panel will open up, as shown below: - -![](../../.gitbook/assets/image%20%28291%29.png) - -## Search and Review Messages - -### By Channel - -To search for a specific message in a specific channel: - -1. Type the message string that you could remember in the **Message** field. -2. Enter the from and to dates under **Date** to specify the period of time in which you think the message was sent. Or you can use a specific period from the drop-down next to Date. -3. Select the channels in the **Channel** dropdown, to narrow the details of your search. -4. Hit **Apply**. - -![](../../.gitbook/assets/image%20%28281%29.png) - -### By User - -To search for a specific message by a user: - -1. Type the message string that you want to check \(e.g. abusive language\) in the **Message** field. -2. Enter the from and to dates under **Date** to specify the period of time in which you think the message was sent. Or you can use a specific period from the drop-down next to Date. -3. Enter username whose message you want to check in the **Users** field. -4. Hit **Apply**. - -The conversations pops up, as shown below: - -![](../../.gitbook/assets/image%20%28298%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29.png) - -### By Direct Messages - -To search for a specific message by a user: - -1. Type the message string that you want to check in the **Message** field. \(optional\) -2. Enter the from and to dates under **Date** to specify the period of time. Or you can use a specific period from the drop-down next to Date. -3. Enter atleast two usernames whose private you want to check in the **Users** field. -4. Hit **Apply**. - -The conversation pop up, as shown below: - -![](../../.gitbook/assets/image%20%28302%29.png) - -### By Omnichannel - -Similary you can also audit an omnichannel conversation. - -To search for a specific omichannel conversation: - -1. Type the message string that you want to check in the **Message** field. -2. Enter the from and to dates under **Date** to specify the period of time. Or you can use a specific period from the drop-down next to Date. -3. Enter the visitor's in **Visitor** field. -4. Enter the agent's name who served this conversation you are looking for in **Agent** field. -5. Hit **Apply**. - -The conversation pops up, as shown below: - -![](../../.gitbook/assets/image%20%28299%29.png) - -![](../../.gitbook/assets/audit-log.png) - diff --git a/guides/message-auditing/assign-message-auditing-permissions-to-specific-users.md b/guides/message-auditing/assign-message-auditing-permissions-to-specific-users.md deleted file mode 100644 index 10819d94fe..0000000000 --- a/guides/message-auditing/assign-message-auditing-permissions-to-specific-users.md +++ /dev/null @@ -1,13 +0,0 @@ -# Assign Message Auditing Permissions to Specific Users - -The Auditor or Auditor Log roles have permissions to use Message Auditing features. - -As an admin, you assign permissions to use the Message Auditing Panel or Auditing Log to such roles. - -On the **Permissions** screen in the Administration UI, do the following to assign access: - -* For access to the Message Auditing Panel, select the `can-audit` option. -* For access to the Message Auditing Log, select the `can-audit-log` option. - -![](../../.gitbook/assets/image%20%28293%29.png) - diff --git a/guides/message-auditing/check-historical-edits-and-deletions-of-messages.md b/guides/message-auditing/check-historical-edits-and-deletions-of-messages.md deleted file mode 100644 index e92c92e24c..0000000000 --- a/guides/message-auditing/check-historical-edits-and-deletions-of-messages.md +++ /dev/null @@ -1,14 +0,0 @@ -# Check Historical Edits and Deletions of Messages - -Rocket.Chat recommends the following setting preferences to enable you to view any modified or removed messages. - -* Go to the Administration -* Scroll down to **Messages** on the left-side menu. - -Make sure to set your message preferences as follows: - -* Enable **Allow Message Editing** and **Keep Per Message Editing History** to see a history of all messages and not only the last edit made. -* Disable **Allow Message Deleting**, otherwise, messages show only the _message deleted_ status and you cannot see the complete message history. - -![](../../.gitbook/assets/image%20%28306%29.png) - diff --git a/guides/message-auditing/review-all-message-auditing-panelsearch-results.md b/guides/message-auditing/review-all-message-auditing-panelsearch-results.md deleted file mode 100644 index 87cb4add74..0000000000 --- a/guides/message-auditing/review-all-message-auditing-panelsearch-results.md +++ /dev/null @@ -1,14 +0,0 @@ -# Review All Message Auditing Panel Search Results - -The Message Auditing Panel returns all messages that match the search values defined in the mandatory fields for each option. - -However, the auditor cannot read the encrypted messages of other users. If you want to audit these messages too Rocket.Chat recommends that you disable message encryption: - -* Go to the Administration UI. - -![](../../.gitbook/assets/image%20%28297%29.png) - -* Scroll down to **E2E Encryption** on the left-side menu and diable it, as shown below: - -![](../../.gitbook/assets/image%20%28303%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29.png) - diff --git a/guides/mobile-guides/README.md b/guides/mobile-guides/README.md deleted file mode 100644 index 8ef7279fb0..0000000000 --- a/guides/mobile-guides/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Mobile Guides - diff --git a/guides/mobile-guides/push-notifications-1/README.md b/guides/mobile-guides/push-notifications-1/README.md deleted file mode 100644 index 1d4cfb2aeb..0000000000 --- a/guides/mobile-guides/push-notifications-1/README.md +++ /dev/null @@ -1,77 +0,0 @@ -# Push Notifications - -There are two ways to set up push notifications with Rocket.Chat: - -* Push Gateway -* Self Configured - -## Push Gateway - -If you and your users intend to use the official Rocket.Chat mobile applications; you need to choose this option. - -To allow push notifications to be received on our official mobile application by any server, we had to establish a push gateway containing our keys. In doing so, we protect our secret keys required to send through Apple\(APN\) and Google\(FCM\) to send you and your users notifications. - -## Self Configured - -When you choose to self configure the push notifications, things become a bit more complicated. First, you need to get keys from both Apple and Google and compile/release your own mobile applications to the app stores so your public keys will be distributed to your users. - -Then also, you will need to add your keys to Rocket.Chat. - -Then you will have to compile them for iOS and Android and submit them to the appropriate app stores for review. - -Finally, you would direct your users to download your custom version of the Rocket.Chat mobile applications. - -### Configuring for Android - -The Rocket.Chat native application for Android supports the FCM system. Here's how you configure it: - -1. Create a Firebase project in the Firebase console if you don't already have one. Click Add project. If you already have an existing Google project associated with your mobile app, select it from the Project name drop-down menu. Otherwise, enter a project name to create a new project. -2. _Optional:_ Edit your Project ID. Your project is given a unique ID automatically, and it's used in publicly visible Firebase features such as database URLs and your Firebase Hosting subdomain. You can change it now if you want to use a specific subdomain. -3. Follow the remaining setup steps and click Create a project \(or Add Firebase if you're using an existing project\) to begin provisioning resources for your project. This typically takes a few minutes. When the process completes, you'll be taken to the project overview. - -Now that you have a project, you can add your Android app to it: - -1. Click Add Firebase to your Android app and follow the setup steps. If you're importing an existing Google project, this may happen automatically, and you can [download the config file](http://support.google.com/firebase/answer/7015592) -2. When prompted, enter your app's package name. It's important to enter the package name your app uses; this can only be set when you add an app to your Firebase project -3. During the process, you'll download a `google-services.json` file. You can [download this file](http://support.google.com/firebase/answer/7015592) again at any time -4. After you add the initialization code, run your app to send verification to the Firebase console that you've successfully installed Firebase - -### Configuring for iOS - -For iOS, you need an apple developer account that costs US$99 per year. Follow instructions here: [https://github.com/raix/push/blob/v3.x/docs/IOS.md](https://github.com/raix/push/blob/v3.x/docs/IOS.md) - -### Configuring Rocket.Chat - -* Go to "Administration", then "Push" -* Set the Enable Gateway to False, then plug the information obtained from Apple and Google -* Restart server \(without this, it will not work\) - -Now you should be able to send a text message. Make sure that you have logged in to the server once and then closed the app. You should see a test notification after you pressed the send button. - -## Privacy - -Rocket.Chat allows for additional privacy configurations on push notifications: - -* Show Channel/Group/Username in Notification: Default is "TRUE", disabling this setting prevents the Channel, Group, Discussion, and Username from being sent to the push notification gateway -* Show Message in Notification: Default is "TRUE", disabling this setting prevents the message content from being sent to the push notification gateway - -If both settings are set to "FALSE", the user will receive a push notification without contextual information, as no such contextual information is sent to the push notification gateway in the first place. The user can then access the contextual information by opening the Rocket.Chat application. This is helpful in compliance-sensitive requirements like HIPAA to prevent sensitive information from being disclosed via push notification. - -## General Observations - -* If you don't want notifications, you can disable the gateway and not provide keys -* You cannot compile your own applications and use the Rocket.Chat push gateway -* For iOS, you need to [convert](https://github.com/raix/push/blob/master/docs/IOS.md) both the .cer and .p12 files into .pem files -* Once everything is configured on the admin settings, the server must be restarted - -## FAQ - -### I am getting, "Server notifications are misconfigured!" - -If you are getting this message and are using our push gateway, please make sure: - -1. Your server version is greater or equal to 0.74.3 -2. Registered \(you can check this by going to `http://yourserver/admin/cloud`\) - -_Thanks to @lvh1 and @lunitic for starting this doc_ - diff --git a/guides/mobile-guides/push-notifications-1/mobile-device-settings.md b/guides/mobile-guides/push-notifications-1/mobile-device-settings.md deleted file mode 100644 index bb1801f07f..0000000000 --- a/guides/mobile-guides/push-notifications-1/mobile-device-settings.md +++ /dev/null @@ -1,41 +0,0 @@ -# Mobile Device Settings - -## Push Notification Setting for Andriod - -Step 1: Go to Settings -> Apps. - -![](../../../.gitbook/assets/image%20%28167%29.png) - -Step 2: Find [Rocket.Chat](http://rocket.chat/) app, go to Notifications. - -![](../../../.gitbook/assets/image%20%28170%29.png) - -Step 3: Make sure the toggle for Notifications is ON. Tap on All to proceed to advanced settings. - -![](../../../.gitbook/assets/image%20%28168%29.png) - - -Step 4: Make sure you have the sound ON for the notifications. Select whether you want to show the app badge on the lock screen and whether you want the notifications to break through the Do not disturb mode. - -![](../../../.gitbook/assets/image%20%28171%29.png) - - - -## Push Notification Setting for Apple - -Step 1: Go to Settings -> Rocket.Chat. - -![](../../../.gitbook/assets/image%20%28173%29.png) - -Step 2: Notifications. - -![](../../../.gitbook/assets/image%20%28169%29.png) - -Step 3: Make sure the toggle for Allow Notifications is ON, and you have the sound ON for the notifications. Select whether you want to show the app badge on the lock screen. - -![](../../../.gitbook/assets/image%20%28172%29.png) - - - - - diff --git a/guides/mobile-guides/push-notifications-1/push-notification-security.md b/guides/mobile-guides/push-notifications-1/push-notification-security.md deleted file mode 100644 index 31768794e8..0000000000 --- a/guides/mobile-guides/push-notifications-1/push-notification-security.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -description: Enterprise/Gold Feature ---- - -# Secured Push Notification - -Instead of sending the message content through push gateway, Apple**,** and Google, if you are running Enterprise/Gold edition the Secured Push Notification sends just the ID of the message. - -Once the ID reaches the user’s device, the message is retrieved from Rocket.Chat server and the notification is created. - -{% hint style="info" %} -Please note that this process works for both situations if the user is using Rocket.Chat’s push gateway or his own. -{% endhint %} - -### Privacy - -In Privacy, you can configure what amount of information you want your push notification to have.‌ - -1. Go to **Administration** - -![](https://gblobscdn.gitbook.com/assets%2F-M418Ul0aSTwf2PYsyPW%2F-MIu7bi07NaZFbYSpJXT%2F-MIuGig9NcK8dKxenTuF%2Fimage.png?alt=media&token=12c524f6-d316-404d-8d1c-8900b61b22fb) - -2. Search '**Push'** in **Settings** - -​‌ - -![](https://gblobscdn.gitbook.com/assets%2F-M418Ul0aSTwf2PYsyPW%2F-MNoqPzvogBnNTSPZgYI%2F-MNowERLUMcrX9DNhVFy%2Fimage.png?alt=media&token=34db2493-3fc7-4c38-972b-52e0517731bf) - -3. Go to **Privacy** - -\*\*\*\* - -![](../../../.gitbook/assets/image%20%28165%29.png) - -![](https://gblobscdn.gitbook.com/assets%2F-M418Ul0aSTwf2PYsyPW%2F-MNzbyGrcLT-zbYvvICD%2F-MNze_IPgEDo_oOUzi8I%2Fimage.png?alt=media&token=053aa749-50ef-4b1d-912e-c795ecc7c58f) - -Above are the default settings. - -The first two toggles are self-explanatory. - -If **Fetch full message content from the server on receipt** is enabled and you're running the _Enterprise Edition or Gold_, the notification payload, that is sent through the Apple Push Notification service or Firebase Cloud Messaging service contains no message content. Instead, it contains only the message ID which is then used by the mobile app to fetch the message content from the [Rocket.Chat](http://rocket.chat/) server to display the notification. If something happens and the app cannot reach the server in time, a generic push notification message is shown. When the setting is disabled, the whole message content is sent via push notification payload so the mobile app can display the notification right away. - diff --git a/guides/mobile-guides/push-notifications-1/push-notifications-user-guide.md b/guides/mobile-guides/push-notifications-1/push-notifications-user-guide.md deleted file mode 100644 index 2c32f75665..0000000000 --- a/guides/mobile-guides/push-notifications-1/push-notifications-user-guide.md +++ /dev/null @@ -1,25 +0,0 @@ -# Push Notifications User Guide - -As a user, you can set your preference for push notifications as shown below. - -1. Click on your user and hit **My Account**. -2. Go to **Preferences**. - -![](../../../.gitbook/assets/image%20%28124%29.png) - -3. Go to **Notifications**. - -![](../../../.gitbook/assets/image%20%28122%29.png) - -4. Go to **Push Mobile Notifications For** and set them according to your needs. - -![](../../../.gitbook/assets/image%20%28144%29.png) - -### User Presence - -Another unrelated but important configuration for push notification is user presence. So you know that when you are online on your web/desktop client, you won't receive push messages on your mobile. - -If you are idle for 60 seconds, you will be considered away and all the mentions you have after 60 seconds will be pushed to your mobile client. But if you disable auto-away, you won't receive any push notifications unless your screen goes off due to your computer settings. - -![](../../../.gitbook/assets/image%20%2846%29.png) - diff --git a/guides/omnichannel-guides/README.md b/guides/omnichannel-guides/README.md deleted file mode 100644 index 4a766bf566..0000000000 --- a/guides/omnichannel-guides/README.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -description: >- - OmniChannel adds the ability to receive conversations from a pop-up livechat - support on your website or your business Facebook chat or any other channel - directly in Rocket.chat. ---- - -# Omnichannel Guides - -If you struggle to handle leads and clients in a multi-channel environment, you are losing valuable potential sales. That’s where Omnichannel comes into the picture. Omnichannel is a communication strategy essential to **acquire** and **retain** customers. It’s designed to create an exceptional customer experience across the company’s brands, building a better relationship with their audience. It gives consumers a choice to engage with companies on their favorite channels: - -* SMS -* Email -* Voice -* WhatsApp -* WeChat -* Telegram -* Facebook Messenger -* Live Chat, and so on. - -Omnichannel area of Rocket.Chat has two main users. - -1. [Admins](https://docs.rocket.chat/guides/omnichannel-guides/omnichannel) -2. [Managers](https://docs.rocket.chat/guides/omnichannel-guides/omnichannel-manger-guides) - diff --git a/guides/omnichannel-guides/omnichannel-admins-guide/README.md b/guides/omnichannel-guides/omnichannel-admins-guide/README.md deleted file mode 100644 index 612c98e51b..0000000000 --- a/guides/omnichannel-guides/omnichannel-admins-guide/README.md +++ /dev/null @@ -1,163 +0,0 @@ ---- -description: >- - OmniChannel adds the ability to receive conversations from a pop-up livechat - support on your website or your business Facebook chat or any other channel - directly in Rocket.chat. ---- - -# Omnichannel Admin's Guide - -Rocket.Chat had minimal Livechat as a feature for a long time. - -Recently the demand for production-grade Livechat has increased, so we did a complete rewrite of the package. - -## Activation - -### Enable Livechat feature - -To enable the Livechat feature on your Rocket.Chat instance: - -1. Go to **Administration** - -![](../../../.gitbook/assets/image%20%2830%29.png) - -1. Search '**Omnichannel'** in **Settings** and enable it - -![](../../../.gitbook/assets/image%20%2829%29.png) - -Now the admin will have access to _**Omnichannel Panel Settings**_ through a new menu called `Omnichannel` at the top left corner dropdown menu, as shown below: - -![](../../../.gitbook/assets/image%20%2832%29.png) - -## Configuration - -### **OmniChannel Basic Settings** - -1. Enable Omnichannel on your Rocket.Chat instance -2. Enable/Disable request comment from the agent when closing a conversation -3. Enable/Disable acceptance of new omnichannel requests when the agent is idle -4. Enable/Disable continuous sound notification for new omnichannel room/conversation -5. Enable/Disable file uploads in the livechat widget -6. Enable/Disable asking the visitor if they would like a transcript of the conversation. -7. Enter the message to show when asking for a transcript. - -![](../../../.gitbook/assets/image%20%2854%29.png) - -### Business Hour - -The feature turns on the omnichannel toggle for the set business hours automatically. And you will be able to receive omnichannel conversations after. The toggle will be turned off during off-hours. The enterprise workspaces can set up multiple business hours according to different time zones and their business needs. Community workspaces can only set up one set of business hours. - -1. Enable business hours -2. Choose multiple business hours according to your enterprise needs - -![](../../../.gitbook/assets/image%20%2857%29.png) - -### CRM Integration - -Please follow the steps given [here](https://docs.rocket.chat/guides/omnichannel/webhook). - -### External Frame - -If you have an app that you want to integrate with Rocket.Chat and use that app to embed an iFrame in Rocket.Chat to interact with your CRM. You can do so using External Frame. - -1. Enable external frame -2. Add the URL of your external frame -3. Enter the encryption key, as shown below: - -![](../../../.gitbook/assets/image%20%2858%29.png) - -### Facebook - -If your organization wishes to communicate with users of Facebook, you can enable integration within Rocket.Chat to do so. - -First, you will need to request an API key from Rocket.Chat Support then set it up within your Administration area. - -Send an email to [omni@rocket.chat](mailto:omni@rocket.chat) to request an API key. These are processed as time allows, and may take a few days, but you should have your key and secret soon enough. - -1. Enable Facebook integration -2. Enter your _OmniChannel API Key_ -3. _Enter OmniChannel API Secret_. **Save** the changes - -‌ - -![](https://gblobscdn.gitbook.com/assets%2F-M418Ul0aSTwf2PYsyPW%2F-MIz0NPAavAh0lU_m6WU%2F-MIz2cI9LQb6iNIthxPa%2Fimage.png?alt=media&token=b082edb1-8ac9-4f9b-84d5-5434d74bbbbf) - -### GDPR - -If you are a GDPR compliant company and want to allow your visitors to request to remove their data, Rocket.chat allows you to do that for all your incoming chats, as shown below: - -![](../../../.gitbook/assets/image%20%2861%29.png) - -### Livechat - -1. Set the title of your widget -2. Set the color of the title bar of your widget -3. Enable message character limit -4. Set the allowed message character length -5. Display offline form -6. Validate email address - -as shown below: - -![](../../../.gitbook/assets/image%20%2866%29.png) - -Now customize the appears of your livechat widget here for the hours when none of your agents are online/working. - -1. Set **Offline Form Unavailable Message**, if any -2. Set **Offline Tittle** -3. Set title bar **Color** for the offline widget -4. Give instructions, if any -5. Set the email address where you want to receive your offline messages -6. Set success message to display to the visitor when they have sent their message offline - -as shown below: - -![](../../../.gitbook/assets/image%20%2862%29.png) - -Some more settings that you can customize according to your needs are shown below: - -![](../../../.gitbook/assets/image%20%2863%29.png) - -### RD Station - -This is a CRM integration with RD Station. - -We set up your token, and when a new livechat conversation starts, your visitor information is sent to the RD station. - -![](../../../.gitbook/assets/image%20%2859%29.png) - -### Routing - -Routing allows you to define the behavior of your livechat queues. - -Detail of every setting is listed below: - -1. Select your preferred routing method \(Please refer to [this](https://docs.rocket.chat/guides/omnichannel-guides/omnichannel/livechat-queues) article for information on types of routing methods used in rocket chat\) -2. Enable acceptance of incoming omnichannel requests even if there are no online agents if you want -3. Enable if you want the routing system to attempt to find a bot agent before addressing new conversations to a human agent -4. Set the limit of **Max number of items displayed in the queue** if you want -5. Enable if you want to show the livechat queue to all the agents -6. Mention your External Queue Service URL if your _Omnichannel Routing Method_ is **External** **Service** -7. Enter **Secret Token** -8. Enable the **Waiting queue** if you want -9. Enter the **max. number of simultaneous chats** that you want your agents to attend -10. The **Number of recent chats to calculate estimated wait time** defines the number of last served rooms that will be used to calculate queue wait times -11. Enable **The Last-Chatted Agent Prefered** setting allocates chats to the agent who previously interacted with the same visitor if the agent is available when the chat starts - -![](../../../.gitbook/assets/image%20%2870%29.png) - -### Sessions - -Sessions allow you to decide how you want to handle your chat sessions when an agent goes offline: - -1. You can either forward the chat to another agent, close it or do nothing -2. Mention the amount of time in seconds that you want to wait before you want to consider that the agent has abandoned the chat -3. Enter the message to display to the visitor on closing the session -4. Mention the time you want to wait to consider visitor abandonment -5. Enable automatic closing of rooms abandoned by the visitor if you want -6. Enter the message to display to the visitor when the room is automatically closed by visitor inactivity - -As shown below: - -![](../../../.gitbook/assets/image%20%2869%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-admins-guide/livechat-widget-installation.md b/guides/omnichannel-guides/omnichannel-admins-guide/livechat-widget-installation.md deleted file mode 100644 index 6b043e82c9..0000000000 --- a/guides/omnichannel-guides/omnichannel-admins-guide/livechat-widget-installation.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -description: >- - In this section, you can learn how to install the livechat widget on your - website. ---- - -# Livechat Widget Installation - -To access **Livechat Installation** settings: - -Go to **Livechat Installation** in the omnichannel panel settings, as shown below: - -![](../../../.gitbook/assets/0%20%2810%29.png) - -## To install the livechat widget: - -1. Copy the given piece of code. - -![](../../../.gitbook/assets/1%20%2811%29.png) - -1. Paste this code above the last **</body>** tag on your site; the livechat widget will appear on the bottom right corner on your webpage. - diff --git a/guides/omnichannel-guides/omnichannel-admins-guide/omnichannel-email-inbox-account-configuration.md b/guides/omnichannel-guides/omnichannel-admins-guide/omnichannel-email-inbox-account-configuration.md deleted file mode 100644 index 15e5082aea..0000000000 --- a/guides/omnichannel-guides/omnichannel-admins-guide/omnichannel-email-inbox-account-configuration.md +++ /dev/null @@ -1,37 +0,0 @@ -# Omnichannel Email Inbox Account Configuration - -As an omnichannel administrator, you can configure and manage omnichannel email inboxes or email accounts for the email channels. - -To set up a new email inbox: - -1. Go to **Administration**: - -![](../../../.gitbook/assets/image%20%28241%29.png) - -2. Click **Email Inboxes**: - -![](../../../.gitbook/assets/image%20%28242%29.png) - -3. Click **+ New Email Inbox**: - -![](../../../.gitbook/assets/image%20%28252%29.png) - -Enter the following details: - -1. Add **Name** of the email inbox -2. Specify the **Email** address -3. Assign it to a **Department;** it is optional -4. Configure SMTP server -5. Toggle switch **Connect with SSL/TLS;** it is optional -6. Configure IMAP server and -7. Toggle switch **Connect with SSL/TLS** for IMAP**;** it is optional -8. Hit **Save** - -![](../../../.gitbook/assets/image%20%28240%29.png) - -Your email inbox is set up and, your agents can receive emails within Rocket.Chat now, as shown below: - -![](../../../.gitbook/assets/image%20%28255%29.png) - - - diff --git a/guides/omnichannel-guides/omnichannel-admins-guide/queue-types-routing-algorithm.md b/guides/omnichannel-guides/omnichannel-admins-guide/queue-types-routing-algorithm.md deleted file mode 100644 index fb701f69ec..0000000000 --- a/guides/omnichannel-guides/omnichannel-admins-guide/queue-types-routing-algorithm.md +++ /dev/null @@ -1,57 +0,0 @@ -# Queue Types \(Routing Algorithm\) - -There are the following types of queues in Rocket.Chat omnichannel solutions: - -* [Auto Selection \[default\]](queue-types-routing-algorithm.md#auto-selection) -* [Manual Selection](queue-types-routing-algorithm.md#manual-selection) -* [External Service](queue-types-routing-algorithm.md#external-service) -* [Load Balancing](queue-types-routing-algorithm.md#load-balancing)![](../../../.gitbook/assets/2021-06-10_22-31-38%20%281%29.jpg) -* [Load Rotation](queue-types-routing-algorithm.md#load-rotation)![](../../../.gitbook/assets/2021-06-10_22-31-38%20%281%29.jpg) - -## Auto Selection - -Each new chat will be routed to the agent that are accepting chats with the lower count. If there is more than one available agent with the same count, the chat will get the first in order. - -Consider the following department configuration: - -When a new chat comes, it'll be routed to `agent-1`, because he has `0` count and is the first in order, and the `agent-1`'s count will be increased to `1`: - -A new incoming chat will be routed to `agent-2` and so on until all agents have one chat each. So the next round comes, starting with `agent-1`. - -## Manual Selection - -With this queue method active, agents will have a new `Incoming Livechats` section: - -Each new chat will be available on the `Incoming Livechats` section to **all** agents. So any agent can take a new incoming chat. - -When the agent clicks on the incoming Livechat, the system will show the preview of the chat containing the messages sent by the visitor, so the agent can decide if he will take the chat or not. If the agent decides to take it, the incoming chat will be removed from the incoming chats list of the other agents. - -## External Service - -You can use an `External Service` to integrate your own agent routing rule into Livechat. - -Once you set up the `External Service` as the Livechat routing method, you must define the `External Queue Service URL` and `Secret Token` settings in the omnichannel admin panel. - -Rocket.Chat will send a GET request to the `External Queue Service URL` and the setting `Secret Token` is sent as a header `X-RocketChat-Secret-Token`, so you can validate if the request came from the Rocket.Chat. - -If your endpoint returns a response status other than 200, Rocket.Chat will try 10 times until it receives a valid response. - -Here is an example of the JSON data format that Livechat will wait for after submitting the get request: - -```javascript -{ - "_id": "CbbQkRAifP6HtDLSr", - "username": "valid.username" -} -``` - -After receiving the return from the endpoint in the format described above, Livechat will check that the `username` the field represents a valid Livechat agent and then follows the normal process flow. - -## Load Balancing![](../../../.gitbook/assets/2021-06-10_22-31-38%20%281%29.jpg) - -Load Balancing is an enterprise-only feature. It is also an auto-assignment algorithm, but it will consider the agent's online status and the time they have been chatting, contrary to auto-selection, which only considers the agent's online status. For instance, an agent was away on a short break; once he comes back, he will be assigned more chats than his fellow agent. So in this way, the algorithm will maintain a chat load balance between agents. - -## Load Rotation![](../../../.gitbook/assets/2021-06-10_22-31-38%20%281%29.jpg) - -Agent queues for service between online agents, without considering the previous chat's history attended or the number of open rooms in attendance. It's a mix between the Load Balancing and Auto Selection algorithms. - diff --git a/guides/omnichannel-guides/omnichannel-admins-guide/whatsapp-integration-twilio.md b/guides/omnichannel-guides/omnichannel-admins-guide/whatsapp-integration-twilio.md deleted file mode 100644 index e39db5d940..0000000000 --- a/guides/omnichannel-guides/omnichannel-admins-guide/whatsapp-integration-twilio.md +++ /dev/null @@ -1,66 +0,0 @@ -# WhatsApp Integration / Twilio - -Rocket.Chat does not have native integration with WhatsApp. However, it is possible to achieve a basic level of integration by using a third-party tool. In this guide, we'll quickly lay out how to integrate Rocket.Chat with WhatsApp using Twilio's programmable SMS. - -## Step 1 - -Create an account at [Twilio](https://twilio.com/whatsapp/request-access). - -## Step 2 - -Log into your Twilio account. The default landing page is the **Dashboard** for your account. On the left side panel, click on the **All Products and Services** icon to expand it. - -Click on **Programmable SMS** and then on **WhatsApp**. - -## Step 3 - -For production purposes, you will need to have your account approved by WhatsApp \(see the **Senders** link on the same section\). In the meantime, you can do the same configuration in the **Sandbox** environment provided by Twilio. Click on **Sandbox.** - -On the first section, **Sandbox Configuration**, you'll need to enter your Rocket.Chat server details on the **When a message comes in** field. The format is as follows: - -`https:///api/v1/livechat/sms-incoming/twilio` - -## Step 4 - -On the Twilio console, “Programmable SMS Dashboard” -> “Whatsapp” -> “Senders” -> Select the Whatsapp number. This will open the “Configuration” screen, where the webhook configuration must be done in order to connect Twilio to Rocket.Chat Livechat - -![](../../../.gitbook/assets/image%20%28198%29.png) - -The webhook must be configured following the steps mentioned at [https://rocket.chat/docs/developer-guides/rest-api/livechat/sms-incoming/\#payload](https://rocket.chat/docs/developer-guides/rest-api/livechat/sms-incoming/#payload). Important: the webhook POST URL should be set only on “WHEN A MESSAGE COMES IN” field -**** - -## Step 5 - -On the Twilio console, go to “Programmable SMS Dashboard” and copy the “ACCOUNT SID” and “AUTH TOKEN” - -![](../../../.gitbook/assets/image%20%28197%29.png) - -## Step 6 - -Go to Rocket.Chat Server -> Administration -> Settings-> SMS -> Set to “Enabled” and select “Twilio” as service - - -![](../../../.gitbook/assets/image%20%28210%29.png) - -## Step 7 - -Go to Rocket.Chat Server -> Administration -> Settings -> SMS -> Section “Twilio” and add the “Account SID” and Auth Token you had copied on Step 5. After that, the Livechat+Whatsapp integration will be working properly in both directions. - -**** - -## Step 8 \(For SaaS customers only\) - -For Cloud customers, the file-sharing \(images, audio, videos, etc\) between LiveChat and Whatsapp might not work properly. - -To fix this issue go to Settings -> File Upload -> Amazon S3 -> Enable the “Proxy Uploads” setting. - - -**That's it!** - -Important Links: - -* [https://twilio.com](https://twilio.com) -* [https://twilio.com/whatsapp/request-access](https://twilio.com/whatsapp/request-access) -* [https://www.twilio.com/docs/sms/whatsapp/api\#facebook-business-manager-account](https://www.twilio.com/docs/sms/whatsapp/api#facebook-business-manager-account) -* [https://www.twilio.com/docs/sms/whatsapp/api\#using-phone-numbers-with-whatsapp](https://www.twilio.com/docs/sms/whatsapp/api#using-phone-numbers-with-whatsapp) - diff --git a/guides/omnichannel-guides/omnichannel-agents-guides/README.md b/guides/omnichannel-guides/omnichannel-agents-guides/README.md deleted file mode 100644 index 13763089fd..0000000000 --- a/guides/omnichannel-guides/omnichannel-agents-guides/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Omnichannel Agent's Guides - -Being an omnichannel agent, you can log in to the server using your Id and password and land on the home screen, as shown below: - -![](../../../.gitbook/assets/image%20%28208%29.png) - -Make yourself available for entertaining chats by clicking the **Chats** toggle, as shown below: - -![](../../../.gitbook/assets/image%20%28207%29.png) - -The **Chat** button turns green, and you're now able to take chats, as shown below: - -![](../../../.gitbook/assets/image%20%28209%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-agents-guides/email-inbox-email-as-a-channel.md b/guides/omnichannel-guides/omnichannel-agents-guides/email-inbox-email-as-a-channel.md deleted file mode 100644 index 8c12eb6292..0000000000 --- a/guides/omnichannel-guides/omnichannel-agents-guides/email-inbox-email-as-a-channel.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -description: >- - You can receive emails inside your Rocket.Chat from your contacts, on an email - address your administration has configured within Rocket.Chat. ---- - -# Email Inbox \(Email as a Channel\) - -Once an email is part of a channel, your contacts can send emails to it to start a conversation. It will appear inside Rocket.Chat just like any other omnichannel livechat conversation. When you reply to an email message that has been sent to you, it will appear just like any other email in your contact’s inbox. - -As soon as your contact sends an email to the registered email address, it will appear in the queue just like any other omnichannel conversation, as shown below: - -![](../../../.gitbook/assets/image%20%28222%29.png) - -Click **Take it!** to take it off of the **Queued Chats** and be able to reply to it: - -![](../../../.gitbook/assets/image%20%28223%29.png) - -As soon as you take it, it will appear in **Chats in Progress** and, you can click **Reply via Email** to reply to it. - -![](../../../.gitbook/assets/image%20%28227%29.png) - -{% hint style="info" %} -Note that if you type without clicking **Reply via Email**, your contact will **NOT** receive your reply at all. -{% endhint %} - -Type your message and hit **Send** - -![](../../../.gitbook/assets/image%20%28226%29.png) - -It appears on your Rocket.Chat interface as shown below: - -![](../../../.gitbook/assets/image%20%28224%29.png) - -Your contact receives the message in email instantly. - -![](../../../.gitbook/assets/image%20%28225%29.png) - -## Invite a fellow agent to an email inbox - -Suppose you get an email and you need the assistance of your fellow agent on it; you can invite them to this inbox using `/invite @username`. - -![](../../../.gitbook/assets/image%20%28245%29.png) - -They are invited to the channel, as shown below: - -![](../../../.gitbook/assets/image%20%28244%29.png) - -{% hint style="info" %} -As soon as the fellow omnichannel agent is invited to an email inbox, they are all able to see all the old conversation that has happened before they arrival to that email inbox. -{% endhint %} - -And you can conversate with them internally on the same channel. - -![](../../../.gitbook/assets/image%20%28246%29.png) - -![](../../../.gitbook/assets/image%20%28248%29.png) - -{% hint style="info" %} -As stated above, to talk to your contact, you need to click **Reply via Email**. Every message sent without clicking the button remains internal. -{% endhint %} - -## Sending an Attachment - -To send an attachment: - -1. The agent first needs to upload the file in the channel, as shown below: - -![](../../../.gitbook/assets/image%20%28249%29.png) - -1. Click **Send via Email as attachment** - -![](../../../.gitbook/assets/image%20%28247%29.png) - -**It appears in the email of your omnichannel contact, as shown below:** - -![](../../../.gitbook/assets/image%20%28251%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/README.md b/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/README.md deleted file mode 100644 index cb9ecef4a8..0000000000 --- a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Omnichannel Chat - -When you are logged in to the server as an agent, have set your status to **Available** and a new chat appears for your department, you can click open it as shown below: - -![](../../../../.gitbook/assets/image%20%28298%29.png) - -![](../../../../.gitbook/assets/image%20%28185%29.png) - -You can click **Take it!** to start serving this chat. - - - diff --git a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/canned-responses-agent-guide.md b/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/canned-responses-agent-guide.md deleted file mode 100644 index 599b856f22..0000000000 --- a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/canned-responses-agent-guide.md +++ /dev/null @@ -1,24 +0,0 @@ -# Canned Responses Agent Guide - -Try using a canned response in a conversation. Start your message with `!` and a shortcut, or simply select the canned response from the drop-down list that will appear above your text field: - -![](../../../../.gitbook/assets/screenshot-2020-07-28-at-11.54.00.png) - -You can also use the same canned responses when talking to your peers outside Omnichannel. - -![](../../../../.gitbook/assets/canned.gif) - -To delete or edit a canned response, open the canned responses dialog in the respective department. Select the response that you wish to delete or edit. - -![](../../../../.gitbook/assets/screenshot-2020-07-28-at-12.08.17.png) - -To access canned responses and use them: - -* Click **Canned Responses** - -![](../../../../.gitbook/assets/image%20%28315%29.png) - -You can also add new canned responses here. - - - diff --git a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide.md b/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide.md deleted file mode 100644 index d9042021ae..0000000000 --- a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide.md +++ /dev/null @@ -1,50 +0,0 @@ -# Canned Responses Agent's Guide - -![](../../../../.gitbook/assets/enterprise.jpg) - -{% hint style="info" %} -Canned responses allow you to call pre-saved message snippets with shortcuts \(preceded with `!`\) to communicate a quick note to your visitors in Omnichannel conversations and for messaging in regular conversations inside your Rocket.Chat's workspace. -{% endhint %} - -Try using a canned response in a conversation. Start your message with `!` and a shortcut or you can select the canned response from the drop-down list that will appear above your text field: - -![](../../../../.gitbook/assets/image%20%28496%29.png) - -You can also use the same canned responses when talking to your peers outside Omnichannel if it is. - -![](../../../../.gitbook/assets/canned.gif) - -You can also access all the available canned responses for the current department or public by clicking **Canned Responses**, as shown below: - -![](../../../../.gitbook/assets/image%20%28515%29.png) - -Hover your cursor over the canned response you want to use in your current chat and hit **Use**: - -![](../../../../.gitbook/assets/image%20%28513%29.png) - -## Create Canned Response: - -If as an agent you have permission to create canned responses, you can create a canned response on the go in a conversation. - -To create a canned response in a conversation: - -Click **Create**: - -![](../../../../.gitbook/assets/image%20%28517%29.png) - -**Create Canned Response** window pops open. Please enter the details, as shown below : - -{% hint style="info" %} -To find details on creating a new canned response, please follow the omnichannel manager's guide on canned responses. -{% endhint %} - -{% page-ref page="../../omnichannel-manger-guides/canned-responses-omnichannel-managers-guide.md" %} - - - -![](../../../../.gitbook/assets/image%20%28523%29.png) - -Hit **Save**. Your new canned response is saved and ready to be used: - -![](../../../../.gitbook/assets/image%20%28502%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/README.md b/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/README.md deleted file mode 100644 index 0635056505..0000000000 --- a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# Canned Responses Agent's Guide - -![](../../../../../.gitbook/assets/2021-06-10_22-31-38%20%282%29.jpg) - -{% hint style="info" %} -Canned responses allow you to call pre-saved message snippets with shortcuts \(preceded with `!`\) to communicate a quick note to your visitors in Omnichannel conversations and for messaging in regular conversations inside your Rocket.Chat's workspace. -{% endhint %} - -Try using a canned response in a conversation. Start your message with `!` and a shortcut or you can select the canned response from the drop-down list that will appear above your text field: - -![](../../../../../.gitbook/assets/image%20%28501%29.png) - -You can also use the same canned responses when talking to your peers outside Omnichannel if it is. - -![](../../../../../.gitbook/assets/canned.gif) - -You can also access all the available canned responses for the current department or public by clicking **Canned Responses**, as shown below: - -![](../../../../../.gitbook/assets/image%20%28494%29.png) - -Hover your cursor over the canned response you want to use in your current chat and hit **Use**: - -![](../../../../../.gitbook/assets/image%20%28547%29.png) - -![](../../../../../.gitbook/assets/image%20%28557%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/agent-create-canned-response-from-with-in-chatroom.md b/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/agent-create-canned-response-from-with-in-chatroom.md deleted file mode 100644 index e542f48e66..0000000000 --- a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/agent-create-canned-response-from-with-in-chatroom.md +++ /dev/null @@ -1,18 +0,0 @@ -# Agent create canned response from with in chatroom - -If as an agent you have permission to create canned responses, you can create a canned response on the go in a conversation. - -To create a canned response in a conversation: - -Click **Create**: - -![](../../../../../.gitbook/assets/image%20%28521%29.png) - -**Create Canned Response** window pops open. Please enter the details, as shown below : - -![](../../../../../.gitbook/assets/image%20%28490%29.png) - -Hit **Save**. Your new canned response is saved and ready to be used: - -![](../../../../../.gitbook/assets/image%20%28558%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/create-canned-response-from-a-message.md b/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/create-canned-response-from-a-message.md deleted file mode 100644 index 681dd8527d..0000000000 --- a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/create-canned-response-from-a-message.md +++ /dev/null @@ -1,4 +0,0 @@ -# Create canned response from a message - -Feature Coming Soon! - diff --git a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/create-canned-response-from-with-in-a-chat-2.md b/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/create-canned-response-from-with-in-a-chat-2.md deleted file mode 100644 index 3c3fc3a900..0000000000 --- a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/create-canned-response-from-with-in-a-chat-2.md +++ /dev/null @@ -1,4 +0,0 @@ -# Create canned response from with in a chat - -Feature Coming Soon! - diff --git a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/create-canned-response-from-with-in-a-chat.md b/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/create-canned-response-from-with-in-a-chat.md deleted file mode 100644 index fc32637eda..0000000000 --- a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/create-canned-response-from-with-in-a-chat.md +++ /dev/null @@ -1,18 +0,0 @@ -# Create canned response from with in a chat - -If as an agent you have permission to create canned responses, you can create a canned response on the go in a conversation. - -To create a canned response in a conversation: - -Click **Create**: - -![](../../../../../.gitbook/assets/image%20%28512%29.png) - -**Create Canned Response** window pops open. Please enter the details, as shown below : - -![](../../../../../.gitbook/assets/image%20%28490%29.png) - -Hit **Save**. Your new canned response is saved and ready to be used: - -![](../../../../../.gitbook/assets/image%20%28535%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/omnichannel-chat-quick-actions.md b/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/omnichannel-chat-quick-actions.md deleted file mode 100644 index 06f9005188..0000000000 --- a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/omnichannel-chat-quick-actions.md +++ /dev/null @@ -1,80 +0,0 @@ -# Omnichannel Chat Quick Actions - -There are some quick actions you can perform in the chat, as shown below: - -![](../../../../.gitbook/assets/image%20%28335%29.png) - -Please find their details below. - -## Add a Chat to Favorites - -Click the **Star** to add the chat to favorites, as shown below: - -![](../../../../.gitbook/assets/image%20%28186%29.png) - - - -## Move to the Queue - -If you have taken the chat mistakenly or want the chat to be served by any other agent of your department, you can move it back to the queue using **Move to the Queue**, as shown below: - -![](../../../../.gitbook/assets/image%20%2819%29.png) - -![](../../../../.gitbook/assets/image%20%28192%29.png) - -The chat will start to appear in the Queued Chats for other agents to see. - -![](../../../../.gitbook/assets/image%20%28294%29.png) - -## Forward Chat - -### Forward to a Department - -If you want to forward a chat to the queue of any other department for any agent of that department to serve, you can use the **Forward Chat** option and mention the department, as shown below: - -![](../../../../.gitbook/assets/image%20%28308%29.png) - -![](../../../../.gitbook/assets/image%20%28313%29.png) - -### Forward to an Agent - -If you want to forward a chat to a particular agent \(from any department\) to serve, you can use the **Forward Chat** option and mention the user, as shown below: - -![](../../../../.gitbook/assets/image%20%28312%29.png) - -## Transcript - -The chat transcript will be sent to the omnichannel visitor as soon as the conversation ends, as shown below: - -![](../../../../.gitbook/assets/image%20%28310%29.png) - -![](../../../../.gitbook/assets/image%20%28311%29.png) - -## Place Chat On-Hold ![](../../../../.gitbook/assets/image%20%28326%29.png) - -When you are assisting chats, Omnichannel contacts can drop the conversation, but the chat will remain in your queue until it is closed. If this happens, you may have your service capacity compromised because you won't be able to pick up new conversations due to the limit of simultaneous chats per agent. To overcome this problem, you can place the chat on hold, as shown below: - -![](../../../../.gitbook/assets/image%20%28323%29.png) - -![](../../../../.gitbook/assets/image%20%28324%29.png) - -![](../../../../.gitbook/assets/image%20%28332%29.png) - -If the omnichannel contact engages again, the routing algorithm will try to find you first to assign this conversation. In case you are busy serving other chats at maximum capacity, the chat will be assigned to the next available agent. - -Or click **Resume** and engage with the same contact again at any time, as shown below: - -![](../../../../.gitbook/assets/image%20%28328%29.png) - -{% hint style="info" %} -You can place the chat on-hold manually only when the last message was sent by you to the contact. -{% endhint %} - -## Close a Chat - -After you have served the chat, you can close it, as shown below: - -![](../../../../.gitbook/assets/image%20%28309%29.png) - - - diff --git a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/omnichannel-contact-information.md b/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/omnichannel-contact-information.md deleted file mode 100644 index 573f1c49a7..0000000000 --- a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/omnichannel-contact-information.md +++ /dev/null @@ -1,16 +0,0 @@ -# Omnichannel Contact Information - -Click **Contact Information** to view the contact details, as shown below: - -![](../../../../.gitbook/assets/image%20%28329%29.png) - -![](../../../../.gitbook/assets/image%20%28327%29.png) - -## Edit contact information - -Click **Edit** to add any contact details you want, as shown below: - -![](../../../../.gitbook/assets/image%20%28325%29.png) - -![](../../../../.gitbook/assets/image%20%28322%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/room-information.md b/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/room-information.md deleted file mode 100644 index 164c39538b..0000000000 --- a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/room-information.md +++ /dev/null @@ -1,16 +0,0 @@ -# Room Information - -The room information menu allows you to see different stats related to the conversation. - -To access the information click **Room Information**, as shown below: - -![](../../../../.gitbook/assets/image%20%28320%29.png) - -Click **Edit** to add some further information: - -![](../../../../.gitbook/assets/image%20%28314%29.png) - -e.g., the topic discussed or priority and hit **Save**: - -![](../../../../.gitbook/assets/image%20%28316%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/search-messages-in-omnichannel-conversation.md b/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/search-messages-in-omnichannel-conversation.md deleted file mode 100644 index e32d6c3c6e..0000000000 --- a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chat/search-messages-in-omnichannel-conversation.md +++ /dev/null @@ -1,6 +0,0 @@ -# Search Messages in Omnichannel Conversation - -You can search a particular message in a conversation, as shown below: - -![](../../../../.gitbook/assets/image%20%28319%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chats.md b/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chats.md deleted file mode 100644 index d7f3b8e78d..0000000000 --- a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-chats.md +++ /dev/null @@ -1,34 +0,0 @@ -# Omnichannel Queue - -## Chats - -After you log in and wish to start taking omnichannel chats, you can make yourself **Available** as an omnichannel agent by clicking the **Chat** button, as shown below: - -![](../../../.gitbook/assets/image%20%28236%29.png) - -You can now see the omnichannel chats queue and are available to take the chats: - -![](../../../.gitbook/assets/image%20%28233%29.png) - -## Queue - -Click the **Queue** button to see the current omnichannel chats queue: - -![](../../../.gitbook/assets/image%20%28229%29.png) - -as shown below: - -![](../../../.gitbook/assets/image%20%28234%29.png) - -All the chats you are currently serving as an omnichannel agent appear in your queue: - -{% hint style="info" %} -As soon as you close them, they will disappear from the queue. -{% endhint %} - -![](../../../.gitbook/assets/image%20%28230%29.png) - -If you have been assigned multiple departments, you can sort them department wise, as shown below: - -![](../../../.gitbook/assets/image%20%28232%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-contact-center.md b/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-contact-center.md deleted file mode 100644 index 67b9e41083..0000000000 --- a/guides/omnichannel-guides/omnichannel-agents-guides/omnichannel-contact-center.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -description: >- - The contact center serves as a directory for omnichannel agents to access - contacts/visitor's information and archived conversation (that they have - served in the past) at any moment. ---- - -# Omnichannel Contact Center - -Click **Contact Center** to access Omnichannel Contact Center settings, as shown below: - -![](../../../.gitbook/assets/image%20%28219%29.png) - -{% hint style="info" %} -It allows you to pull up visitor information and chats for purposes like set tags of an old conversation, send broadcast messages, etc. -{% endhint %} - -Once you click on the **Contact Center** button following screen appears: - -![](../../../.gitbook/assets/image%20%28254%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29.png) - -## Contacts - -Under contacts, you can see all the contacts you have been serving as an omnichannel agent. - -![](../../../.gitbook/assets/image%20%28254%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29.png) - -### Search a Contact - -You can search a contact using their Name, phone and, email address. - -### View Contact Information - -Click on a contact to view its information and edit it, as shown below: - -![](../../../.gitbook/assets/image%20%28220%29.png) - -### Create a new Contact - -To create a new contact: - -1. Click **New Contact.** - -![](../../../.gitbook/assets/image%20%28212%29.png) - -2. Enter all the information and hit **Save**. - -![](../../../.gitbook/assets/image%20%28213%29.png) - - - -It appears in the search, as it shows: - -![](../../../.gitbook/assets/image%20%28221%29.png) - -## Chats - -All the chats you have taken appear under **Chats**, as you see below: - -![](../../../.gitbook/assets/image%20%28215%29%20%281%29.png) - -{% hint style="info" %} -No open chat appears in the **Contact Center**. A chat appears in the **Contact** **Center** as soon as it is closed because **Contact Center** only deals with archived chats. -{% endhint %} - -You can click to open a chat to view it: - -![](../../../.gitbook/assets/image%20%28216%29.png) - -![](../../../.gitbook/assets/image%20%28182%29.png) - -Go to the **Room Information** and click **View full conversation** to open the conversation - -![](../../../.gitbook/assets/image%20%28331%29.png) - -as shown below: - -![](../../../.gitbook/assets/image%20%28333%29.png) - -Click **Edit** to edit contact details as shown below: - -![](../../../.gitbook/assets/image%20%28330%29.png) - -You can edit any details you want here. - -![](../../../.gitbook/assets/image%20%28336%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-manger-guides/README.md b/guides/omnichannel-guides/omnichannel-manger-guides/README.md deleted file mode 100644 index 406f998fc2..0000000000 --- a/guides/omnichannel-guides/omnichannel-manger-guides/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Omnichannel Manager's Guides - -Being a livechat manager, you can access omnichannel livechat settings, as shown below: - -![](../../../.gitbook/assets/image%20%2867%29.png) - - - - - -![](../../../.gitbook/assets/image%20%2868%29.png) - -The detail of each menu is given in their respective article. - - - diff --git a/guides/omnichannel-guides/omnichannel-manger-guides/agents.md b/guides/omnichannel-guides/omnichannel-manger-guides/agents.md deleted file mode 100644 index 86d9e0f9ba..0000000000 --- a/guides/omnichannel-guides/omnichannel-manger-guides/agents.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -description: >- - In this menu, you can assign any user the Agent role. You can also search a - user in the list of agents and remove a user from the agents' list. ---- - -# Agents - -To access **Agents** settings: - -Go to Omnichannel panel settings, as shown below: - -![](../../../.gitbook/assets/0%20%288%29%20%285%29%20%285%29%20%285%29%20%285%29%20%285%29%20%284%29%20%284%29%20%281%29%20%289%29.png) - -Settings appear, as shown below: - -![](../../../.gitbook/assets/1%20%284%29.png) - -## **To assign a user the agent role:** - -1. Select the user from the drop-down, as shown below: - -![](../../../.gitbook/assets/2%20%284%29.png) - -1. Hit **Add**. - -![](../../../.gitbook/assets/3%20%284%29.png) - -1. The user has the Agent role now, as shown below: - -![](../../../.gitbook/assets/4%20%285%29.png) - -## **To Search an agent by name:** - -Enter the agent’s name in the search bar, as shown below: - -![](../../../.gitbook/assets/5%20%285%29.png) - -## **To remove a user from the agent's list:** - -To remove a user from the list of agents, hit **remove**, as shown below: - -![](../../../.gitbook/assets/6%20%285%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-manger-guides/canned-responses-omnichannel-managers-guide.md b/guides/omnichannel-guides/omnichannel-manger-guides/canned-responses-omnichannel-managers-guide.md deleted file mode 100644 index 05fa584ecb..0000000000 --- a/guides/omnichannel-guides/omnichannel-manger-guides/canned-responses-omnichannel-managers-guide.md +++ /dev/null @@ -1,102 +0,0 @@ -# Canned Responses Omnichannel Manager's Guide - -![](../../../.gitbook/assets/enterprise%20%281%29.jpg) - -{% hint style="info" %} -Canned responses allow you to save message snippets that you can call with shortcuts \(preceded with `!`\) to communicate a quick note to your visitors in Omnichannel and for messaging in regular conversations inside your Rocket.Chat's workspace. -{% endhint %} - - -If you are using canned responses for the first time, please check the Rocket.Chat Admin's guide for canned responses or contact your workspace Administrator to enable canned responses on your workspace. - -{% page-ref page="../../rocket.chat-administrator-guides/settings/canned-responses-rocket.chat-admins-guides.md" %} - -## To create a new canned response on your workspace: - -1. Go to **Omnichannel**: - -![](../../../.gitbook/assets/image%20%28499%29.png) - -2. Click **Canned responses** and hit **Create Your First Canned Response**: - -![](../../../.gitbook/assets/image%20%28531%29.png) - -Your new canned response screen is shown below: - -![](../../../.gitbook/assets/image%20%28532%29.png) - -### Shortcut - -Please set a Shortcut for your new canned response, as shown below: - -![](../../../.gitbook/assets/image%20%28517%29.png) - - - -### Message - -Enter your message using any placeholders you want, as shown below: - -![](../../../.gitbook/assets/image%20%28508%29.png) - -You can also preview the message at any time during the creation process: - -![](../../../.gitbook/assets/image%20%28519%29.png) - -### Tags - -You can set tags for your canned response if you want, as shown below: - -![](../../../.gitbook/assets/image%20%28510%29.png) - -{% hint style="info" %} -Canned responses tags help agents find canned responses specific to a particular topic. -{% endhint %} - -### Sharing - -You can share your canned response according to your need. - -1. **Public**: Anyone across your workspace can access your canned response. - -![](../../../.gitbook/assets/image%20%28522%29.png) - -2. **Department**: Anyone in the selected department can access your canned response. - -![](../../../.gitbook/assets/image%20%28495%29.png) - -3. **Private**: Only you and Omnichannel managers can access your canned response. - -![](../../../.gitbook/assets/image%20%28524%29.png) - -Please hit **Save**. Your new canned response is ready to be used in omnichannel conversations now, as shown below: - -![](../../../.gitbook/assets/image%20%28509%29.png) - - - - - -## Filtering Canned Responses: - -You can filter canned responses by: - -1. **Search**: ****You can filter by shortcut or message text. - -![](../../../.gitbook/assets/image%20%28529%29.png) - -2. **Sharing**: ****You can filter by sharing. - -![](../../../.gitbook/assets/image%20%28497%29.png) - - -3. **Created By**: You can filter by name of the user who created the canned responses. - -![](../../../.gitbook/assets/image%20%28502%29.png) - -To start using your newly created canned response, please check the Omnichannel Agent's guide for canned responses. - -{% page-ref page="../omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/" %} - - - diff --git a/guides/omnichannel-guides/omnichannel-manger-guides/canned-responses-omnichannel-managers-guide/README.md b/guides/omnichannel-guides/omnichannel-manger-guides/canned-responses-omnichannel-managers-guide/README.md deleted file mode 100644 index 9c553b7783..0000000000 --- a/guides/omnichannel-guides/omnichannel-manger-guides/canned-responses-omnichannel-managers-guide/README.md +++ /dev/null @@ -1,100 +0,0 @@ -# Canned Responses Omnichannel Manager's Guide - -![](../../../../.gitbook/assets/2021-06-10_22-31-38%20%283%29.jpg) - -{% hint style="info" %} -Canned responses allow you to save message snippets that you can call with shortcuts \(preceded with `!`\) to communicate a quick note to your visitors in Omnichannel and for messaging in regular conversations inside your Rocket.Chat's workspace. -{% endhint %} - - -If you are using canned responses for the first time, please check the Rocket.Chat Admin's guide for canned responses or contact your workspace Administrator to enable canned responses on your workspace. - -{% page-ref page="../../../rocket.chat-administrator-guides/settings/canned-responses-rocket.chat-admins-guides.md" %} - -## To create a new canned response on your workspace: - -1. Go to **Omnichannel**: - -![](../../../../.gitbook/assets/image%20%28502%29.png) - -2. Click **Canned responses** and hit **Create Your First Canned Response**: - -![](../../../../.gitbook/assets/image%20%28551%29.png) - -Your new canned response screen is shown below: - -![](../../../../.gitbook/assets/image%20%28553%29.png) - -### Shortcut - -Please set a Shortcut for your new canned response, as shown below: - -![](../../../../.gitbook/assets/image%20%28530%29.png) - - - -### Message - -Enter your message using any placeholders you want, as shown below: - -![](../../../../.gitbook/assets/image%20%28516%29.png) - -You can also preview the message at any time during the creation process: - -![](../../../../.gitbook/assets/image%20%28532%29.png) - -### Tags - -You can set tags for your canned response if you want, as shown below: - -![](../../../../.gitbook/assets/image%20%28518%29.png) - -{% hint style="info" %} -Canned responses tags help agents find canned responses specific to a particular topic. -{% endhint %} - -### Sharing - -You can share your canned response according to your need. - -1. **Public**: Anyone across your workspace can access your canned response. - -![](../../../../.gitbook/assets/image%20%28538%29.png) - -2. **Department**: Anyone in the selected department can access your canned response. - -![](../../../../.gitbook/assets/image%20%28498%29.png) - -3. **Private**: Only you and Omnichannel managers can access your canned response. - -![](../../../../.gitbook/assets/image%20%28506%29%20%282%29.png) - -Please hit **Save**. Your new canned response is ready to be used in omnichannel conversations now, as shown below: - -![](../../../../.gitbook/assets/image%20%28517%29.png) - - - - - -## Filtering Canned Responses: - -You can filter canned responses by: - -1. **Search**: ****You can filter by shortcut or message text. - -![](../../../../.gitbook/assets/image%20%28549%29.png) - -2. **Sharing**: ****You can filter by sharing. - -![](../../../../.gitbook/assets/image%20%28500%29.png) - - -3. **Created By**: You can filter by name of the user who created the canned responses. - -![](../../../../.gitbook/assets/image%20%28507%29.png) - -Hit **Save**. Your new canned response is saved and ready to be used: - -{% page-ref page="../../omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/" %} - diff --git a/guides/omnichannel-guides/omnichannel-manger-guides/canned-responses-omnichannel-managers-guide/manager-create-canned-response-from-within-chatroom.md b/guides/omnichannel-guides/omnichannel-manger-guides/canned-responses-omnichannel-managers-guide/manager-create-canned-response-from-within-chatroom.md deleted file mode 100644 index 029d197947..0000000000 --- a/guides/omnichannel-guides/omnichannel-manger-guides/canned-responses-omnichannel-managers-guide/manager-create-canned-response-from-within-chatroom.md +++ /dev/null @@ -1,18 +0,0 @@ -# Manager create canned response from within chatroom - - You can create a canned response on the go from within a conversation. - -To create a canned response in a conversation: - -Click **Create**: - -![](../../../../.gitbook/assets/image%20%28521%29.png) - -**Create Canned Response** window pops open. Please enter the details, as shown below : - -![](../../../../.gitbook/assets/image%20%28542%29.png) - -Hit **Save**. Your new canned response is saved and ready to be used: - -![](../../../../.gitbook/assets/image%20%28519%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-manger-guides/current-chats.md b/guides/omnichannel-guides/omnichannel-manger-guides/current-chats.md deleted file mode 100644 index dc51906f11..0000000000 --- a/guides/omnichannel-guides/omnichannel-manger-guides/current-chats.md +++ /dev/null @@ -1,66 +0,0 @@ -# Current Chats - -Current Chats contain all the conversations that you have received. If a chat was not deleted, it appears here. You have various filters available to you to sort these conversations. - -To access **Current Chats** settings: - -Go to Omnichannel panel settings, as shown below: - -![](../../../.gitbook/assets/0%20%288%29%20%285%29%20%285%29%20%285%29%20%285%29%20%285%29%20%284%29%20%284%29%20%281%29%20%284%29.png) - -Settings appear, as shown below: - -![](../../../.gitbook/assets/1%20%283%29.png) - -Filters are explained below: - -## 1. Sort by Visitor Name: - -To sort the conversations per Guest/Visitor Name, enter the name in the field, and your conversations are sorted, as shown below: - -![](../../../.gitbook/assets/2%20%283%29.png) - -## 2. Sort by Agent Name: - -To sort the conversations per Agent Name, enter the name in the field, and your conversations are sorted, as shown below: - -![](../../../.gitbook/assets/3%20%283%29.png) - -## 3. Sort by Department: - -To sort the conversations per Department, enter the name in the field, and your conversations are sorted, as shown below: - -![](../../../.gitbook/assets/4%20%283%29.png) - -## 4. Sort by Status: - -To sort the conversations per Open/Closed Status, choose the desired status in the field, as shown below: - -![](../../../.gitbook/assets/5%20%283%29.png) - -and your conversations are sorted, as shown below: - -![](../../../.gitbook/assets/6%20%283%29.png) - -## 5. Sort by From and To Date: - -To sort the conversations per From and To Date, enter the From and To Date in the field, and your conversations are sorted, as shown below: - -![](../../../.gitbook/assets/7%20%283%29.png) - -## 6. Sort by Tags or Custom Fields: - -You can also sort the conversations by Tags or any Custom Fields that you have added in your livechat widget user login. Enter the tag/custom field, and your conversations are sorted. - -## 7. Clear Filters: - -Hit **Clear filters** to clear all the filters you have set for your sort. - -![](../../../.gitbook/assets/8%20%282%29.png) - -## 8. Delete all Closed Chats: - -Hit **Delete all closed chats** to delete all the chats that are marked closed by the agents. - -![](../../../.gitbook/assets/9%20%282%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-manger-guides/custom-fields.md b/guides/omnichannel-guides/omnichannel-manger-guides/custom-fields.md deleted file mode 100644 index 6d9a2b10ea..0000000000 --- a/guides/omnichannel-guides/omnichannel-manger-guides/custom-fields.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -description: >- - In this menu, you can add some additional fields to the registration form your - visitors fill when they start a livechat conversation. ---- - -# Custom Fields - -To access **Custom Fields** settings: - -Go to Omnichannel panel settings, as shown below: - -![](../../../.gitbook/assets/0%20%288%29%20%285%29%20%285%29%20%285%29%20%285%29%20%285%29%20%284%29%20%284%29%20%281%29%20%283%29.png) - -Custom Fields menu appears, as shown below: - -![](../../../.gitbook/assets/1%20%287%29.png) - -The registration form has **Name**, **Email**, and **I need Help With…**/Department fields by default, as shown below: - -![](../../../.gitbook/assets/2%20%287%29.png) - -## To add your custom field: - -1. Hit Add. - -![](../../../.gitbook/assets/3%20%287%29.png) - -The following page appears. - -![](../../../.gitbook/assets/4%20%287%29.png) - -2. Enter your desired **field** that you want to add to your livechat registration form. E.g., **last-name** - -![](../../../.gitbook/assets/5%20%287%29.png) - -3. Enter its label. - -![](../../../.gitbook/assets/6%20%286%29.png) - -4. Select scope as **Visitor**. - -![](../../../.gitbook/assets/7%20%284%29.png) - -5. Make it visible. - -![](../../../.gitbook/assets/8%20%283%29.png) - -6. Set as a required field if you want. - -![](../../../.gitbook/assets/9%20%283%29.png) - -7. The type of the Last Name field is Input. - -![](../../../.gitbook/assets/10%20%282%29.png) - -8. Set the default value, if any. - -![](../../../.gitbook/assets/11%20%282%29.png) - -9. Set it **Public**. - -![](../../../.gitbook/assets/12%20%282%29.png) - -10. Hit Save. - -![](../../../.gitbook/assets/13%20%282%29.png) - -It is saved in the list of custom fields, as shown below: - -![](../../../.gitbook/assets/14%20%282%29.png) - -It appears in the livechat widget, as shown below: - -![](../../../.gitbook/assets/15%20%282%29.png) - -If the visitor sends a message, it gets reflected in the **Visitor’s Info** as well. - -![](../../../.gitbook/assets/16%20%282%29.png) - -## To delete a custom field: - -Hit remove. - -![](../../../.gitbook/assets/17%20%282%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-manger-guides/departments.md b/guides/omnichannel-guides/omnichannel-manger-guides/departments.md deleted file mode 100644 index b84347dccc..0000000000 --- a/guides/omnichannel-guides/omnichannel-manger-guides/departments.md +++ /dev/null @@ -1,115 +0,0 @@ -# Departments - -If you want the omnichannel conversations to be directed to different departments, you can set the departments up in your enterprise Rocket.Chat workspace. For example, you may have livechats coming from various pages of your website, and you might want them to be handled by respective departments. - -To access **Departments** settings: - -1. Go to the dots menu and hit **Omnichannel**. Omnichannel settings will open up. - -![](../../../.gitbook/assets/0%20%282%29.png) - -1. Hit **Departments.** - -![](../../../.gitbook/assets/1%20%282%29.png) - -To add a new **Department**: - -1. Click **New** **Department**. - -![](../../../.gitbook/assets/2%20%282%29.png) - -The new department's settings page will appear, as shown below: - -![](../../../.gitbook/assets/3%20%282%29.png) - -1. Enable a new department. - -![](../../../.gitbook/assets/4%20%282%29.png) - -1. Name your new department. - -![](../../../.gitbook/assets/5%20%282%29.png) - -1. Type in the description. It's optional. - -![](../../../.gitbook/assets/6%20%282%29.png) - -1. Allow your visitor to have the option to choose the department they want to talk to, as shown below: - -![](../../../.gitbook/assets/7%20%282%29.png) - -The option will appear to your customer in the livechat widget, as shown below: - -![](../../../.gitbook/assets/8%20%281%29.png) - -1. Forward your omnichannel conversations to the email address of your choice, during the hours you are offline, as shown below: - -![](../../../.gitbook/assets/9%20%281%29.png) - -1. Enable the radio button below if you want your department to show offline during off business hours. - -![](../../../.gitbook/assets/10%20%281%29.png) - -If you enable it will appear in the widget, as shown below: - -![](../../../.gitbook/assets/11%20%281%29.png) - -1. Mention the name of the channel you want to direct the offline messages to. - -![](../../../.gitbook/assets/12%20%281%29.png) - -1. Request your agent to set tags for the conversation for later searching purposes if you want. - -![](../../../.gitbook/assets/13%20%281%29.png) - -1. An agent can add conversation tags they want to use for this department. - -![](../../../.gitbook/assets/14%20%281%29.png) - -![](../../../.gitbook/assets/15%20%281%29.png) - -![](../../../.gitbook/assets/16%20%281%29.png) - -1. Assign the maximum number of simultaneous chats you want your agent to attend. - -![](../../../.gitbook/assets/17%20%281%29.png) - -1. Mention the number of seconds you want to wait to consider visitor abandonment. - -![](../../../.gitbook/assets/18%20%281%29.png) - -1. Mention the custom message you want to be displayed when the room is closed automatically by visitor inactivity. - -![](../../../.gitbook/assets/19%20%281%29.png) - -1. Mention the custom message you want to be displayed when the user is waiting in the queue. - -![](../../../.gitbook/assets/20%20%281%29.png) - -1. List the name of departments you would like to forward your department's chat to. ![](../../../.gitbook/assets/21%20%281%29.png) -2. After your new department is created, their assigned business hour will be displayed here. - - ![](../../../.gitbook/assets/22%20%281%29.png) - -3. Assign the agents to this department, as shown below: - -![](../../../.gitbook/assets/23%20%281%29.png) - -1. Successfully added agents would be listed, as shown below: - -![](../../../.gitbook/assets/24%20%281%29.png) - -1. Hit save. - -![](../../../.gitbook/assets/25%20%281%29.png) - -Your newly created department is displayed in the list of departments, as shown below: - -![](../../../.gitbook/assets/26%20%281%29.png) - -You can have the following behavior depending on how many departments you have created: - -* No departments: all Livechat agents will receive incoming chats using a round-robin rule. -* One department: all incoming chats will be offered to agents **only** on that department using a round-robin rule. -* More than one department: the visitor will have to choose what department he wants to talk to at registration. - diff --git a/guides/omnichannel-guides/omnichannel-manger-guides/livechat-appearance.md b/guides/omnichannel-guides/omnichannel-manger-guides/livechat-appearance.md deleted file mode 100644 index 9a4645c5cf..0000000000 --- a/guides/omnichannel-guides/omnichannel-manger-guides/livechat-appearance.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -description: >- - In this section, you can find out how to customize the appearance of your - livechat widget. ---- - -# Omnichannel Appearance - -To access **Omnichannel Appearance** settings: - -Go to **Omnichannel Appearance** in the omnichannel panel settings, as shown below: - -![](../../../.gitbook/assets/0%20%2812%29.png) - -You can customize the widget in the following four states. - -## Omnichannel On-line - -1. Set the title of your widget. -2. Set the color of the title bar of your widget. -3. Set the allowed message character length. -4. Show your agent’s information if you want. This information is the username. -5. Show your agent’s email address if you prefer, as shown below: - -![](../../../.gitbook/assets/1%20%2813%29.png) - -So according to the above settings, during online hours, your livechat widget appears, as shown below: - -![](../../../.gitbook/assets/2%20%2812%29.png) - -## Omnichannel Offline - -Customize the appears of your livechat widget here, for the hours when none of your agents are online/working. - -1. Turn on the offline form. -2. Set **Offline Form Unavailable Message**, if any. -3. Set **Offline Message**, if any. -4. Set **Offline Tittle.** -5. Set **Title bar color offline**. -6. Set the email address where you want to receive your offline messages. -7. Set success message to display to the visitor when they have sent their message offline. - -![](../../../.gitbook/assets/3%20%2811%29.png) - -So your livechat widget appears according to the above settings, during offline hours. - -## Registration Form - -Here you set up the fields you want to show on the registration form. - -1. Enable the registration form. -2. Show Name field. -3. Show the Email field. -4. Show any message on the registration form if you want. It appears right under the widget title. - -![](../../../.gitbook/assets/4%20%2811%29.png) - -## Conversation Finished - -1. Set up the message you want to display to the visitor when the conversation is finished. -2. Set up the message you want to display to the agent when the conversation is finished. - -As shown below: - -![](../../../.gitbook/assets/5%20%2811%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-manger-guides/livechat-triggers.md b/guides/omnichannel-guides/omnichannel-manger-guides/livechat-triggers.md deleted file mode 100644 index 2d35e52833..0000000000 --- a/guides/omnichannel-guides/omnichannel-manger-guides/livechat-triggers.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -description: >- - Livechat triggers is a setting that opens the livechat widget on your website - automatically. Your visitor will not have to go and open the widget. Livechat - Trigger will open the widget for them. ---- - -# Livechat Triggers - -To access **Livechat Triggers** settings: - -Go to Omnichannel panel settings, as shown below: - -![](../../../.gitbook/assets/0%20%288%29%20%285%29%20%285%29%20%285%29%20%285%29%20%285%29%20%284%29%20%284%29%20%281%29%20%282%29.png) - -Livechat Triggers menu appears, as shown below: - -![](../../../.gitbook/assets/1%20%288%29.png) - -## To set up a new trigger: - -1. Hit **New Trigger**. - -![](../../../.gitbook/assets/2%20%288%29.png) - -On the New Trigger screen: - -![](../../../.gitbook/assets/3%20%288%29.png) - -1. Enable your new trigger. - -![](../../../.gitbook/assets/4%20%288%29.png) - -1. Please select whether you want to run it for each visitor or want it to be a recurring pop-open. \(e.g., If your user goes to a different website and comes back to the same website, it pops-open\) - -![](../../../.gitbook/assets/5%20%288%29.png) - -1. Name your new trigger. - -![](../../../.gitbook/assets/6%20%287%29.png) - -1. Mention its description. - -![](../../../.gitbook/assets/7%20%285%29.png) - -1. Choose whether you want your livechat widget to pop-open once the user visits a particular page of your website in **Condition**. - -![](../../../.gitbook/assets/8%20%284%29.png) - -Or if you want to open it after a set time elapsed for the user while being on the page. - -![](../../../.gitbook/assets/9%20%284%29.png) - -Mention the time in seconds. - -![](../../../.gitbook/assets/10%20%283%29.png) - -1. Mention the **Action** you want your livechat widget to take. For now, there is only one option of sending a message to the visitor. - -![](../../../.gitbook/assets/11%20%283%29.png) - -You can also select if you want to impersonate the next available agent in the queue or use a bot/custom agent. - -![](../../../.gitbook/assets/12%20%283%29.png) - -Type your message. - -![](../../../.gitbook/assets/13%20%283%29.png) - -1. Hit **Save**. - -![](../../../.gitbook/assets/14%20%283%29.png) - -Your new livechat trigger is saved, as shown below: - -![](../../../.gitbook/assets/15%20%283%29.png) - -## To delete a livechat trigger: - -1. Hit **Remove**. - -![](../../../.gitbook/assets/16%20%283%29.png) - -1. Click **Yes**. - -![](../../../.gitbook/assets/17%20%283%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-manger-guides/managers.md b/guides/omnichannel-guides/omnichannel-manger-guides/managers.md deleted file mode 100644 index f9e671d768..0000000000 --- a/guides/omnichannel-guides/omnichannel-manger-guides/managers.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -description: >- - In this menu, you can assign any user the manager role. You can also search - for a user in the list of managers. ---- - -# Managers - -To access **Managers** settings: - -Go to Omnichannel panel settings, as shown below: - -![](../../../.gitbook/assets/0%20%288%29%20%285%29%20%285%29%20%285%29%20%285%29%20%285%29%20%284%29%20%284%29%20%281%29.png) - -Settings appear, as shown below: - -![](../../../.gitbook/assets/image%20%2825%29.png) - -## **To assign a user the manager role:** - -1. Select the user from the drop-down, as shown below: - -![](../../../.gitbook/assets/2%20%285%29.png) - -1. Hit **Add**. - -![](../../../.gitbook/assets/image%20%2826%29.png) - -1. The user has the manager role now, as shown below: - -![](../../../.gitbook/assets/image%20%2824%29.png) - -## **To Search a manager by name:** - -Enter the manager’s name in the search bar, as shown below: - -![](../../../.gitbook/assets/image%20%2827%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-manger-guides/monitors.md b/guides/omnichannel-guides/omnichannel-manger-guides/monitors.md deleted file mode 100644 index 26068486c7..0000000000 --- a/guides/omnichannel-guides/omnichannel-manger-guides/monitors.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -description: >- - In this menu, you can assign any user the Monitor role. You can also search a - user in the list of Monitors and remove a user from the list. ---- - -# Monitors - -![](../../../.gitbook/assets/2021-06-10_22-31-38.jpg) - -To access **Monitors** settings: - -To access **Monitors** settings: - -Go to Omnichannel panel settings, as shown below: - -![](../../../.gitbook/assets/0%20%288%29%20%285%29%20%285%29%20%285%29%20%285%29%20%285%29%20%284%29%20%284%29%20%281%29%20%2811%29.png) - -Settings appear, as shown below: - -![](../../../.gitbook/assets/1%20%286%29.png) - -## **To assign a user the Monitor role:** - -1. Select the user from the drop-down, as shown below: - -![](../../../.gitbook/assets/2%20%286%29.png) - -1. Hit **Add**. - -![](../../../.gitbook/assets/3%20%285%29.png) - -1. The user has the Monitor role now, as shown below: - -![](../../../.gitbook/assets/4%20%284%29.png) - -## **To Search a Monitor by name:** - -Enter the Monitor’s name in the search bar, as shown below: - -![](../../../.gitbook/assets/5%20%286%29.png) - -## **To remove a user from Monitor’s list:** - -To remove a user from the list of monitors, hit **remove**, as shown below: - -![](../../../.gitbook/assets/6%20%284%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-manger-guides/multiple-business-hours.md b/guides/omnichannel-guides/omnichannel-manger-guides/multiple-business-hours.md deleted file mode 100644 index 9e76e629ec..0000000000 --- a/guides/omnichannel-guides/omnichannel-manger-guides/multiple-business-hours.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -description: Multiple Business Hours is Rocket.Chat Enterprise Feature ---- - -# Business Hours - -The feature turns on the omnichannel toggle for the set business hours automatically. And you will be able to receive omnichannel conversations after. The toggle will be turned off during off-hours. The enterprise workspaces have an option to set up multiple business hours according to different time zones and their business needs. Community workspaces can only set up one set of business hours. - -To access **Business** **Hours** settings: - -1. Go to the dots menu and hit **Omnichannel**. Omnichannel settings will open up. - -![](../../../.gitbook/assets/image%20%28461%29.png) - -1. Hit **Business** **Hours.** - -![](../../../.gitbook/assets/image%20%28488%29.png) - -**To add a new set of hours to your workspace:** - -1. Click the add button. - -![](../../../.gitbook/assets/2%20%281%29.png) - -1. Name your new set of hours and select the department you are setting your business hours for. - -![](../../../.gitbook/assets/3%20%281%29.png) - -1. Select your timezone. - -![](../../../.gitbook/assets/4%20%281%29.png) - -1. Select open days of the week and business hours for each day. - -![](../../../.gitbook/assets/5%20%281%29.png) - -Note that if you are an agent who is in a conversation with a customer and you have reached the closing hour, you'll still finish the last conversation. After you have closed this conversation, the omnichannel toggle will be set to off automatically. - -1. Hit **Save.** - -![](../../../.gitbook/assets/6%20%281%29.png) - -Your new set of **Business** **Hours** are saved, as shown below: - -![](../../../.gitbook/assets/7%20%281%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-manger-guides/omnichannel-integration.md b/guides/omnichannel-guides/omnichannel-manger-guides/omnichannel-integration.md deleted file mode 100644 index 1645348acf..0000000000 --- a/guides/omnichannel-guides/omnichannel-manger-guides/omnichannel-integration.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -description: >- - If your organization wishes to communicate with users of Facebook, you can - enable an integration within Rocket.Chat to do so. ---- - -# Facebook Messenger - -First, you will need to request an API key from Rocket.Chat Support then set it up within your Administration area. - -## Requesting an API key - -Send an email to [omni@rocket.chat](mailto:omni@rocket.chat) to request an API key. These are processed as time allows, and may take a few days, but you should have your key and secret soon enough. - -## Setting up the integration - -1. Go to **Administration.** - - ![](../../../.gitbook/assets/image%20%2830%29.png) - -2. Search '**OmniChannel'** in **Settings** and on the **OmniChannel Administration Settings** page, find the **Facebook** section. -3. Enable Facebook integration. -4. Enter your _OmniChannel API Key_ and _OmniChannel API Secret_. **Save** the changes. - -![](../../../.gitbook/assets/image%20%2853%29.png) - -1. Return to the main Rocket.Chat interface. Go to Omnichannel panel settings, as shown below: - -![](../../../.gitbook/assets/0%20%288%29%20%285%29%20%285%29%20%285%29%20%285%29%20%285%29%20%284%29%20%284%29%20%281%29%20%283%29.png) - -1. Select Facebook Messenger and Enable. You'll be prompted to log in. Be sure to use the credentials that are tied to the page you wish to receive messages from. You'll have to do a standard Facebook OAuth login and grant your Rocket.Chat instance access to your pages. -2. Once you're returned from Facebook you'll see a list of the pages associated with that account. If you see none, make sure that the account has pages, then click RELOAD PAGES. -3. Enable the pages you'd like to get messages from, as shown below: - -![](../../../.gitbook/assets/image%20%2850%29.png) - -Return to the main interface. Now any livechat agents you have will see any incoming chats from that page. Responses go back to Facebook as if you were using Messenger itself. - diff --git a/guides/omnichannel-guides/omnichannel-manger-guides/priority-queue.md b/guides/omnichannel-guides/omnichannel-manger-guides/priority-queue.md deleted file mode 100644 index a4470e933d..0000000000 --- a/guides/omnichannel-guides/omnichannel-manger-guides/priority-queue.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -description: >- - Priorities feature enables you to change the order of Omnichannel queues based - on 'Estimated Due Time'. ---- - -# Priorities - -## ![](../../../.gitbook/assets/2021-06-10_22-31-38%20%281%29.jpg) - -Inquiries associated with priorities will be sorted by the estimated due time which means high-priorities chats will appear in the queue before others with either low priorities or without any priority set. - -{% hint style="info" %} -`Estimated Due Time` is an estimated time defined for customers to be served. If the estimated due time is, for instance, 10 minutes, the customer is supposed to wait in queue for up to 10 minutes until an agent takes the chat. -{% endhint %} - -To access **Priorities** settings: - -Go to **Priorities** in the omnichannel panel settings, as shown below: - -![](../../../.gitbook/assets/image%20%2849%29.png) - -1. Click **Add** button. - -![](../../../.gitbook/assets/image%20%2848%29%20%281%29.png) - -2. Name your Priority. - -3. Give a description. - -4. Set Due Time. - -5. Click **Save**. - -![](../../../.gitbook/assets/image%20%2847%29%20%281%29.png) - -Your new priority is saved, as shown below: - -![](../../../.gitbook/assets/image%20%2852%29.png) - -Each priority has its own\(unique\) `Estimated due time` field\(time in minutes\), so once a priority is associated with an `Inquiry/room`, this field will be used to set the queue inquiry order. As the priority is not mandatory, the Omnichannel queues will have inquiries with and without priorities. To support both possibilities, I refactored the structure of the fields that are used to sort the queues as displayed below - -**queueOrder:** -1 - default, is set when there is no priority associated with the room; -0 - Is set when a priority is associated with a room, so inquiries with the `queueOrder = 0` will be attended before inquiries without associated priority. - -**estimatedWaitingTimeQueue:** -This value is updated when a priority is defined in a room. This value comes from the 'Estimated due time' field of the priority defined in the room. - -**estimatedServiceTimeAt:** -This value represents the estimated time that the inquiry should be attended by an agent. When a priority is associated with an inquiry, this field will be updated and the new value will be the date/time\(ts field\) of the inquiry creation plus the estimated due time defined in the priority \(Time in Minutes\). So, let say the inquiry was created at `2020-04-16 20:12:23` and the estimated due time of the priority is `15 minutes`, the `estimatedServiceTimeAt` value will set to `2020-04-16 20:27:23`. - -Also, the agents and managers can change the inquiry priority through the `room info panel`: - -![](../../../.gitbook/assets/p3.png) - -When room priority is changed, the fields described above are updated. The same happens when `estimated due time field` is updated. Then, all inquiries associated with the priority will also be updated and this change will reflect in the queue. - -It's also possible to change room priority through the REST API. A new endpoint is available, as well as the endpoint that creates omnichannel rooms will support the `priority` when running the `enterprise` version, so it's possible to create a new omnichannel conversation with a priority associated. - diff --git a/guides/omnichannel-guides/omnichannel-manger-guides/real-time-monitoring.md b/guides/omnichannel-guides/omnichannel-manger-guides/real-time-monitoring.md deleted file mode 100644 index c997164cd0..0000000000 --- a/guides/omnichannel-guides/omnichannel-manger-guides/real-time-monitoring.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -description: >- - As the name suggests, real-time monitoring allows you to monitor your incoming - chats department wise in real-time. ---- - -# Real-time Monitoring - -If a livechat conversation is initiated, it gets reflected in the matrices in real-time, as shown below: - -![](../../../.gitbook/assets/0%20%289%29.png) - -![](../../../.gitbook/assets/1%20%289%29.png) - -To access **Real-time Monitoring** settings: - -Go to Real-time Monitoring in the omnichannel panel settings, as shown below: - -![](../../../.gitbook/assets/2%20%289%29.png) - -1. Select your desired department. You can select multiple departments if you want. - -![](../../../.gitbook/assets/image%20%2828%29.png) - -1. Select the auto-refresh time from the dropdown. - -![](../../../.gitbook/assets/4%20%289%29.png) - -Details of matrices are as follows: - -![](../../../.gitbook/assets/5%20%289%29.png) - -## **Total Conversations:** - -It represents the total number of conversations for the current day. - -## **Total Open Conversations:** - -It represents the total number of open conversations for your selected department for the current moment. - -## **Total Messages:** - -It represents the total number of messages received in all the current-day conversations. - -## **Total** **Visitors:** - -It represents the total number of livechat users for your selected department for the current day. - -![](../../../.gitbook/assets/6%20%288%29.png) - -## **Total Abandoned Chats:** - -It represents the total number of conversations abandoned by the visitor for your selected department's current day. - -## **Average of Abandoned Chats:** - -It represents the average of conversations abandoned by the visitor for your selected department's current day. - -## **Average of Chat Duration Time:** - -It represents the average duration of all the conversations of your selected department for the current day. - -![](../../../.gitbook/assets/7%20%286%29.png) - -## **Busiest Time:** - -It represents the hour during the current day when you received the largest number of incoming chats. - -## **Average of Service Available Time:** - -It represents how many hours the Omnichannel service was available during the day. It means that at least one agent available to serve Omnichannel conversations. - -## **Average of Service Time:** - -It represents the average time the agents spend serving chats in the current day. - -![](../../../.gitbook/assets/8%20%285%29.png) - -## **Average of Response Time:** - -If the selected chat pickup method is auto-selection, the chat is automatically assigned to an agent. This matrix represents the average of agents' responses to all the conversations that are automatically assigned to them. - -## **Average of First Response Time:** - -This matrix represents the average of the agent's first response to all the chats he picks up. - -## **Average of Reaction Time:** - -This matrix represents the average of the agent's reaction to the assigned chats. - -## **Average of Waiting:** - -It represents the average time your visitor spent in the waiting queue. - diff --git a/guides/omnichannel-guides/omnichannel-manger-guides/tags.md b/guides/omnichannel-guides/omnichannel-manger-guides/tags.md deleted file mode 100644 index 7cacfff1f9..0000000000 --- a/guides/omnichannel-guides/omnichannel-manger-guides/tags.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -description: >- - As a Livechat Manager, you can set Tags to be assigned to the livechat - conversations by the agents. Tags can be used later for easy searching and - sorting of livechat conversations. ---- - -# Tags - -![](../../../.gitbook/assets/2021-06-10_22-31-38.jpg) - -To access **Tags** settings: - -1. Go to **Tags** in the omnichannel panel settings, as shown below: - -![](../../../.gitbook/assets/0%20%2815%29.png) - -1. Click the Add button, as shown below: - -![](../../../.gitbook/assets/1%20%2815%29.png) - -1. Name your new Tag. -2. Give a description: - -5.Select the department the new Tag belongs to, as shown below: - -![](../../../.gitbook/assets/2%20%2814%29.png) - -6.Hit **Save**. - -![](../../../.gitbook/assets/3%20%2814%29.png) - -Now, the Marketing Support department's agents will have the option to set a **Sales Lead** tag to the conversation if they want while closing it. - diff --git a/guides/omnichannel-guides/omnichannel-manger-guides/units.md b/guides/omnichannel-guides/omnichannel-manger-guides/units.md deleted file mode 100644 index ec2d97b425..0000000000 --- a/guides/omnichannel-guides/omnichannel-manger-guides/units.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -description: 'Using units, you can group your departments for management purposes.' ---- - -# Units - -![](../../../.gitbook/assets/2021-06-10_22-31-38.jpg) - -Suppose you are a manager or a monitor and want to oversee multiple departments, you can make a unit of those departments and manage it. - -To access **Units** settings: - -Go to **Units** in the omnichannel panel settings, as shown below: - -![](../../../.gitbook/assets/0%20%2813%29.png) - -You can see the list of units. - -## To create a new Unit: - -1. Hit **New Unit**. - -![](../../../.gitbook/assets/1%20%2812%29.png) - -The new unit creation pane will appear. - -![](../../../.gitbook/assets/2%20%2811%29.png) - -1. Name your new unit. -2. Set its visibility. Private/Public. A private unit will be available only for you. -3. Add the desired departments to your unit. -4. Assign monitors. -5. Hit **Save**. - -As shown below: - -![](../../../.gitbook/assets/3%20%2812%29.png) - -Your newly created unit will appear in the list, as shown below: - -![](../../../.gitbook/assets/4%20%2812%29.png) - diff --git a/guides/omnichannel-guides/omnichannel-manger-guides/webhook.md b/guides/omnichannel-guides/omnichannel-manger-guides/webhook.md deleted file mode 100644 index 81287100ce..0000000000 --- a/guides/omnichannel-guides/omnichannel-manger-guides/webhook.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -description: >- - Webhooks allow you to integrate the Rocket.Chat Omnichannel to any third-party - system, e.g., CRM, Zoho, etc ---- - -# Webhooks - -To access **Webhooks** settings: - -Go to **Webhooks** in the omnichannel panel settings, as shown below: - -![](../../../.gitbook/assets/0%20%2814%29.png) - -1. Get the Webhook URL from the system you want to connect -2. Enter the secret token -3. Select the actions you want this integration to have - -![](../../../.gitbook/assets/1%20%2814%29.png) - -If you select Chat Start: - -![](../../../.gitbook/assets/2%20%2813%29.png) - -Rocket.chat will send a webhook to the external system telling it that a new conversation has started, as shown below: - -![](../../../.gitbook/assets/3%20%2813%29.png) - -Here is an example of the JSON data sent at the end of a Livechat session: - -```text -{ - "type": "LivechatSession", - "_id": "fasd6f5a4sd6f8a4sdf", - "label": "title", - "topic": "topic of the session", - "code": 123123, - "createdAt": "2016-06-01T18:41:16.856Z", - "lastMessageAt": "2016-06-01T18:41:16.856Z", - "tags": [ - "tag1", - "tag2", - "tag3" - ], - "customFields": { - "productId": "123456" - }, - "visitor": { - "_id": "", - "name": "viistor name", - "username": "visitor-username", - "department": "department", - "email": "email@address.com", - "phone": "192873192873", - "ip": "123.456.7.89", - "browser": "Chrome", - "os": "Linux", - "customFields": { - "customerId": "123456" - } - }, - "agent": { - "_id": "asdf89as6df8", - "username": "agent.username", - "name": "Agent Name", - "email": "agent@email.com" - }, - "messages": [ - { - "username": "visitor-username", - "msg": "message content", - "ts": "2016-06-01T18:41:16.856Z" - }, - { - "username": "agent.username", - "agentId": "asdf89as6df8", - "msg": "message content from agent", - "ts": "2016-06-01T18:41:16.856Z" - } - ] -} -``` - -Here is an example of the JSON data sent on a Livechat offline message: - -```text -{ - "type": "LivechatOfflineMessage", - "sentAt": "2016-06-01T19:55:53.867Z", - "visitor": { - "name": "name from the form", - "email": "email@fromtheform.com" - }, - "message": "message from the form" -} -``` - -The field **Secret Token** is sent to a header `X-RocketChat-Livechat-Token` so you can validate if the request became from Livechat. - -If your endpoint returns a response status other than 200, Rocket.Chat will retry 10 times waiting 10 seconds between retries. - diff --git a/guides/omnichannel/README.md b/guides/omnichannel/README.md deleted file mode 100644 index 36d233cbd3..0000000000 --- a/guides/omnichannel/README.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -description: >- - OmniChannel adds the ability to receive conversations from a pop-up livechat - support on your website or your business Facebook chat or any other channel - directly in Rocket.chat. ---- - -# Omnichannel - -If you struggle to handle leads and clients in a multi-channel environment, you are losing valuable potential sales. That’s where Omnichannel comes into the picture. Omnichannel is a communication strategy essential to **acquire** and **retain** customers. It’s designed to create an exceptional customer experience across the company’s brands, building a better relationship with their audience. It gives consumers a choice to engage with companies on their favorite channels: - -* SMS -* Email -* Voice -* WhatsApp -* WeChat -* Telegram -* Facebook Messenger -* Live Chat, and so on. - -Omnichannel area of Rocket.Chat has two main users. - -1. [Admins](https://docs.rocket.chat/guides/omnichannel-guides/omnichannel) -2. [Managers](https://docs.rocket.chat/guides/omnichannel-guides/omnichannel-manger-guides) - -Being an omnichannel manager, you can access omnichannel settings, as shown below: - -![](../../.gitbook/assets/image%20%28598%29%20%282%29%20%282%29.png) - -![](../../.gitbook/assets/image%20%2868%29.png) - -The detail of each menu is given in their respective article. - diff --git a/guides/omnichannel/agents.md b/guides/omnichannel/agents.md deleted file mode 100644 index 2db7a09532..0000000000 --- a/guides/omnichannel/agents.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -description: >- - In this menu, you can assign any user the Agent role. You can also search a - user in the list of agents and remove a user from the agents' list. ---- - -# Agents - -To access **Agents** settings: - -Go to Omnichannel panel settings, as shown below: - -![](../../.gitbook/assets/0%20%288%29%20%285%29%20%285%29%20%285%29%20%285%29%20%285%29%20%284%29%20%284%29%20%281%29%20%289%29.png) - -Settings appear, as shown below: - -![](../../.gitbook/assets/1%20%284%29.png) - -## **To assign a user the agent role:** - -1. Select the user from the drop-down, as shown below: - -![](../../.gitbook/assets/2%20%284%29.png) - -1. Hit **Add**. - -![](../../.gitbook/assets/3%20%284%29.png) - -1. The user has the Agent role now, as shown below: - -![](../../.gitbook/assets/4%20%285%29.png) - -## **To Search an agent by name:** - -Enter the agent’s name in the search bar, as shown below: - -![](../../.gitbook/assets/5%20%285%29.png) - -## **To remove a user from the agent's list:** - -To remove a user from the list of agents, hit **remove**, as shown below: - -![](../../.gitbook/assets/6%20%285%29.png) - diff --git a/guides/omnichannel/business-hours-managers-guide.md b/guides/omnichannel/business-hours-managers-guide.md deleted file mode 100644 index 15eeb036d2..0000000000 --- a/guides/omnichannel/business-hours-managers-guide.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -description: Multiple Business Hours is Rocket.Chat Enterprise Feature ---- - -# Business Hours Manager's Guide - -The feature turns on the omnichannel toggle for the set business hours automatically. And you will be able to receive omnichannel conversations after. The toggle will be turned off during off-hours. The enterprise workspaces have an option to set up multiple business hours according to different time zones and their business needs. Community workspaces can only set up one set of business hours. - -To access **Business** **Hours** settings: - -1. Go to the dots menu and hit **Omnichannel**. Omnichannel settings will open up. - -![](../../.gitbook/assets/image%20%28461%29.png) - -1. Hit **Business** **Hours.** - -![](../../.gitbook/assets/image%20%28488%29.png) - -**To add a new set of hours to your workspace:** - -1. Click the add button. - -![](../../.gitbook/assets/2%20%281%29.png) - -1. Name your new set of hours and select the department you are setting your business hours for. - -![](../../.gitbook/assets/3%20%281%29.png) - -1. Select your timezone. - -![](../../.gitbook/assets/4%20%281%29.png) - -1. Select open days of the week and business hours for each day. - -![](../../.gitbook/assets/5%20%281%29.png) - -Note that if you are an agent who is in a conversation with a customer and you have reached the closing hour, you'll still finish the last conversation. After you have closed this conversation, the omnichannel toggle will be set to off automatically. - -1. Hit **Save.** - -![](../../.gitbook/assets/6%20%281%29.png) - -Your new set of **Business** **Hours** are saved, as shown below: - -![](../../.gitbook/assets/7%20%281%29.png) - diff --git a/guides/omnichannel/canned-responses-omnichannel-managers-guide/README.md b/guides/omnichannel/canned-responses-omnichannel-managers-guide/README.md deleted file mode 100644 index 2eb538c954..0000000000 --- a/guides/omnichannel/canned-responses-omnichannel-managers-guide/README.md +++ /dev/null @@ -1,100 +0,0 @@ -# Canned Responses Omnichannel Manager's Guide - -![](../../../.gitbook/assets/2021-06-10_22-31-38%20%283%29%20%283%29%20%283%29%20%283%29.jpg) - -{% hint style="info" %} -Canned responses allow you to save message snippets that you can call with shortcuts \(preceded with `!`\) to communicate a quick note to your visitors in Omnichannel and for messaging in regular conversations inside your Rocket.Chat's workspace. -{% endhint %} - - -If you are using canned responses for the first time, please check the Rocket.Chat Admin's guide for canned responses or contact your workspace Administrator to enable canned responses on your workspace. - -{% page-ref page="../../administration/administration/settings/canned-responses-rocket.chat-admins-guides.md" %} - -## To create a new canned response on your workspace: - -1. Go to **Omnichannel**: - -![](../../../.gitbook/assets/image%20%28502%29%20%281%29%20%281%29.png) - -2. Click **Canned responses** and hit **Create Your First Canned Response**: - -![](../../../.gitbook/assets/image%20%28551%29.png) - -Your new canned response screen is shown below: - -![](../../../.gitbook/assets/image%20%28553%29.png) - -### Shortcut - -Please set a Shortcut for your new canned response, as shown below: - -![](../../../.gitbook/assets/image%20%28530%29.png) - - - -### Message - -Enter your message using any placeholders you want, as shown below: - -![](../../../.gitbook/assets/image%20%28516%29.png) - -You can also preview the message at any time during the creation process: - -![](../../../.gitbook/assets/image%20%28532%29.png) - -### Tags - -You can set tags for your canned response if you want, as shown below: - -![](../../../.gitbook/assets/image%20%28518%29.png) - -{% hint style="info" %} -Canned responses tags help agents find canned responses specific to a particular topic. -{% endhint %} - -### Sharing - -You can share your canned response according to your need. - -1. **Public**: Anyone across your workspace can access your canned response. - -![](../../../.gitbook/assets/image%20%28538%29.png) - -2. **Department**: Anyone in the selected department can access your canned response. - -![](../../../.gitbook/assets/image%20%28498%29.png) - -3. **Private**: Only you and Omnichannel managers can access your canned response. - -![](../../../.gitbook/assets/image%20%28506%29%20%282%29%20%282%29%20%282%29.png) - -Please hit **Save**. Your new canned response is ready to be used in omnichannel conversations now, as shown below: - -![](../../../.gitbook/assets/image%20%28517%29.png) - - - - - -## Filtering Canned Responses: - -You can filter canned responses by: - -1. **Search**: ****You can filter by shortcut or message text. - -![](../../../.gitbook/assets/image%20%28549%29.png) - -2. **Sharing**: ****You can filter by sharing. - -![](../../../.gitbook/assets/image%20%28500%29.png) - - -3. **Created By**: You can filter by name of the user who created the canned responses. - -![](../../../.gitbook/assets/image%20%28507%29.png) - -Hit **Save**. Your new canned response is saved and ready to be used: - -{% page-ref page="../omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/" %} - diff --git a/guides/omnichannel/canned-responses-omnichannel-managers-guide/manager-create-canned-response-from-within-chatroom.md b/guides/omnichannel/canned-responses-omnichannel-managers-guide/manager-create-canned-response-from-within-chatroom.md deleted file mode 100644 index e241c71523..0000000000 --- a/guides/omnichannel/canned-responses-omnichannel-managers-guide/manager-create-canned-response-from-within-chatroom.md +++ /dev/null @@ -1,18 +0,0 @@ -# Manager create canned response from within chatroom - - You can create a canned response on the go from within a conversation. - -To create a canned response in a conversation: - -Click **Create**: - -![](../../../.gitbook/assets/image%20%28521%29.png) - -**Create Canned Response** window pops open. Please enter the details, as shown below : - -![](../../../.gitbook/assets/image%20%28542%29.png) - -Hit **Save**. Your new canned response is saved and ready to be used: - -![](../../../.gitbook/assets/image%20%28519%29.png) - diff --git a/guides/omnichannel/current-chats.md b/guides/omnichannel/current-chats.md deleted file mode 100644 index a4a6b34dbd..0000000000 --- a/guides/omnichannel/current-chats.md +++ /dev/null @@ -1,66 +0,0 @@ -# Current Chats - -Current Chats contain all the conversations that you have received. If a chat was not deleted, it appears here. You have various filters available to you to sort these conversations. - -To access **Current Chats** settings: - -Go to Omnichannel panel settings, as shown below: - -![](../../.gitbook/assets/0%20%288%29%20%285%29%20%285%29%20%285%29%20%285%29%20%285%29%20%284%29%20%284%29%20%281%29%20%284%29.png) - -Settings appear, as shown below: - -![](../../.gitbook/assets/1%20%283%29.png) - -Filters are explained below: - -## 1. Sort by Visitor Name: - -To sort the conversations per Guest/Visitor Name, enter the name in the field, and your conversations are sorted, as shown below: - -![](../../.gitbook/assets/2%20%283%29.png) - -## 2. Sort by Agent Name: - -To sort the conversations per Agent Name, enter the name in the field, and your conversations are sorted, as shown below: - -![](../../.gitbook/assets/3%20%283%29.png) - -## 3. Sort by Department: - -To sort the conversations per Department, enter the name in the field, and your conversations are sorted, as shown below: - -![](../../.gitbook/assets/4%20%283%29.png) - -## 4. Sort by Status: - -To sort the conversations per Open/Closed Status, choose the desired status in the field, as shown below: - -![](../../.gitbook/assets/5%20%283%29.png) - -and your conversations are sorted, as shown below: - -![](../../.gitbook/assets/6%20%283%29.png) - -## 5. Sort by From and To Date: - -To sort the conversations per From and To Date, enter the From and To Date in the field, and your conversations are sorted, as shown below: - -![](../../.gitbook/assets/7%20%283%29.png) - -## 6. Sort by Tags or Custom Fields: - -You can also sort the conversations by Tags or any Custom Fields that you have added in your livechat widget user login. Enter the tag/custom field, and your conversations are sorted. - -## 7. Clear Filters: - -Hit **Clear filters** to clear all the filters you have set for your sort. - -![](../../.gitbook/assets/8%20%282%29.png) - -## 8. Delete all Closed Chats: - -Hit **Delete all closed chats** to delete all the chats that are marked closed by the agents. - -![](../../.gitbook/assets/9%20%282%29.png) - diff --git a/guides/omnichannel/custom-fields.md b/guides/omnichannel/custom-fields.md deleted file mode 100644 index 04c9f15225..0000000000 --- a/guides/omnichannel/custom-fields.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -description: >- - In this menu, you can add some additional fields to the registration form your - visitors fill when they start a livechat conversation. ---- - -# Custom Fields - -To access **Custom Fields** settings: - -Go to Omnichannel panel settings, as shown below: - -![](../../.gitbook/assets/0%20%288%29%20%285%29%20%285%29%20%285%29%20%285%29%20%285%29%20%284%29%20%284%29%20%281%29%20%283%29.png) - -Custom Fields menu appears, as shown below: - -![](../../.gitbook/assets/1%20%287%29.png) - -The registration form has **Name**, **Email**, and **I need Help With…**/Department fields by default, as shown below: - -![](../../.gitbook/assets/2%20%287%29.png) - -## To add your custom field: - -1. Hit Add. - -![](../../.gitbook/assets/3%20%287%29.png) - -The following page appears. - -![](../../.gitbook/assets/4%20%287%29.png) - -2. Enter your desired **field** that you want to add to your livechat registration form. E.g., **last-name** - -![](../../.gitbook/assets/5%20%287%29.png) - -3. Enter its label. - -![](../../.gitbook/assets/6%20%286%29.png) - -4. Select scope as **Visitor**. - -![](../../.gitbook/assets/7%20%284%29.png) - -5. Make it visible. - -![](../../.gitbook/assets/8%20%283%29.png) - -6. Set as a required field if you want. - -![](../../.gitbook/assets/9%20%283%29.png) - -7. The type of the Last Name field is Input. - -![](../../.gitbook/assets/10%20%282%29.png) - -8. Set the default value, if any. - -![](../../.gitbook/assets/11%20%282%29.png) - -9. Set it **Public**. - -![](../../.gitbook/assets/12%20%282%29.png) - -10. Hit Save. - -![](../../.gitbook/assets/13%20%282%29.png) - -It is saved in the list of custom fields, as shown below: - -![](../../.gitbook/assets/14%20%282%29.png) - -It appears in the livechat widget, as shown below: - -![](../../.gitbook/assets/15%20%282%29.png) - -If the visitor sends a message, it gets reflected in the **Visitor’s Info** as well. - -![](../../.gitbook/assets/16%20%282%29.png) - -## To delete a custom field: - -Hit remove. - -![](../../.gitbook/assets/17%20%282%29.png) - diff --git a/guides/omnichannel/departments.md b/guides/omnichannel/departments.md deleted file mode 100644 index e15e92aa3d..0000000000 --- a/guides/omnichannel/departments.md +++ /dev/null @@ -1,115 +0,0 @@ -# Departments - -If you want the omnichannel conversations to be directed to different departments, you can set the departments up in your enterprise Rocket.Chat workspace. For example, you may have livechats coming from various pages of your website, and you might want them to be handled by respective departments. - -To access **Departments** settings: - -1. Go to the dots menu and hit **Omnichannel**. Omnichannel settings will open up. - -![](../../.gitbook/assets/0%20%282%29.png) - -1. Hit **Departments.** - -![](../../.gitbook/assets/1%20%282%29.png) - -To add a new **Department**: - -1. Click **New** **Department**. - -![](../../.gitbook/assets/2%20%282%29.png) - -The new department's settings page will appear, as shown below: - -![](../../.gitbook/assets/3%20%282%29.png) - -1. Enable a new department. - -![](../../.gitbook/assets/4%20%282%29.png) - -1. Name your new department. - -![](../../.gitbook/assets/5%20%282%29.png) - -1. Type in the description. It's optional. - -![](../../.gitbook/assets/6%20%282%29.png) - -1. Allow your visitor to have the option to choose the department they want to talk to, as shown below: - -![](../../.gitbook/assets/7%20%282%29.png) - -The option will appear to your customer in the livechat widget, as shown below: - -![](../../.gitbook/assets/8%20%281%29.png) - -1. Forward your omnichannel conversations to the email address of your choice, during the hours you are offline, as shown below: - -![](../../.gitbook/assets/9%20%281%29.png) - -1. Enable the radio button below if you want your department to show offline during off business hours. - -![](../../.gitbook/assets/10%20%281%29.png) - -If you enable it will appear in the widget, as shown below: - -![](../../.gitbook/assets/11%20%281%29.png) - -1. Mention the name of the channel you want to direct the offline messages to. - -![](../../.gitbook/assets/12%20%281%29.png) - -1. Request your agent to set tags for the conversation for later searching purposes if you want. - -![](../../.gitbook/assets/13%20%281%29.png) - -1. An agent can add conversation tags they want to use for this department. - -![](../../.gitbook/assets/14%20%281%29.png) - -![](../../.gitbook/assets/15%20%281%29.png) - -![](../../.gitbook/assets/16%20%281%29.png) - -1. Assign the maximum number of simultaneous chats you want your agent to attend. - -![](../../.gitbook/assets/17%20%281%29.png) - -1. Mention the number of seconds you want to wait to consider visitor abandonment. - -![](../../.gitbook/assets/18%20%281%29.png) - -1. Mention the custom message you want to be displayed when the room is closed automatically by visitor inactivity. - -![](../../.gitbook/assets/19%20%281%29.png) - -1. Mention the custom message you want to be displayed when the user is waiting in the queue. - -![](../../.gitbook/assets/20%20%281%29.png) - -1. List the name of departments you would like to forward your department's chat to. ![](../../.gitbook/assets/21%20%281%29.png) -2. After your new department is created, their assigned business hour will be displayed here. - - ![](../../.gitbook/assets/22%20%281%29.png) - -3. Assign the agents to this department, as shown below: - -![](../../.gitbook/assets/23%20%281%29.png) - -1. Successfully added agents would be listed, as shown below: - -![](../../.gitbook/assets/24%20%281%29.png) - -1. Hit save. - -![](../../.gitbook/assets/25%20%281%29.png) - -Your newly created department is displayed in the list of departments, as shown below: - -![](../../.gitbook/assets/26%20%281%29.png) - -You can have the following behavior depending on how many departments you have created: - -* No departments: all Livechat agents will receive incoming chats using a round-robin rule. -* One department: all incoming chats will be offered to agents **only** on that department using a round-robin rule. -* More than one department: the visitor will have to choose what department he wants to talk to at registration. - diff --git a/guides/omnichannel/facebook-messenger-managers-guide.md b/guides/omnichannel/facebook-messenger-managers-guide.md deleted file mode 100644 index 2c25cab87f..0000000000 --- a/guides/omnichannel/facebook-messenger-managers-guide.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -description: >- - If your organization wishes to communicate with users of Facebook, you can - enable an integration within Rocket.Chat to do so. ---- - -# Facebook Messenger Manager's Guide - -Return to the main Rocket.Chat interface. Go to Omnichannel panel settings, as shown below: - -![](../../.gitbook/assets/0%20%288%29%20%285%29%20%285%29%20%285%29%20%285%29%20%285%29%20%284%29%20%284%29%20%281%29%20%283%29.png) - -1. Select Facebook Messenger and Enable. You'll be prompted to log in. Be sure to use the credentials that are tied to the page you wish to receive messages from. You'll have to do a standard Facebook OAuth login and grant your Rocket.Chat instance access to your pages. -2. Once you're returned from Facebook you'll see a list of the pages associated with that account. If you see none, make sure that the account has pages, then click RELOAD PAGES. -3. Enable the pages you'd like to get messages from, as shown below: - -![](../../.gitbook/assets/image%20%2850%29.png) - -Return to the main interface. Now any livechat agents you have will see any incoming chats from that page. Responses go back to Facebook as if you were using Messenger itself. - -Please refer to the following documentation for further details on Rocket.Chat and Facebook. - -{% page-ref page="../app-guides/omnichannel-apps/facebook-app/" %} - - - - - diff --git a/guides/omnichannel/livechat-triggers-managers-guide.md b/guides/omnichannel/livechat-triggers-managers-guide.md deleted file mode 100644 index bf61619814..0000000000 --- a/guides/omnichannel/livechat-triggers-managers-guide.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -description: >- - Livechat triggers is a setting that opens the livechat widget on your website - automatically. Your visitor will not have to go and open the widget. Livechat - Trigger will open the widget for them. ---- - -# Livechat Triggers Manager's Guide - -To access **Livechat Triggers** settings: - -Go to Omnichannel panel settings, as shown below: - -![](../../.gitbook/assets/0%20%288%29%20%285%29%20%285%29%20%285%29%20%285%29%20%285%29%20%284%29%20%284%29%20%281%29%20%282%29.png) - -Livechat Triggers menu appears, as shown below: - -![](../../.gitbook/assets/1%20%288%29.png) - -## To set up a new trigger: - -1. Hit **New Trigger**. - -![](../../.gitbook/assets/2%20%288%29.png) - -On the New Trigger screen: - -![](../../.gitbook/assets/3%20%288%29.png) - -1. Enable your new trigger. - -![](../../.gitbook/assets/4%20%288%29.png) - -1. Please select whether you want to run it for each visitor or want it to be a recurring pop-open. \(e.g., If your user goes to a different website and comes back to the same website, it pops-open\) - -![](../../.gitbook/assets/5%20%288%29.png) - -1. Name your new trigger. - -![](../../.gitbook/assets/6%20%287%29.png) - -1. Mention its description. - -![](../../.gitbook/assets/7%20%285%29.png) - -1. Choose whether you want your livechat widget to pop-open once the user visits a particular page of your website in **Condition**. - -![](../../.gitbook/assets/8%20%284%29.png) - -Or if you want to open it after a set time elapsed for the user while being on the page. - -![](../../.gitbook/assets/9%20%284%29.png) - -Mention the time in seconds. - -![](../../.gitbook/assets/10%20%283%29.png) - -1. Mention the **Action** you want your livechat widget to take. For now, there is only one option of sending a message to the visitor. - -![](../../.gitbook/assets/11%20%283%29.png) - -You can also select if you want to impersonate the next available agent in the queue or use a bot/custom agent. - -![](../../.gitbook/assets/12%20%283%29.png) - -Type your message. - -![](../../.gitbook/assets/13%20%283%29.png) - -1. Hit **Save**. - -![](../../.gitbook/assets/14%20%283%29.png) - -Your new livechat trigger is saved, as shown below: - -![](../../.gitbook/assets/15%20%283%29.png) - -## To delete a livechat trigger: - -1. Hit **Remove**. - -![](../../.gitbook/assets/16%20%283%29.png) - -1. Click **Yes**. - -![](../../.gitbook/assets/17%20%283%29.png) - diff --git a/guides/omnichannel/livechat-widget-appearance.md b/guides/omnichannel/livechat-widget-appearance.md deleted file mode 100644 index 57ec63fd0f..0000000000 --- a/guides/omnichannel/livechat-widget-appearance.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -description: >- - In this section, you can find out how to customize the appearance of your - livechat widget. ---- - -# Livechat Widget Appearance - -To access **Omnichannel Appearance** settings: - -Go to **Omnichannel Appearance** in the omnichannel panel settings, as shown below: - -![](../../.gitbook/assets/0%20%2812%29.png) - -You can customize the widget in the following four states. - -## Omnichannel On-line - -1. Set the title of your widget. -2. Set the color of the title bar of your widget. -3. Set the allowed message character length. -4. Show your agent’s information if you want. This information is the username. -5. Show your agent’s email address if you prefer, as shown below: - -![](../../.gitbook/assets/1%20%2813%29.png) - -So according to the above settings, during online hours, your livechat widget appears, as shown below: - -![](../../.gitbook/assets/2%20%2812%29.png) - -## Omnichannel Offline - -Customize the appears of your livechat widget here, for the hours when none of your agents are online/working. - -1. Turn on the offline form. -2. Set **Offline Form Unavailable Message**, if any. -3. Set **Offline Message**, if any. -4. Set **Offline Tittle.** -5. Set **Title bar color offline**. -6. Set the email address where you want to receive your offline messages. -7. Set success message to display to the visitor when they have sent their message offline. - -![](../../.gitbook/assets/3%20%2811%29.png) - -So your livechat widget appears according to the above settings, during offline hours. - -## Registration Form - -Here you set up the fields you want to show on the registration form. - -1. Enable the registration form. -2. Show Name field. -3. Show the Email field. -4. Show any message on the registration form if you want. It appears right under the widget title. - -![](../../.gitbook/assets/4%20%2811%29.png) - -## Conversation Finished - -1. Set up the message you want to display to the visitor when the conversation is finished. -2. Set up the message you want to display to the agent when the conversation is finished. - -As shown below: - -![](../../.gitbook/assets/5%20%2811%29.png) - diff --git a/guides/omnichannel/livechat-widget-installation.md b/guides/omnichannel/livechat-widget-installation.md deleted file mode 100644 index 1b4c15a10e..0000000000 --- a/guides/omnichannel/livechat-widget-installation.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -description: >- - In this section, you can learn how to install the livechat widget on your - website. ---- - -# Livechat Widget Installation - -To access **Livechat Installation** settings: - -Go to **Livechat Installation** in the omnichannel panel settings, as shown below: - -![](../../.gitbook/assets/0%20%2810%29.png) - -## To install the livechat widget: - -1. Copy the given piece of code. - -![](../../.gitbook/assets/1%20%2811%29.png) - -1. Paste this code above the last **</body>** tag on your site; the livechat widget will appear on the bottom right corner on your webpage. - diff --git a/guides/omnichannel/managers.md b/guides/omnichannel/managers.md deleted file mode 100644 index 1bd15079c5..0000000000 --- a/guides/omnichannel/managers.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -description: >- - In this menu, you can assign any user the manager role. You can also search - for a user in the list of managers. ---- - -# Managers - -To access **Managers** settings: - -Go to Omnichannel panel settings, as shown below: - -![](../../.gitbook/assets/0%20%288%29%20%285%29%20%285%29%20%285%29%20%285%29%20%285%29%20%284%29%20%284%29%20%281%29.png) - -Settings appear, as shown below: - -![](../../.gitbook/assets/image%20%2825%29.png) - -## **To assign a user the manager role:** - -1. Select the user from the drop-down, as shown below: - -![](../../.gitbook/assets/2%20%285%29.png) - -1. Hit **Add**. - -![](../../.gitbook/assets/image%20%2826%29.png) - -1. The user has the manager role now, as shown below: - -![](../../.gitbook/assets/image%20%2824%29.png) - -## **To Search a manager by name:** - -Enter the manager’s name in the search bar, as shown below: - -![](../../.gitbook/assets/image%20%2827%29.png) - diff --git a/guides/omnichannel/monitors-managers-guide.md b/guides/omnichannel/monitors-managers-guide.md deleted file mode 100644 index 0640cad534..0000000000 --- a/guides/omnichannel/monitors-managers-guide.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -description: >- - In this menu, you can assign any user the Monitor role. You can also search a - user in the list of Monitors and remove a user from the list. ---- - -# Monitors Manager's Guide - -![](../../.gitbook/assets/2021-06-10_22-31-38%20%283%29%20%283%29%20%283%29.jpg) - -To access **Monitors** settings: - -To access **Monitors** settings: - -Go to Omnichannel panel settings, as shown below: - -![](../../.gitbook/assets/0%20%288%29%20%285%29%20%285%29%20%285%29%20%285%29%20%285%29%20%284%29%20%284%29%20%281%29%20%2811%29.png) - -Settings appear, as shown below: - -![](../../.gitbook/assets/1%20%286%29.png) - -## **To assign a user the Monitor role:** - -1. Select the user from the drop-down, as shown below: - -![](../../.gitbook/assets/2%20%286%29.png) - -1. Hit **Add**. - -![](../../.gitbook/assets/3%20%285%29.png) - -1. The user has the Monitor role now, as shown below: - -![](../../.gitbook/assets/4%20%284%29.png) - -## **To Search a Monitor by name:** - -Enter the Monitor’s name in the search bar, as shown below: - -![](../../.gitbook/assets/5%20%286%29.png) - -## **To remove a user from Monitor’s list:** - -To remove a user from the list of monitors, hit **remove**, as shown below: - -![](../../.gitbook/assets/6%20%284%29.png) - diff --git a/guides/omnichannel/omnichannel-agents-guides/README.md b/guides/omnichannel/omnichannel-agents-guides/README.md deleted file mode 100644 index 13763089fd..0000000000 --- a/guides/omnichannel/omnichannel-agents-guides/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Omnichannel Agent's Guides - -Being an omnichannel agent, you can log in to the server using your Id and password and land on the home screen, as shown below: - -![](../../../.gitbook/assets/image%20%28208%29.png) - -Make yourself available for entertaining chats by clicking the **Chats** toggle, as shown below: - -![](../../../.gitbook/assets/image%20%28207%29.png) - -The **Chat** button turns green, and you're now able to take chats, as shown below: - -![](../../../.gitbook/assets/image%20%28209%29.png) - diff --git a/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/README.md b/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/README.md deleted file mode 100644 index cb9ecef4a8..0000000000 --- a/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Omnichannel Chat - -When you are logged in to the server as an agent, have set your status to **Available** and a new chat appears for your department, you can click open it as shown below: - -![](../../../../.gitbook/assets/image%20%28298%29.png) - -![](../../../../.gitbook/assets/image%20%28185%29.png) - -You can click **Take it!** to start serving this chat. - - - diff --git a/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/README.md b/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/README.md deleted file mode 100644 index 88ae49e2ee..0000000000 --- a/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# Canned Responses Agent's Guide - -![](../../../../../.gitbook/assets/2021-06-10_22-31-38%20%283%29%20%283%29%20%283%29%20%282%29.jpg) - -{% hint style="info" %} -Canned responses allow you to call pre-saved message snippets with shortcuts \(preceded with `!`\) to communicate a quick note to your visitors in Omnichannel conversations and for messaging in regular conversations inside your Rocket.Chat's workspace. -{% endhint %} - -Try using a canned response in a conversation. Start your message with `!` and a shortcut or you can select the canned response from the drop-down list that will appear above your text field: - -![](../../../../../.gitbook/assets/image%20%28501%29.png) - -You can also use the same canned responses when talking to your peers outside Omnichannel if it is. - -![](../../../../../.gitbook/assets/canned.gif) - -You can also access all the available canned responses for the current department or public by clicking **Canned Responses**, as shown below: - -![](../../../../../.gitbook/assets/image%20%28494%29.png) - -Hover your cursor over the canned response you want to use in your current chat and hit **Use**: - -![](../../../../../.gitbook/assets/image%20%28547%29.png) - -![](../../../../../.gitbook/assets/image%20%28557%29.png) - diff --git a/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/agent-create-canned-response-from-with-in-chatroom.md b/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/agent-create-canned-response-from-with-in-chatroom.md deleted file mode 100644 index e542f48e66..0000000000 --- a/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/agent-create-canned-response-from-with-in-chatroom.md +++ /dev/null @@ -1,18 +0,0 @@ -# Agent create canned response from with in chatroom - -If as an agent you have permission to create canned responses, you can create a canned response on the go in a conversation. - -To create a canned response in a conversation: - -Click **Create**: - -![](../../../../../.gitbook/assets/image%20%28521%29.png) - -**Create Canned Response** window pops open. Please enter the details, as shown below : - -![](../../../../../.gitbook/assets/image%20%28490%29.png) - -Hit **Save**. Your new canned response is saved and ready to be used: - -![](../../../../../.gitbook/assets/image%20%28558%29.png) - diff --git a/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/create-canned-response-from-a-message.md b/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/create-canned-response-from-a-message.md deleted file mode 100644 index 681dd8527d..0000000000 --- a/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/canned-responses-agents-guide/create-canned-response-from-a-message.md +++ /dev/null @@ -1,4 +0,0 @@ -# Create canned response from a message - -Feature Coming Soon! - diff --git a/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/omnichannel-chat-quick-actions.md b/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/omnichannel-chat-quick-actions.md deleted file mode 100644 index 06f9005188..0000000000 --- a/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/omnichannel-chat-quick-actions.md +++ /dev/null @@ -1,80 +0,0 @@ -# Omnichannel Chat Quick Actions - -There are some quick actions you can perform in the chat, as shown below: - -![](../../../../.gitbook/assets/image%20%28335%29.png) - -Please find their details below. - -## Add a Chat to Favorites - -Click the **Star** to add the chat to favorites, as shown below: - -![](../../../../.gitbook/assets/image%20%28186%29.png) - - - -## Move to the Queue - -If you have taken the chat mistakenly or want the chat to be served by any other agent of your department, you can move it back to the queue using **Move to the Queue**, as shown below: - -![](../../../../.gitbook/assets/image%20%2819%29.png) - -![](../../../../.gitbook/assets/image%20%28192%29.png) - -The chat will start to appear in the Queued Chats for other agents to see. - -![](../../../../.gitbook/assets/image%20%28294%29.png) - -## Forward Chat - -### Forward to a Department - -If you want to forward a chat to the queue of any other department for any agent of that department to serve, you can use the **Forward Chat** option and mention the department, as shown below: - -![](../../../../.gitbook/assets/image%20%28308%29.png) - -![](../../../../.gitbook/assets/image%20%28313%29.png) - -### Forward to an Agent - -If you want to forward a chat to a particular agent \(from any department\) to serve, you can use the **Forward Chat** option and mention the user, as shown below: - -![](../../../../.gitbook/assets/image%20%28312%29.png) - -## Transcript - -The chat transcript will be sent to the omnichannel visitor as soon as the conversation ends, as shown below: - -![](../../../../.gitbook/assets/image%20%28310%29.png) - -![](../../../../.gitbook/assets/image%20%28311%29.png) - -## Place Chat On-Hold ![](../../../../.gitbook/assets/image%20%28326%29.png) - -When you are assisting chats, Omnichannel contacts can drop the conversation, but the chat will remain in your queue until it is closed. If this happens, you may have your service capacity compromised because you won't be able to pick up new conversations due to the limit of simultaneous chats per agent. To overcome this problem, you can place the chat on hold, as shown below: - -![](../../../../.gitbook/assets/image%20%28323%29.png) - -![](../../../../.gitbook/assets/image%20%28324%29.png) - -![](../../../../.gitbook/assets/image%20%28332%29.png) - -If the omnichannel contact engages again, the routing algorithm will try to find you first to assign this conversation. In case you are busy serving other chats at maximum capacity, the chat will be assigned to the next available agent. - -Or click **Resume** and engage with the same contact again at any time, as shown below: - -![](../../../../.gitbook/assets/image%20%28328%29.png) - -{% hint style="info" %} -You can place the chat on-hold manually only when the last message was sent by you to the contact. -{% endhint %} - -## Close a Chat - -After you have served the chat, you can close it, as shown below: - -![](../../../../.gitbook/assets/image%20%28309%29.png) - - - diff --git a/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/omnichannel-contact-information.md b/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/omnichannel-contact-information.md deleted file mode 100644 index 573f1c49a7..0000000000 --- a/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/omnichannel-contact-information.md +++ /dev/null @@ -1,16 +0,0 @@ -# Omnichannel Contact Information - -Click **Contact Information** to view the contact details, as shown below: - -![](../../../../.gitbook/assets/image%20%28329%29.png) - -![](../../../../.gitbook/assets/image%20%28327%29.png) - -## Edit contact information - -Click **Edit** to add any contact details you want, as shown below: - -![](../../../../.gitbook/assets/image%20%28325%29.png) - -![](../../../../.gitbook/assets/image%20%28322%29.png) - diff --git a/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/room-information.md b/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/room-information.md deleted file mode 100644 index 164c39538b..0000000000 --- a/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/room-information.md +++ /dev/null @@ -1,16 +0,0 @@ -# Room Information - -The room information menu allows you to see different stats related to the conversation. - -To access the information click **Room Information**, as shown below: - -![](../../../../.gitbook/assets/image%20%28320%29.png) - -Click **Edit** to add some further information: - -![](../../../../.gitbook/assets/image%20%28314%29.png) - -e.g., the topic discussed or priority and hit **Save**: - -![](../../../../.gitbook/assets/image%20%28316%29.png) - diff --git a/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/search-messages-in-omnichannel-conversation.md b/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/search-messages-in-omnichannel-conversation.md deleted file mode 100644 index e32d6c3c6e..0000000000 --- a/guides/omnichannel/omnichannel-agents-guides/omnichannel-chat/search-messages-in-omnichannel-conversation.md +++ /dev/null @@ -1,6 +0,0 @@ -# Search Messages in Omnichannel Conversation - -You can search a particular message in a conversation, as shown below: - -![](../../../../.gitbook/assets/image%20%28319%29.png) - diff --git a/guides/omnichannel/omnichannel-agents-guides/omnichannel-chats.md b/guides/omnichannel/omnichannel-agents-guides/omnichannel-chats.md deleted file mode 100644 index d7f3b8e78d..0000000000 --- a/guides/omnichannel/omnichannel-agents-guides/omnichannel-chats.md +++ /dev/null @@ -1,34 +0,0 @@ -# Omnichannel Queue - -## Chats - -After you log in and wish to start taking omnichannel chats, you can make yourself **Available** as an omnichannel agent by clicking the **Chat** button, as shown below: - -![](../../../.gitbook/assets/image%20%28236%29.png) - -You can now see the omnichannel chats queue and are available to take the chats: - -![](../../../.gitbook/assets/image%20%28233%29.png) - -## Queue - -Click the **Queue** button to see the current omnichannel chats queue: - -![](../../../.gitbook/assets/image%20%28229%29.png) - -as shown below: - -![](../../../.gitbook/assets/image%20%28234%29.png) - -All the chats you are currently serving as an omnichannel agent appear in your queue: - -{% hint style="info" %} -As soon as you close them, they will disappear from the queue. -{% endhint %} - -![](../../../.gitbook/assets/image%20%28230%29.png) - -If you have been assigned multiple departments, you can sort them department wise, as shown below: - -![](../../../.gitbook/assets/image%20%28232%29.png) - diff --git a/guides/omnichannel/omnichannel-agents-guides/omnichannel-contact-center.md b/guides/omnichannel/omnichannel-agents-guides/omnichannel-contact-center.md deleted file mode 100644 index 67b9e41083..0000000000 --- a/guides/omnichannel/omnichannel-agents-guides/omnichannel-contact-center.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -description: >- - The contact center serves as a directory for omnichannel agents to access - contacts/visitor's information and archived conversation (that they have - served in the past) at any moment. ---- - -# Omnichannel Contact Center - -Click **Contact Center** to access Omnichannel Contact Center settings, as shown below: - -![](../../../.gitbook/assets/image%20%28219%29.png) - -{% hint style="info" %} -It allows you to pull up visitor information and chats for purposes like set tags of an old conversation, send broadcast messages, etc. -{% endhint %} - -Once you click on the **Contact Center** button following screen appears: - -![](../../../.gitbook/assets/image%20%28254%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29.png) - -## Contacts - -Under contacts, you can see all the contacts you have been serving as an omnichannel agent. - -![](../../../.gitbook/assets/image%20%28254%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29.png) - -### Search a Contact - -You can search a contact using their Name, phone and, email address. - -### View Contact Information - -Click on a contact to view its information and edit it, as shown below: - -![](../../../.gitbook/assets/image%20%28220%29.png) - -### Create a new Contact - -To create a new contact: - -1. Click **New Contact.** - -![](../../../.gitbook/assets/image%20%28212%29.png) - -2. Enter all the information and hit **Save**. - -![](../../../.gitbook/assets/image%20%28213%29.png) - - - -It appears in the search, as it shows: - -![](../../../.gitbook/assets/image%20%28221%29.png) - -## Chats - -All the chats you have taken appear under **Chats**, as you see below: - -![](../../../.gitbook/assets/image%20%28215%29%20%281%29.png) - -{% hint style="info" %} -No open chat appears in the **Contact Center**. A chat appears in the **Contact** **Center** as soon as it is closed because **Contact Center** only deals with archived chats. -{% endhint %} - -You can click to open a chat to view it: - -![](../../../.gitbook/assets/image%20%28216%29.png) - -![](../../../.gitbook/assets/image%20%28182%29.png) - -Go to the **Room Information** and click **View full conversation** to open the conversation - -![](../../../.gitbook/assets/image%20%28331%29.png) - -as shown below: - -![](../../../.gitbook/assets/image%20%28333%29.png) - -Click **Edit** to edit contact details as shown below: - -![](../../../.gitbook/assets/image%20%28330%29.png) - -You can edit any details you want here. - -![](../../../.gitbook/assets/image%20%28336%29.png) - diff --git a/guides/omnichannel/priorities-managers-guide.md b/guides/omnichannel/priorities-managers-guide.md deleted file mode 100644 index ce57af65e5..0000000000 --- a/guides/omnichannel/priorities-managers-guide.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -description: >- - Priorities feature enables you to change the order of Omnichannel queues based - on 'Estimated Due Time'. ---- - -# Priorities Manager's Guide - -## ![](../../.gitbook/assets/2021-06-10_22-31-38%20%283%29%20%283%29%20%283%29%20%281%29.jpg) - -Inquiries associated with priorities will be sorted by the estimated due time which means high-priorities chats will appear in the queue before others with either low priorities or without any priority set. - -{% hint style="info" %} -`Estimated Due Time` is an estimated time defined for customers to be served. If the estimated due time is, for instance, 10 minutes, the customer is supposed to wait in queue for up to 10 minutes until an agent takes the chat. -{% endhint %} - -To access **Priorities** settings: - -Go to **Priorities** in the omnichannel panel settings, as shown below: - -![](../../.gitbook/assets/image%20%2849%29.png) - -1. Click **Add** button. - -![](../../.gitbook/assets/image%20%2848%29%20%281%29.png) - -2. Name your Priority. - -3. Give a description. - -4. Set Due Time. - -5. Click **Save**. - -![](../../.gitbook/assets/image%20%2847%29%20%281%29.png) - -Your new priority is saved, as shown below: - -![](../../.gitbook/assets/image%20%2852%29.png) - -Each priority has its own\(unique\) `Estimated due time` field\(time in minutes\), so once a priority is associated with an `Inquiry/room`, this field will be used to set the queue inquiry order. As the priority is not mandatory, the Omnichannel queues will have inquiries with and without priorities. To support both possibilities, I refactored the structure of the fields that are used to sort the queues as displayed below - -**queueOrder:** -1 - default, is set when there is no priority associated with the room; -0 - Is set when a priority is associated with a room, so inquiries with the `queueOrder = 0` will be attended before inquiries without associated priority. - -**estimatedWaitingTimeQueue:** -This value is updated when a priority is defined in a room. This value comes from the 'Estimated due time' field of the priority defined in the room. - -**estimatedServiceTimeAt:** -This value represents the estimated time that the inquiry should be attended by an agent. When a priority is associated with an inquiry, this field will be updated and the new value will be the date/time\(ts field\) of the inquiry creation plus the estimated due time defined in the priority \(Time in Minutes\). So, let say the inquiry was created at `2020-04-16 20:12:23` and the estimated due time of the priority is `15 minutes`, the `estimatedServiceTimeAt` value will set to `2020-04-16 20:27:23`. - -Also, the agents and managers can change the inquiry priority through the `room info panel`: - -![](../../.gitbook/assets/p3.png) - -When room priority is changed, the fields described above are updated. The same happens when `estimated due time field` is updated. Then, all inquiries associated with the priority will also be updated and this change will reflect in the queue. - -It's also possible to change room priority through the REST API. A new endpoint is available, as well as the endpoint that creates omnichannel rooms will support the `priority` when running the `enterprise` version, so it's possible to create a new omnichannel conversation with a priority associated. - diff --git a/guides/omnichannel/real-time-monitoring.md b/guides/omnichannel/real-time-monitoring.md deleted file mode 100644 index 836cd4811b..0000000000 --- a/guides/omnichannel/real-time-monitoring.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -description: >- - As the name suggests, real-time monitoring allows you to monitor your incoming - chats department wise in real-time. ---- - -# Real-time Monitoring - -If a livechat conversation is initiated, it gets reflected in the matrices in real-time, as shown below: - -![](../../.gitbook/assets/0%20%289%29.png) - -![](../../.gitbook/assets/1%20%289%29.png) - -To access **Real-time Monitoring** settings: - -Go to Real-time Monitoring in the omnichannel panel settings, as shown below: - -![](../../.gitbook/assets/2%20%289%29.png) - -1. Select your desired department. You can select multiple departments if you want. - -![](../../.gitbook/assets/image%20%2828%29.png) - -1. Select the auto-refresh time from the dropdown. - -![](../../.gitbook/assets/4%20%289%29.png) - -Details of matrices are as follows: - -![](../../.gitbook/assets/5%20%289%29.png) - -## **Total Conversations:** - -It represents the total number of conversations for the current day. - -## **Total Open Conversations:** - -It represents the total number of open conversations for your selected department for the current moment. - -## **Total Messages:** - -It represents the total number of messages received in all the current-day conversations. - -## **Total** **Visitors:** - -It represents the total number of livechat users for your selected department for the current day. - -![](../../.gitbook/assets/6%20%288%29.png) - -## **Total Abandoned Chats:** - -It represents the total number of conversations abandoned by the visitor for your selected department's current day. - -## **Average of Abandoned Chats:** - -It represents the average of conversations abandoned by the visitor for your selected department's current day. - -## **Average of Chat Duration Time:** - -It represents the average duration of all the conversations of your selected department for the current day. - -![](../../.gitbook/assets/7%20%286%29.png) - -## **Busiest Time:** - -It represents the hour during the current day when you received the largest number of incoming chats. - -## **Average of Service Available Time:** - -It represents how many hours the Omnichannel service was available during the day. It means that at least one agent available to serve Omnichannel conversations. - -## **Average of Service Time:** - -It represents the average time the agents spend serving chats in the current day. - -![](../../.gitbook/assets/8%20%285%29.png) - -## **Average of Response Time:** - -If the selected chat pickup method is auto-selection, the chat is automatically assigned to an agent. This matrix represents the average of agents' responses to all the conversations that are automatically assigned to them. - -## **Average of First Response Time:** - -This matrix represents the average of the agent's first response to all the chats he picks up. - -## **Average of Reaction Time:** - -This matrix represents the average of the agent's reaction to the assigned chats. - -## **Average of Waiting:** - -It represents the average time your visitor spent in the waiting queue. - diff --git a/guides/omnichannel/tags-managers-guide.md b/guides/omnichannel/tags-managers-guide.md deleted file mode 100644 index c908287c2c..0000000000 --- a/guides/omnichannel/tags-managers-guide.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -description: >- - As a Livechat Manager, you can set Tags to be assigned to the livechat - conversations by the agents. Tags can be used later for easy searching and - sorting of livechat conversations. ---- - -# Tags Manager's Guide - -![](../../.gitbook/assets/2021-06-10_22-31-38%20%283%29%20%283%29%20%283%29.jpg) - -To access **Tags** settings: - -1. Go to **Tags** in the omnichannel panel settings, as shown below: - -![](../../.gitbook/assets/0%20%2815%29.png) - -1. Click the Add button, as shown below: - -![](../../.gitbook/assets/1%20%2815%29.png) - -1. Name your new Tag. -2. Give a description: - -5.Select the department the new Tag belongs to, as shown below: - -![](../../.gitbook/assets/2%20%2814%29.png) - -6.Hit **Save**. - -![](../../.gitbook/assets/3%20%2814%29.png) - -Now, the Marketing Support department's agents will have the option to set a **Sales Lead** tag to the conversation if they want while closing it. - diff --git a/guides/omnichannel/units-managers-guide.md b/guides/omnichannel/units-managers-guide.md deleted file mode 100644 index bcce58823b..0000000000 --- a/guides/omnichannel/units-managers-guide.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -description: 'Using units, you can group your departments for management purposes.' ---- - -# Units Manager's Guide - -![](../../.gitbook/assets/2021-06-10_22-31-38%20%283%29%20%283%29%20%283%29.jpg) - -Suppose you are a manager or a monitor and want to oversee multiple departments, you can make a unit of those departments and manage it. - -To access **Units** settings: - -Go to **Units** in the omnichannel panel settings, as shown below: - -![](../../.gitbook/assets/0%20%2813%29.png) - -You can see the list of units. - -## To create a new Unit: - -1. Hit **New Unit**. - -![](../../.gitbook/assets/1%20%2812%29.png) - -The new unit creation pane will appear. - -![](../../.gitbook/assets/2%20%2811%29.png) - -1. Name your new unit. -2. Set its visibility. Private/Public. A private unit will be available only for you. -3. Add the desired departments to your unit. -4. Assign monitors. -5. Hit **Save**. - -As shown below: - -![](../../.gitbook/assets/3%20%2812%29.png) - -Your newly created unit will appear in the list, as shown below: - -![](../../.gitbook/assets/4%20%2812%29.png) - diff --git a/guides/omnichannel/webhooks-managers-guide.md b/guides/omnichannel/webhooks-managers-guide.md deleted file mode 100644 index b45a6c2e60..0000000000 --- a/guides/omnichannel/webhooks-managers-guide.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -description: >- - Webhooks allow you to integrate the Rocket.Chat Omnichannel to any third-party - system, e.g., CRM, Zoho, etc ---- - -# Webhooks Manager's Guide - -To access **Webhooks** settings: - -Go to **Webhooks** in the omnichannel panel settings, as shown below: - -![](../../.gitbook/assets/0%20%2814%29.png) - -1. Get the Webhook URL from the system you want to connect -2. Enter the secret token -3. Select the actions you want this integration to have - -![](../../.gitbook/assets/1%20%2814%29.png) - -If you select Chat Start: - -![](../../.gitbook/assets/2%20%2813%29.png) - -Rocket.chat will send a webhook to the external system telling it that a new conversation has started, as shown below: - -![](../../.gitbook/assets/3%20%2813%29.png) - -Here is an example of the JSON data sent at the end of a Livechat session: - -```text -{ - "type": "LivechatSession", - "_id": "fasd6f5a4sd6f8a4sdf", - "label": "title", - "topic": "topic of the session", - "code": 123123, - "createdAt": "2016-06-01T18:41:16.856Z", - "lastMessageAt": "2016-06-01T18:41:16.856Z", - "tags": [ - "tag1", - "tag2", - "tag3" - ], - "customFields": { - "productId": "123456" - }, - "visitor": { - "_id": "", - "name": "viistor name", - "username": "visitor-username", - "department": "department", - "email": "email@address.com", - "phone": "192873192873", - "ip": "123.456.7.89", - "browser": "Chrome", - "os": "Linux", - "customFields": { - "customerId": "123456" - } - }, - "agent": { - "_id": "asdf89as6df8", - "username": "agent.username", - "name": "Agent Name", - "email": "agent@email.com" - }, - "messages": [ - { - "username": "visitor-username", - "msg": "message content", - "ts": "2016-06-01T18:41:16.856Z" - }, - { - "username": "agent.username", - "agentId": "asdf89as6df8", - "msg": "message content from agent", - "ts": "2016-06-01T18:41:16.856Z" - } - ] -} -``` - -Here is an example of the JSON data sent on a Livechat offline message: - -```text -{ - "type": "LivechatOfflineMessage", - "sentAt": "2016-06-01T19:55:53.867Z", - "visitor": { - "name": "name from the form", - "email": "email@fromtheform.com" - }, - "message": "message from the form" -} -``` - -The field **Secret Token** is sent to a header `X-RocketChat-Livechat-Token` so you can validate if the request became from Livechat. - -If your endpoint returns a response status other than 200, Rocket.Chat will retry 10 times waiting 10 seconds between retries. - diff --git a/guides/rocket-chat-apps/twitter-app/twitter-app-configuration.md b/guides/rocket-chat-apps/twitter-app/twitter-app-configuration.md deleted file mode 100644 index f2c828741e..0000000000 --- a/guides/rocket-chat-apps/twitter-app/twitter-app-configuration.md +++ /dev/null @@ -1,51 +0,0 @@ -# Twitter App Configuration - -Search Twitter in the **Apps** menu on your Rocket.Chat administration panel, as shown below: - -![](../../../.gitbook/assets/image%20%28409%29.png) - -Click open your Twitter app to see the settings available to you as an administrator: - -Following are the settings available: - -1. You can set a **Default Department**. Only the agents of this department are able to serve Twitter conversations -2. You can set the **Service Unavailable Message** that will be sent to the user if some error occurs like if no agents are online -3. You can set the **Welcome Message** that will be sent to visitors when they send their first message -4. The **Conversation Finished Message** will be sent to visitors when the conversation is closed - -![](../../../.gitbook/assets/image%20%28400%29.png) - -5. You can choose to display the agent's name or username: - -![](../../../.gitbook/assets/image%20%28399%29.png) - -6. You can enable/disable file sharing and also set a limit for maximum upload size. - -![](../../../.gitbook/assets/image%20%28391%29.png) - -7. And you can select the type of files you wish the Agents and your Twitter Contacts can share under **Accepted Media Types**. - -![](../../../.gitbook/assets/image%20%28394%29.png) - -8. Hit **Save Changes** to save your settings. - -![](../../../.gitbook/assets/image%20%28393%29.png) - -Your Twitter app is successfully configured and you can see the new Twitter channel upon closing the administration panel, as shown below: - -![](../../../.gitbook/assets/image%20%28392%29.png) - -## Twitter App Authentication - -The first step after the configuration is authentication with Twitter. - -1. Please click on the button shown below to start the Authentication Process with Twitter. - -![](../../../.gitbook/assets/image%20%28398%29.png) - -2. As soon as you click Start Authentication the Authentication process is started. Please authorize [Rocket.Chat](http://rocket.chat/)'s Twitter app to complete this process. - -![](../../../.gitbook/assets/image%20%28414%29.png) - - - diff --git a/guides/rocket-chat-apps/whatsapp.md b/guides/rocket-chat-apps/whatsapp.md deleted file mode 100644 index 043c12f0e3..0000000000 --- a/guides/rocket-chat-apps/whatsapp.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -description: Omnichannel Integration between Rocket.Chat and WhatsApp. ---- - -# WhatsApp - diff --git a/guides/rocket-chat-apps/whatsapp/whatsapp-configuration/omnichannel-whatsapp-setup.md b/guides/rocket-chat-apps/whatsapp/whatsapp-configuration/omnichannel-whatsapp-setup.md deleted file mode 100644 index c9682adc16..0000000000 --- a/guides/rocket-chat-apps/whatsapp/whatsapp-configuration/omnichannel-whatsapp-setup.md +++ /dev/null @@ -1,4 +0,0 @@ -# Omnichannel WhatsApp Setup - -After configuration - diff --git a/guides/rocket.chat-administrator-guides/README.md b/guides/rocket.chat-administrator-guides/README.md deleted file mode 100644 index c3b4bb5658..0000000000 --- a/guides/rocket.chat-administrator-guides/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Rocket.Chat Administrator Guides - diff --git a/guides/rocket.chat-administrator-guides/administration/README.md b/guides/rocket.chat-administrator-guides/administration/README.md deleted file mode 100644 index 5d740eba5d..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Administration - diff --git a/guides/rocket.chat-administrator-guides/administration/apps.md b/guides/rocket.chat-administrator-guides/administration/apps.md deleted file mode 100644 index 22edf4b628..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/apps.md +++ /dev/null @@ -1,23 +0,0 @@ -# Apps - -You can view all of your installed Rocket.Chat Apps and manage them. - -To access apps: - -![](../../../.gitbook/assets/image%20%28385%29.png) - -![](../../../.gitbook/assets/image%20%28389%29.png) - -Here you can : - -* **Enable/Disable/Uninstall** any of your installed app. -* View app details. -* View **logs** of the app. -* Provide additional user settings and configuration for the app. - -{% hint style="info" %} -All Rocket.Chat Apps might not require any setup configuration or user settings. -{% endhint %} - -If you are looking for the manual/user guide of a particular app, please find them [here](https://docs.rocket.chat/guides/rocket-chat-apps) or use the search bar on the top right corner. - diff --git a/guides/rocket.chat-administrator-guides/administration/connectivity-services.md b/guides/rocket.chat-administrator-guides/administration/connectivity-services.md deleted file mode 100644 index 57444c753e..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/connectivity-services.md +++ /dev/null @@ -1,69 +0,0 @@ -# Connectivity Services - -## Introduction - -Rocket.Chat Cloud provides a list of features/services such as - -* [Rocket.Chat Push Notification Gateway](https://docs.rocket.chat/guides/administrator-guides/notifications/push-notifications#push-gateway) -* [Rocket.Chat Marketplace](https://rocket.chat/marketplace) -* Omnichannel proxy -* Automatic license synchronization - -In order to use those services, Rocket.Chat server must be connected to [cloud.rocket.chat](https://cloud.rocket.chat/). Below are the steps required to connect and synchronize a Rocket.Chat self-hosted server to our cloud infrastructure. - -{% hint style="info" %} -The steps below are required only for self-managed instances. Rocket.Chat SaaS workspaces are always connected to our Cloud infrastructure. -{% endhint %} - -{% hint style="info" %} -In order to connect your server to our Cloud, your Rocket.Chat server must be at least on version 1.3.2. -{% endhint %} - -## Registration steps - -**If you don't have a cloud account yet:** - -1. Go to [cloud.rocket.chat](https://cloud.rocket.chat/) and create a new account - -![](../../../.gitbook/assets/image%20%28154%29.png) - -1. Fill up the registration form and "Register" - -![](../../../.gitbook/assets/c_4.png) - -1. A verification email will be sent in order to activate your new Cloud account - -![](../../../.gitbook/assets/image%20%28155%29.png) - -1. The verification link will forward to cloud.rocket.chat. After the validation, you will be logged into your Cloud console. In order to register your self-hosted workspace, please select the "Register self-managed" button - -![](../../../.gitbook/assets/c_6.png) - -1. A pop-up will be displayed in order to select the workspace type: -2. Internet Access: Rocket.Chat server that has a connection to the internet \(connected to the outside\) -3. No Internet Access: Special cases where Rocket.Chat server has no connection at all \(totally air-gapped\). - -In this document, we are covering only the "Internet Access" option - -1. When selecting the "Internet Access" option, a registration token will be generated. Copy the token as this will be used to register your Rocket.Chat server. - -![](../../../.gitbook/assets/c_8.png) - -1. On your Rocket.Chat server, go to _Administration > Connectivity Services._ - - Fill up the "Email" field with the email related to your Rocket.Chat Cloud account and in the "Token" field please paste the registration token generated. Finally, hit the "Connect" button. - -![](../../../.gitbook/assets/c_9.png) - -1. It will set the connection between your Rocket.Chat server and Rocket.Chat Cloud console. When the connection is successful, the _Connectivity Services_ panel will look like this: - -![](../../../.gitbook/assets/c_10.png) - -1. Finally, in order to ensure the synchronization between Rocket.Chat server and Rocket.Chat Cloud, hit the "Sync" button as this will trigger the synchronization framework. - -This is recommended right after registering your server. The newly registered workspace will be listed in the "Workspace" section at [cloud.rocket.chat](https://cloud.rocket.chat/) - -{% hint style="success" %} -If you are an enterprise customer \(self-hosted Enterprise or Pro-licensed\), we create a cloud account for you. Please login to your workspace, insert the cloud registration code you received in the welcome email, and then hit **Login to** [**Rocket.Chat**](http://rocket.chat/) **Cloud** -{% endhint %} - diff --git a/guides/rocket.chat-administrator-guides/administration/custom-emoji.md b/guides/rocket.chat-administrator-guides/administration/custom-emoji.md deleted file mode 100644 index e6d8797bdc..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/custom-emoji.md +++ /dev/null @@ -1,27 +0,0 @@ -# Custom Emoji - -Rocket.Chat allows you to add custom emoji files that can be used within Rocket.Chat . - -## Add a Custom Emoji - -* Go to the **Administration** tab -* Select **Custom Emoji** - -![](../../../.gitbook/assets/image%20%28349%29.png) - -* Click the **+** on the top right -* Enter a name for your custom emoji -* Enter an alias for your custom emoji -* Browse and choose a image file in PNG or JPEG format -* Press **Save** - -## Use your Custom Emoji - -To use a custom emoji that you've added either click the emoji icon on the message input and search for your custom emoji by its name or enter **`:custom_emoji_name:`** or **`:custom_emoji_alias:`** in the message box to directly add the emoji. - -## Delete/Edit Custom Emoji - -Search and click on the custom emoji you want to delete in the `Custom Emoji` section under the `Administration` tab. - -Press **Delete** or **Edit** to delete or update the selected emoji, respectively. - diff --git a/guides/rocket.chat-administrator-guides/administration/custom-sounds.md b/guides/rocket.chat-administrator-guides/administration/custom-sounds.md deleted file mode 100644 index 64b3ec170c..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/custom-sounds.md +++ /dev/null @@ -1,27 +0,0 @@ -# Custom sounds - -Rocket.Chat allows you to add custom sound files that can be used as a notification sound. Users can customize their notification sound preferences for specific channels. - -Upload sound files in MP3 format. - -## Add a Custom Sound - -* Go to the **Administration** tab -* Select **Custom Sounds** -* Click the **+** on the top right -* Enter a name for your custom sound -* Browse and choose an MP3 file -* Press **Save** - -## Use your Custom Sound - -See [Notification Preferences](../../user-guides/channels/#notifications-preferences) to use this custom sound as a notification. - -## Delete/Edit Custom Sound - -Search and click on the sound you want to delete in the `Custom Sound` section under the `Administration` tab. - -Press **Delete** or **Edit** to delete or update the selected sound, respectively. - -**Note**: Admins can set who has the [permissions](permissions-1.md) to manage these sounds. - diff --git a/guides/rocket.chat-administrator-guides/administration/custom-user-status.md b/guides/rocket.chat-administrator-guides/administration/custom-user-status.md deleted file mode 100644 index 189f548f56..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/custom-user-status.md +++ /dev/null @@ -1,25 +0,0 @@ -# Custom User Status - -Rocket.Chat allows you to add your custom status other than the default status presets available within Rocket.Chat . - -## Add a Custom Status - -* Go to the **Administration** tab -* Select **Custom User Status** -* Click the **+** on the top right -* Enter a name for your custom status. -* Select a presence for your custom status. -* Press **Save** - -## Use your Custom Status - -Once your custom status is added, it will show up along with the default status presets. - -To use a custom emoji that you've added, click on your avatar on the top left, and within the **status** menu, select your custom status. - -## Delete/Edit Custom Status - -Search and click on the custom status you want to delete in the `Custom Status` section under the `Administration` tab. - -Press **Delete** or **Edit** to delete or update the selected status, respectively. - diff --git a/guides/rocket.chat-administrator-guides/administration/email-inboxes.md b/guides/rocket.chat-administrator-guides/administration/email-inboxes.md deleted file mode 100644 index e424748a9b..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/email-inboxes.md +++ /dev/null @@ -1,4 +0,0 @@ -# Email Inboxes - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/administration/engagement-dashboard.md b/guides/rocket.chat-administrator-guides/administration/engagement-dashboard.md deleted file mode 100644 index 45f672bbbd..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/engagement-dashboard.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -description: This feature adds the ability to evaluate user engagement on the channels. ---- - -# Engagement Dashboard - -{% hint style="info" %} -Engagement Dashboard is an enterprise-only feature. -{% endhint %} - -To access the **Engagement Dashboard:** - -1. Go to **Administration.** - -![](../../../.gitbook/assets/image%20%2830%29.png) - -1. Click **Engagement Dashboard**. - -![](../../../.gitbook/assets/image%20%28139%29%20%281%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29.png) - -As an administrator, you can see your _User_, _Messages_, and _Channels_ engagement here. - -## User - -The user tab shows you the following engagement matrices. - -![](../../../.gitbook/assets/image%20%28129%29%20%281%29%20%281%29%20%281%29.png) - -Download the data for any matrix you want in CSV, using the download button, as shown below: - -![](../../../.gitbook/assets/image%20%28134%29.png) - -### New users - -Select the time period for which you want to check your new user, as shown below: - -![](../../../.gitbook/assets/image%20%28132%29.png) - -New users matrix represents the total number of new users for the selected period of time, as shown below: - -![](../../../.gitbook/assets/image%20%28140%29.png) - -You can also see the number by which users increased/decreased from the last interval of the selected period, as shown below: - -![](../../../.gitbook/assets/image%20%28145%29.png) - -### Active users - -It represents the total number of users using the application daily weekly and monthly as shown below: - -![](../../../.gitbook/assets/image%20%28130%29.png) - -You can also see the number by which active users increased/decreased, as shown below: - -![](../../../.gitbook/assets/image%20%28133%29.png) - -### Users by the time of day - -It represents the total number of users by time of the day for the selected period of time, as shown below: - -![](../../../.gitbook/assets/image%20%28143%29.png) - -The darker the color of the brick the more users are online at that time. You can also check the exact count of users for an hour by hovering over the mouse cursor on the respective brick, as shown below: - -![](../../../.gitbook/assets/image%20%28131%29.png) - -### When is the chat busier? - -It represents the time by day or hour when your chat is busier, as shown below: - -![](../../../.gitbook/assets/image%20%28127%29.png) - -## Messages - -The Messages tab shows you the following engagement matrices. - -![](../../../.gitbook/assets/image%20%28138%29.png) - -### Messages Sent - -It represents the total number of messages sent for the selected period of time, as shown below: - -![](../../../.gitbook/assets/image%20%28142%29.png) - -You can also see the number by which the sent messages count increased/decreased from the last interval of the selected period, as shown below: - -![](../../../.gitbook/assets/image%20%28135%29.png) - -### Where are the messages being sent? - -It represents the public, private, and top 5 most popular channel to which the most messages are being sent for a selected period of time, as shown below: - -![](../../../.gitbook/assets/image%20%28128%29.png) - -## Channels - -This table shows you the count of _messages being sent_ and the _increment/decrement_ of count from the last interval for a selected period for **all** your channels. You can also download this information in a CSV file. - -![](../../../.gitbook/assets/image%20%28141%29.png) - diff --git a/guides/rocket.chat-administrator-guides/administration/federation-dashboard.md b/guides/rocket.chat-administrator-guides/administration/federation-dashboard.md deleted file mode 100644 index 3cca77e0c5..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/federation-dashboard.md +++ /dev/null @@ -1,4 +0,0 @@ -# Federation Dashboard - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/administration/import/README.md b/guides/rocket.chat-administrator-guides/administration/import/README.md deleted file mode 100644 index bd3aa00092..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/import/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Import - -Import data from other services - -[Slack](slack/) - -[Hipchat](hipchat/) - -[CSV](csv.md) - diff --git a/guides/rocket.chat-administrator-guides/administration/import/csv.md b/guides/rocket.chat-administrator-guides/administration/import/csv.md deleted file mode 100644 index 45454eece3..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/import/csv.md +++ /dev/null @@ -1,104 +0,0 @@ -# CSV - -The CSV importer allows you to import your own plain text files. However, it does require the zip file to be in a specific format for the importer to understand. - -## The Zip File - -The zip file must be a **flat zip**, which means there can **not** be a "root" or "sub" folder in which the items reside in the zip file. The importer looks for the files `channels.csv` and `users.csv` immediately inside the zip and not inside of any folder. If you have any questions about this, please ask in the [\#support channel on the Community server](https://open.rocket.chat/channel/support). - -The **directmessages** directory is a special directory name. Check the **Direct Messages** section below. - -```text -fileToImport.zip -├── channels.csv -├── users.csv -├── directmessages -│ ├── messages1.csv -│ ├── messages2.csv -│ └── messages3.csv -├── general -│ └── messages.csv -├── otherChannelName -│ ├── canBeAnyNameButHasToHave.csv -│ ├── theDotCSV.csv -│ └── asTheFileExt.csv -├── privateArea -│ └── messages.csv -└── random - ├── dateTimeStamp1.csv - ├── dateTimeStamp2.csv - └── dateTimeStamp3.csv -``` - -## channels.csv Format - -> Channels between 2 users \(Direct Messages\) should not be included on this file. See section **Direct Messages** for more information. - -The `channels.csv` requires a **very** specific structure and layout. Each line contains information about one channel. Each line must include the channel name, the creator, whether it is private or public, and the members in the channel separated by a semicolon `;`. Quotes are _**required**_. - -1. Channel name -2. Username of the channel creator -3. Whether the channel is public or private. If the last argument is not `private` it is assumed the channel is public -4. List of users in the channel, separated by semicolons. If only the creator is in the channel, then there must be empty quotes. - -```text -"general","bradley.hilton","public","" -"otherChannelName","billy.bob","public","" -"random","bradley.hilton","public","billy.bob;graywolf336" -"privateArea","bradley.hilton","private","graywolf336" -``` - -## users.csv Format - -The `users.csv` is a file that contains the user details, each line containing a new user, and the user details are: - -1. Username \(must not contain @ and some other special characters\) -2. Email -3. Name - -```text -bradley.hilton,bradley.hilton@example.com,Bradley Hilton -billy.bob, billy.bob@example.com, Billy Bob Jr. -graywolf336,graywolf336@example.com,GrayWolf336 -``` - -## Message Files - -The message CSV files require a particular format. Each line contains a new message, every piece of information is **required** quotes to surround it, there cannot be any spaces between the commas. The details required are: - -1. Username who sent the message -2. The timestamp in milliseconds -3. The message, quotes are highly recommended, especially if the message text contains a comma. - -```text -"bradley.hilton","1479162481336","this is a test message" -"billy.bob","1479162481654","this is another message, a test message" -``` - -## Direct Messages / Direct Channels - -Direct Channels / Direct Messages are imported from a special directory named **directmessages** with a specific format based on the **Message Files** format. The details required are: - -1. Username who sent the message -2. Username who received the message -3. The timestamp in milliseconds -4. The message, quotes are highly recommended, especially if the message text contains a comma. - -It's **required** to keep conversations in **distinct files;** for example, a conversation between user A and B compose a file \(`messages1.csv`\), and the conversation between user B and C compose another file \(`messages2.csv`\). - -```text -"bradley.hilton","billy.bob","1479162481336","this is a test message" -"billy.bob","bradley.hilton","1479162481654","this is another message, a test message" -``` - -## Importing - -Once you have that all set up and zipped, then you can start the import process. - -1. Go to `https://[your_rocketchat]/admin/import/prepare/csv` -2. Choose your `.zip` file and wait until Rocket.Chat can read it \(it can take a few minutes, depending on the size of the file\) -3. Deselect any items you **don't** want to import -4. At the top of the page, click on Start Importing - -When you have problems during the Import, click on "View Logs" in the admin section to get the detailed error messages. - diff --git a/guides/rocket.chat-administrator-guides/administration/import/hipchat/README.md b/guides/rocket.chat-administrator-guides/administration/import/hipchat/README.md deleted file mode 100644 index eb355688ed..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/import/hipchat/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# HipChat - -There are currently two different HipChat importers. One for HipChat Cloud and another for HipChat Enterprise. - -* [HipChat Cloud](cloud.md) -* [HipChat Server / Data Center](enterprise.md) - diff --git a/guides/rocket.chat-administrator-guides/administration/import/hipchat/cloud.md b/guides/rocket.chat-administrator-guides/administration/import/hipchat/cloud.md deleted file mode 100644 index fb509a0fee..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/import/hipchat/cloud.md +++ /dev/null @@ -1,13 +0,0 @@ -# HipChat Cloud - -To start importing values from HipChat you first need to have an instance of Rocket.Chat running. You can do that on [your own](https://docs.rocket.chat/developer-guides/quick-start/). - -If you already have an instance running and administration privileges, you can follow these steps: - -1. Export data from HipChat -2. Wait until your download is ready and download it \(it will be a .zip file\) -3. Go to `https://[your_rocket_chat].rocket.chat/admin/import` and click the "Start" button on the "HipChat" item -4. Choose your downloaded .zip file and wait until Rocket.Chat can read it \(it can take a few minutes, depending on the size of your HipChat export\) -5. Deselect any items you **don't** want to import -6. At the top of the page, click on Start Importing - diff --git a/guides/rocket.chat-administrator-guides/administration/import/hipchat/enterprise.md b/guides/rocket.chat-administrator-guides/administration/import/hipchat/enterprise.md deleted file mode 100644 index 2d593c7aaa..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/import/hipchat/enterprise.md +++ /dev/null @@ -1,41 +0,0 @@ -# HipChat Server / Data Center - -To import your current data from HipChat Server / Data Center into Rocket.Chat, please do the following. - -## Export from HipChat Server / Data Center - -This is a copy from the HipChat Server / Data Center Documentation: - -1. Browse to the fully qualified domain name you've configured for your HipChat Server, for example `https://hipchat.yourcompany.com/` -2. Log in to the web user interface \(UI\) using your administrator email and password -3. Click **Server admin > Export** -4. To include files and one-to-one chat history in the export, select the checkboxes -5. In the **Password** and **Confirm Password** fields, create a password to protect your archive file. You're required to provide this password when you import your data into HipChat Server. We don't store this password, so be sure to remember it -6. Click **Export**. Depending on how much data you have, it may take a few hours to export the data. When it's finished, you'll receive an email with a link to download the file -7. When you receive the email, click the link in the email to download the archive file - -## Import into Rocket.Chat - -1. Decrypt the exported file: `openssl aes-256-cbc -d -in path_to_encrypted_file.tar.gz.aes -out path_to_decrypted_file.tar.gz -pass pass:your_password` See the table below for descriptions of the command line arguments -2. Ensure the file generated is a `tar.gz` file, otherwise Rocket.Chat won't accept it -3. Go to `https://[your_rocketchat]/admin/import/prepare/hipchatenterprise` -4. Choose your decrypted `tar.gz` file and wait until Rocket.Chat can read it \(it can take a few minutes, depending on the size of your export\) -5. Deselect any items you **don't** want to import -6. At the top of the page, click on **Start Importing** - -### OpenSSL Command Arguments - -| Argument | Notes | -| :--- | :--- | -| `aes-256-cbc` | This is the cipher to use to decrypt the file. | -| `-d` | This argument is the command to decrypt the file. | -| `-in` | Use this to specify the path to the archive file you're about to decrypt. | -| `-out` | Use this to specify the path where you want to output the decrypted file. | -| `-pass pass:` | Enter the password you created when you **exported** the archive file. | - -## Troubleshooting - -1. In case you get `digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:../crypto/evp/evp_enc.c:541:` while decrypting add the parameter `-md md5` see [https://www.openssl.org/docs/faq.html\#USER3](https://www.openssl.org/docs/faq.html#USER3) -2. If the import fails for large HipChat exports it may help to _not_ export file attachments. see [https://github.com/RocketChat/Rocket.Chat/issues/11693](https://github.com/RocketChat/Rocket.Chat/issues/11693) -3. If you still have problems contact us at support@rocket.chat and provide your server logs if available - diff --git a/guides/rocket.chat-administrator-guides/administration/import/slack/README.md b/guides/rocket.chat-administrator-guides/administration/import/slack/README.md deleted file mode 100644 index d781f65ec0..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/import/slack/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Slack - -To import your current Slack data into Rocket.Chat: - -1. Go to `https://[your_app].slack.com/services/export` -2. Click on Start Export -3. Wait until your download is ready and download it \(it will be a .zip file\) -4. Go to `https://[your_rocketchat]/admin/import/new/slack` -5. Select "Slack" as Import Type -6. Choose your downloaded .zip file and wait until Rocket.Chat can read it \(it can take a few minutes, depending on the size of your Slack export\) -7. Click on Import -8. Deselect any items you **don't** want to import -9. At the top of the page, click on Start Importing - diff --git a/guides/rocket.chat-administrator-guides/administration/import/slack/slackbridge.md b/guides/rocket.chat-administrator-guides/administration/import/slack/slackbridge.md deleted file mode 100644 index 933ce31715..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/import/slack/slackbridge.md +++ /dev/null @@ -1,23 +0,0 @@ -# SlackBridge - -SlackBridge allows you to mirror the messages received in a Slack channel or private group into Rocket.Chat in real-time. - -To enable it, you have to create a Custom Bot in Slack and add it to the desired channels / private groups. Once enabled and added to rooms, SlackBridge will clone the room in Rocket.Chat and also clone users that speak in that room. - -## To create a Custom Bot in Slack: - -1. Got to ["Set up a bot user"](https://my.slack.com/apps/A0F7YS25R-bots) -2. Click "Add Configuration" -3. Pick a username for your Bot and click Add Bot Integration -4. Copy the API Token, you'll need it when setting up SlackBridge in Rocket.Chat -5. Customize your bot the way you like it and click on Save Integration - -## To enable SlackBridge in Rocket.Chat: - -1. Go to `https://[your_host]/admin/SlackBridge` -2. Enable SlackBridge -3. Add your API Token, copied in step 4 above -4. Restart your Rocket.Chat server - -When done, you can now invite/add the bot to the channel or private group you want to mirror from - diff --git a/guides/rocket.chat-administrator-guides/administration/info.md b/guides/rocket.chat-administrator-guides/administration/info.md deleted file mode 100644 index 3a5e4aca42..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/info.md +++ /dev/null @@ -1,4 +0,0 @@ -# Info - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/README.md b/guides/rocket.chat-administrator-guides/administration/integrations/README.md deleted file mode 100644 index 48b3472732..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/README.md +++ /dev/null @@ -1,265 +0,0 @@ -# Integrations - -Rocket.Chat supports WebHooks to integrate tools and services you like into the platform. WebHooks are simple event-notifications via HTTP POST. This way any application implementing a WebHook is able to POST a message to a Rocket.Chat instance and much more. - -With Scripts you can point any WebHook to Rocket.Chat and process the request to print customized messages, define the username and avatar of the user of the message and change the channel where the message will be posted or you can cancel the request to prevent undesired messages. - -Available integrations: - -* Incoming WebHook → Let an external service send a request to Rocket.Chat to be processed. -* Outgoing WebHook → Let Rocket.Chat trigger and optionally send a request to an external service and process the response. - -By default the WebHooks is designed to post a message only. The _message_ is part of a JSON structure, which has the same format as described in the API documentation on how to [“Post a chat message”](). - -If you would like more power and control over various features of Rocket.Chat, aside from sending and receiving messages, take a look at [Rocket.Chat Apps](https://github.com/RocketChat/docs/tree/663a6019e9bf97ca60fde138cc8d6917dd32703e/apps-development/rocket.chat-app). - -## Incoming WebHook Script - -WebHooks can be handled by _ES2015 / ECMAScript 6_ scripts to process the request, to print a customized messages or cancel the request to prevent undesired messages. - -### Create a new Incoming WebHook - -* Go to your **Admin Panel** -* Go to **Integrations** -* Create a **New Integration** and select **Incoming WebHook** -* Select the channel where you prefer to receive the alerts; it is possible to override in messages. -* Set **Script Enabled** to `true` -* Paste your script inside the **Script** field -* Save the integration -* Use the generated **WebHook URL** to POST messages to Rocket.Chat - -### Script Details - -The script should be in **ES2015 / ECMAScript 6**. - -The script expects a global class called `Script`. This class is instantiated once, only on the first execution, and kept in memory. - -The class has a method called `process_incoming_request`, your server calls this method every time is receives a new request. It is called with an Object as a parameter with the `request`property. - -The `process_incoming_request`method returns an object with a `content`property that contains valid Rocket.Chat message, or an object with an `error` property that returns as the response to the request in JSON format and Code 400 status. - -A valid Rocket.Chat message can contain a `text` field that is the body of the message. When you redirect the message to a channel other than the one indicated by the Webhook token, you can specify a `channel` field, which accepts room id or, if prefixed with "\#" or "@", channel name or user. - -You can use the `console` methods to log information to help debug your script. Find more information about the console [here](https://developer.mozilla.org/en-US/docs/Web/API/Console/log). To view the logs, go to `Administration > View Logs`. - -```javascript -/* exported Script */ -/* globals console, _, s */ - -/** Global Helpers - * - * console - A normal console instance - * _ - An underscore instance - * s - An underscore string instance - */ - -class Script { - /** - * @params {object} request - */ - process_incoming_request({ request }) { - // request.url.hash - // request.url.search - // request.url.query - // request.url.pathname - // request.url.path - // request.url_raw - // request.url_params - // request.headers - // request.user._id - // request.user.name - // request.user.username - // request.content_raw - // request.content - - // console is a global helper to improve debug - console.log(request.content); - - return { - content:{ - text: request.content.text - // "attachments": [{ - // "color": "#FF0000", - // "author_name": "Rocket.Cat", - // "author_link": "https://open.rocket.chat/direct/rocket.cat", - // "author_icon": "https://open.rocket.chat/avatar/rocket.cat.jpg", - // "title": "Rocket.Chat", - // "title_link": "https://rocket.chat", - // "text": "Rocket.Chat, the best open source chat", - // "fields": [{ - // "title": "Priority", - // "value": "High", - // "short": false - // }], - // "image_url": "https://rocket.chat/images/mockup.png", - // "thumb_url": "https://rocket.chat/images/mockup.png" - // }] - } - }; - - // return { - // error: { - // success: false, - // message: 'Error example' - // } - // }; - } -} -``` - -## Outgoing WebHook Script - -Use Scripts to process all messages from a channel, and change how Rocket.Chat makes or cancels the request. You can cancel the request and return a message, or just do nothing. Also, you can make another request inside the script by using the **HTTP** global helper. - -The response of the request also executes the script, calling another method so you can process the response, just like in **Incoming WebHooks** - -### Create a new Outgoing WebHook - -* Go to your **Admin Panel** -* Go to **Integrations** -* Create a **New Integration** and select **Outgoing WebHook** -* Select the channel where you prefer to use the commands and receive the responses -* Enter the URL you want to call in **URLs**, you can modify this URL inside the script -* Set **Script Enabled** to `true` -* Paste your script inside the **Script** field -* Save your integration - -### Script Details - -The script should be in **ES2015 / ECMAScript 6**. - -The script expects a global class called **Script**. This class is instantiated once, only on the first execution, and kept in memory. - -The class has a method called `prepare_outgoing_request`, this method is called for every message in the configured channel, or it can be filtered by **Trigger Words**. It is called with an Object as parameter a that contains the `request` property. - -The `prepare_outgoing_request`method returns an object with, at least, `url`and `method` properties. You can also change the request object, and return it. It is possible even to return nothing and cancel the request, or return a message. - -This class has a method named `process_outgoing_response`. It is called for every response of the request, with an Object as a parameter that contains the `request` property, i.e. the object you returned in the previous method, and a `response` property. - -The `process_outgoing_response` method can return nothing to proceed the default processing, return `false` to stop it, or an object with the `content` property that contains a valid Rocket.Chat message. - -```javascript -/* exported Script */ -/* globals console, _, s, HTTP */ - -/** Global Helpers - * - * console - A normal console instance - * _ - An underscore instance - * s - An underscore string instance - * HTTP - The Meteor HTTP object to do sync http calls - */ - -class Script { - /** - * @params {object} request - */ - prepare_outgoing_request({ request }) { - // request.params {object} - // request.method {string} - // request.url {string} - // request.auth {string} - // request.headers {object} - // request.data.token {string} - // request.data.channel_id {string} - // request.data.channel_name {string} - // request.data.timestamp {date} - // request.data.user_id {string} - // request.data.user_name {string} - // request.data.text {string} - // request.data.trigger_word {string} - - let match; - - // Change the URL and method of the request - match = request.data.text.match(/^pr\s(ls|list)/); - if (match) { - return { - url: request.url + '/pulls', - headers: request.headers, - method: 'GET' - }; - } - - // Prevent the request and return a new message - match = request.data.text.match(/^help$/); - if (match) { - return { - message: { - text: [ - '**commands**', - '```', - ' pr ls [open|closed|all] List Pull Requests', - '```' - ].join('\n') - // "channel": "#name-of-channel", - // "attachments": [{ - // "color": "#FF0000", - // "author_name": "Rocket.Cat", - // "author_link": "https://open.rocket.chat/direct/rocket.cat", - // "author_icon": "https://open.rocket.chat/avatar/rocket.cat.jpg", - // "title": "Rocket.Chat", - // "title_link": "https://rocket.chat", - // "text": "Rocket.Chat, the best open source chat", - // "fields": [{ - // "title": "Priority", - // "value": "High", - // "short": false - // }], - // "image_url": "https://rocket.chat/images/mockup.png", - // "thumb_url": "https://rocket.chat/images/mockup.png" - // }] - } - }; - } - } - - /** - * @params {object} request, response - */ - process_outgoing_response({ request, response }) { - // request {object} - the object returned by prepare_outgoing_request - - // response.error {object} - // response.status_code {integer} - // response.content {object} - // response.content_raw {string/object} - // response.headers {object} - - var text = []; - response.content.forEach(function(pr) { - text.push('> '+pr.state+' [#'+pr.number+']('+pr.html_url+') - '+pr.title); - }); - - // Return false will abort the response - // return false; - - // Return empty will proceed with the default response process - // return; - - return { - content: { - text: text.join('\n'), - parseUrls: false - // "attachments": [{ - // "color": "#FF0000", - // "author_name": "Rocket.Cat", - // "author_link": "https://open.rocket.chat/direct/rocket.cat", - // "author_icon": "https://open.rocket.chat/avatar/rocket.cat.jpg", - // "title": "Rocket.Chat", - // "title_link": "https://rocket.chat", - // "text": "Rocket.Chat, the best open source chat", - // "fields": [{ - // "title": "Priority", - // "value": "High", - // "short": false - // }], - // "image_url": "https://rocket.chat/images/mockup.png", - // "thumb_url": "https://rocket.chat/images/mockup.png" - // }] - } - }; - } -} -``` - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/appveyor.md b/guides/rocket.chat-administrator-guides/administration/integrations/appveyor.md deleted file mode 100644 index f2f1d7fbbc..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/appveyor.md +++ /dev/null @@ -1,6 +0,0 @@ -# AppVeyor - -Add [AppVeyor](https://www.appveyor.com) notifications via a new WebHook in Rocket.Chat. See the [project's documentation](https://github.com/crazy-max/rocketchat-appveyor) for integration instructions. - -![AppVeyor Intergration](../../../../.gitbook/assets/appveyor.png) - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/azure-alerts.md b/guides/rocket.chat-administrator-guides/administration/integrations/azure-alerts.md deleted file mode 100644 index e960240fee..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/azure-alerts.md +++ /dev/null @@ -1,158 +0,0 @@ -# Azure Alerts - -Add Azure Alert notifications via a new WebHook in Rocket.Chat - -1. In Rocket.Chat go to "Administration"->"Integrations" and create "New Integration" -2. Choose Incoming WebHook -3. Follow all instructions like Enable, give it a name, link to channel etc. Set "Enable Script" to true and enter the javascript in the "Script" box -4. Press Save changes and copy the _Webhook URL_ \(added just below the script box\) -5. Go to the azure portal and on the specific resource you want to enable Alerts for follow the steps for enabling Alerts and set the previously copied URL as the webhook URL for the Azure Alert. You can follow the steps shown here: [https://azure.microsoft.com/en-us/documentation/articles/insights-webhooks-alerts/](https://azure.microsoft.com/en-us/documentation/articles/insights-webhooks-alerts/) - -Paste this in javascript in the "Script" textarea on Rocket.Chat webhook settings - -```javascript -class Script { - process_incoming_request({ request }) { - // console is a global helper to improve debug - console.log(request.content); - - var alertColor = "warning"; - - if(request.content.status === "Resolved"){ alertColor = "good"; } - else if (request.content.status === "Activated") { alertColor = "danger"; } - - var condition = request.content.context.condition; - - return { - content:{ - username: "Azure", - text: "Azure Alert Notification", - attachments: [{ - title: request.content.context.name, - pretext: request.content.context.description, - title_link: request.content.context.portalLink, - text: condition.failureDetails, - color: alertColor, - fields: [ - { - title: "Status", - value: request.content.status + " @ " + request.content.context.timestamp - }, - { - title: "Condition", - value: condition.metricName + ": " + condition.metricValue + " " + condition.metricUnit + " for more than " + condition.windowSize + " min." - }, - { - title: "Threshold", - value: condition.operator + " " + condition.threshold - } - ] - }] - } - }; - - return { - error: { - success: false, - message: 'Error' - } - }; - } -} -``` - -This example shows basic processing of azure alerts that will give you the necessary information as to what happened and what is the current status, along with a status color to get an idea at a quick glimpse of the message. - -For newer created alerts the azure webhooks can be process by the following script: - -```javascript -class Script { - // this script was tested with AzureMonitorMetricAlert version 2.0 and should work for - // "conditionType": "MultipleResourceMultipleMetricCriteria" - process_incoming_request({ request }) { - // console is a global helper to improve debug - console.log(JSON.stringify(request.content, null, 4)); - - var alertColor = "warning"; - var condition = request.content.data.context.condition; - var conditionFields = []; - - if(request.content.data.status === "Deactivated"){ alertColor = "good"; } - else if (request.content.data.status === "Activated") { - alertColor = "danger"; - console.log(condition.allOf); - for (const cond of condition.allOf) { - console.log(cond); - conditionFields.push({ - title: "Condition: " + cond.metricName, - value: cond.metricValue + " " + cond.operator + " " + cond.threshold + " (" - + (cond.metricUnit ? cond.metricUnit + ", " : "") - + cond.timeAggregation + ")" - + " for more than " + condition.windowSize, - }); - } - } - - return { - content:{ - username: "Azure", - text: "Azure Alert Notification", - attachments: [{ - title: request.content.data.context.name, - pretext: request.content.data.context.description, - title_link: request.content.data.context.portalLink, - text: request.content.data.context.resourceGroupName + ": " + request.content.data.context.resourceName, - color: alertColor, - fields: [ - { - title: "Status", - value: request.content.data.status + " @ " + request.content.data.context.timestamp - }, - { - title: "Severity", - value: request.content.data.context.severity, - }, - ...conditionFields, - ] - }] - } - }; - } -} -``` - -The schema of the incoming message as of the official [Azure Alert Webhook Docs](https://azure.microsoft.com/en-us/documentation/articles/insights-webhooks-alerts/) is: - -```javascript -{ -"status": "Activated", -"context": { - "timestamp": "2015-08-14T22:26:41.9975398Z", - "id": "/subscriptions/s1/resourceGroups/useast/providers/microsoft.insights/alertrules/ruleName1", - "name": "ruleName1", - "description": "some description", - "conditionType": "Metric", - "condition": { - "metricName": "Requests", - "metricUnit": "Count", - "metricValue": "10", - "threshold": "10", - "windowSize": "15", - "timeAggregation": "Average", - "operator": "GreaterThanOrEqual" - }, - "subscriptionId": "s1", - "resourceGroupName": "useast", - "resourceName": "mysite1", - "resourceType": "microsoft.foo/sites", - "resourceId": "/subscriptions/s1/resourceGroups/useast/providers/microsoft.foo/sites/mysite1", - "resourceRegion": "centralus", - "portalLink": "https://portal.azure.com/#resource/subscriptions/s1/resourceGroups/useast/providers/microsoft.foo/sites/mysite1" -}, -"properties": { - "key1": "value1", - "key2": "value2" - } -} -``` - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/bitbucket.md b/guides/rocket.chat-administrator-guides/administration/integrations/bitbucket.md deleted file mode 100644 index 6414edf394..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/bitbucket.md +++ /dev/null @@ -1,11 +0,0 @@ -# BitRocket - -Follow the install instructions here: - -[https://github.com/FinndropStudios/BitRocket](https://github.com/FinndropStudios/BitRocket) - -Thanks to **Finndrop Studios** - -* Manuel Bachl \(m.bachl@finndrop.de\) -* Thies Schneider \(t.schneider@finndrop.de\) - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/confluence.md b/guides/rocket.chat-administrator-guides/administration/integrations/confluence.md deleted file mode 100644 index a4355df555..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/confluence.md +++ /dev/null @@ -1,5 +0,0 @@ -## Add Confluence integration via Outgoing WebHook - -Outgoing Rocket.Chat webhook integration that summarize mentioned JIRA issues and Confluence documents. - -Follow the instructions for installation and configuration from [https://github.com/pru-mike/rocketchat-jira-webhook](https://github.com/pru-mike/rocketchat-jira-webhook) diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/deadsimplescreensharing.md b/guides/rocket.chat-administrator-guides/administration/integrations/deadsimplescreensharing.md deleted file mode 100644 index 0b8747f778..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/deadsimplescreensharing.md +++ /dev/null @@ -1,24 +0,0 @@ -# Dead Simple Screen Sharing - -Create a Dead Simple Screen Sharing Meeting to do Screen Sharing and audio/video-conferencing session right from Rocket.Chat by sending a message `screenshare` - -1. In Rocket.Chat go to "Administration"->"Integrations" and create "New Integration" -2. Choose "Outgoing WebHook" -3. Configure the "Outgoing Webhook": - - 1. Select the "Event Trigger" as "Message Sent" - 2. Set Enabled to "True" - 3. In the Name enter "Dead Simple Screen Sharing" - 4. Under the channel type in `all_public_channels,all_private_groups,all_direct_messages` - 5. Trigger words type in `screenshare` - 6. Under URLs type: `https://app.deadsimplescreensharing.com/webhook/rocketchat` - 7. Under Post as: `rocket.cat` - 8. Click "Save Changes" - 9. Done! - - ![Dead Simple Screen Sharing rocket chat config](https://www.deadsimplescreensharing.com/wp-content/uploads/2018/01/Screen-Shot-2018-01-12-at-7.37.15-PM-1024x839.png) - -That's it! we have integrated "Dead Simple Screen Sharing", now when chatting we just have to send the message `screenshare` and a Dead Simple Screen Sharing meeting will be created, and you and your team members can visit the meeting link and perform screen sharing and audio-conferencing. - -![Dead Simple Screen Sharing Rocket.Chat integartion](https://www.deadsimplescreensharing.com/wp-content/uploads/2018/01/Screen-Shot-2018-01-12-at-7.40.07-PM-1024x453.png) - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/easyredmine.md b/guides/rocket.chat-administrator-guides/administration/integrations/easyredmine.md deleted file mode 100644 index a8062eccb2..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/easyredmine.md +++ /dev/null @@ -1,10 +0,0 @@ -# EasyRedmine - -[EasyRedmine](https://www.easyredmine.com/) is a fork of redmine, a project management tool, which brings together different additional plugins like Help Desk, Finance, CRM and many more. - -Full documentation/installation instruction: - -[https://github.com/wirdgroup/rocketchat-easyredmine](https://github.com/wirdgroup/rocketchat-easyredmine) - -Thanks to [**WIRDGroup**](https://www.wirdgroup.com) - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/giphy.md b/guides/rocket.chat-administrator-guides/administration/integrations/giphy.md deleted file mode 100644 index e33fbace85..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/giphy.md +++ /dev/null @@ -1,25 +0,0 @@ -# Giphy Integrations - -## Giphy Rocket.Chat App - -Install the Giphy App from the App Marketplace [https://rocket.chat/marketplace](https://rocket.chat/marketplace). - -Under Administration Settings -> Apps -> Giphy - -![Giphy Preview](https://i.imgur.com/v5dYBMo.gif) - -Thanks to **RocketBooster** - -* [https://apps.rocketbooster.net/giphy](https://apps.rocketbooster.net/giphy) - -## GifRocket - -Follow the install instructions here: - -[https://github.com/FinndropStudios/GifRocket](https://github.com/FinndropStudios/GifRocket) - -Thanks to **Finndrop Studios** - -* Manuel Bachl \(m.bachl@finndrop.de\) -* Thies Schneider \(t.schneider@finndrop.de\) - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/github.md b/guides/rocket.chat-administrator-guides/administration/integrations/github.md deleted file mode 100644 index ac32a9b191..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/github.md +++ /dev/null @@ -1,613 +0,0 @@ -# GitHub - -We can do 2 types of integrations with GitHub: - -* Receive alerts from GitHub \(**Incoming WebHook**\) -* Send commands to GitHub and optionally receive a response \(**Outgoing WebHook**\) - -## Receive alerts - -1. Create a new **Incoming WebHook**. -2. Select the channel where you will receive the alerts. You may wish to create a dedicated channel for your notifications. -3. Select an account from which the alerts will be posted. You may wish to create a dedicated account just for notifications. -4. Set the "Enable Scripts" option to `True`. -5. Copy-paste one of the example scripts below. -6. Save the integration. This will generate a webhook URL and secret for you. -7. Go to your repository `Settings -> WebHooks & services -> Add WebHook`. -8. Paste your **WebHook URL** from Rocket.Chat into **Payload URL**. -9. Keep **Content type** as `application/json`. -10. Leave **Secret** empty and save. - -### Example script 1: - -This script will generate notifications for the following repository events: - -* Issue events \(create, edit, close, reopen, assign, label, etc\) -* Issue comment events -* Push events \(singular and multiple commits\) - -![Screenshot of messages generated by GitHub integration script 1](../../../../.gitbook/assets/github-1.png) - -```javascript -/* exported Script */ - -String.prototype.capitalizeFirstLetter = function() { - return this.charAt(0).toUpperCase() + this.slice(1); -} - -const getLabelsField = (labels) => { - let labelsArray = []; - labels.forEach(function(label) { - labelsArray.push(label.name); - }); - labelsArray = labelsArray.join(', '); - return { - title: 'Labels', - value: labelsArray, - short: labelsArray.length <= 40 - }; -}; - -const githubEvents = { - ping(request) { - return { - content: { - text: '_' + request.content.hook.id + '_\n' + ':thumbsup: ' + request.content.zen - } - }; - }, - - /* NEW OR MODIFY ISSUE */ - issues(request) { - const user = request.content.sender; - - if (request.content.action == "opened" || request.content.action == "reopened" || request.content.action == "edited") { - var body = request.content.issue.body; - } else if (request.content.action == "labeled") { - var body = "Current labels: " + getLabelsField(request.content.issue.labels).value; - } else if (request.content.action == "assigned" || request.content.action == "unassigned") { - // Note that the issues API only gives you one assignee. - var body = "Current assignee: " + request.content.issue.assignee.login; - } else if (request.content.action == "closed") { - if (request.content.issue.closed_by) { - var body = "Closed by: " + request.content.issue.closed_by.login; - } else { - var body = "Closed."; - } - } else { - return { - error: { - success: false, - message: 'Unsupported issue action' - } - }; - } - - const action = request.content.action.capitalizeFirstLetter(); - - const text = '_' + request.content.repository.full_name + '_\n' + - '**[' + action + ' issue ​#' + request.content.issue.number + - ' - ' + request.content.issue.title + '](' + - request.content.issue.html_url + ')**\n\n' + - body; - - return { - content: { - attachments: [ - { - thumb_url: user.avatar_url, - text: text, - fields: [] - } - ] - } - }; - }, - - /* COMMENT ON EXISTING ISSUE */ - issue_comment(request) { - const user = request.content.comment.user; - - if (request.content.action == "edited") { - var action = "Edited comment "; - } else { - var action = "Comment " - } - - const text = '_' + request.content.repository.full_name + '_\n' + - '**[' + action + ' on issue ​#' + request.content.issue.number + - ' - ' + request.content.issue.title + '](' + - request.content.comment.html_url + ')**\n\n' + - request.content.comment.body; - - return { - content: { - attachments: [ - { - thumb_url: user.avatar_url, - text: text, - fields: [] - } - ] - } - }; - }, - - /* COMMENT ON COMMIT */ -commit_comment(request) { - const user = request.content.comment.user; - - if (request.content.action == "edited") { - var action = "Edited comment "; - } else { - var action = "Comment " - } - - const text = '_' + request.content.repository.full_name + '_\n' + - '**[' + action + ' on commit id ' + request.content.comment.commit_id + - ' - ' + + '](' + - request.content.comment.html_url + ')**\n\n' + - request.content.comment.body; - - return { - content: { - attachments: [ - { - thumb_url: user.avatar_url, - text: text, - fields: [] - } - ] - } - }; - }, - /* END OF COMMENT ON COMMIT */ - - /* PUSH TO REPO */ - push(request) { - var commits = request.content.commits; - var multi_commit = "" - var is_short = true; - var changeset = 'Changeset'; - if ( commits.length > 1 ) { - var multi_commit = " [Multiple Commits]"; - var is_short = false; - var changeset = changeset + 's'; - var output = []; - } - const user = request.content.sender; - - var text = '**Pushed to ' + "["+request.content.repository.full_name+"]("+request.content.repository.url+"):" - + request.content.ref.split('/').pop() + "**\n\n"; - - for (var i = 0; i < commits.length; i++) { - var commit = commits[i]; - var shortID = commit.id.substring(0,7); - var a = '[' + shortID + '](' + commit.url + ') - ' + commit.message; - if ( commits.length > 1 ) { - output.push( a ); - } else { - var output = a; - } - } - - if (commits.length > 1) { - text += output.reverse().join('\n'); - } else { - text += output; - } - - return { - content: { - attachments: [ - { - thumb_url: user.avatar_url, - text: text, - fields: [] - } - ] - } - }; - }, // End GitHub Push - - /* NEW PULL REQUEST */ - pull_request(request) { - const user = request.content.sender; - - if (request.content.action == "opened" || request.content.action == "reopened" || request.content.action == "edited" || request.content.action == "synchronize") { - var body = request.content.pull_request.body; - } else if (request.content.action == "labeled") { - var body = "Current labels: " + getLabelsField(request.content.pull_request.labels).value; - } else if (request.content.action == "assigned" || request.content.action == "unassigned") { - // Note that the issues API only gives you one assignee. - var body = "Current assignee: " + request.content.pull_request.assignee.login; - } else if (request.content.action == "closed") { - if (request.content.pull_request.merged) { - var body = "Merged by: " + request.content.pull_request.merged_by.login; - } else { - var body = "Closed."; - } - } else { - return { - error: { - success: false, - message: 'Unsupported pull request action' - } - }; - } - - const action = request.content.action.capitalizeFirstLetter(); - - const text = '_' + request.content.repository.full_name + '_\n' + - '**[' + action + ' pull request ​#' + request.content.pull_request.number + - ' - ' + request.content.pull_request.title + '](' + - request.content.pull_request.html_url + ')**\n\n' + - body; - - return { - content: { - attachments: [ - { - thumb_url: user.avatar_url, - text: text, - fields: [] - } - ] - } - }; - }, -}; - -class Script { - process_incoming_request({ request }) { - const header = request.headers['x-github-event']; - if (githubEvents[header]) { - return githubEvents[header](request); - } - - return { - error: { - success: false, - message: 'Unsupported method' - } - }; - } -} -``` - -#### Example script 2: - -This script will generate notifications for the following repository events: - -* New and closed issue events -* Comment events \(issues only\) -* Push events \(singular and multiple commits\) - -![Screenshot of messages generated by GitHub integration script 2](../../../../.gitbook/assets/github-2.png) - -```javascript -/* exported Script */ - -// Begin embedded images -const gh_cmit_svg = ''; -const gh_pr_svg = ''; -const gh_iss_svg = ''; -const svg_inline_prefix = 'data:image/svg+xml;ascii,'; -// End embedded images - -const getLabelsField = (labels) => { - let labelsArray = []; - labels.forEach(function(label) { - labelsArray.push(label.name); - }); - labelsArray = labelsArray.join(', '); - return { - title: 'Labels', - value: labelsArray, - short: labelsArray.length <= 40 - }; -}; - -const githubEvents = { - ping(request) { - return { - content: { - text: ':thumbsup: ' + request.content.zen - } - }; - }, - - issues(request) { - const user = request.content.sender; - const attachment = { - author_icon: svg_inline_prefix + gh_iss_svg, - author_name: '#' + request.content.issue.number + ' - ' + request.content.issue.title, - author_link: request.content.issue.html_url, - fields: [] - }; - - if (request.content.issue.labels) { - attachment.fields.push(getLabelsField(request.content.issue.labels)); - } - - if (request.content.issue.assignee) { - attachment.fields.push({ - title: 'Assignee', - value: request.content.issue.assignee.login, - short: true - }); - } - - const actions = { - 'assigned': ':inbox_tray:', - 'unassigned': ':outbox_tray:', - 'opened': ':triangular_flag_on_post:', - 'closed': ':white_check_mark:', - 'reopened': ':triangular_flag_on_post:', - 'labeled': ':label:', - 'unlabeled': ':label:', - 'edited': ':pencil:' - }; - - const text = actions[request.content.action] + ' issue'; - - return { - content: { - icon_url: user.avatar_url, - alias: user.login, - text: text, - attachments: [attachment] - } - }; - }, - - issue_comment(request) { - const user = request.content.comment.user; - var attachment = { - author_icon: svg_inline_prefix + gh_iss_svg, - author_name: '#' + request.content.issue.number + ' - ' + request.content.issue.title, - author_link: request.content.comment.html_url, - fields: [] - }; - - if (request.content.issue.labels) { - attachment.fields.push(getLabelsField(request.content.issue.labels)); - } - - if (request.content.issue.assignee) { - attachment.fields.push({ - title: 'Assignee', - value: request.content.issue.assignee.login, - short: true - }); - } - - const text = ':speech_balloon: ' + request.content.comment.body; - - return { - content: { - icon_url: user.avatar_url, - alias: user.login, - text: text, - attachments: [attachment] - } - }; - }, - - pull_request(request) { - const user = request.content.sender; - const attachment = { - author_icon: svg_inline_prefix + gh_pr_svg, - author_name: '#' + request.content.pull_request.number + ' - ' + request.content.pull_request.title, - author_link: request.content.pull_request.html_url - }; - - let text = 'Pull request'; - switch (request.content.action) { - case 'assigned': - text += ' assigned to: ' + request.content.assignee.login; - break; - case 'unassigned': - text += ' unassigned of ' + request.content.assignee.login; - break; - case 'opened': - text += ' opened'; - break; - case 'closed': - if (request.content.pull_request.merged) { - text += ' merged'; - } else { - text += ' closed'; - } - break; - case 'reopened': - text += ' reopened'; - break; - case 'labeled': - text += ' added label: "' + request.content.label.name + '" '; - break; - case 'unlabeled': - text += ' removed label: "' + request.content.label.name + '" '; - break; - case 'synchronize': - text += ' synchronized'; - } - - return { - content: { - icon_url: user.avatar_url, - alias: user.login, - text: text, - attachments: [attachment] - } - }; - }, - - //// GitHub push event - push(request) { - var commits = request.content.commits; - var multi_commit = "" - var is_short = true; - var changeset = 'Changeset'; - if ( commits.length > 1 ) { - var multi_commit = " [Multiple Commits]"; - var is_short = false; - var changeset = changeset + 's'; - var output = []; - } - const user = request.content.sender; - const attachment = { - author_icon: svg_inline_prefix + gh_cmit_svg, - author_name: "Message: " + request.content.head_commit.message + multi_commit, - author_link: request.content.compare, - fields: [] - }; - - if (request.content.repository.full_name) { - attachment.fields.push({ - title: 'Repo', - value: "["+request.content.repository.full_name+"]("+request.content.repository.url+")", - short: is_short - }); - } - - for (var i = 0; i < commits.length; i++) { - var commit = commits[i]; - var shortID = commit.id.substring(0,7); - if ( commits.length > 1 ) { - output = '[' + shortID + '](' + commit.url + ') - ' + commit.message - if (i == 0){ - attachment.fields.push({ - title: changeset, - value: output, - short: is_short - }); - } else{ - attachment.fields.push({ - title: changeset, - value: output, - short: is_short - }); - } - } else { - output = "[" + shortID + "](" + commit.url + ")" - attachment.fields.push({ - title: changeset, - value: output, - short: is_short - }); - } - } - - const text = ':ballot_box_with_check: Pushed to ' + "["+request.content.ref.split('/').pop()+"]"; - - return { - content: { - icon_url: user.avatar_url, - alias: user.login, - text: text, - attachments: [attachment] - } - }; - }, // End GitHub Push -}; - -class Script { - process_incoming_request({ request }) { - const header = request.headers['x-github-event']; - if (githubEvents[header]) { - return githubEvents[header](request); - } - - return { - error: { - success: false, - message: 'Unsupported method' - } - }; - } -} -``` - -#### Customizing your integration scripts - -The purpose of the integration script is to transform data in one format \(the format provided by your incoming service, such as GitHub\) into another format \(the format expected by Rocket.Chat\). Therefore, should you wish to customize either of the scripts presented above, you will need two resources: - -* [GitHub API specifications](https://developer.github.com/v3/) -* [Specifications for Rocket.Chat integration message objects](./#incoming-webhook-script) - -Note that data comes _into_ your script from GitHub as the `request.content` object. - -### Send commands to GitHub - -`This script only works for public repositories` - -* Create a new **Outgoing WebHook** -* Select the channel where you will use the commands and receive the responses -* Set **URLs** as `https://api.github.com/repos/User-Or-Org-Name/Repo-Name` like `https://api.github.com/repos/RocketChat/Rocket.Chat` -* Enable Scripts -* Use this **Script** to listen for commands `pr ls`, `pr list` and `help` - -```javascript - /* exported Script */ - /* globals Store */ - - class Script { - prepare_outgoing_request({ request }) { - let match; - - console.log('lastCmd', Store.get('lastCmd')); - - match = request.data.text.match(/^pr last$/); - if (match && Store.get('lastCmd')) { - request.data.text = Store.get('lastCmd'); - } - - match = request.data.text.match(/^pr\s(ls|list)\s*(open|closed|all)?$/); - if (match) { - Store.set('lastCmd', request.data.text); - let u = request.url + '/pulls'; - if (match[2]) { - u += '?state='+match[2]; - } - return { - url: u, - headers: request.headers, - method: 'GET' - }; - } - - match = request.data.text.match(/^help$/); - if (match) { - Store.set('lastCmd', request.data.text); - return { - message: { - text: [ - '**GitHub commands**', - '```', - ' pr ls|list [open|closed|all] List Pull Requests', - '```' - ].join('\n') - } - }; - } - } - - process_outgoing_response({ request, response }) { - var text = []; - response.content.forEach(function(pr) { - text.push('> '+pr.state+' [#'+pr.number+']('+pr.html_url+') - '+pr.title); - }); - - return { - content: { - text: text.join('\n'), - parseUrls: false - } - }; - } - } -``` - -* Save your integration - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/gitlab.md b/guides/rocket.chat-administrator-guides/administration/integrations/gitlab.md deleted file mode 100644 index 5cc6fc550a..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/gitlab.md +++ /dev/null @@ -1,388 +0,0 @@ -# GitLab - -Add GitLab notifications via a new WebHook in Rocket.Chat - -1. In Rocket.Chat go to "Administration"->"Integrations" and create "New Integration". -2. Choose Incoming WebHook. -3. Follow all instructions like Enable, give it a name, link to channel etc. Set "Enable Script" to true and enter the javascript in the "Script" box. -4. Press Save changes and copy the _Webhook URL_ \(added just below the script box\). -5. Go to your GitLab project, ie. [https://gitlab.com/](https://gitlab.com/)< username >/< project >/hooks . It's in the project "settings" under Webhooks menu GitLab. -6. Add a new webhook by pasting the Rocket.Chat url you've copied in step 4, select at least 1 checkbox and press the button \(conveniently called "Add Webhook"\). -7. Test the webhook with the "Test Hook" button in GitLab, a topbar should appear with more info \(success or failure\). - -Paste this in javascript in the "Script" text area on Rocket.Chat webhook settings - -```javascript -/* eslint no-console:0, max-len:0 */ -// see for full json posted by GitLab -const MENTION_ALL_ALLOWED = false; // <- check that bot permission allow has mention-all before passing this to true. -const NOTIF_COLOR = '#6498CC'; -const IGNORE_CONFIDENTIAL = true; -const refParser = (ref) => ref.replace(/^refs\/(?:tags|heads)\/(.+)$/, '$1'); -const displayName = (name) => (name && name.toLowerCase().replace(/\s+/g, '.')); -const atName = (user) => (user && user.name ? '@' + displayName(user.name) : ''); -const makeAttachment = (author, text, color) => { - return { - author_name: author ? displayName(author.name) : '', - author_icon: author ? author.avatar_url : '', - text, - color: color || NOTIF_COLOR - }; -}; -const pushUniq = (array, val) => ~array.indexOf(val) || array.push(val); // eslint-disable-line - -class Script { // eslint-disable-line - process_incoming_request({ request }) { - try { - let result = null; - const channel = request.url.query.channel; - const event = request.headers['x-gitlab-event']; - switch (event) { - case 'Push Hook': - result = this.pushEvent(request.content); - break; - case 'Merge Request Hook': - result = this.mergeRequestEvent(request.content); - break; - case 'Note Hook': - result = this.commentEvent(request.content); - break; - case 'Confidential Issue Hook': - case 'Issue Hook': - result = this.issueEvent(request.content, event); - break; - case 'Tag Push Hook': - result = this.tagEvent(request.content); - break; - case 'Pipeline Hook': - result = this.pipelineEvent(request.content); - break; - case 'Build Hook': // GitLab < 9.3 - result = this.buildEvent(request.content); - break; - case 'Job Hook': // GitLab >= 9.3.0 - result = this.buildEvent(request.content); - break; - case 'Wiki Page Hook': - result = this.wikiEvent(request.content); - break; - default: - result = this.unknownEvent(request, event); - break; - } - if (result && result.content && channel) { - result.content.channel = '#' + channel; - } - return result; - } catch (e) { - console.log('gitlabevent error', e); - return this.createErrorChatMessage(e); - } - } - - createErrorChatMessage(error) { - return { - content: { - username: 'Rocket.Cat ErrorHandler', - text: 'Error occured while parsing an incoming webhook request. Details attached.', - icon_url: '', - attachments: [ - { - text: `Error: '${error}', \n Message: '${error.message}', \n Stack: '${error.stack}'`, - color: NOTIF_COLOR - } - ] - } - }; - } - - unknownEvent(data, event) { - return { - content: { - username: data.user ? data.user.name : (data.user_name || 'Unknown user'), - text: `Unknown event '${event}' occured. Data attached.`, - icon_url: data.user ? data.user.avatar_url : (data.user_avatar || ''), - attachments: [ - { - text: `${JSON.stringify(data, null, 4)}`, - color: NOTIF_COLOR - } - ] - } - }; - } - issueEvent(data, event) { - if (event === 'Confidential Issue Hook' && IGNORE_CONFIDENTIAL) { - return false; - } - const project = data.project || data.repository; - const state = data.object_attributes.state; - const action = data.object_attributes.action; - let user_action = state; - let assigned = ''; - - if (action === 'update') { - user_action = 'updated'; - } - - if (data.assignee) { - assigned = `*Assigned to*: @${data.assignee.username}\n`; - } - - return { - content: { - username: 'gitlab/' + project.name, - icon_url: project.avatar_url || data.user.avatar_url || '', - text: (data.assignee && data.assignee.name !== data.user.name) ? atName(data.assignee) : '', - attachments: [ - makeAttachment( - data.user, `${user_action} an issue _${data.object_attributes.title}_ on ${project.name}. -*Description:* ${data.object_attributes.description}. -${assigned} -See: ${data.object_attributes.url}` - ) - ] - } - }; - } - - commentEvent(data) { - const project = data.project || data.repository; - const comment = data.object_attributes; - const user = data.user; - const at = []; - let text; - if (data.merge_request) { - const mr = data.merge_request; - const lastCommitAuthor = mr.last_commit && mr.last_commit.author; - if (mr.assignee && mr.assignee.name !== user.name) { - at.push(atName(mr.assignee)); - } - if (lastCommitAuthor && lastCommitAuthor.name !== user.name) { - pushUniq(at, atName(lastCommitAuthor)); - } - text = `commented on MR [#${mr.id} ${mr.title}](${comment.url})`; - } else if (data.commit) { - const commit = data.commit; - const message = commit.message.replace(/\n[^\s\S]+/, '...').replace(/\n$/, ''); - if (commit.author && commit.author.name !== user.name) { - at.push(atName(commit.author)); - } - text = `commented on commit [${commit.id.slice(0, 8)} ${message}](${comment.url})`; - } else if (data.issue) { - const issue = data.issue; - text = `commented on issue [#${issue.id} ${issue.title}](${comment.url})`; - } else if (data.snippet) { - const snippet = data.snippet; - text = `commented on code snippet [#${snippet.id} ${snippet.title}](${comment.url})`; - } - return { - content: { - username: 'gitlab/' + project.name, - icon_url: project.avatar_url || user.avatar_url || '', - text: at.join(' '), - attachments: [ - makeAttachment(user, `${text}\n${comment.note}`) - ] - } - }; - } - - mergeRequestEvent(data) { - const user = data.user; - const mr = data.object_attributes; - const assignee = mr.assignee; - let at = []; - - if (mr.action === 'open' && assignee) { - at = '\n' + atName(assignee); - } else if (mr.action === 'merge') { - const lastCommitAuthor = mr.last_commit && mr.last_commit.author; - if (assignee && assignee.name !== user.name) { - at.push(atName(assignee)); - } - if (lastCommitAuthor && lastCommitAuthor.name !== user.name) { - pushUniq(at, atName(lastCommitAuthor)); - } - } - return { - content: { - username: `gitlab/${mr.target.name}`, - icon_url: mr.target.avatar_url || mr.source.avatar_url || user.avatar_url || '', - text: at.join(' '), - attachments: [ - makeAttachment(user, `${mr.action} MR [#${mr.iid} ${mr.title}](${mr.url})\n${mr.source_branch} into ${mr.target_branch}`) - ] - } - }; - } - - pushEvent(data) { - const project = data.project || data.repository; - const web_url = project.web_url || project.homepage; - const user = { - name: data.user_name, - avatar_url: data.user_avatar - }; - // branch removal - if (data.checkout_sha === null && !data.commits.length) { - return { - content: { - username: `gitlab/${project.name}`, - icon_url: project.avatar_url || data.user_avatar || '', - attachments: [ - makeAttachment(user, `removed branch ${refParser(data.ref)} from [${project.name}](${web_url})`) - ] - } - }; - } - // new branch - if (data.before == 0) { // eslint-disable-line - return { - content: { - username: `gitlab/${project.name}`, - icon_url: project.avatar_url || data.user_avatar || '', - attachments: [ - makeAttachment(user, `pushed new branch [${refParser(data.ref)}](${web_url}/commits/${refParser(data.ref)}) to [${project.name}](${web_url}), which is ${data.total_commits_count} commits ahead of master`) - ] - } - }; - } - return { - content: { - username: `gitlab/${project.name}`, - icon_url: project.avatar_url || data.user_avatar || '', - attachments: [ - makeAttachment(user, `pushed ${data.total_commits_count} commits to branch [${refParser(data.ref)}](${web_url}/commits/${refParser(data.ref)}) in [${project.name}](${web_url})`), - { - text: data.commits.map((commit) => ` - ${new Date(commit.timestamp).toUTCString()} [${commit.id.slice(0, 8)}](${commit.url}) by ${commit.author.name}: ${commit.message.replace(/\s*$/, '')}`).join('\n'), - color: NOTIF_COLOR - } - ] - } - }; - } - - tagEvent(data) { - const project = data.project || data.repository; - const web_url = project.web_url || project.homepage; - const tag = refParser(data.ref); - const user = { - name: data.user_name, - avatar_url: data.user_avatar - }; - let message; - if (data.checkout_sha === null) { - message = `deleted tag [${tag}](${web_url}/tags/)`; - } else { - message = `pushed tag [${tag} ${data.checkout_sha.slice(0, 8)}](${web_url}/tags/${tag})`; - } - return { - content: { - username: `gitlab/${project.name}`, - icon_url: project.avatar_url || data.user_avatar || '', - text: MENTION_ALL_ALLOWED ? '@all' : '', - attachments: [ - makeAttachment(user, message) - ] - } - }; - } - - createColor(status) { - switch (status) { - case 'success': - return '#2faa60'; - case 'pending': - return '#e75e40'; - case 'failed': - return '#d22852'; - case 'canceled': - return '#5c5c5c'; - case 'created': - return '#ffc107'; - case 'running': - return '#607d8b'; - default: - return null; - } - } - - pipelineEvent(data) { - const project = data.project || data.repository; - const commit = data.commit; - const user = { - name: data.user_name, - avatar_url: data.user_avatar - }; - const pipeline = data.object_attributes; - - return { - content: { - username: `gitlab/${project.name}`, - icon_url: project.avatar_url || data.user_avatar || '', - attachments: [ - makeAttachment(user, `pipeline returned *${pipeline.status}* for commit [${commit.id.slice(0, 8)}](${commit.url}) made by *${commit.author.name}*`, this.createColor(pipeline.status)) - ] - } - }; - } - - buildEvent(data) { - const user = { - name: data.user_name, - avatar_url: data.user_avatar - }; - - return { - content: { - username: `gitlab/${data.repository.name}`, - icon_url: '', - attachments: [ - makeAttachment(user, `build named *${data.build_name}* returned *${data.build_status}* for [${data.project_name}](${data.repository.homepage})`, this.createColor(data.build_status)) - ] - } - }; - } - - wikiPageTitle(wiki_page) { - if (wiki_page.action === 'delete') { - return wiki_page.title; - } - - return `[${wiki_page.title}](${wiki_page.url})`; - } - - wikiEvent(data) { - const user_name = data.user.name; - const project = data.project; - const project_path = project.path_with_namespace; - const wiki_page = data.object_attributes; - const wiki_page_title = this.wikiPageTitle(wiki_page); - const action = wiki_page.action; - - let user_action = 'modified'; - - if (action === 'create') { - user_action = 'created'; - } else if (action === 'update') { - user_action = 'edited'; - } else if (action === 'delete') { - user_action = 'deleted'; - } - - return { - content: { - username: project_path, - icon_url: project.avatar_url || data.user.avatar_url || '', - text: `The wiki page ${wiki_page_title} was ${user_action} by ${user_name}` - } - }; - } -} -``` - -This example contains code for several hooks. It can easily be extended with more. Source: [https://github.com/malko/rocketchat-gitlab-hook](https://github.com/malko/rocketchat-gitlab-hook). - -GitLab webhook help: [https://docs.gitlab.com/ee/user/project/integrations/webhooks.html](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/google-calendar.md b/guides/rocket.chat-administrator-guides/administration/integrations/google-calendar.md deleted file mode 100644 index 4095ccba91..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/google-calendar.md +++ /dev/null @@ -1,76 +0,0 @@ -# Google Calendar - -This integration uses Rocket.Chat incoming webhook. With this integration, you'll get your event notifications right into Rocket.Chat. - -### Prerequisites - -1. A Google Cloud Platform project with the Google Calendar API enabled. To create a project and enable an API, refer to [Create a project and enable the API](https://developers.google.com/workspace/guides/create-project). -2. Prepare authorization credentials for a desktop application. To learn how to create credentials for a desktop application, refer to [Create credentials](https://developers.google.com/workspace/guides/create-credentials#desktop) \(make sure you download the JSON file\). -3. Create a dedicated channel for the event messages to be posted. You can use an existing channel as well. - -### Prepare Incoming Webhook - -1. Go to `Administration` then `Integration`. -2. Click the "New" button on the top right corner, then select "incoming" for the webhook type. -3. Check "Enabled". Give it an optional name. Enter the channel name where the messages are going to be posted. For the "post as" box, enter a bot username like `rocket.cat`. You can use other usernames as well, you're free to experiment. -4. Enable the incoming webhook script. For the script, copy the contents of this file - [https://github.com/debdutdeb/rocketchat-google-calendar/blob/main/script.js](https://github.com/debdutdeb/rocketchat-google-calendar/blob/main/script.js) -5. Go to the bottom of the page and click "save". - -![Initial Configuration](../../../../.gitbook/assets/screenshot0.png) - -![Enable Script](../../../../.gitbook/assets/image%20%28560%29.png) - -![Save Webhook](../../../../.gitbook/assets/image%20%28510%29.png) - -As soon as the webhook is saved, you'll notice a webhook URL - - -![Webhook URL](../../../../.gitbook/assets/image%20%28523%29.png) - -We'll need this in the next step. - -### Run Integration Program - -The integration program runs on a server, periodically grabs the event data from your calendar and sends that data to your Rocket.Chat server to be processed and sent to the channel you set up in the previous section. - -To install the integration program, the easiest way is to first install the [go binary](https://golang.org/doc/install) and the run the following command - - -```bash -go get github.com/debdutdeb/rocketchat-google-calendar -``` - -Edit your `bashrc`, `zshrc` or `fish` config and add `$(go env GOPATH)/bin` to your `PATH`. This way you won't have to specify the whole path to the command every time. - -Use the help option to learn all the command line options and modify its execution process - `rocketchat-google-calendar -h` - -```text -Usage of ./rocketchat-google-calendar: - -calendars string - List of calendar IDs, separated by commas. (default "primary") - -credentials string - Enter path to the credentials file. (default "credentials.json") - -eventin string - The upper limit of upcoming event start time. Lower bound is the moment of API access. (default "30m") - -waitfor string - Time to wait before attempting a POST to Rocket.Chat webhook. (default "5m") - -webhook string - Enter the webhook url you got from Rocket.Chat. -``` - -Enter the appropriate values for the respective options. - -You'll then be asked to open a link. Click on it and use your Google account to authorize the app. - -![rocketchat-google-calendar](../../../../.gitbook/assets/image%20%28541%29.png) - -Once you get the token, copy and paste it on the terminal and hit enter. - -Your integration should now be running. - -### Notifying Once Every Day - -In the example command above, the event data is fetched from the Google servers every 5 minutes. You can change that behaviour however you like. - -One very common usecase is to be notified about all the meetings/events for each day, in the morning. You can acheive this by combining the two flags `-eventin` and `-waitfor`. - -Use `24h` for both of those options. This way the integration program will fetch data every 24 hours, list the events that's going to occur in those 24 hours and send them to your Rocket.Chat server. - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/graylog.md b/guides/rocket.chat-administrator-guides/administration/integrations/graylog.md deleted file mode 100644 index d7135621bb..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/graylog.md +++ /dev/null @@ -1,8 +0,0 @@ -# Graylog - -[Graylog](https://graylog.org) is a powerful open-source log management platform. It aggregates and extracts important data from server logs, which are often sent using the Syslog protocol. It also allows you to search and visualize the logs in a web interface. - -Follow the install instructions here: - -[https://github.com/jeanmorais/rocketchat-graylog-hook](https://github.com/jeanmorais/rocketchat-graylog-hook) - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/guggy.md b/guides/rocket.chat-administrator-guides/administration/integrations/guggy.md deleted file mode 100644 index 15fd48bc08..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/guggy.md +++ /dev/null @@ -1,2 +0,0 @@ -# Guggy - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/jenkins.md b/guides/rocket.chat-administrator-guides/administration/integrations/jenkins.md deleted file mode 100644 index 2e6b97f572..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/jenkins.md +++ /dev/null @@ -1,8 +0,0 @@ -# Jenkins notifications via Rocket.Chat API - -_This plugin notify on build start, failure, success and much more per project basis._ - -1. Download [_RocketChat Notifier_ Plugin](https://plugins.jenkins.io/rocketchatnotifier) via Jenkins Update Center. -2. Go to _Manage Jenkins_ -> _Configure system_ and find settings for this plugin. Setup your Rocket.Chat URL, User/Password and default channel \(recommended\). -3. In project select _Post-build Actions_ and configure plugin for your needs. - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/jfrog-xray.md b/guides/rocket.chat-administrator-guides/administration/integrations/jfrog-xray.md deleted file mode 100644 index cb0b09f6d2..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/jfrog-xray.md +++ /dev/null @@ -1,6 +0,0 @@ -# JFrog Xray - -Add [JFrog Xray](https://jfrog.com/xray/) notifications via a new WebHook in Rocket.Chat. See the [project's documentation](https://github.com/crazy-max/rocketchat-xray) for integration instructions. - -![JFrog Xray Integration](../../../../.gitbook/assets/xray.png) - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/jira.md b/guides/rocket.chat-administrator-guides/administration/integrations/jira.md deleted file mode 100644 index ce73b2386d..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/jira.md +++ /dev/null @@ -1,22 +0,0 @@ -# Add Jira notifications via WebHook - -_notify on issue creation, deletion and status, resolution, comment or priority changes._ - -1. In Rocket.Chat go to "Administration"->"Integrations" and create "New Integration" -2. Choose Incoming WebHook -3. Follow all instructions like Enable, give it a name, link to channel etc. Set "Enable Script" to true and enter content of [_this script_](https://github.com/malko/rocketchat-jira-hook/blob/master/jira-rocketchat-hook.js) in the "Script" box -4. Press Save changes and copy the _Webhook URL_ \(added just below the script box\) -5. Go to your jira as administrator and follow instructions on adding outgoing webhook [here](https://developer.atlassian.com/jiradev/jira-apis/webhooks#Webhooks-configureConfiguringawebhook) - -You can tweak the content of the script to better suit your needs - -## Add Jira integration via Outgoing WebHook - -_Integration for Rocket.Chat that summarizes any JIRA issues mentioned._ - -1. Go to [https://github.com/gustavkarlsson/rocketchat-jira-trigger](https://github.com/gustavkarlsson/rocketchat-jira-trigger) and follow the instructions. - -Example of Jira integration: - -![Jira integration](../../../../.gitbook/assets/jira-webhook.png) - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/microbadger.md b/guides/rocket.chat-administrator-guides/administration/integrations/microbadger.md deleted file mode 100644 index e92a1511a5..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/microbadger.md +++ /dev/null @@ -1,6 +0,0 @@ -# MicroBadger - -Add [MicroBadger](https://microbadger.com) Docker image changes notifications via a new WebHook in Rocket.Chat. See the [project's documentation](https://github.com/crazy-max/rocketchat-microbadger) for integration instructions. - -![MicroBadger Intergration](../../../../.gitbook/assets/microbadger.png) - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/microsoft-teams.md b/guides/rocket.chat-administrator-guides/administration/integrations/microsoft-teams.md deleted file mode 100644 index 704dec138b..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/microsoft-teams.md +++ /dev/null @@ -1,116 +0,0 @@ -# Microsoft Teams - -## Goal - -* Receive message from Microsoft Teams \(**Incoming WebHook**\) -* Send message to Microsoft Teams Channel\(**Outgoing WebHook**\) - -## Create Incoming WebHook in Rocket.Chat - -_**Note:** I would advise to create New Team so not all members in your organisation have access to this Integration_ - -1. **Create Incoming Webhook with Default parameters:** - * Go to **Integrations** --> Create **New integration** --> Select **Incoming WebHook** - * Assign **Name** - * Assign **Post to Channel** \(This will be the Channel where you want to recieve msg from Teams\) - * Assign **Post as** \(Create Bot user and add bot the above mentioned Channel\) - * Copy and paste below script in **Script** section - -```javascript -class Script { - process_incoming_request({ request }) { - // UNCOMMENT THE BELOW LINE TO DEBUG IF NEEDED. - // console.log(request.content); - if ('edited_message' in request.content) { - request.content = request.content; - } - let from = request.content.from; - let who = from.name; - let icon_url = '/avatar/' + from.name + '.jpg' - let body = request.content.text.slice(16); - - if(!body) { - if(request.content.hasOwnProperty("sticker") && request.content.sticker.emoji) { - // It's a sticker - body = request.content.sticker.emoji - } else { - return {} - } - } - - return { - content: { - username: who, - icon_url: icon_url, - text: body - } - }; - } -} -``` - -1. **Save** and then open your **Incoming WebHook** You should be able to see **Webhook URL** just **copy** that, We will need that during Creating **Outgoing WebHook** in MS Teams. - -## Create Outgoing WebHook in MS Teams: - -1. Select the appropriate team and select **Manage team** from the \(**•••**\) drop-down menu. -2. Choose the **Apps** tab from the navigation bar. -3. From the window's lower right corner select Create an **outgoing webhook**. -4. In the resulting popup window complete the required fields: - - * **Name** - The webhook title and @mention tap. \(This will be your bot name in MS Teams\) - * **Callback URL** - Paste the URL here we copied from Rocket.Chat. - * **Description** - A detailed string that will appear in the profile card and the team-level App dashboard. - * **Profile Picture** \(optional\) an app icon for your webhook. - * Select the **Create** button from lower right corner of the pop-up window and the outgoing webhook will be added to the current team's channels. - - _**Note :**_ _The Name We mentioned above will be the bot name so when you send message to Rocket.Chat Mention to Bot example @namebot_ - - \_\_ - -## Create Incoming WebHook in MS Teams: - -1. Navigate to the **Team** where you want to add the webhook and select \(**•••**\) **More Options** from the top navigation bar and Select **Apps** and select **More apps**. - * Choose **Connectors** from the drop-down menu and search for **Incoming Webhook**. - * Select the **Configure** button, provide a name, and, optionally, upload an image avatar for your webhook. - * Select appropriate **Teams** and **Channel**. - * The dialog window will present a unique URL that will map to the channel. Make sure that you **copy and save the URL**—you will need to provide it to Rocket.Chat Outgoing WebHook. - * Select the **Done** button. The webhook will be available in the team channel. - -## Create Outgoing Webhook in Rocket.Chat: - -1. Create **Outgoing WebHook** from Integration: - * Select **Message Sent** as **Event Trigger** - * Select the **Channel** \(same as mentioned in Incoming Webhook\) - * Paste the **URL** we copied from Microsoft Teams - * Select Bot **Post as** \(same as in Incoming Webhook\) - * Paste Below **Script**: - -```javascript -class Script { - prepare_outgoing_request({ request }) { - console.log(request.data); - if (request.data.bot) { - //Don't repost messages from the bot. - return { }; - } else { - return { - url: request.url, - method: 'POST', - headers: {"ContentType":"application/json","Content-type":"application/json"}, - data: { - context: 'http://schema.org/extensions', - type: 'MessageCard', - // text: '{\'' + request.data.user_name+ ':': \"Isravel - Hello World\"}'; - text: request.data.user_name.bold() + ": " + request.data.text, - // text: encodeURIComponent( request.data.user_name.bold() + request.data.text) - }, - // method: 'GET' - }; - } - } - } -``` - -## Enjoy! - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/newrelic.md b/guides/rocket.chat-administrator-guides/administration/integrations/newrelic.md deleted file mode 100644 index 1b00dc61d1..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/newrelic.md +++ /dev/null @@ -1,10 +0,0 @@ -# NewRelic - -[NewRelic](https://newrelic.com) offers a performance management solution enabling developers to diagnose and fix application performance problems in real time. It also provides notification / alerting facet to their offerings. - -Full documentation/installation instruction: - -[https://github.com/kajisaap/rocketchat-newrelic](https://github.com/kajisaap/rocketchat-newrelic) - -Thanks to [**CloudFactory**](https://www.cloudfactory.com) - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/nextcloud-and-webdav.md b/guides/rocket.chat-administrator-guides/administration/integrations/nextcloud-and-webdav.md deleted file mode 100644 index fb279a316c..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/nextcloud-and-webdav.md +++ /dev/null @@ -1,22 +0,0 @@ -# Nextcloud and WebDAV integrations - -You can integrate Nextcloud with any application that uses the WebDAV protocol. - -To do so, you will need a server admin to go into `Administration -> Webdav Integration` and set the `Webdav Integration Enabled` setting to `true`. - -Users can then link their Nextcloud/WebDAV service to Rocket.Chat to access and share their stored files. - -## Adding a new Nextcloud/WebDAV server - -Once the integration has been enabled by the admin, any user will be able to link their servers to Rocket.Chat. - -To do that, you should simply press the file-sharing button on the message box \(the big "plus" at the end of the message box\) and select `add server` under the `WebDav` category. - -Then you will need your `WebDAV url`, your username and password for that server. You can find out how to get your WebDAV url on Nextcloud's docs [here](https://docs.nextcloud.com/server/14/user_manual/files/access_webdav.html). - -Usually NextCloud WebDAV urls looks like this: - -`https://example.com/nextcloud/remote.php/dav/files/USERNAME/` - -You should then be ready to start sharing files to Rocket.Chat via WebDav Protocol! - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/nixstats.md b/guides/rocket.chat-administrator-guides/administration/integrations/nixstats.md deleted file mode 100644 index 921c98921f..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/nixstats.md +++ /dev/null @@ -1,188 +0,0 @@ -# Nixstats notification - -Add Nixstats notifications via a new WebHook in Rocket.Chat - -1. In Rocket.Chat go to "Administration"->"Integrations" and create "New Integration". -2. Choose Incoming WebHook. -3. Follow all instructions like Enable, give it a name, link to channel etc. Set "Enable Script" to true and enter the javascript in the "Script" box. -4. Press Save changes and copy the _Webhook URL_ \(added just below the script box\). -5. Go to [https://nixstats.com](https://nixstats.com) -> Settings -> Notification Contacts -> Add \(or Edit a contact\) contact. -6. Paste the Rocket.Chat url you've copied in step 4. - -Paste this javascript in the "Script" textarea on Rocket.Chat webhook settings - -```javascript -/* exported Script */ -/* globals console, _, s */ - -/** Global Helpers - * - * console - A normal console instance - * _ - An underscore instance - * s - An underscore string instance - */ - -class Script { - /** - * @params {object} request - */ - process_incoming_request({ request }) { - var url; - var url_title; - if(request.content.domain_id) - { - url = 'https://nixstats.com/domains/'+request.content.domain_id; - url_title = request.content.name+" @ nixstats.com"; - } - else - { - url = 'https://nixstats.com/server/'+request.content.server_id; - url_title = request.content.server_name+" @ nixstats.com"; - } - return { - content:{ - text: request.content.subject, - "attachments": [ - { - "author_name": url_title, - "author_link": url, - "author_icon": "https://nixstats.com/images/favicon.png" - } - ] - } - }; - } -} -``` - -## Render nixstats graphs in Rocket.Chat - -Add Nixstats notifications via a new WebHook in Rocket.Chat - -1. In Rocket.Chat go to "Administration"->"Integrations" and create "New Integration". -2. Choose Outgoing WebHook. -3. Select **Message Sent** as Event trigger. -4. Enter **ns** as trigger word. -5. Enter `` as URLs. -6. Avatar URL ``. -7. **Token**, this is your nixstats API token, [create an API key](https://nixstats.com/settings/api). -8. Script Enabled set to **True**. - -Paste this javascript in the "Script" textarea on Rocket.Chat webhook settings - -```javascript -/* exported Script */ -/* globals Store */ - -class Script { - prepare_outgoing_request({ request }) { - let match; - - match = request.data.text.match(/^ns servers\s(ls|list)\s*(.*)?$/); - if (match) { - let u = request.url + 'servers?perpage=99&token='+request.data.token; - return { - url: u, - headers: request.headers, - method: 'GET' - }; - } - - match = request.data.text.match(/^ns graphs\s(.*)?$/); - if (match) { - var matched = false; - var options; - var serverrequest = HTTP('GET', request.url + 'servers?perpage=99&token='+request.data.token, options); - var serverlist = [] - JSON.parse(serverrequest.result.content).servers.forEach(function(pr) { - serverlist.push({'name': pr.name, 'id': pr.id}); - }); - - serverlist.forEach(function(serv) { - if(serv.id == match[1]) - { - matched = serv.id; - } - if(serv.name == match[1]) - { - matched = serv.id; - } - }); - - if(!matched){ - return { - message: { - text: 'Server not found.' - } - }; - } - else - { - let u = request.url + 'server/'+matched+'?charts=yes&token='+request.data.token; - return { - url: u, - headers: request.headers, - method: 'GET' - }; - } - } - - match = request.data.text.match(/^help$/); - if (match) { - return { - message: { - text: [ - '**Nixstats commands**', - '```', - ' ns servers ls|list', - ' ns graphs serverid|servername', - '```' - ].join('\n') - } - }; - } - } - - process_outgoing_response({ request, response }) { - var text = []; - var attach = []; - if(response.content.charts) - { - response.content.charts.forEach(function(pr) { - attach.push({ - "color": "#000000", - "text": pr.title+" on "+response.content.name, - "image_url": pr.url, - }); - }); - text.push('Performance of '+response.content.name); - } - else - { - text.push('```'); - response.content.servers.forEach(function(pr) { - text.push(''+pr.id+"\t "+pr.last_data.load.replace(",",",\t")+"\t"+pr.name+''); - }); - text.push('```'); - } - return { - content: { - text: text.join('\n'), - attachments: attach, - parseUrls: false - } - }; - } -} -``` - -After saving the data you can use the following commands to retrieve data. - -`ns servers list` to list your servers with their IDs and load average. - -![](https://github.com/NIXStats/Nixstats-integrations/blob/master/rocketchat/serverlist.png) - -`ns graphs [serverid]` to retrieve a graph of Memory, Network, Load average and Disk usage of the specified server. - -![](https://github.com/NIXStats/Nixstats-integrations/blob/master/rocketchat/graphs.png) - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/pagerduty.md b/guides/rocket.chat-administrator-guides/administration/integrations/pagerduty.md deleted file mode 100644 index 244d2ae3b6..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/pagerduty.md +++ /dev/null @@ -1,10 +0,0 @@ -# PagerDuty - -[PagerDuty](https://pagerduty.com) is an alarm aggregation and dispatching service for system administrators and support teams. It collects alerts from your monitoring tools, gives you an overall view of all of your monitoring alarms, and alerts an on duty engineer if there's a problem. - -Full documentation/installation instruction: - -[https://github.com/kajisaap/rocketchat-pagerduty](https://github.com/kajisaap/rocketchat-pagerduty) - -Thanks to [**CloudFactory**](https://www.cloudfactory.com) - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/prometheus.md b/guides/rocket.chat-administrator-guides/administration/integrations/prometheus.md deleted file mode 100644 index f56987cb61..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/prometheus.md +++ /dev/null @@ -1,10 +0,0 @@ -# Prometheus - -[Prometheus](https://prometheus.io/) is an open-source systems monitoring and alerting toolkit. To integrate alerts from Prometheus' Alertmanager follow the install instructions here: - -{% embed url="https://github.com/pavel-kazhavets/AlertmanagerRocketChat" caption="" %} - -Alternative integration that creates concise messages: - -{% embed url="https://github.com/puzzle/prometheus-rocket-chat" caption="" %} - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/reviewboard.md b/guides/rocket.chat-administrator-guides/administration/integrations/reviewboard.md deleted file mode 100644 index adbf1bd03c..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/reviewboard.md +++ /dev/null @@ -1,10 +0,0 @@ -# Review Board - -Add ReviewBoard notifications via a new WebHook in Rocket.Chat - -1. In Rocket.Chat go to "Administration"->"Integrations" and create "New Integration" -2. Choose Incoming WebHook -3. Follow all instructions like Enable, give it a name, link to channel etc. Set "Enable Script" to true and enter contents of [this script](https://github.com/almonteb/rocketchat-hook-reviewboard/blob/master/src/plugin.js) -4. Press Save changes and copy the _WebHook URL_ \(added just below the script box\) -5. In ReviewBoard, configure a new WebHook per [these instructions](https://www.reviewboard.org/docs/manual/dev/admin/configuration/webhooks/) - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/rundeck.md b/guides/rocket.chat-administrator-guides/administration/integrations/rundeck.md deleted file mode 100644 index 937cff5b0d..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/rundeck.md +++ /dev/null @@ -1,14 +0,0 @@ -# RunDeck Job Notifications - -_This plugin can be set to notify a channel when a job Starts, Fails or has Succeeded_ - -Rundeck is an open orchestration and scheduling platform used for operations support tasks, enterprise job scheduling, deployment, and more. - -It's commonly found in the ChatOps space due to its flexible API. - -1. Download the [rundeck-rocketchat-notifier](https://github.com/jszaszvari/rundeck-rocketchat-notifier) from GitHub. -2. Set up an Incoming Integration and take note of the URL. -3. Install the plugin on your RunDeck machine as per the instructions in the git repo linked above. - -Once configured you'll have notifications like the example below: ![image](../../../../.gitbook/assets/rundeck.png) - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/sentry.md b/guides/rocket.chat-administrator-guides/administration/integrations/sentry.md deleted file mode 100644 index 2956d59150..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/sentry.md +++ /dev/null @@ -1,40 +0,0 @@ -# Sentry - -Add Sentry notifications via a new WebHook in Rocket.Chat This script works for the sentry.com and self-hosted version. - -1. In Rocket.Chat go to "Administration"->"Integrations" and create "New Integration". -2. Choose Incoming WebHook. -3. Follow all instructions like Enable, give it a name, link to channel etc. Bonus: add [https://avatars.io/twitter/getsentry/medium](https://avatars.io/twitter/getsentry/medium) as Avatar URL. -4. Set "Enable Script" to true and enter the javascript in the "Script" box. -5. Press Save changes and copy the _Webhook URL_ \(added just below the script box\). -6. Go to your Sentry project, ie. [https://app.getsentry.com/](https://app.getsentry.com/)< organization >/< project >/settings/plugins/ and enable the "WebHooks" integration. It's in the project "settings" under All Integrations. A WebHooks integration is added there when enabled. -7. Add a new webhook by pasting the Rocket.Chat url you've copied in step 5 in the "Callback URLs" textarea \(1 URL per line\) and press the Save Changes button. -8. Test the webhook with the "Test Configuration" button in Sentry, a Test Results box should appear below, with more info \(success or failure\). - -Paste this in javascript in the "Script" textarea on Rocket.Chat WebHook settings - -```javascript -class Script { - - process_incoming_request({ request }) { - // console is a global helper to improve debug - // console.log(request.content); - - return { - content: { - text: "Error in project *" + request.content.project_name + "* (" + request.content.project + ").\n*Message:* "+ request.content.message+"\n*Culprit:* " + request.content.culprit +".\n*Check url:* " + request.content.url, - } - }; - - return { - error: { - success: false, - message: 'Error example' - } - }; - } -} -``` - -Use the console.log\(request.content\) line to debug the json content, posted by Sentry. - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/telegram.md b/guides/rocket.chat-administrator-guides/administration/integrations/telegram.md deleted file mode 100644 index 67bd8d6e68..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/telegram.md +++ /dev/null @@ -1,144 +0,0 @@ -# Simple Telegram Bot: - -_follow these instructions to get a simple Telegram Bot setup_ - -## Getting Started - -1. Open telegram chat in your browser or mobile phone -2. Add the user `BotFather` -3. Click start -4. Click `/newbot` -5. Follow the Instructions - -![instructions](http://i.imgur.com/8y9SG49.jpg?1) - -## Getting the Token - -1. Wait for the Token to be displayed referred to as \[myauthorization-token\] -2. Go to the Administration Portal of Rocket.Chat and the Integrations Page -3. Create a new Incoming Webhook following these instructions - * Enable script - * Paste the following - -### Incoming Webhook for Rocket.Chat - -```javascript -class Script { - addQuotePrefix(str) { - let tmp = str.split('\n'), - res = []; - - for (const frag of tmp) { - res.push(`> ${frag}`); - } - - return res.join('\n'); - } - - process_incoming_request({ request }) { - // UNCOMMENT THE BELOW LINE TO DEBUG IF NEEDED. - // console.log(request.content); - if ('edited_message' in request.content) { - request.content.message = request.content.edited_message; - } - let from = request.content.message.from; - let who = from.username - let icon_url = '/avatar/' + from.username + '.jpg' - if(!who) { - if (from.first_name && from.last_name) { - who = `${from.first_name} ${from.last_name}` - } else if (from.first_name) { - who = from.first_name - } else { - who = from.last_name - } - icon_url = `/avatar/${request.content.message.from.first_name}.jpg` - } - let body = request.content.message.text - - if(!body) { - if(request.content.message.hasOwnProperty("sticker") && request.content.message.sticker.emoji) { - // It's a sticker - body = request.content.message.sticker.emoji - } else { - return {} - } - } - - if(request.content.message.reply_to_message) { - var quotedMessage = - "*" + - request.content.message.reply_to_message.from.username + - "*\n" + - request.content.message.reply_to_message.text; - - quotedMessage = this.addQuotePrefix(quotedMessage); - body = quotedMessage + '\n' + body; - } - - return { - content: { - username: who, - icon_url: icon_url, - text: body - } - }; - } -} -``` - -## Letting Telegram Know About Rocket.Chat's WebHook - -1. Copy incoming webhook URL from Rocket.Chat -2. Change following URL with your token and Incoming webhookURL and execute in regular browser `https://api.telegram.org/bot[myauthorization-token]/setwebhook?url=[Incoming_Webhook_Link_from_Rocket.Chat]` -3. Receive the message `{ "ok": true, "result": true, "description": "Webhook successfully set" }` \(or similar\) -4. Test your incoming Webhook by sending a telegram message to the bot. It should be posted in the channel/user you specified in the incoming webhook. Check Rocket.Chat's Logs and write down `chat_id` \(or `[chat-id]`\) - -## Create Outgoing WebHook in Rocket.Chat - -* Create outgoing webhook and specify channel with the following url: `https://api.telegram.org/bot[myauthorization-token]/sendMessage?chat_id=[chat-id]` -* chat-id should be your group id in Telegram, You can get it buy adding @RawDataBot to your group - -```javascript -Message - ├ message_id: 338 - ├ from - ┊ ├ id: ***** - ┊ ├ is_bot: false - ┊ ├ first_name: 사이드 - ┊ ├ username: ****** - ┊ └ language_code: en - ├ chat - ┊ ├ id: -1001118554477 // This is Your Group id - ┊ ├ title: Test Group - ┊ └ type: supergroup - ├ date: 1544948900 - └ text: A -``` - -* Paste the Outgoing Webhook below. -* Enable listening at the Bot with /privacy and to disable \([example](http://i.imgur.com/xSjdAAy.jpg?1)\) -* Add Bot to telegram group and utilize nice cross platform communication. - -```javascript -class Script { - prepare_outgoing_request({ request }) { - if (request.data.bot) { - //Don't repost messages from the bot. - return { }; - } else { - return { - url: request.url + '&parse_mode=HTML' + '&text=' + encodeURIComponent('' + request.data.user_name+ ': ' + request.data.text), - method: 'GET' - }; - } - } -} -``` - -## Conclusion - -Enjoy! Please note, this was a community submission and is very simple. If you feel there are improvements which can be made, please feel free to submit improvements via pull requests!! :heart: - -![final product](http://i.imgur.com/LqpqUC8.jpg?1) - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/travis-ci.md b/guides/rocket.chat-administrator-guides/administration/integrations/travis-ci.md deleted file mode 100644 index 659e23d355..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/travis-ci.md +++ /dev/null @@ -1,74 +0,0 @@ -# TravisCI - -Add TravisCI notifications via a new WebHook in Rocket.Chat - -## Receive alerts - -1. Create a new **Incoming WebHook**. -2. Select the channel where you will receive the alerts. You may wish to create a dedicated channel for your notifications. -3. Select an account from which the alerts will be posted. You may wish to create a dedicated account just for notifications. -4. Set the "Enable Scripts" option to `True`. -5. Copy scripts below and paste it in Script field. -6. Save the integration. This will generate a webhook URL and secret for you. -7. In your `.travis.yml` file add WebHooks parameter with webhook URL generated. - -```yaml - notifications: - webhooks: -``` - -This script will generate notifications for the following build events: - -* Build finished status for any pushed code -* Build finished status for new Pull Request - -![Screenshot of messages generated by TravisCI integration script](../../../../.gitbook/assets/travis-ci.png) - -_Note:_ If status is passed, message color is green otherwise it is red. - -```javascript -const buildMessage = (obj) => { - const min = Math.floor(obj.duration / 60); - const sec = obj.duration - min * 60; - - let template = `Build [#${obj.number}](${obj.build_url})`; - template += ` ([${obj.commit.substring(0, 7)}](${obj.compare_url})) of` - template += ` ${obj.repository.owner_name}/${obj.repository.name}@${obj.branch}`; - if(obj.pull_request) { - let pr_url = `https://github.com/${obj.repository.owner_name}/`; - pr_url += `${obj.repository.name}/pull/${obj.pull_request_number}`; - template += ` in PR [#${obj.pull_request_number}](${pr_url})`; - } - template += ` by ${obj.author_name} ${obj.state} in ${min} min ${sec} sec`; - - let status_color = '#36A64F'; - if(obj.state !== 'passed') { - status_color = '#A63636' - } - - return { - text: template, - color: status_color - }; -}; - -class Script { - process_incoming_request({ request }) { - msg = buildMessage(request.content); - - return { - content:{ - attachments: [ - { - text: msg.text, - color: msg.color - } - ] - } - }; - } -} -``` - -If you want more customizations, please look in TravisCI documentation: [https://docs.travis-ci.com/user/notifications/\#Configuring-webhook-notifications](https://docs.travis-ci.com/user/notifications/#Configuring-webhook-notifications) - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/trello.md b/guides/rocket.chat-administrator-guides/administration/integrations/trello.md deleted file mode 100644 index 342180b75c..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/trello.md +++ /dev/null @@ -1,6 +0,0 @@ -# Trello - -A Rocket.Chat [Trello](https://trello.com/) integration to send activity notifications to Rocket.Chat channels. See the [project's documentation](https://github.com/GezimSejdiu/Rocket.Chat-Trello-Integration) for integration instructions. - -![Trello Integration](../../../../.gitbook/assets/trello-integration.png) - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/uptime-robot.md b/guides/rocket.chat-administrator-guides/administration/integrations/uptime-robot.md deleted file mode 100644 index 6bddcd0928..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/uptime-robot.md +++ /dev/null @@ -1,6 +0,0 @@ -# Uptime Robot - -Add [Uptime Robot](https://uptimerobot.com) notifications via a new WebHook in Rocket.Chat. See the [project's documentation](https://github.com/crazy-max/rocketchat-uptimerobot) for integration instructions. - -![Uptime Robot Integration](../../../../.gitbook/assets/uptimerobot.png) - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/zapier/README.md b/guides/rocket.chat-administrator-guides/administration/integrations/zapier/README.md deleted file mode 100644 index 60b6daf81f..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/zapier/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Zapier - -So, you're interested in connecting Zapier to Rocket.Chat? I have great news for you, the Rocket.Chat Zapier App is now in public Beta! - -Okay okay, before you get started there are a few things that you have to check. - -1. Is your server publicly accessible from the web? If **no**, Zapier requires it to be accessible via the web. -2. Zapier needs a specific oAuth App running to work. By default this Zapier oAuth App should be already configured, to check this go to `Admin -> oAuth Apps -> Zapier`. - -**Warning:** Make sure the `rocket.cat` user has _not_ been removed from your Rocket.Chat instance otherwise you won't be able to enable the Zaps! If it has been removed, you'll probably see an error message that says something like `(400) Bad Request and said "Invalid user [error-invalid-user]`. - diff --git a/guides/rocket.chat-administrator-guides/administration/integrations/zapier/using-zaps.md b/guides/rocket.chat-administrator-guides/administration/integrations/zapier/using-zaps.md deleted file mode 100644 index c2cdbb7a1e..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/integrations/zapier/using-zaps.md +++ /dev/null @@ -1,20 +0,0 @@ -# Connect Rocket.Chat to hundreds of other apps with Zapier - -[Zapier](https://zapier.com/zapbook/RocketChat/) lets you connect Rocket.Chat to hundreds of other web services. Automated connections called Zaps, set up in minutes with no coding, can automate your day-to-day tasks and build workflows between apps that otherwise wouldn't be possible. - -Each Zap has one app as the **Trigger**, where your information comes from and which causes one or more **Actions** in other apps, where your data gets sent automatically. - -## Getting Started with Zapier - -Sign up for a free [Zapier](https://zapier.com/zapbook/RocketChat) account, from there you can jump right in. To help you hit the ground running, here are some popular pre-made Zaps. - -## How do I connect Rocket.Chat to Zapier? - -* Log in to your [Zapier account](https://zapier.com/sign-up) or create a new account. -* Navigate to "Connected Accounts" from the top menu bar. -* Now click on "Connect new account" and search for "Rocket.Chat". -* Find the server you want to connect by using its URL. -* Use your credentials to connect your Rocket.Chat account to Zapier. -* Once that's done you can start creating an automation! Use a pre-made Zap or create your own with the Zap Editor. Creating a Zap requires no coding knowledge and you'll be walked step-by-step through the setup. -* Need inspiration? See everything that's possible with [Rocket.Chat and Zapier](https://zapier.com/zapbook/RocketChat). - diff --git a/guides/rocket.chat-administrator-guides/administration/invites.md b/guides/rocket.chat-administrator-guides/administration/invites.md deleted file mode 100644 index 981942fd3e..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/invites.md +++ /dev/null @@ -1,18 +0,0 @@ -# Invites - -Under **Invites**, you can view all the invite links generated to invite users to the workspace/channels. - -![](../../../.gitbook/assets/image%20%28349%29%20%281%29%20%281%29%20%281%29%20%281%29.png) - -## Delete a record - -If you want to delete any of these invite records: - -![](../../../.gitbook/assets/image%20%28410%29.png) - -![](../../../.gitbook/assets/image%20%28405%29%20%281%29%20%281%29.png) - -{% hint style="info" %} -This feature comes in handy when you have an invite link with an **Expiration** **date: Never**. In order to avoid abuse, you can revoke it by deleting the record. -{% endhint %} - diff --git a/guides/rocket.chat-administrator-guides/administration/mailer.md b/guides/rocket.chat-administrator-guides/administration/mailer.md deleted file mode 100644 index 81cf6e0c9d..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/mailer.md +++ /dev/null @@ -1,4 +0,0 @@ -# Mailer - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/administration/marketplace.md b/guides/rocket.chat-administrator-guides/administration/marketplace.md deleted file mode 100644 index c2474cb3b4..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/marketplace.md +++ /dev/null @@ -1,18 +0,0 @@ -# Marketplace - -Rocket.Chat provides you with a lot of Rocket.Chat apps. They can be installed through the marketplace. You can search for any on the marketplace and can install it to your own Rocket.Chat server. - -You can access the marketplace in **Administration > Marketplace**. - -![](../../../.gitbook/assets/image%20%28413%29.png) - -{% hint style="info" %} -Your workspace should be \(registered and\) connected to Rocket.Chat Cloud in order to access the marketplace and install Rocket.Chat apps from it. -{% endhint %} - -To find information on marketplace roles please check out this article. - -{% embed url="https://docs.rocket.chat/guides/roles-in-rocket.chat/marketplace-roles" %} - - - diff --git a/guides/rocket.chat-administrator-guides/administration/oauth-applications.md b/guides/rocket.chat-administrator-guides/administration/oauth-applications.md deleted file mode 100644 index 8502fe4e9e..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/oauth-applications.md +++ /dev/null @@ -1,4 +0,0 @@ -# OAuth Applications - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/administration/permissions-1.md b/guides/rocket.chat-administrator-guides/administration/permissions-1.md deleted file mode 100644 index 1e105c82de..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/permissions-1.md +++ /dev/null @@ -1,134 +0,0 @@ -# Permissions - -Rocket.Chat has a vast and customizable permissions system. Most of the actions a user can make requires a certain permission so you can customize what users can do and see. - -You can find the permission grid under Administration -> Permissions. - -Permission changes are immediate and transparent. Users do not need to logout, login or refresh to change permissions. - -## Roles - -A `Role` is a set of permissions that can be given to users. Rocket.Chat already comes with a set of default roles that can be edited. You can also create new roles for users. - -When someone is registered in a Rocket.Chat server, it will normally receive the `user`. If the user is a bot or a guest from a livechat channel, it can receive different roles. Also the first user of a server always receives the role of `admin`. - -Roles can have different scopes. Currently we have two scopes `Users` and `Subscriptions`. The permissions of the `Users` roles are valid for the whole server, while the `Subscriptions` roles only apply to individual channels, where a user have to be elected to that role in that channel. - -An example of `Users` role would be an `admin`, that have permissions valid for the whole server, while a `moderator` that have a `Subscriptions` role would have permissions only in a channel that they were elected for that role. - -Also, by default roles are shown as little tags on the side of a username on messages. - -### Default Roles - -* **admin** `(Users)` - Have access to all settings and administrator tools. -* **moderator** `(Subscriptions)` - Have moderation permissions for a channel. Has to be elected by a channel owner. -* **owner** `(Subscriptions)` - Have owner permissions for a channel. When a user creates a channel they become the owner of that channel. They can also elect more owners for that channel. -* **user** `(Users)` - Normal user rights. Most users receive this role when registering. -* **bot** `(Users)` - Special Role for bot users, with some permissions related to bot functionality. -* **leader** `(Subscriptions)` - it doesn't have any special permissions, but is used when setting a `leader` to a channel. Leaders appear on the header of a channel. -* **anonymous** `(Users)` - unauthenticated users that access the server when the `Allow Anonymous Read` setting is activated. -* **guest** `(Users)` - anonymous users that want to write and participate in channels when the `Allow Anonymous Read` and `Allow Anonymous Write` settings are activated. -* **livechat-agent** `(Users)` - Agents of livechat. They can answer to livechat requests. -* **livechat-manager** `(Users)` - Manager of livechat, they can manage agents and guest. -* **livechat-guest** `(Users)` - Users coming from a livechat channel. - -## Permissions Available - -| Permission | Purpose | -| :--- | :--- | -| access-mailer | Permission to use the [Mailer Tool](../settings/email/mailer.md). Accessible from Administration -> Mailer. | -| access-permissions | Permission to create and edit roles and permissions. Accessible from Administration -> Permissions. | -| add-oauth-service | Permission to manage different OAuth services and apps. Accessible from Administration -> OAuth Apps. | -| add-user-to-any-c-room | Permission to add a user to a public channel. | -| add-user-to-any-p-room | Permission to add a user to a private channel. | -| add-user-to-joined-room | Permission to add a user to a joined channel. | -| api-bypass-rate-limit | Permission to call api without rate limitation. See [Rate Limiter](https://docs.rocket.chat/developer-guides/rest-api/rate-limiter/). | -| archive-room | Permission to archive a channel. | -| assign-admin-role | Permission to promote user to Admin. Requires view-user-administration permission. Accessible from Administration -> Users. | -| assign-roles | Permission to assign roles for a user. Requires view-user-administration permission. Accessible from Administration -> Users. | -| auto-translate | Permission to use the [Auto Translate Tool](../misc.-admin-guides/google-cloud/auto-translate.md). Accessible from Administration -> Message -> Auto Translate. | -| ban-user | Permission to ban a user. | -| bulk-create-c | Permission to bulk create public channels. | -| bulk-register-user | Permission to bulk add users. | -| call-management | Permission to start a meeting. Requires Video Conference -> BigBlueButton enabled. Accessible from More -> BBB Video Chat -> Start Meeting. | -| clean-channel-history | Permission to prune a channel's messages and/or files. | -| clean-group-history | Permission to prune a group's messages and/or files. | -| clean-direct-history | Permission to prune direct messages and/or files. | -| close-livechat-room | Permission to close your own live chat channels. | -| close-others-livechat-room | Permission to close other live-chat channels. | -| create-c | Permission to create public channels. | -| create-d | Permission to start direct messages. | -| create-p | Permission to create private groups. | -| create-personal-access-tokens | Permission to create Personal Access Tokens. Accessible from My Account -> Personal Access Tokens. | -| create-user | Permission to create new users. Accessible from Administration -> Users. Click the + sign found on the top right hand corner of the Users list to create a new user. | -| delete-c | Permission to delete public channels. | -| delete-d | Permission to delete direct messages. | -| delete-message | Permission to delete a message within a channel. | -| delete-p | Permission to delete private channels. | -| delete-user | Permission to delete users. | -| edit-message | Permission to edit a message. | -| edit-other-user-active-status | Permission to enable or disable other accounts. Accessible from Administration -> Users. | -| edit-other-user-info | Permission to change other user's name, username or email address. Accessible from Administration -> Users. | -| edit-other-user-password | Permission to modify other user's passwords. Requires edit-other-user-info permission. Accessible from Administration -> Users. | -| edit-privileged-setting | Permission to edit privileged settings. | -| edit-room | Permission to edit a room's name, topic, type \(private or public status\) and status \(active or archived\). | -| edit-room-retention-policy | Permission to edit's a room's retention policy. | -| force-delete-message | Permission to forcefully delete messages, independent of any deletion blocking setting. | -| join-without-join-code | Permission to bypass join codes when entering a channel with a join code set. | -| leave-c | Permission to leave the public channel. | -| leave-p | Permission to leave the private channel. | -| mail-messages | Permission to use the "Mail Messages" tool in the channel actions menu. | -| manage-apps | Permission to manage all apps. Accessible from Administration -> Apps. | -| manage-assets | Permission to manage assets. Must also be admin Accessible from Administration -> Assets. | -| manage-cloud | Permission to manage cloud. Requires view-user-administration permission. Accessible from Administration -> Cloud. | -| manage-emoji | Permission to add custom emojis to the server. Accessible from Administration -> Custom Emoji. | -| manage-outgoing-integrations | Permission to manage all outgoing integrations. Accessible from Administration -> Integrations. | -| manage-incoming-integrations | Permission to manage all incoming integrations. Accessible from Administration -> Integrations. | -| manage-oauth-apps | Permission to manage OAuth apps. Accessible from Administration -> OAuth. | -| manage-own-outgoing-integrations | User can create and edit own outgoing integration - webhooks. | -| manage-own-incoming-integrations | User can create and edit own incoming integration - webhooks. | -| manage-sounds | Permission to manage sounds. Accessible from Administration -> Custom Sounds. | -| mention-all | Permission to mention everyone in a channel. | -| mention-here | Permission to notify active users in a channel. | -| message-impersonate | Permission to impersonate other users using message alias. Accessible from Administration -> Permissions. \| | -| mute-user | Permission to mute other users in the same channel. | -| pin-message | Permission to pin a message in a channel. | -| post-readonly | Permission to post messages on read-only channels. | -| preview-c-room | Permission to preview public channels. | -| remove-closed-livechat-rooms | Permission to close livechat rooms. Requires view-livechat-rooms permission. Accessible from Livechat -> Current Chats. | -| remove-user | Permission to remove users from channels. | -| reset-other-user-e2e-key | Permission to set E2E key. See [End to End Encryption](https://docs.rocket.chat/user-guides/end-to-end-encryption/). | -| run-import | Permission to use the data importer tools. Must also be an admin. Accessible from Administration -> Import. | -| run-migration | Permission to run migrations. | -| save-others-livechat-room-info | Permission to add additional information to both the visitor and livechat rooms. | -| send-many-messages | Permission to bypasses rate limit of 5 messages per second. | -| set-leader | Permission to set leaders for channels | -| set-moderator | Permission to set moderators for channels. | -| set-owner | Permission to set other users as owner of a public channel. | -| set-react-when-readonly | Permission to react to messages in only channels. | -| set-readonly | Permission to set room read-only. Accessible from Room Info -> Edit. | -| snippet-message | Permission to create message snippets. | -| start-discussion | Permission to start a discussion. | -| start-discussion-other-user | Permission to start a discussion, which gives permission to the user to create a discussion from a message sent by another user as well. | -| unarchive-room | Permission to unarchive channels. | -| user-generate-access-token | Permission to create authorization tokens for users. | -| view-broadcast-member-list | Permission to view the list of users in a broadcast channel. | -| view-c-room | Permission to view public channels. | -| view-d-room | Permission to view direct messages. Does not affect ability to begin / start a direct message with another user. | -| view-full-other-user-info | Permission to view full profile of other users including account creation date, last login, etc. | -| view-history | Permission to view the channel history. | -| view-join-code | Permission to view the join code of channels. | -| view-joined-room | Permission to view current joined channels. | -| view-l-room | Permission to view live chat channel. | -| view-livechat-analytics | Permission to view live chat analytics. Requires Livechat feature enabled and view-livechat-manager permission. | -| view-livechat-manager | Permission to view other livechat managers. | -| view-livechat-rooms | Permission to view list of live chat channels. | -| view-logs | Permission to view logs. Accessible from Administration -> View Logs. | -| view-other-user-channels | Permission to manage channels on the admin screen. | -| view-outside-room | Permission to find new channels and users. Users without this permission wont see channels that they are not part of when searching using the spotlight. | -| view-p-room | Permission to view private channels. | -| view-privileged-setting | Permission to view privileged settings. | -| view-room-administration | Enables Administration -> Channels module. Enables Permission to view public, private and direct message statistics. Does not include the permission to view conversations or archives. | -| view-statistics | Enables Administration -> Info module. Enables the permission to view system statistics such as number of users logged in, number of rooms, operating system information. | -| view-user-administration | Enables Administration -> Users module. Only includes partial, read-only list view of other user accounts currently logged into the system. No user account information is accessible with this permission. Add view-full-other-user-info to see complete list of other users via the Administration -> Users. | - diff --git a/guides/rocket.chat-administrator-guides/administration/rooms-aka-channels.md b/guides/rocket.chat-administrator-guides/administration/rooms-aka-channels.md deleted file mode 100644 index 270e8a8b6b..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/rooms-aka-channels.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -description: 'Here you can view room details, edit rooms and delete rooms.' ---- - -# Rooms \(aka Channels\) - -## Room Details - -To view room details: - -* go to the **Administration** tab -* select **Rooms** -* here you can see the all rooms that currently exist in your Rocket.Chat workspace along with details like number of users in a room, number of messages, type of room, etc as shown below: - -![](../../../.gitbook/assets/Screenshot%202021-05-19%20at%2011.22.38%20AM.png) - -You are provided with a variety of filters like **Public**, **Private**, etc available to help you sort them by type. - -![](../../../.gitbook/assets/Screenshot%202021-05-19%20at%2011.45.56%20AM.png) - -## Edit Room Details - -To edit room details: - -* click the room, you want to edit the details for -* here you have options to change room's avatar, edit room details, and to configure other settings with respect to this room like Read-Only, Private etc. as shown below: - -![](../../../.gitbook/assets/Screenshot%202021-05-19%20at%2011.48.45%20AM.png) - -* After making your desired changes, click **Save** button. - -![](../../../.gitbook/assets/Screenshot%202021-05-19%20at%2011.51.17%20AM.png) - -## Delete Room - -* Search and click on the room you want to delete in the **Rooms** under **Administration** -* Press **Delete** to delete the room. - -![](../../../.gitbook/assets/Screenshot%202021-05-19%20at%2011.58.29%20AM.png) - -* Click Y**es, delete it!** to delete it. - -![](../../../.gitbook/assets/Screenshot%202021-05-19%20at%2012.00.42%20PM.png) - diff --git a/guides/rocket.chat-administrator-guides/administration/users.md b/guides/rocket.chat-administrator-guides/administration/users.md deleted file mode 100644 index cce9400312..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/users.md +++ /dev/null @@ -1,4 +0,0 @@ -# Users - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/administration/view-logs.md b/guides/rocket.chat-administrator-guides/administration/view-logs.md deleted file mode 100644 index 35a6d2f037..0000000000 --- a/guides/rocket.chat-administrator-guides/administration/view-logs.md +++ /dev/null @@ -1,4 +0,0 @@ -# View Logs - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/README.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/README.md deleted file mode 100644 index 23499ddce2..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Misc. Admin Guides - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/authentication/README.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/authentication/README.md deleted file mode 100644 index 95ed0e430e..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/authentication/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Authentication - -{% page-ref page="open-id-connect/" %} - -{% page-ref page="single-sign-on-iframe.md" %} - -## External Authentication - -If you need to automatically login users from your own website you can look at [Iframe integration page]() or you can use the REST API [Login]() in combination with [deeplinking]() and the resumeToken. - -```text -# get the resumeToken from your REST API login - it's the authToken field -https://yourown.rocket.chat/home?resumeToken=abcd123456789 -``` - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/authentication/open-id-connect/README.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/authentication/open-id-connect/README.md deleted file mode 100644 index 200e5ffda8..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/authentication/open-id-connect/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# OpenID Connect - -{% page-ref page="gluu-server-4.0.md" %} - -{% page-ref page="keycloak.md" %} - -{% page-ref page="okta.md" %} - - - - - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/authentication/open-id-connect/gluu-server-4.0.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/authentication/open-id-connect/gluu-server-4.0.md deleted file mode 100644 index ac74abd9ee..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/authentication/open-id-connect/gluu-server-4.0.md +++ /dev/null @@ -1,6 +0,0 @@ -# Gluu Server 4.0 - -Gluu Server 4.0 comes out of the box with excellent SSO support for Rocket.Chat. - -Please see their documenation, [Gluu Server OpenID Connect Provider for Rocket.Chat](https://gluu.org/docs/gluu-server/4.0/integration/saas/rocketchat/), for up-to-date information. - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/authentication/open-id-connect/keycloak.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/authentication/open-id-connect/keycloak.md deleted file mode 100644 index 18512f3a3a..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/authentication/open-id-connect/keycloak.md +++ /dev/null @@ -1,69 +0,0 @@ -# Keycloak - -## Configuring Keycloak OpenID Connect - -Create a client in Keycloak. - -1. Provide a client ID: `rocket-chat-client` -2. Select the client protocol as openid-connect -3. Select the client access type as confidential -4. Standard flow implemented: ON -5. Valid Redirect URL: `http:{Rocket.Chat_server_address}/*` - -The following image shows the minimal configurations needed to setup Keycloak as an Identity Provider to Rocket.Chat. - -![](../../../../../.gitbook/assets/client_configurations.png) - -After saving the changes a new credentials tab will be created for the client. This credentials tab will provide the client secrets which will be used when configuring the Rocket.Chat. - -## Configuring Rocket.Chat - -### Create a Custom Oauth provider - -* Login to Rocket.Chat with an administrator account and navigate to OAuth page. -* Click the Add custom OAuth button and provide the following configurations - -The URL paths provided in the below configurations can be also obtained by navigating to the Realm setting and clicking the endpoints link in the `General Tab`. While configuring the below settings replace the `realm_name` with the appropriate realm name. The default realm provided by Keycloak is `master`. - -1. URL: `http://{keycloak_ip_address}:{port}/auth` -2. Token Path: `/realms/{realm_name}/protocol/openid-connect/token` -3. Token sent via: Header -4. Identity Token Sent Via: Same As "Token Sent Via" -5. Identity Path `/realms/{realm_name}/protocol/openid-connect/userinfo` -6. Authorize Path `/realms/{realm_name}/protocol/openid-connect/auth` -7. Scope: `openid` -8. Param Name for access token: `access_token` -9. Id: This is the id of the Rocket.Chat client created in the keycloak `rocket-chat-client` -10. Secret: Secret key provided in the credentials tab when creating the Rocket.Chat client -11. Button Text: `Login with Keycloak` - -Leave the rest of the configurations as default. Click the blue button Save Changes at the top. - -Next, make sure you enable the new Keycloak provider. And click the Refresh OAuth Services button. - -Now logout from Rocket.Chat to view the keycloak based login option visible in the login page. - -![](../../../../../.gitbook/assets/keycloak_federation.png) - -## Mapping non-federated keycloak user roles to Rocket.Chat roles - -This section documents how client-specific roles of keycloak managed user can be mapped to Rocket.Chat roles. This does not work for federated users \(e.g. LDAP managed users\). - -For this example, we map the `admin` and `livechat-manager` role, as documented in [Permissions](https://docs.rocket.chat/administrator-guides/permissions/). - -First we add the required roles to the client - -![](../../../../../.gitbook/assets/client_roles_configurations.png) - -then we have to add a mapper entry, that maps our client roles to OpenId, passing the value to Rocket.Chat - -![](../../../../../.gitbook/assets/client_roles_mapper_roles.png) - -Now in order to grant the Rocket.Chat role to a user, we have to modify the users Role Mappings. - -!\[User Role Mapping\]\[User Role Mapping\] - -The roles are only synced on first login, and not being refreshed on each login. Please see the [bug report](https://github.com/RocketChat/Rocket.Chat/issues/15225) for current state. - -\[User Role Mapping\]: user\_role\_mapping.png - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/authentication/open-id-connect/okta.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/authentication/open-id-connect/okta.md deleted file mode 100644 index 4349cf106c..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/authentication/open-id-connect/okta.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -description: Open ID Connect ---- - -# Okta Identity Cloud Service - -Okta Identity Cloud Service can be integrated as an Identity Provider for Rocket.Chat via its Open ID Connect support. - -## Rocket.Chat Settings - -On the Rocket.Chat OAuth settings page **add a custom auth**. - -Give the custom OAuth a unqiue name. For this example we will use _okta_. - -Set the following: - -* **Enabled**: _True_ -* **URL**: The URL to your okta domain on okta.com with a suffix of _/oauth2/v1_. For example: _`https://mycompany.okta.com/oauth2/v1`_ -* **Token**: _/token_ -* **Token Sent Via**: _Header_ -* **Identity Token Sent Via**: _Same as Token Sent Via_ -* **Identity Path**: _/userinfo_ -* **Authorize Path**: _/authorize_ -* **Scope**: _openid email profile groups offline\_access_ -* **Param Name for access token**: _access\_token_ -* **id**: Set to the **Client ID** in the Okta app **Client Credentials** below. -* **Secret**: Set to the **Client secret** in the Okta app **Client Credentials** below. -* **Login Style**: Either setting works. Popup with pop up the Okta check/login in another window. Redirect will redirect the current page. -* **Button Text**: Set to personal preference. -* **Button Text Color**: Set to personal preference. -* **Button Color**: Set to personal preference. -* **Username field**: _preferred\_username_ -* **Avatar field**: Was not used on our Okta instance. Further research will be required to use this. -* **Roles/Groups field name**: roles -* **Merge Roles from SSO**: Our server syncs from ldap so we left this _false_. -* **Merge users**: Our server syncs from ldap so we left this _false_. - -## Configuring the Identity Provider - -### Adding a new Application in Okta - -On your Okta Applications Dashboard, find the button to create a new app. It should open the following pop-up: - -![](../../../../../.gitbook/assets/addapp.png) - -Select **OpenID Connect** and select **Create** to open the window to create the new integration. - -### Create Integration - -!\[Create Integration\]\[CreateIntegration\] - -The only information needed on this page is the **application name** and **redirect URI**. The URI you need to use here is the same one that is shown on the **callback URL** listed at the top of the page after creating the custom OAuth section in the Rocket.Chat settings. In this example the custom oauth will be called _okta_. This will result in a **redirect URI** of _`https://my-rocketchat-server.org/_oauth/okta`_. - -Select **Save** to be taken to the **General Settings** for the new app. - -### Client Credentials - -Copy the **Client ID** to the Rocket.Chat **id** field on the oauth settings page. - -Copy the **Client secret** to the Rocket.Chat **secret** field on the oauth settings page. - -### Testing - -Everything should be properly configured now. You can now assign users or groups users to your Integration app on the Okta Dashboard and then test the login on your Rocket.Chat instance. - -\[CreateIntegration\]: CreateIntegration.png - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/authentication/single-sign-on-iframe.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/authentication/single-sign-on-iframe.md deleted file mode 100644 index da4c82457d..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/authentication/single-sign-on-iframe.md +++ /dev/null @@ -1,47 +0,0 @@ -# iframe based Single Sign On - -## Introduction - -It's possible to authenticate users inside Rocket.Chat automatically from a third-party application, useful when embedding the chat inside another application or to make the users' life easier. - -### Iframe - -There are two ways to use the Iframe integration for this purpose and we will describe them below. It's important to note that both options require you to handle the user creation from your own application server using our APIs and make the login to retrieve the user's session token in order to pass it to the Rocket.Chat client via one of those ways: - -#### Embedding Rocket.Chat inside an Iframe - -If you already have the Rocket.Chat inside an iframe you can use call commands inside the Rocket.Chat's an iframe, [there is a command to login the user passing a token](), for that you need to make your own way to retrieve the token from your own APIs and then pass it to the iframe. - -We suggest one common way, once your application loads: - -1. Call your own API to retrieve the token, let's say `/api/rocketchat/token` -2. Your API will validate your own session, probably via cookies -3. Your API will then call the [Rocket.Chat APIs]() to check if the user exists - 1. If it doesn't exists call the Rocket.Chat APIs to create the user -4. If the user exists, call the Rocket.Chat APIs to make the login and receive the token -5. Return the token in your API response -6. In your client, with the token in hands, call the [iframe methods to execute the login]() - -#### Embedding your own "Loading page" inside the Rocket.Chat - -Even using Rocket.Chat inside an iframe you can still use this method to make the login flow rather than use the iframe commands above. - -This flow requires a page to be rendered in place of the normal Rocket.Chat's login page, it can be a basic loading screen since it's used just for information purposes. - -The other setting you configure here is the [API URL and Method ]()to be called once a not authenticated user opens the Rocket.Chat. Then Rocket.Chat will make an HTTP call to you endpoint expecting a [JSON response containing the authToken](), so you should use cookies to identify if the user calling your own API is authenticated and make the process to generate the Rocket.Chat's token and return it: - -1. Rocket.Chat will call the configured API and Method to retrieve the token -2. The API should validate your own session via cookies -3. The API will then call the Rocket.Chat APIs to check if the user exists - 1. If it doesn't exists call the Rocket.Chat APIs to create the user -4. If the user exists, call the Rocket.Chat APIs to make the login and receive the token -5. Return the token in your API response in JSON format as [described here]() -6. Rocket.Chat will use the token automatically to make the authentication - -{% hint style="warning" %} -For this implementation you will need to configure [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) and [X-FRAME](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options): - -1. Your server should **not** block the page you want to load inside the iframe, check the [X-FRAME](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options) for more information on how to prevent this. -2. Your server should **not** block the calls **from** the Rocket.Chat's domain to your configured API endpoint, calls between domains are often blocked by default, please check the [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options) for more information on how to prevent this. -{% endhint %} - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/cdn.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/cdn.md deleted file mode 100644 index 54ae7489a1..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/cdn.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -description: CDN Setup instructions ---- - -# CDN - -Rocket.Chat allows for the usage of a CDN to server static assets such as JS, CSS and images such as avatars. - -{% hint style="info" %} -If you provide a CDN prefix that is not live or incorrect you may lose access to your Rocket.Chat instance as the required assets will not be found. -{% endhint %} - -## Enabling CDN - -By navigating to the General section of the Administration system in Rocket.Chat there are the options to provide a CDN for **all** assets and optionally set a separate CDN for just JS & CSS assets. - -### CDN Prefix - -This is a string that depending on the value provided will generate different outcomes. - -| Value | Example Url for Asset | -| :--- | :--- | -| cdn | /cdn/example-asset.js | -| [http://cdn.domain.com](http://cdn.domain.com) | [http://cdn.domain.com/example-asset.js](http://cdn.domain.com/example-asset.js) | -| [https://cdn.domain.com](https://cdn.domain.com) | [https://cdn.domain.com/example-asset.js](https://cdn.domain.com/example-asset.js) | - -### Use CDN Prefix for all assets - -Enable this for serving all assets from the same CDN. - -### CDN Prefix for JS/CSS - -This option takes the same style input as CDN Prefix. The value provided will be applied only to JS and CSS assets. - -## Troubleshooting - -If the situation occurs where CDN stops working or the provided values are incorrect, then there are a few work arounds to allow a fix to be implemented inside the Administration settings, which may be inaccessible. - -### Database Fix - -As the front end of Rocket.Chat may be inaccessible, the backend Mongo database can be updated to remove the CDN. The following Mongo commands should reset the value to the default state. - -```text -db.rocketchat_settings.update({_id:"CDN_PREFIX"},{$set:{"value":""}}) -``` - -```text -db.rocketchat_settings.update({_id:"CDN_JSCSS_PREFIX"},{$set:{"value":""}}) -``` - -### Use a Browser Extension - -A browser extension can be used to rewrite URLs from the CDN address to the same location as where Rocket.Chat is running. Please take care when selecting an appropriate extension for your browser. - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/client-compatibility-matrix.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/client-compatibility-matrix.md deleted file mode 100644 index 7f37dc98aa..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/client-compatibility-matrix.md +++ /dev/null @@ -1,24 +0,0 @@ -# Client Compatibility Matrix - -## Desktop - -| Electron Version | Supported releases | -| :---: | :---: | -| 2.15 | 1.0+ | -| 2.14 | ⩽ 0.70 | -| 2.13 | ⩽ 0.69 | -| 2.12 | ⩽ 0.68 | -| 2.11 | ⩽ 0.65 | -| 2.10 | ⩽ 0.59 | -| 2.9 | ⩽ 0.58 | -| 2.8 | ⩽ 0.56 | -| 2.7 | ⩽ 0.55 | - -## Mobile - -Our mobile applications have a maximum of 3 major servers versions being supported on each release, all the past releases are not officially supported and may cause problems. The reason for that is that our APIs are evolving a lot on each release and sometimes is really hard to maintain the compatibility with older versions when they don’t have support to specific feature. - -| App Version | Supported releases | -| :---: | :---: | -| 4.0.0+ | 0.70+ | - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/create-the-first-admin.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/create-the-first-admin.md deleted file mode 100644 index 72fbd8e71a..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/create-the-first-admin.md +++ /dev/null @@ -1,17 +0,0 @@ -# Create the first administrator - -After you deploy your server, the first user to register becomes the administrator, with power to set other users as administrators. - -In case your server has no administrators, you can create the first admin account by defining the environment variables ADMIN\_PASS and ADMIN\_EMAIL once. - -```bash -export ROOT_URL=http://your-host-name.com-as-accessed-from-internet:3000/ -export MONGO_URL=mongodb://localhost:27017/rocketchat -export PORT=3000 -export ADMIN_USERNAME=admin -export ADMIN_PASS=supersecret -export ADMIN_EMAIL=admin@example.com - -node main.js -``` - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/custom-emoji.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/custom-emoji.md deleted file mode 100644 index e65cbd1021..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/custom-emoji.md +++ /dev/null @@ -1,33 +0,0 @@ -# Custom Emoji - -Rocket.Chat provides a comprehensive set of emojis to make the chats more interesting. But also allow its users to add custom emojis to make the chats more personalized. - -You can add your own image files that can be JPG, GIF, or PNG. - -## Add a custom emoji - -* Go to the Administration tab -* Select the Custom Emoji -* Click on the Add symbol \(+\) in the right side bar -* Enter a name for your emoji, add space separated list of the aliases for the emoji which can be entered to display the emoji in the chats -* Browse and choose an image file -* Press the SAVE button - -![Add emoji example](../../../.gitbook/assets/example-add-emoji.png) - -## Accessing custom emoji - -Custom emoji can be used to add in the message, react to other messages. These emojis can be found in the emoji picker under the Rocket.Chat icon. - -![Access emoji example](../../../.gitbook/assets/access-emoji.png) - -You can also use these emojis using their name and aliases like `:hammy:` or `:savage:` - -## Delete/Edit custom emoji - -Search and click on the emoji you want to delete in the Custom Emoji section under Administration tab. - -Press the DELETE or EDIT button to delete or update the selected emoji respectively. - -> Admins might have set the [permissions](../administration/permissions-1.md) about who can manage these emojis. - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/database-migration.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/database-migration.md deleted file mode 100644 index 85e90358b3..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/database-migration.md +++ /dev/null @@ -1,36 +0,0 @@ -# Database Migration - -As features are added to Rocket.Chat, the database schema may change between versions. - -The action of updating an older schema to a newer one \(or vice versa\) is called database migration. - -When you incrementally update Rocket.Chat versions, database migration is automatic and you do not have to take any explicit action. - -However, from time to time, you may need to skip multiple versions in your Rocket.Chat upgrades. - -Database migration may fail in a scenario like this. - -A typical failure message is similar to: - -```bash -| Your database migration failed: | -| Object [object Object] has no method 'addUsersToRoles' | -(...) -| This Rocket.Chat version: 0.39.0 | -| Database locked at version: 18 | -| Database target version: 58 | -``` - -As an example, the migration above is locked and stuck on 18. We need a target of 19 before migrating to 58. - -One way to force this migration is to manually unlock the migration in Mongo and also increase the database version to the target version \(19\). - -```javascript -use rocketchat -db.migrations.update({_id: 'control'},{$set:{locked:false,version:19}}) -``` - -Restart Rocket.Chat and the migration should succeed now to the latest version. - -**Note**: certain new values that are vital to Rocket.Chat operations may remain unpopulated when you skip versions. For example, you may have to manually apply roles to users. - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/google-cloud/README.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/google-cloud/README.md deleted file mode 100644 index 0290739dad..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/google-cloud/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Google Cloud Features - -This guide will help you use Google Cloud Features with your Rocket.Chat server: - -Here you will find how to use them on your server. - -[Auto Translate](auto-translate.md) - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/google-cloud/auto-translate.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/google-cloud/auto-translate.md deleted file mode 100644 index f9832516ba..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/google-cloud/auto-translate.md +++ /dev/null @@ -1,40 +0,0 @@ -# Google Auto Translate - -You can use Google's translation engine to translate every message received on a channel. - -For that you will need a Google Translation API key, you can find how to get one and pricing for its usage from the [Official Google API documentation](https://cloud.google.com/translate/pricing). - -## Getting the key - -Follow these steps: - -1. Go to [http://cloud.google.com/console/](http://cloud.google.com/console/) -2. Create a Project and select it. -3. On the navigation menu, go to "APIs & Services" => Dashboard Tab -4. Click on ENABLE APIS AND SERVICES and search for Cloud Translation API. -5. Go to “Credentials” Tab -6. Click on "Create credentials" -7. Choose "API key" - -You can find more info on the [Official Google API documentation](https://cloud.google.com/translate). - -## Configuration - -Now that you have your API key, it's time to set up the auto translate feature in Rocket.Chat. - -To do that you can simply go to `Auto-Translate` under `Administration -> Message`, enable the setting and add your API key on the `Google API Key` field. After that save your settings and you're ready to go! - -Only users with the `auto-translate` permission will be able to use this feature. See [Permissions](../../administration/permissions-1.md) - -## Enabling AutoTranslate on a Channel - -When you enable Auto Translate on a channel all messages written in a Google Translate supported language will be translated to your selected language. - -> Note: only you will see the translated messages. Users who have not enabled Auto Translate will see the original, untranslated messages. - -To activate Auto Translate on a channel you must open the channel contextual menu \(the three dots on the top right of the screen\) and select Auto Translate, there you will be able to select your desired language. - -After that you will note a new symbol on the header of the channel, that indicates the Auto Translate feature is active in this channel. - -You can also see the original message by opening the message action menu \(the three dots on the message hover\) and selecting `View Original Message`. - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/message-auditing/README.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/message-auditing/README.md deleted file mode 100644 index 4bc2656e8f..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/message-auditing/README.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -permalink: /administrator-guides/message-auditing/ -official: true -enterprise: true -description: Enterprise and Gold only feature ---- - -# Message Auditing Panel - -It allows the authorized user to: - -* Review messages between users in the Message Auditing Panel. -* Check details in the Auditing Log about the individuals who used the Message Auditing Panel. - -{% hint style="info" %} -Note that the auditor does not have to be a participant in the room to be able to read the messages. -{% endhint %} - -To access the message auditing panel: - -1. Click your user icon -2. Click **Message Auditing** - -as shown below: - -![](../../../../.gitbook/assets/image%20%28290%29.png) - -The message auditing panel will open up, as shown below: - -![](../../../../.gitbook/assets/image%20%28291%29.png) - -## Search and Review Messages - -### By Channel - -To search for a specific message in a specific channel: - -1. Type the message string that you could remember in the **Message** field. -2. Enter the from and to dates under **Date** to specify the period of time in which you think the message was sent. Or you can use a specific period from the drop-down next to Date. -3. Select the channels in the **Channel** dropdown, to narrow the details of your search. -4. Hit **Apply**. - -![](../../../../.gitbook/assets/image%20%28281%29.png) - -### By User - -To search for a specific message by a user: - -1. Type the message string that you want to check \(e.g. abusive language\) in the **Message** field. -2. Enter the from and to dates under **Date** to specify the period of time in which you think the message was sent. Or you can use a specific period from the drop-down next to Date. -3. Enter username whose message you want to check in the **Users** field. -4. Hit **Apply**. - -The conversations pops up, as shown below: - -![](../../../../.gitbook/assets/image%20%28298%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29.png) - -### By Direct Messages - -To search for a specific message by a user: - -1. Type the message string that you want to check in the **Message** field. \(optional\) -2. Enter the from and to dates under **Date** to specify the period of time. Or you can use a specific period from the drop-down next to Date. -3. Enter atleast two usernames whose private you want to check in the **Users** field. -4. Hit **Apply**. - -The conversation pop up, as shown below: - -![](../../../../.gitbook/assets/image%20%28302%29.png) - -### By Omnichannel - -Similary you can also audit an omnichannel conversation. - -To search for a specific omichannel conversation: - -1. Type the message string that you want to check in the **Message** field. -2. Enter the from and to dates under **Date** to specify the period of time. Or you can use a specific period from the drop-down next to Date. -3. Enter the visitor's in **Visitor** field. -4. Enter the agent's name who served this conversation you are looking for in **Agent** field. -5. Hit **Apply**. - -The conversation pops up, as shown below: - -![](../../../../.gitbook/assets/image%20%28299%29.png) - -![](../../../../.gitbook/assets/audit-log.png) - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/message-auditing/assign-message-auditing-permissions-to-specific-users.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/message-auditing/assign-message-auditing-permissions-to-specific-users.md deleted file mode 100644 index 06136502d7..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/message-auditing/assign-message-auditing-permissions-to-specific-users.md +++ /dev/null @@ -1,13 +0,0 @@ -# Assign Message Auditing Permissions to Specific Users - -The Auditor or Auditor Log roles have permissions to use Message Auditing features. - -As an admin, you assign permissions to use the Message Auditing Panel or Auditing Log to such roles. - -On the **Permissions** screen in the Administration UI, do the following to assign access: - -* For access to the Message Auditing Panel, select the `can-audit` option. -* For access to the Message Auditing Log, select the `can-audit-log` option. - -![](../../../../.gitbook/assets/image%20%28293%29.png) - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/message-auditing/check-historical-edits-and-deletions-of-messages.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/message-auditing/check-historical-edits-and-deletions-of-messages.md deleted file mode 100644 index 35280ee916..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/message-auditing/check-historical-edits-and-deletions-of-messages.md +++ /dev/null @@ -1,14 +0,0 @@ -# Check Historical Edits and Deletions of Messages - -Rocket.Chat recommends the following setting preferences to enable you to view any modified or removed messages. - -* Go to the Administration -* Scroll down to **Messages** on the left-side menu. - -Make sure to set your message preferences as follows: - -* Enable **Allow Message Editing** and **Keep Per Message Editing History** to see a history of all messages and not only the last edit made. -* Disable **Allow Message Deleting**, otherwise, messages show only the _message deleted_ status and you cannot see the complete message history. - -![](../../../../.gitbook/assets/image%20%28306%29.png) - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/message-auditing/review-all-message-auditing-panelsearch-results.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/message-auditing/review-all-message-auditing-panelsearch-results.md deleted file mode 100644 index 1283b98234..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/message-auditing/review-all-message-auditing-panelsearch-results.md +++ /dev/null @@ -1,14 +0,0 @@ -# Review All Message Auditing Panel Search Results - -The Message Auditing Panel returns all messages that match the search values defined in the mandatory fields for each option. - -However, the auditor cannot read the encrypted messages of other users. If you want to audit these messages too Rocket.Chat recommends that you disable message encryption: - -* Go to the Administration UI. - -![](../../../../.gitbook/assets/image%20%28297%29.png) - -* Scroll down to **E2E Encryption** on the left-side menu and diable it, as shown below: - -![](../../../../.gitbook/assets/image%20%28303%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29.png) - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/message-auditing/review-the-message-auditing-log.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/message-auditing/review-the-message-auditing-log.md deleted file mode 100644 index f334ce86dc..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/message-auditing/review-the-message-auditing-log.md +++ /dev/null @@ -1,15 +0,0 @@ -# Review the Message Auditing Log - -To check the details about who used the Message Auditing Panel and their search results, you must have the `auditor-log` role or the `can-audit-log` permission. - -To access message editing log: - -1. Click your user icon -2. Click **Message Auditing log** - -as shown below: - -![](../../../../.gitbook/assets/image%20%28304%29.png) - -![](../../../../.gitbook/assets/image%20%28305%29.png) - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/notifications.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/notifications.md deleted file mode 100644 index 1f50924f1a..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/notifications.md +++ /dev/null @@ -1,22 +0,0 @@ -# Notifications - -Use the **Bell** icon to configure notifications within your channel or room. Other preferences are available in the`Personel Settings`dialog. Make sure your preferences include Receiving unread messages to get notifications. - -## Desktop - -Upon starting Rocket.Chat, you are asked to allow desktop notifications. Notifications appear as small boxes on the right corner, depending on the general or per-room settings. - -## Mobile - -Depending on your settings per room or channel, you receive notifications on your mobile device for all messages or only if somebody mentions you. Notifications in rooms are only sent when the desktop client goes with no use for more than five minutes. Currently, changing your status to "Away" does not speed up the countdown. - -Depending on the privacy settings set by the administrator, you will see the sender, room name or the first line of the message as a notification on your mobile device. - -## Emails - -Notifications of direct messages or mentions by @username are sent by Email to your E-Mail address, but only if no web-client is connected. - -## Mentions - -@username - notifies this person @all - notifies all members of this room or channel @here - notifies all members of this room or channel who are online - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/plug-ins/README.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/plug-ins/README.md deleted file mode 100644 index ba8f040dea..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/plug-ins/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Plug-ins - -Integrate Rocket.Chat \(or Live Chat\) features into popular applications via these Plug-ins. - -## Authentication - -* [Drupal](https://docs.rocket.chat/administrator-guides/plug-ins/drupal/) -* [Pidgin](https://docs.rocket.chat/administrator-guides/plug-ins/pidgin/) - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/plug-ins/drupal.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/plug-ins/drupal.md deleted file mode 100644 index fd93be4f7d..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/plug-ins/drupal.md +++ /dev/null @@ -1,12 +0,0 @@ -# Drupal Plug-in - -[![](https://raw.githubusercontent.com/Sing-Li/bbug/master/images/drupal.png)](https://www.drupal.org/) - -This is a Rocket.Chat module for Drupal 8 and 7. - -Add Rocket.Chat's Live Chat feature to your Drupal based website. This widget offers you the ability to communicate directly with your website 'guests'. - -For download information, see [Rocket.Chat module for Drupal 8 and 7](https://www.drupal.org/project/rocket_chat). To contribute to the source code, see [GitHub repository](https://github.com/jelhouss/rocket_chat). - -Thanks to Angry Cactus. And community member @jelhouss. - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/plug-ins/pidgin.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/plug-ins/pidgin.md deleted file mode 100644 index c2e6df2d8b..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/plug-ins/pidgin.md +++ /dev/null @@ -1,14 +0,0 @@ -# Pidgin Plug-in - -[![](https://raw.githubusercontent.com/Sing-Li/bbug/master/images/pidgin.png)](https://pidgin.im) - -Now you can enjoy ultra-lightweight `Rocket.Chat` side by side with IRC, ICQ, Yahoo messenger, Google Talk, AIM, MSN, or Groupwise! - -Try the alpha Rocket.Chat for Pidgin Plugin today. Please help improve the plug-in and report bugs or feedback. - -Installation instructions [here](https://github.com/EionRobb/purple-rocketchat#readme). - -Download plugin DLL [here](https://eion.robbmob.com/librocketchat.dll). - -Thanks to community member @eionrobb ! - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/restoring-an-admin.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/restoring-an-admin.md deleted file mode 100644 index 8ebccddd34..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/restoring-an-admin.md +++ /dev/null @@ -1,87 +0,0 @@ -# Restoring an Admin User - -You might accidentally lost access to an important admin user \(or the only admin in the server\) and need to restore it without using another admin user. This guide will help you in this process. - -_Note: To do this, you will need access to the database_ - -## Finding the database - -### Docker based installations - -Open Mongo shell within Mongo container - -Change into docker-compose directory \(where your `docker-compose.yml` is located\): - -```bash -cd /opt/docker/Rocket.Chat -docker-compose run mongo bash -``` - -or run - -```text -docker exec -it -u root mongo-image /bin/bash -``` - -Make sure to replace `mongo` with your MongoDB container name in case you use a different one. - -Login to mongo shell using : - -```text -mongo -``` - -On the Mongo shell: - -```sql -use rocketchat -``` - -Make sure to replace `rocketchat` with your actual Mongo database. If you're not sure how it's called either check your `docker-compose.yml` file or run: - -```sql -show dbs -``` - -### Ubuntu Snaps - -Connect to MongoDB: - -```bash -sudo rocketchat-server.mongo -``` - -Select Rocket.Chat Database: - -```sql -use parties -``` - -## Updating the admin password - -You can either use a one time access token \(that will require the user to change his password\): - -```javascript -db.getCollection('users').update({username:"administrator"}, {$set: { "services":{"loginToken":{"token":"some-token-id-that-you-will-use-to-login-once"}}, "requirePasswordChange":true} }) -``` - -Then access `http://{your server url}/login-token/some-token-id-that-you-will-use-to-login-once` to login - -or you can update the admin password to `12345` - -```javascript -db.getCollection('users').update({username:"administrator"}, { $set: {"services" : { "password" : {"bcrypt" : "$2a$10$n9CM8OgInDlwpvjLKLPML.eizXIzLlRtgCh3GRLafOdR9ldAUh/KG" } } } }) -``` - -_Replace `administrator` with the admin username in question._ - -Make sure to restart your application container in case the new password is not accepted yet. - -### Reset user role to "admin" - -```javascript -db.users.update({username:"administrator"}, {$set: {'roles' : [ "admin" ]}}) -``` - -Again, make sure to replace `administrator` with the admin username in question. - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/setting-up-video-conferencing/README.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/setting-up-video-conferencing/README.md deleted file mode 100644 index a81a40356b..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/setting-up-video-conferencing/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Video Conferencing - -Rocket.Chat offers three options for video conferencing. - -We recommend using Big Blue Button and Jitsi for video conference since Rocket.Chat Meet is still a work in progress. - - - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/setting-up-video-conferencing/big-blue-button-bbb-admin-guide.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/setting-up-video-conferencing/big-blue-button-bbb-admin-guide.md deleted file mode 100644 index ce61b94f57..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/setting-up-video-conferencing/big-blue-button-bbb-admin-guide.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -description: >- - BigBlueButton is a free software web conferencing system designed for online - learning. It has integrations for many of the major learning and content - management systems. ---- - -# BigBlueButton \(BBB\) Admin Guide - -**To enable BBB:** - -1. Go to **Administration** - -![](../../../../.gitbook/assets/image%20%28215%29.png) - -1. **Video conference** - -![](../../../../.gitbook/assets/image%20%28237%29.png) - -1. **BigBlueButton** - -![](../../../../.gitbook/assets/image%20%28231%29.png) - -1. Enable BigBlueButton. -2. Enter **Domain** name [https://bbb.yourownserver.com](https://bbb.yourownserver.com) -3. Enter your **Secret Token**. \(Follow the [instructions](https://docs.bigbluebutton.org/admin/bbb-conf.html) and generate your secret token in BBB CLI\) -4. Enable BigBlueButton for **Direct Messages** if you want \(default\) -5. Enable BigBlueButton for **Private Channels** \(default\) -6. Enable BigBlueButton for **Public Channels** -7. Hit **Save**. - -![](../../../../.gitbook/assets/image%20%28277%29.png) - -BigBlueButton is successfully configured on your server. - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/setting-up-video-conferencing/jitsi-meet-admin-guide.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/setting-up-video-conferencing/jitsi-meet-admin-guide.md deleted file mode 100644 index eb3ccf2af1..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/setting-up-video-conferencing/jitsi-meet-admin-guide.md +++ /dev/null @@ -1,24 +0,0 @@ -# Jitsi Meet Admin Guide - -You can use the [Jitsi Meet](https://jitsi.org/jitsi-meet/) video conferencing platform embedded in Rocket.Chat. - -The [Jitsi Meet project](https://jitsi.org/Projects/JitsiMeet) \(Jitsi Video Bridge\) is a tried and true bandwidth-efficient WebRTC compatible SFU \(server-based\) solution from our gracious FOSS partner, [Jitsi](https://jitsi.org/). - -Through the collaboration arrangement with Jitsi, Rocket.Chat users can enjoy reliable and robust group video chat, audio chat, and screen sharing experience out of the box. - -To enable Jitsi: - -Go to `Administration -> SETTINGS -> Video Conference` then set `Enabled` to `True`. - -![](../../../../.gitbook/assets/image%20%28239%29.png) - -Here, you can set where video conferences can be held \(channels, private rooms, and direct messages\). - -## How to set up your own Jitsi Meet server - -In some use-cases, where the Jitsi.org infrastructure may be remote or inaccessible, or where you require total privacy, setting up your own Jitsi Meet servers stack may be necessary. - -You can find extensive instructions on setting up a Jitsi Meet servers stack at the [official Jisti Meet repository](https://github.com/jitsi/jitsi-meet). - -After setting your Jitsi Meet Server, you can set the meeting Domain to the one on your server. - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/setting-up-video-conferencing/rocket.chat-admin-guide.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/setting-up-video-conferencing/rocket.chat-admin-guide.md deleted file mode 100644 index 2cacf7d809..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/setting-up-video-conferencing/rocket.chat-admin-guide.md +++ /dev/null @@ -1,10 +0,0 @@ -# Rocket.Chat Meet Admin Guide - -## Rocket.Chat Meet \(Powered by WebRTC\) - -Rocket.Chat Meet \(in some places named as WebRTC\) is our own take on implementing pure WebRTC. It still a work in progress but if you want to use it you can go to `Administration -> WebRTC`. - -From there you can set where video conferences can be held \(channels, private rooms, and direct messages\). - -You can also define a list of `STUN/TURN` Servers to be used. - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/settings-via-env-vars.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/settings-via-env-vars.md deleted file mode 100644 index 8960e059ab..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/settings-via-env-vars.md +++ /dev/null @@ -1,60 +0,0 @@ -# Managing Settings Using Environment Variables - -You can set any settings value via an environment variable when starting your server. You will only have to know the setting id and what type of setting it is \(boolean, string, integer, etc...\). - -## Set Setting - -To set a setting for the first time you need only to add the env var `SETTING_ID=VALUE` when starting the server. - -Example: - -```text -FileUpload_Storage_Type=GoogleCloudStorage -``` - -**Note: This only works if the setting isn't already set. So this is most useful for setting on initial start. If the setting already has a value you will need to use the syntax below** - -## Overwrite Setting - -You can overwrite any setting by setting an environment variable prefixed with: `OVERWRITE_SETTING_` - -Example: - -```text -OVERWRITE_SETTING_FileUpload_Storage_Type=GoogleCloudStorage -``` - -## Block Settings - -You can block a setting from being changed by specifying the `SETTINGS_BLOCKED` environment variable. This is a comma separated list. Any setting you want to block you need to add to this list. - -Example: - -```text -SETTINGS_BLOCKED=FileUpload_Storage_Type,FileUpload_GoogleStorage_AccessId,FileUpload_GoogleStorage_Secret -``` - -**Even you as an admin will not be able to change this via the UI. If you want to change the setting you will need to remove it from the list and reboot the server** - -## Hide Settings - -Example: - -You can hide settings from the client by using the `SETTINGS_HIDDEN` environment variable - -```text -SETTINGS_HIDDEN=FileUpload_GoogleStorage_AccessId,FileUpload_GoogleStorage_Secret -``` - -**Be careful with this setting some settings like `FileUpload_Storage_Type` are needed by the client so cannot be hidden** - -## **Wizard Required** Settings - -Example: - -You can force settings to be required on wizard pages by using the `SETTINGS_REQUIRED_ON_WIZARD` environment variable - -```text -SETTINGS_REQUIRED_ON_WIZARD=Organization_Type,Organization_Name -``` - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/troubleshooting.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/troubleshooting.md deleted file mode 100644 index 8539744b1c..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/troubleshooting.md +++ /dev/null @@ -1,17 +0,0 @@ -# Troubleshooting - -Sometimes we get ourselves into a bit of trouble. Here we will try to provide common problems and their solutions. - -## Invalid Site URL Warning - -If you receive an alert that you have an invalid Site URL. This means that some how your Site URL and the URL you are accessing from don't match. This causes assets in Rocket.Chat to not be able to load properly. - -This usually happens when someone changes the setting. To resolve this you will need to modify the site url. - -Setting the following environment variables will correct this issue: - -```text -OVERWRITE_SETTING_Site_Url=https://the-address-you-use-to-access -ROOT_URL=https://the-address-you-use-to-access -``` - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/white-labeling/README.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/white-labeling/README.md deleted file mode 100644 index 6bb08bee5b..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/white-labeling/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# White-Labeling \(Server and Web App\) - -When using Rocket.Chat you have a plethora of customization options, ranging from basic color switching to full css control. Here you will find all the guides you need to customize your Rocket.Chat Server. - -In these guides we will be talking about customizations without changing the source code, for that you can check our \[Developer Guides\]. - -We will be separating these guides into 2 categories: basic and advanced. - -* [Basic White-Labeling](https://docs.rocket.chat/guides/administrator-guides/white-labeling/basic-white-labeling) -* [Advanced White-Labeling](https://docs.rocket.chat/guides/administrator-guides/white-labeling/advanced-white-labeling) - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/white-labeling/advanced-white-labeling.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/white-labeling/advanced-white-labeling.md deleted file mode 100644 index e0f9f93142..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/white-labeling/advanced-white-labeling.md +++ /dev/null @@ -1,130 +0,0 @@ -# Advanced White-Labeling - -In these guides we will cover how to customize styling in more depth and how to add custom Javascript scripts to your server. - -Please use caution when using these settings, as the misuse of them can cause problems on your server - -## Custom CSS - -Can be found in Administration => Layout. This allows you to overwrite styling on ui. For the full maestry of this setting we recommend studying the source code, as seen that overwriting classes directly can lead to side effects on styling. - -### CSS Variables - -Rocket.Chat uses css variables to store key values when styling. Rocket.Chat recommends only overwriting the css variables, as you will have more control on what will be changed. - -You can find the full list of variables here - -## Custom Scripts - -You can add custom scripts for when a user takes specific actions. Scripts must be written in Javascript. - -### Logout Flow - -This script runs after the user has logged out. - -### Custom Script for Logged Out Users - -Custom Script that will run whenever a user that is not logged in accesses your server url. e.g. \(whenever you enter the login page\) - -### Custom Script for Logged In Users - -Custom Script that will run whenever a user that is logged in accesses your server url \(eg. opens a browser page or the desktop app\) - -## Email Templates - -Here you can configure various email settings, in this guide we will be going over only email templating sections. Found in the administration menu. Here you can use HTML for formatting. You can also use placeholders that will be changed to actual data when sending \(for example \[email\] will turn into the user's email\). You can also use Rocket.Chat internationalization engine by wrapping the sentence string with `{}`, see all our internationalization strings [here](https://github.com/RocketChat/Rocket.Chat/blob/develop/packages/rocketchat-i18n/i18n/en.i18n.json#L1198) - -### Email Address Changed - -Informs that the user has changed the email Is triggered when the user changes the email You may use the following placeholders: - -* \[email\] for the user's email. -* \[Site\_Name\] and \[Site\_URL\] for the Application Name and URL respectively. - -### Forgot Password - -Resets the password Is triggered when the user clicks on 'Forgot Password' - -You may use the following placeholders: - -* \[Forgot\_Password\_Url\] for the password recovery URL. -* \[name\], \[fname\], \[lname\] for the user's full name, first name or last name, respectively. -* \[email\] for the user's email. -* \[Site\_Name\] and \[Site\_URL\] for the Application Name and URL respectively. - -### Header and Footer - -Any changes made here will be reflected in the every header and footer Changes the header, footer and direct reply warning HTML You may use the following placeholders: - -* \[Site\_Name\] and \[Site\_URL\] for the Application Name and URL respectively. - -### Invitation - -Invitation to use the site Is triggered when the admin invites the person by email - -You may use the following placeholders: - -* \[email\] for the recipient email. -* \[Site\_Name\] and \[Site\_URL\] for the Application Name and URL respectively. - -### Password Changed - -Informs that the password has been changed by the admin Is triggered when the admin change user's password You may use the following placeholders: - -* \[password\] for the temporary password. -* \[name\], \[fname\], \[lname\] for the user's full name, first name or last name, respectively. -* \[email\] for the user's email. -* \[Site\_Name\] and \[Site\_URL\] for the Application Name and URL respectively. - -### Registration - -Is triggered when the user registers You may use the following placeholders: - -* \[name\], \[fname\], \[lname\] for the user's full name, first name or last name, respectively. -* \[email\] for the user's email. -* \[Site\_Name\] and \[Site\_URL\] for the Application Name and URL respectively. - -### Registration via Admin - -Is triggered when the admin creates an account for the user You may use the following placeholders: - -* \[name\], \[fname\], \[lname\] for the user's full name, first name or last name, respectively. -* \[email\] for the user's email. -* \[password\] for the user's password. -* \[Site\_Name\] and \[Site\_URL\] for the Application Name and URL respectively. - -### Style - -Here you can edit the emails styling using CSS. - -### Subject - -Here you can define what email users will receive when they recieve certain message notifications: - -### Direct Message: - -Is triggered when a user receives a direct message. You may use the following placeholders: - -* \[Site\_Name\], \[Site\_URL\], \[User\] & \[Room\] for the Application Name, URL, Username and Roomname respectively. - -### Mention: - -Is triggered when a user is mentioned using `@username`. You may use the following placeholders: - -* \[Site\_Name\], \[Site\_URL\], \[User\] & \[Room\] for the Application Name, URL, Username and Roomname respectively. - -### Mention All: - -Is triggered when a user is mentioned using `@all`. You may use the following placeholders: - -* \[Site\_Name\], \[Site\_URL\], \[User\] & \[Room\] for the Application Name, URL, Username and Roomname respectively. - -### Verification - -Email that the user receives to verify his account. You may use the following placeholders: - -* \[Verification\_Url\] for the verification URL. -* \[name\], \[fname\], \[lname\] for the user's full name, first name or last name, respectively. -* \[email\] for the user's email. -* \[Site\_Name\] and \[Site\_URL\] for the Application Name and URL respectively. - diff --git a/guides/rocket.chat-administrator-guides/misc.-admin-guides/white-labeling/basic-white-labeling.md b/guides/rocket.chat-administrator-guides/misc.-admin-guides/white-labeling/basic-white-labeling.md deleted file mode 100644 index f09fa40ad0..0000000000 --- a/guides/rocket.chat-administrator-guides/misc.-admin-guides/white-labeling/basic-white-labeling.md +++ /dev/null @@ -1,490 +0,0 @@ -# Basic White-labeling - -This guide will focus on customizations that non technical users can make to their Rocket.Chat Server. To achieve this you will be using only the admin settings. - -## Layout - -Here is where most of the changes to the UI will happen. Found in the administration menu. - -### Colors - -Let’s start out with the most basic changes you can make to your server, changing colors. Rocket.Chat offers the ability to change most of its elements colors - -### Error - -The Error variable will change these elements: The background on switch buttons \(when disabled\) - -![Disabled switch button](../../../../.gitbook/assets/disabled-switch%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%284%29.png) - -```text -The color of the line when you have unread messages (same day or another) -``` - -![Unread messages](../../../../.gitbook/assets/unread-message.png) ![Unread messages in another day](../../../../.gitbook/assets/new-day-unread-message.png) - -```text -The close button in the audio upload area (inside message box) -``` - -![Message box with audio recording](../../../../.gitbook/assets/audio-message-box%20%281%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%285%29%20%285%29%20%285%29%20%281%29.png) - -```text -The leave/delete button in the room info -``` - -![Leave and Delete buttons](../../../../.gitbook/assets/leave-delete-buttons.png) - -```text -The busy status -``` - -![Busy status](../../../../.gitbook/assets/busy-status.png) - -```text -Remove button inside the user preferences (Don't ask me again list) -``` - -![Remove button](../../../../.gitbook/assets/remove-dont-ask-me-again.png) - -```text -Textbox with error on the text verification -``` - -![Text box with error](../../../../.gitbook/assets/error-text-box.png) - -```text -Remove user from room button (user info -> more actions) -``` - -![Remove from room button](../../../../.gitbook/assets/remove-from-room-message.png) - -### Error Light - -The Error Light variable will change these elements: The border color when disabled - -![Disabled switch button](../../../../.gitbook/assets/disabled-switch%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%284%29%20%284%29.png) - -```text -Icon on the burger menu in mobile-view -``` - -![Burger menu with 1 unread message](../../../../.gitbook/assets/1-unread-message-burger.png) - -### Alert - -The Alert variable will change these elements: Warning icon - -![Warning-image](../../../../.gitbook/assets/warning-image.png) - -```text -Away status color -``` - -![Away status](../../../../.gitbook/assets/away-status.png) - -### Alert Light - -The Alert Light variable will change these elements: Favorite button color - -![Favorite button](../../../../.gitbook/assets/favorite-star.png) - -### Success - -The Success variable will change these elements: The online status - -![Online status](../../../../.gitbook/assets/online-status.png) - -```text -The switch button (when enabled) -``` - -![Enabled switch button](../../../../.gitbook/assets/enabled-switch.png) - -```text -The done button in the audio upload area (inside message box) -``` - -![Message box with audio recording](../../../../.gitbook/assets/audio-message-box%20%281%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%283%29%20%285%29%20%285%29%20%285%29%20%281%29%20%285%29.png) - -### Success Light - -The Success light variable will change these elements: Confirmation Icon - -![Success message](../../../../.gitbook/assets/success-message.png) - -### Button Primary - -The Button Primary variable will change these elements: The home page links colors - -![Links list](../../../../.gitbook/assets/home-links.png) - -```text -The clip icon color in files list -``` - -![Enabled switch button](../../../../.gitbook/assets/files-list-clip.png) - -```text -Reply in Thread and Reactions button color (message actions / on hover) -``` - -![Reply in Thread and Reactions buttons](../../../../.gitbook/assets/thread-reaction-message.png) - -```text -The room actions buttons color (on hover) -``` - -![Room action button hover](../../../../.gitbook/assets/room-actions-hover.png) - -```text -The switch button in the room settings -``` - -![Enabled blue switch button](../../../../.gitbook/assets/blue-switch-enabled.png) - -```text -The reply counter -``` - -![Reply counters](../../../../.gitbook/assets/badger-thread.png) - -```text -Regular expression link in 'Search Messages' -``` - -![Regular expression link](../../../../.gitbook/assets/regular-expression-link.png) - -```text -Record and Ok buttons in Video Message -``` - -![Record a video message box](../../../../.gitbook/assets/video-message-box.png) - -```text -Directory active tab -``` - -![DIrectory active tab](../../../../.gitbook/assets/directory-tabs.png) - -```text -Member list actions -``` - -![Add users and invite users button](../../../../.gitbook/assets/add-users-invite-users.png) - -```text -Room info save button -``` - -![Reply in Thread and Reactions buttons](../../../../.gitbook/assets/cancel-reset-save-buttons.png) - -```text -Checkbox background (Don't ask me again / modal) -``` - -![Don't ask me again checkbox](../../../../.gitbook/assets/checked-dont-ask-me-again%20%281%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%281%29.png) - -### Button Primary Light - -The Button Primary Light variable will change these elements: Checkbox border \(Don't ask me again / modal\) - -![Don't ask me again checkbox](../../../../.gitbook/assets/checked-dont-ask-me-again%20%281%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%281%29%20%281%29.png) - -### Alert Message Primary - -The Alert Message Primary variable will change these elements: The thread icon and the responded message - -![Replying in thread](../../../../.gitbook/assets/replying-in-thread.png) - -```text -Border and font color in mail messages instructions (inside room -> more actions -> mail messages // when you haven't selected any messages) -``` - -![Send messages by email alert](../../../../.gitbook/assets/mail-messages-blue-div%20%281%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%284%29%20%284%29%20%284%29%20%281%29%20%281%29.png) - -### Alert Message Primary Background - -The Alert Message Primary Background variable will change these elements: Background color in mail messages instructions - -![Send messages by email alert](../../../../.gitbook/assets/mail-messages-blue-div%20%281%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%284%29%20%284%29%20%284%29%20%281%29%20%283%29.png) - -### Alert Message Secondary - -The Alert Message Secondary variable will change these elements: Border and font color in mail messages instructions - -![Clear section alert](../../../../.gitbook/assets/clear-section-alert%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%281%29%20%284%29.png) - -### Alert Message Secondary Background - -The Alert Message Secondary Background variable will change these elements: Background color in mail message instructions - -![Clear section alert](../../../../.gitbook/assets/clear-section-alert%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%281%29%20%286%29.png) - -### Alert Message Warning - -The Alert Message Warning variable will change these elements: Border and font color in mail messages instructions error - -![Invalis email alert](../../../../.gitbook/assets/email-error%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%284%29%20%281%29%20%286%29.png) - -```text -Border and font color in prune messages warning (room -> more actions -> prune messages) -``` - -![Delete all messages alert](../../../../.gitbook/assets/delete-all-messages%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%284%29%20%284%29.png) - -### Alert Message Warning Background - -The Alert Message Warning Background variable will change these elements: Background color in mail messages instructions error - -![Invalis email alert](../../../../.gitbook/assets/email-error%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%284%29%20%281%29%20%287%29.png) - -```text -Background color in prune messages warning -``` - -![Delete all messages alert](../../../../.gitbook/assets/delete-all-messages%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%284%29%20%284%29%20%285%29.png) - -### Primary - -The Primary variable will change these elements: Sidebar background - -![Sidebar header](../../../../.gitbook/assets/top-sidebar.png) - -```text -Directory channel/user list -``` - -![Channels list](../../../../.gitbook/assets/directory-channels-list.png) - -```text -Rooms list ADMIN -``` - -![All rooms list](../../../../.gitbook/assets/all-rooms-list.png) - -```text -Users list ADMIN -``` - -![Users list](../../../../.gitbook/assets/users-list.png) - -```text -Invites list ADMIN -``` - -![List of invitation](../../../../.gitbook/assets/invitation-token.png) - -```text -Name, details and price of apps on marketplace -``` - -![List of apps](../../../../.gitbook/assets/apps-list%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%284%29%20%283%29%20%283%29.png) - -### Primary Darkest - -The Primary Darkest variable will change these elements: On hover in rooms and users in the sidebar - -![Active room](../../../../.gitbook/assets/list-rooms-hover.png) - -```text -Search on the top of sidebar -> text box background -``` - -![Sidebar search](../../../../.gitbook/assets/sidebar-search.png) - -### Primary Dark - -The Primary Dark variable will change these elements: The open room - -![Open room](../../../../.gitbook/assets/active-room.png) - -```text -The border of text box in search option -``` - -![Sidebar search](../../../../.gitbook/assets/sidebar-search-box.png) - -### Primary Light - -The Primary Light variable will change these elements: Fonts and icons color/ sidebar - -![Sidebar](../../../../.gitbook/assets/sidebar.png) - -```text -Search and rooms font color -``` - -![Sidebar search](../../../../.gitbook/assets/search-box.png) - -```text -Directory/ channels list font color -``` - -![Directory/ channels list](../../../../.gitbook/assets/directory-channel-list.png) - -```text -Directory/ users list font color -``` - -![Directory/ users list](../../../../.gitbook/assets/directory-user-list.png) - -```text -Credits on emoji box footer -``` - -![Emoji Box](../../../../.gitbook/assets/emoji-picker.png) - -```text -Admin tabs on hover -``` - -![Admin tabs on hover](../../../../.gitbook/assets/admin-sidebar-hover.png) - -```text -Settings title on admin -``` - -![Search bar](../../../../.gitbook/assets/settings-search-bar.png) - -```text -Font color in marketplace -``` - -![Apps list](../../../../.gitbook/assets/apps-list%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%284%29%20%283%29.png) - -### Primary Light Medium - -The Primary Light Medium variable will change these elements: Don't ask me again unchecked border of checkbox - -![Don't ask me again checkbox](../../../../.gitbook/assets/dont-ask-me-again.png) - -```text -Invite users placeholder -``` - -![Send invitation email](../../../../.gitbook/assets/send-invitation-email.png) - -### Primary Lightest - -The Primary Lightest variable will change these elements: directory hover on room - -![Directory/ channel list hover](../../../../.gitbook/assets/directory-channel-list-hover.png) - -```text -directory hover on user -``` - -![Directory/ user list hover](../../../../.gitbook/assets/directory-user-list-hover.png) - -```text -admin sidebar background -``` - -![Admin sidebar](../../../../.gitbook/assets/administration-sidebar.png) - -```text -admin rooms list on hover -``` - -![Admin/ room list hover](../../../../.gitbook/assets/admin-room-list.png) - -```text -admin users list on hover -``` - -![Admin/ user list hover](../../../../.gitbook/assets/users-admin-list.png) - -### Content - -The Content variable will change these elements: color of the number of unread messages \(mobile view\) - -![Burger menu with unread messages notification](../../../../.gitbook/assets/6-unread-messages-burger.png) - -```text -color of the name, number and more actions when you have unread messages -``` - -![Name with unread messages notification](../../../../.gitbook/assets/room-unread-messages.png) - -### Link Active - -The Link Active variable will change these elements: the hover and active color on icons / room actions - -![Room action icons](../../../../.gitbook/assets/active-link-room-actions.png) - -```text -the loader when you prune messages -``` - -![Loader](../../../../.gitbook/assets/prune-messages-loader.png) - -## Content - -The content section allows you to change the HTML content of a number of screens on your Rocket.Chat server. The following screens are available to be edited: - -* **Home Title:** The title on the header of the first screen that your users will see when they log in. -* **Home Body:** The content of the first screen that your users will see when logging in. -* **Login Terms:** This is the text under the login page. -* **Terms of Service:** By default this screen is accessed on the links under the login page, here you can set the terms of service of your server. Can also be accessed via YOUR-SERVER-URL/terms-of-service -* **Privacy Policy:** By default this screen is accessed on the links under the login page, here you can set the privacy policy of your server. Can also be accessed via YOUR-SERVER-URL/privacy-policy -* **Legal Notice:** By default this screen is accessed on the links under the login page, here you can set the legal notice of your server. Can also be accessed via YOUR-SERVER-URL/legal-notice -* **Side navigation footer:** This is the logo on the left sidebar. We recommend using the images set on your [Assets](basic-white-labeling.md#assets) for better consistency. - -### Fonts - -Here you can define the font family for the system in a list separated by commas, Rocket.Chat will try to use the available fonts starting from left to right. - -### User Interface - -* **Display Roles:** Toggles the display of user roles by the usernames on messages -* **Group Channels By Type:** Enabling this will separate the channels by category \(Channel, Private Room, DM or discussion\) on the left sidebar. -* **Use Full Name Initials to Generate Default Avatar:** This will make so the default avatars are generated using the person Full Name instead of Username. E.g. By default the user `blue.ducks` with the name `Richards Nate` will have an avatar with the letters `BD`, if this setting is active, it will be `RN`. -* **Use Real Name:** Enabling this will change the display of Usernames to Full Names -* **Click to Create Direct Message:** Enabling this will make it so when you click an avatar, it will open a DM with the selected user. - -Unread Counter Style: - -* **Different Style for user mentions:** This will make the notification counter differentiate normal messages from mentions -* **Same style for mentions:** This will make the counter mark mentions and normal messages as the same -* **Allow Special Characters in Room Names:** This will enable the use of special characters like `! @ # $ % ^ & *` in room names -* **Show top navbar in embedded layout:** This toggles the top navbar when using `?layout=embedded` in the end of the url - -## Assets - -Here you will be able to change most of the logos on your server. Found in the administration menu. - -* logo \(svg, png, jpg\) - * Changes the logo on the footer of the left sidebar - * Changes the logo on the login page -* login background \(svg, png, jpg\) - * Changes the background of the login page - -The next items are mostly icons for different operational systems and platforms, we recommend using the same image with the specified size and format on each item: Favicons are used in the browser tabs and as the icon for the server on the desktop application: - -* favicon \(ico\) -* favicon \(svg\) -* favicon 16x16 \(png\) -* favicon 32x32 \(png\) - -Icons for the notifications on chrome in android: - -* android-chrome 192x192 \(png\) -* android-chrome 512x512 \(png\) - -Icons for favorites on Iphone: - -* apple-touch-icon 180x180 \(png\) -* apple-touch-icon-precomposed 180x180 \(png\) - -Tiles on Microsoft Windows 10 start menu: - -* mstile 70x70 \(png\) -* mstile 144x144 \(png\) -* mstile 150x150 \(png\) -* mstile 310x310 \(png\) -* mstile 310x150 \(png\) - -Safari pinned tab Icon: - -* safari pinned tab \(svg\) - diff --git a/guides/rocket.chat-administrator-guides/settings/README.md b/guides/rocket.chat-administrator-guides/settings/README.md deleted file mode 100644 index 29e82f8cf1..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Settings - diff --git a/guides/rocket.chat-administrator-guides/settings/account-settings/README.md b/guides/rocket.chat-administrator-guides/settings/account-settings/README.md deleted file mode 100644 index 5f11271693..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/account-settings/README.md +++ /dev/null @@ -1,109 +0,0 @@ -# Accounts - -In this section, you can modify various settings about the accounts of the users in your Rocket.Chat server. - -In this guide, we will go over all settings in the _Accounts_ Section. - -These are the basic Account configuration settings. Most of the options are either `True` or `False` depending on whether you want the setting enabled or not. - -* **Allow anonymous read**: Setting this to true will allow people to use the chat without having to create an account or log in. Anonymous users will be only allowed to read messages on public channels. -* **Allow anonymous write**: This will allow Anonymous users to post messages on public channels. -* **Allow users to delete own account**: Setting this to true allows users to delete their account. When a user is deleted all their messages are deleted too. -* **Allow User Profile Change**: Setting this to false will block users from changing the information on their profile. -* **Allow User Avatar Change**: Setting this to false will block users from changing their avatar. -* **Allow Name Change**: Setting this to false will block users from changing their name. -* **Allow User Username Change**: Setting this to false will block users from changing their usernames. -* **Allow User Email Change**: Setting this to false will block users from changing their email. -* **Allow User Password Change**: Setting this to false will block users from changing their password. -* **Custom Fields to Show in User Info**: Other fields to be displayed in the user info. Please see more at [Custom fields](custom-fields.md). -* **Login Expiration in Days**: After this number of days of inactivity, the user will be logged out. -* **Show Default Login Form**: Setting this to false will remove the login form from the login screen. This setting is useful when you are using a third-party login system. -* **Placeholder for email or username login field**: This will change the placeholder for the _email or username_ field on the login screen. -* **Placeholder for password login field**: This will change the placeholder for the _password_ field on the login screen. -* **Forget user session on window close**: This will log out users when they close the window running Rocket.Chat. -* **Fields to Consider in Search**: Specifies the fields to be considered when searching for users. Default is _username, name_. -* **Default Directory Listing**: This will set the default directory to be listed. - -Clicking on the `Reset` button will reset all these basic configurations back to their default value. - -## Default User Preferences - -* **Enable Auto-Away**: When set to True, it will automatically change the User's status to Away they exit Rocket.Chat. -* **Idle Time Limit**: Sets how long _in milliseconds_ for a User to go idle. -* **Notification Duration**: This will set how long _in milliseconds_ for a notification to be displayed. -* **Require Interaction to Dismiss Desktop Notification**: Enabling this will set the notification prompt active until the User interacts with it. -* **Audio Notifications Default Alert**: A dropdown to select when to play the default audio notification. Default to _Mentions_. -* **Desktop Notifications Default Alert**: Lets you set when the desktop notification alert is triggered. Default is _All messages_. This only concerns the groups and channels the user belongs to. -* **Mobile Notifications Default Alert**: Sets when the default notification alert will play on mobile devices. -* **Unread Tray Icon Alert**: Setting this to false will stop the unread tray icon from displaying. -* **Use Emojis**: Setting this to false will disable the use of emojis. -* **Convert ASCII to Emoji**: When this is true, ASCII characters will be converted to emoji. -* **Auto Load Images**: Setting this to false will prevent images from auto-loading when a room/chat is opened. -* **Save Mobile Bandwidth**: When enabled acts like a data saver. -* **Collapse Embedded Media by Default**: Setting this to true will cause embedded media cards to collapse. -* **Hide Usernames**: When enabled, it'll hide usernames in conversation rooms. -* **Hide Roles**: When set to true, user roles like _admin_, and _moderator_ will not be shown in chat rooms. -* **Hide Right Sidebar with Click**: Setting this true will give the ability for the right sidebar to be hidden. -* **Hide Avatars**: Enabling this will hide users avatar in chat. -* **Group by Type**: This lets you group conversations by type. -* **Sidebar Channel List Mode**: Lets you choose from _Extended, Medium, Condensed_ how the sidebar should be. -* **Hide Avatars in Sidebar**: Enabling this will disable avatars from showing at the sidebar. -* **Unread on top**: Setting this to true will display all unread messages at the top. -* **Group favorites**: Setting this to false will disable favoriting groups. -* **Enter key Behaviour**: Lets you configure the action of the Enter key. -* **MessageBox View Mode**: Lets you select how message boxes appear. -* **Offline Email Notifications**: Lets you set when users should receive email notifications. -* **New Room Notification**: Configures the notification when a new room is created/joined. -* **New Message Notification**: Lets you select the notification for new messages. -* **Mute Focused Conversations**: When set to true, no notification will be sent for focused/open conversations. -* **Notifications sound volume**: Lets you set the notification volume. -* **Group discussions**: When set to true allows group discussion. - -## Avatar - -* **Resize Avatar**: Set this to true to resize user avatars to a predefined size. You need ImageMagick or GraphicsMagick installed on your server for this feature to work. -* **Avatar Size**: The desired size after the avatar resizing. The unit is pixels \(px\). -* **Avatar External Provider URL**: Lets you set a URL from which avatars can be loaded. -* **Avatar cache time**: This will set how long _in milliseconds_ you want users avatar to be cached. -* **Block Unauthenticated Access to Avatars**: Enabling this will restrict access to users avatar for those that are not authenticated. -* **Set Default Avatar**: If this setting is set to true, Rocket.Chat will try to find a default avatar based on OAuth Account or Gravatar. - -## Iframe - -These settings are related to the Iframe Integration, please see the [Iframe integration page](https://developer.rocket.chat/guides/developer/iframe-integration) for more details. - -## Password Policy - -**Enable Password Policy**: When this is set to true, new passwords must follow the corresponding configured policies. - -The various settings that fall under this have simple descriptions for understanding. - -## Registration - -* **Send email to user when user is activated**: When enabled, an email will be sent to the user after their account has been activated. -* **Send email to user when user is deactivated**: If set to `true`, users will get an email after account deactivation. -* **Default username prefix suggestion**: This is the prefix that will be suggested when a user is creating a username. Default is `user`. -* **Require Name For Signup**: If this is set to true, the name of the user will be required to create an account. -* **Require Password Confirmation**: If this is set to true, the user will have to input his password twice when registering. -* **Email Verification**: If this is set to true, users will have to confirm their email via a confirmation email sent to their email. \(For this setting work, the SMTP settings must be already set up. See [Email Configuration](../email/setup.md)\) -* **Manually Approve New Users**: If this is set to true, new users will have to wait for a user with the `view-user-administration` permission to approve their account before using Rocket.Chat. -* **Allowed Domains List**: This will block emails with different domains than the ones on this list. -* **Blocked Domains List**: This will block emails with domains that are on this list. -* **Use Default Blocked Domains List**: Will block the email domains listed [here](https://github.com/RocketChat/Rocket.Chat/blob/develop/app/lib/server/lib/defaultBlockedDomainsList.js) -* **Use DNS Domain Check**: When this is set to true, users won't be able to register with invalid domains. -* **Registration Form**: This will change how the registration form is presented. Currently, there are 3 options: - * Public: The form will be public and anyone will be able to access it; - * Disabled: The form will be disabled and users won't be able to register through it; - * Secret URL: The form will be only accessible using a specific URL; -* **Registration Form Secret URL**: String to be added to the secret URL. Is recommended to use a random string for that. Example: `https://open.rocket.chat/register/[secret_hash]`. -* **Invite URL Type**: URL type can either be direct or through a proxy. -* **Registration Form Link Replacement Text**: Text to be shown in place of the registration form when the registration form is disabled. -* **Registration with Authentication Services**: Set this to true to allow registration with third-party authentication services like Google or Twitter. -* **Default Roles for Authentication Services**: Default roles users will be given when registering through authentication services. -* **Password Reset**: Set this to true to allow users to reset their password. -* **Custom Fields**: A valid `JSON` of key values pairs of additional fields to be added during user registration. - -## Two Factor Authentication - -Here you can enable or disable Two Factor Authentication for users, and set for how long a token is valid. - diff --git a/guides/rocket.chat-administrator-guides/settings/account-settings/custom-fields.md b/guides/rocket.chat-administrator-guides/settings/account-settings/custom-fields.md deleted file mode 100644 index e63bf46811..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/account-settings/custom-fields.md +++ /dev/null @@ -1,78 +0,0 @@ -# Custom Fields - -In Rocket.Chat you can set customized fields for user registration. By adding an `address` or `role` field, where the user could select from various roles of a company, for example. - -**Note**: Currently you may need some basic understanding of Javascript, and Rocket.Chat's internal working structure to set other custom fields than in the example below. A more _user-friendly_ interface is planned for the future. - -You can set custom fields under `Administration > Accounts > Registration > Custom Fields`. - -Custom fields show up when a user registers, and when an admin looks for that user's information. - -In order to display custom fields in user profiles you can use this syntax under `Administration > Accounts > Custom Fields to Show in User Info` - -```javascript -[{"Designation": "designation"}, {"Department": "department"}] -``` - -For now, set custom fields using a [JSON object](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON). - -Make sure to use a valid `JSON`, where `keys` are the `field names` containing a dictionary of field settings. Example: - -```javascript -{ - "role": { -  "type": "select", -  "defaultValue": "student", -  "options": ["teacher", "student"], -  "required": true, -  "modifyRecordField": { -   "array": true, -   "field": "roles" -  } - }, - "twitter": { -  "type": "text", -  "required": true, -  "minLength": 2, -  "maxLength": 10 - }, - "crmUserId": { -  "type": "text", -  "required": false, -  "minLength": 12, -  "sendToIntegrations": true, - } -} -``` - -In the example above we set three new fields with the following properties: - -* **type**: defines the type of the field, currently there are 2 types: `select` and `text`, where `select` creates a dropdown list, and `text` creates a plain text form. If you put a URL into the text field, it will be interpreted as a hyperlink \(it will be clickable in the userinfo tab\). -* **defaultValue**: used with a `select` form type to set the default option for the list. -* **options**: used with a `select` form type for the values that should be on the dropdown list, which follows the `["item1", "item2","item3"]` pattern. Use a [javascript Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) to create it. -* **required**: defines if the field is required for registration; use `true` or `false` in this property. -* **minLength**: used with a `text` to define the minimum length required in the form. -* **maxLength**: used with a `text` to define the maximum length required in the form. -* **modifyRecordField**: this property is required when you add a field that already exists in Rocket.Chat. -* **array**: used inside the `modifyRecordField` property to define if the existing field is an array. -* **field**: used inside the `modifyRecordField` property; it should be the name of the existing field. -* **public**: defines the field as visible for other users when looking at this user's profile. -* **private**: defines the field as private, so only users with `view-full-other-user-info` permission can see this field when viewing this user's profile. -* **sendToIntegrations**: define the field as shareable with external applications, such as Omnichannel integrations. - -**Note**: Fields work with `tabs` for indentation, avoid using `spaces`. - -## Show custom fields on the user's info - -The list of custom fields shown on the user's info panel can be configured under `Administration -> Accounts -> Custom Fields to show in User Info`. - -The list of fields needs to be specified as JSON array in the form - -```text -[{"label1":"key2"},{"label2":"key2"},...] -``` - -A label can by any text, the key needs to be a custom field name defined above. - -Fields are only shown if the user has the permission to view private fields or if the field is set to `"public":true`. - diff --git a/guides/rocket.chat-administrator-guides/settings/analytics.md b/guides/rocket.chat-administrator-guides/settings/analytics.md deleted file mode 100644 index d78d7c735c..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/analytics.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -description: >- - This feature allows you to view the chat flow (conversation) and your livechat - agents' performance (productivity) over a span of time that you choose. ---- - -# Analytics - -To access **Analytics** settings: - -Go to Analytics in the omnichannel panel settings, as shown below: - -![](../../../.gitbook/assets/0%20%2811%29.png) - -## To view conversation history: - -1. Select Conversations from the drop-down. - -![](../../../.gitbook/assets/1%20%2810%29.png) - - 2. Select your desired department. - -![](../../../.gitbook/assets/8%20%286%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29.png) - - 3. Select your desired start date and end date. - -![](../../../.gitbook/assets/9%20%285%29%20%281%29%20%281%29.png) - -### Details of conversation matrices: - -![](../../../.gitbook/assets/4%20%2810%29.png) - -**Total Conversations:** It represents the total number of conversations during the selected period of time. - -**Open Conversations:** It represents the total number of open conversations for your selected department during the chosen period. - -**Total Messages:** It represents the total number of messages received in all the conversations during a selected period. - -**Busiest Day:** It shows the day during which you received the most chats for your selected time. - -**Conversation Per Day:** It shows the average count of conversations you received per day. - -**Busiest Time:** It shows the hour during which you received most chats for your selected period of time. - -You can also see the **percentage of conversations**, an **average of chat duration**, and **total messages handled** by each one of your agents from your selected department, as shown below: - -![](../../../.gitbook/assets/5%20%2810%29.png) - -![](../../../.gitbook/assets/6%20%289%29.png) - -## To view productivity history of your agents: - -1. Select Productivity from the drop-down. - -![](../../../.gitbook/assets/7%20%287%29.png) - -2. Select your desired department. - -![](../../../.gitbook/assets/8%20%286%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29%20%281%29.png) - -3. Select your desired start date and end date. - -![](../../../.gitbook/assets/9%20%285%29%20%281%29.png) - -### Details of productivity matrices: - -![](../../../.gitbook/assets/image%20%2871%29.png) - -**Average of Response Time:** This matrix represents the average of your agent’s team’s responses to all the conversations that are automatically assigned to them during a selected time. - -**Average of First Response Time:** This matrix represents the average of the team’s first response to all the chats they pick up. - -**Average of Reaction Time:** This matrix represents the average of the team’s reaction to the assigned chats. - -You can also see the **Average of First Response Time**, **Best First Response Time**, **Average of Response Time**, and **Average of Reaction Time** of each one of your agents from your selected department, as shown below: - -![](../../../.gitbook/assets/11%20%284%29.png) - -![](../../../.gitbook/assets/image%20%2872%29.png) - diff --git a/guides/rocket.chat-administrator-guides/settings/assets.md b/guides/rocket.chat-administrator-guides/settings/assets.md deleted file mode 100644 index 386ee6984e..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/assets.md +++ /dev/null @@ -1,4 +0,0 @@ -# Assets - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/atlassian-crowd.md b/guides/rocket.chat-administrator-guides/settings/atlassian-crowd.md deleted file mode 100644 index fdb5ea4059..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/atlassian-crowd.md +++ /dev/null @@ -1,4 +0,0 @@ -# Atlassian Crowd - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/blockstack.md b/guides/rocket.chat-administrator-guides/settings/blockstack.md deleted file mode 100644 index 684661ada4..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/blockstack.md +++ /dev/null @@ -1,4 +0,0 @@ -# Blockstack - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/bots.md b/guides/rocket.chat-administrator-guides/settings/bots.md deleted file mode 100644 index 0d96eb35a8..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/bots.md +++ /dev/null @@ -1,4 +0,0 @@ -# Bots - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/canned-responses-rocket.chat-administrator-guides.md b/guides/rocket.chat-administrator-guides/settings/canned-responses-rocket.chat-administrator-guides.md deleted file mode 100644 index a3c05d1e27..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/canned-responses-rocket.chat-administrator-guides.md +++ /dev/null @@ -1,102 +0,0 @@ ---- -description: Rocket.Chat Enterprise feature ---- - -# Canned Responses Rocket.Chat Administrator Guides - -![](../../../.gitbook/assets/2021-06-10_22-31-38.jpg) - -{% hint style="info" %} -Canned responses allow you to save message snippets that you can call with shortcuts \(preceded with `!`\) to communicate a quick note to your visitors in Omnichannel and for messaging in regular conversations inside your Rocket.Chat workspace. -{% endhint %} - -As an omnichannel administrator, you can configure and manage omnichannel email inboxes or email accounts for the email channels. - -## Enable Canned Responses on your workspace - -To enable canned responses on your workspace: - -1. Go to **Administration**: - -![](../../../.gitbook/assets/image%20%28241%29.png) - -2. Search **Canned Responses** in **Settings**, **Enable** it, and hit **Save Changes**: - -![](../../../.gitbook/assets/image%20%28508%29.png) - -3. Define which user roles should be able to view, create and delete the canned responses. Go to `Administration` -> `Permissions` and use search to filter the canned responses permissions only: - -![](../../../.gitbook/assets/screenshot-2020-07-28-at-00.16.30.png) - -4. Enable `Omnichannel`. - -{% hint style="info" %} -Using canned responses in regular conversations with other users of your workspace will require the Omnichannel feature to be enabled. -{% endhint %} - -![](../../../.gitbook/assets/screenshot-2020-07-28-at-00.23.19.png) - -## Create a new Canned Response: - -To create a canned response on your workspace: - -1. Go to **Omnichannel**: - -![](../../../.gitbook/assets/image%20%28493%29.png) - -2. Click **Canned responses** and hit **Create Your First Canned Response**: - -![](../../../.gitbook/assets/image%20%28503%29.png) - -Your new canned response screen is shown below: - -![](../../../.gitbook/assets/image%20%28514%29.png) - -### Shortcut - -Please set a Shortcut for your new canned response, as shown below: - -![](../../../.gitbook/assets/image%20%28506%29.png) - - - -### Message - -Enter your message using any placeholders you want, as shown below: - -![](../../../.gitbook/assets/image%20%28498%29.png) - -You can also preview the message at any time during the creation process: - -![](../../../.gitbook/assets/image%20%28507%29.png) - -### Tags - -You can set tags for your canned response if you want, as shown below: - -![](../../../.gitbook/assets/image%20%28501%29.png) - -{% hint style="info" %} -Canned responses tags help agents find canned responses specific to a particular topic. -{% endhint %} - -### Sharing - -You can share your canned response according to your need. - -1. **Public**: Anyone across your workspace can access your canned response. - -![](../../../.gitbook/assets/image%20%28509%29.png) - -2. **Department**: Anyone in the selected department can access your canned response. - -![](../../../.gitbook/assets/image%20%28492%29.png) - -3. **Private**: Only you and Omnichannel managers can access your canned response. - -![](../../../.gitbook/assets/image%20%28511%29.png) - -Please hit **Save**. Your new canned response is ready to be used in omnichannel conversations now, as shown below: - -![](../../../.gitbook/assets/image%20%28500%29.png) - diff --git a/guides/rocket.chat-administrator-guides/settings/canned-responses-rocket.chat-admins-guides.md b/guides/rocket.chat-administrator-guides/settings/canned-responses-rocket.chat-admins-guides.md deleted file mode 100644 index 121acfb45f..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/canned-responses-rocket.chat-admins-guides.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -description: Rocket.Chat Enterprise feature ---- - -# Canned Responses Rocket.Chat Admin's Guides - -![](../../../.gitbook/assets/2021-06-10_22-31-38.jpg) - -{% hint style="info" %} -Canned responses allow you to save message snippets that you can call with shortcuts \(preceded with `!`\) to communicate a quick note to your visitors in Omnichannel and for messaging in regular conversations inside your Rocket.Chat workspace. -{% endhint %} - -## Enable Canned Responses on your workspace - -To enable canned responses on your workspace: - -1. Go to **Administration**: - -![](../../../.gitbook/assets/image%20%28241%29.png) - -2. Search **Canned Responses** in **Settings**, **Enable** it, and hit **Save Changes**: - -![](../../../.gitbook/assets/image%20%28535%29.png) - -## Canned Responses Permissions: - -Define which user roles should be able to view, create and delete the canned responses. Go to `Administration` -> `Permissions` and use search to filter the canned responses permissions only: - -![](../../../.gitbook/assets/image%20%28550%29.png) - -Please enable `Omnichannel` - -{% hint style="info" %} -Using canned responses in regular conversations with other users of your workspace will require the Omnichannel feature to be enabled. -{% endhint %} - -![](../../../.gitbook/assets/screenshot-2020-07-28-at-00.23.19.png) - -Please check the omnichannel manager's guide for canned responses to save a new canned response for your workspace. - -{% page-ref page="../../omnichannel-guides/omnichannel-manger-guides/canned-responses-omnichannel-managers-guide/" %} - - - diff --git a/guides/rocket.chat-administrator-guides/settings/cas.md b/guides/rocket.chat-administrator-guides/settings/cas.md deleted file mode 100644 index 6136db6aa5..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/cas.md +++ /dev/null @@ -1,38 +0,0 @@ -# CAS - -Central Authentication Service \(CAS\) allows users to use one set of credentials to sign into many sites over many different protocols. - -Rocket.Chat includes a CAS plugin that allows you to use your existing CAS server for user authentication. - -For more information on CAS, see [github.com/apereo/cas](https://github.com/apereo/cas). - -### Rocket.Chat CAS Administration - -These settings are in the `CAS` settings page under `Administration`: - -1. Visit [https://my.rocket.chat.url/admin/CAS](https://my.rocket.chat.url/admin/CAS) - -or - -1. Log into your Rocket.Chat instance as a user with administrator privileges. -2. Click the "Options" button \(3 dots at the top left of the screen\). -3. Click the "Administration" link that drops down. \(If you do not see one of these links, you are not logged in as a user with enough privileges. Log out and back in with an admin user\). -4. Click the "CAS" link on the left side of the administration section. - -Your Rocket.Chat instance is the _CAS client_. You must provide a compatible _CAS Server_. - -Once you know your CAS server's URL, enter it into the Rocket.Chat CAS Administration page: - -* **SSO Base URL**: `https://<>/cas` -* **SSO Login URL**: `https://<>/cas/login` -* **CAS Version**: `(1.0|2.0)` - -The `/cas` and `/cas/login` URLs are the standard, but not required. Check with your CAS server provider if the defaults do not work. - -The **CAS Version** must be matched to the _CAS Server_ provider. Most modern providers will use `CAS 2.0`. - -## Notes - -1. CAS by ja-sig requires ssl/tls for all connections. -2. Any Drupal 7 or 8 site can serve as a compatible CAS Server. See [drupal.org/project/cas](https://www.drupal.org/project/cas). - diff --git a/guides/rocket.chat-administrator-guides/settings/custom-emoji-filesystem.md b/guides/rocket.chat-administrator-guides/settings/custom-emoji-filesystem.md deleted file mode 100644 index 3815a6a71a..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/custom-emoji-filesystem.md +++ /dev/null @@ -1,4 +0,0 @@ -# Custom Emoji Filesystem - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/discussion.md b/guides/rocket.chat-administrator-guides/settings/discussion.md deleted file mode 100644 index f37fe74431..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/discussion.md +++ /dev/null @@ -1,4 +0,0 @@ -# Discussion - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/e2e-encryption.md b/guides/rocket.chat-administrator-guides/settings/e2e-encryption.md deleted file mode 100644 index 8e3ed7c54e..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/e2e-encryption.md +++ /dev/null @@ -1,4 +0,0 @@ -# E2E Encryption - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/email/README.md b/guides/rocket.chat-administrator-guides/settings/email/README.md deleted file mode 100644 index 148844e6e1..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/email/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Email - -Here you find various Email settings and tools: - -* [Email Configuration](setup.md) -* [Edit Email Content](editing-emails-content.md) -* [Mailer](mailer.md) -* [Direct Email Reply](direct-reply.md) - diff --git a/guides/rocket.chat-administrator-guides/settings/email/direct-reply.md b/guides/rocket.chat-administrator-guides/settings/email/direct-reply.md deleted file mode 100644 index 7add4b44dc..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/email/direct-reply.md +++ /dev/null @@ -1,96 +0,0 @@ -# Direct Email reply - -## Introduction - -Enable this feature to allow users to reply to chat messages by directly replying to email notifications they receive. We currently use [subaddressing](https://en.wikipedia.org/wiki/Email_address#Subaddressing) for this feature. - -## Set up credentials - -Go to `Administration settings > Email > Direct reply`. - -After that: - -* select the email server protocol \(`IMAP` or `POP`\) -* your email server host name \(e.g. `imap.example.com` or `pop.example.com`\) -* the port \(143 or 993 for IMAP and 110 or 995 for POP\) -* ignore TLS `true` if port 143 or 110 -* email check frequency \(in minutes\) if POP server \(>=2\) -* delete intercepted emails. We recommend to select/keep `true` if you don't want to keep copy of email messages, in case IMAP server. -* a separator \(default and recommended\) is the character separating base and tag part of the email. E.g.: `base+tag@domain` \(separator: +\). [More info here](https://en.wikipedia.org/wiki/Email_address#Subaddressing) -* your credentials \(Username & password\) - - Once filled, click **Save changes**. - -## Example settings - -### IMAP settings - -![IMAP server configuration.](../../../../.gitbook/assets/imap-1.png) - -### POP3 settings - -Make sure your **POP3** server keeps keep **no** copy of emails, otherwise it is treated as a new message every time. - -![POP server configuration.](../../../../.gitbook/assets/pop-1.png) - -Now, you can reply chat messages via email. It supports full formatting like inline, multiline, bold, italics etc. - -### Switch from IMAP to POP - -* Before you switch from IMAP to POP over the same email address, you must empty all the folders. Keeping all emails results in duplicate messages, because all those messages in POP are treated as new messages. - -## Note - -* Currently, only emails in English are supported, or at least the quote `On , wrote:` is in English. - -An Email body in languages other than English may also work until and unless `On , wrote:` is in English or a copy of older email is removed manually. - -* Only text messages are supported; attachments are not supported yet. - -## Known issues - -### Quoted headers - -Quoted headers aren't picked up if the email client breaks it up into multiple lines. - -GMail breaks up any lines over 80 characters for you. - -```text -On , -wrote: -> blah -``` - -Not to mention that we are searching for `on` and `wrote`. It doesn't work with other languages. - -**Possible solution**: while replying, remove everything else than your actual message. - -### Weird signatures - -Lines starting with `-` or `_` sometimes mark the beginning of signatures: - -```text -Hello - --- -Rick -``` - -But some users change this convention: - -```text -Hello - -Mr Rick Olson -Galactic President Superstar Mc Awesomeville -GitHub - -**********************DISCLAIMER*********************************** -* Note: blah blah blah * -**********************DISCLAIMER*********************************** -``` - -## Problem? - -Your message wasn't posted? Did you get an `Invalid Email` in the `Admin` console? This most likely means that the email format was not as expected. Maybe you were blocked or the message/room was deleted. - diff --git a/guides/rocket.chat-administrator-guides/settings/email/editing-emails-content.md b/guides/rocket.chat-administrator-guides/settings/email/editing-emails-content.md deleted file mode 100644 index 5d1c77f70c..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/email/editing-emails-content.md +++ /dev/null @@ -1,8 +0,0 @@ -# Edit your Email Content - -Almost all predefined emails sent to users in your Rocket.Chat server can be customized. - -To customize email content, simply select the email you want to change. From there you can change the subject and the body of an email. When you write the body of your email, you can add _placeholders_ that change to real data when you send it. E.g. `[Site_Name]` changes to your Rocket.Chat server name. - -Your access to more _placeholders_ depends on which email you are editing. For a detailed list of available _placeholders_, check the text under the `Body` field. - diff --git a/guides/rocket.chat-administrator-guides/settings/email/mailer.md b/guides/rocket.chat-administrator-guides/settings/email/mailer.md deleted file mode 100644 index c92192cf0b..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/email/mailer.md +++ /dev/null @@ -1,18 +0,0 @@ -# Mailer - -Use the Mailer tool to send email to users inside your Rocket.Chat server. - -Use the `From` field to set the address to send the email. Check the `Dry Run`option to send the email only to the address defined in `From`. - -You can also filter who receives the email by using a valid user query in the `Query` field. - -Then, you can write a subject and a body for the email. When you write the body, add brackets to add dynamic data to the body. - -Add the following brackets to the email body: - -* `[unsubscribe]`: creates an unsubscribe link. The email body **must** have an unsubscribe link. -* `[name]`: uses the full name of the user that receives the email -* `[fname]`: uses the first name of the user that receives the email -* `[lname]`: uses the last name of the user that receives the email -* `[email]`: uses the email address of the user that receives the email - diff --git a/guides/rocket.chat-administrator-guides/settings/email/setup.md b/guides/rocket.chat-administrator-guides/settings/email/setup.md deleted file mode 100644 index d5421861f3..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/email/setup.md +++ /dev/null @@ -1,31 +0,0 @@ -# Email Configuration - -Rocket.Chat features include using emails, notifications, email verification, mailer, and much more. - -Before using those features, you must connect a SMTP server to Rocket.Chat. To do that, you must have access to a SMTP server and a valid SMTP log in credentials. - -{% hint style="info" %} -**This configuration is only possible for Self-managed servers and/or is pre-configured for Cloud workspaces.** -{% endhint %} - -## Set up your Credentials - -Go to `Administration settings > Email > SMTP`. - -Enter: - -* Your SMTP server host name \(e.g. `mail.example.com`\) -* The port \(usually 587 for modern secured SMTP servers\) -* Your credentials -* A name and email to appear in the `From` field of the emails - -Once completed, click **Save changes**. - -![SMTP server configuration.](https://user-images.githubusercontent.com/20342522/53436704-a4989080-39b0-11e9-8ea6-f320affc798f.png) - -## Test Changes - -Go back into the `SMTP settings` and click **Test SMTP settings**. You should receive an email within a few minutes. If you do not, check the logs \(`Administration > View Logs`\) to see what happened. - -**Note**: Make sure `Debug logging` is on; the default is to log information only. - diff --git a/guides/rocket.chat-administrator-guides/settings/enterprise.md b/guides/rocket.chat-administrator-guides/settings/enterprise.md deleted file mode 100644 index d92b466997..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/enterprise.md +++ /dev/null @@ -1,4 +0,0 @@ -# Enterprise - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/federation.md b/guides/rocket.chat-administrator-guides/settings/federation.md deleted file mode 100644 index eadbc5de35..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/federation.md +++ /dev/null @@ -1,168 +0,0 @@ -# Federation - -## Introduction - -Rocket.Chat Federation allows servers to communicate with each other, with no limits to the number of servers connected. - -We use industry standards, like DNS records, to keep the process as seamless as possible, and seek the most hassle-free communication between servers. - -When enabling federation on your server, your server becomes part of the Rocket.Chat Federated Network, which allows it to find and exchange messages and files with other Federation-enabled Rocket.Chat servers. - -## Features - -* **Current** - * Invite users from remote servers - * Direct chats between servers - * Private and broadcast rooms with remote users from any number of servers - * Read receipts, notifications and alerts distributed to remote servers - * Mute/Unmute remote users - * Share files among servers -* **Confirmed Next Features** - * Encrypted rooms - * Whitelist servers to communicate with - * Better federation set-up process, with helpers to validate the configuration - * Public rooms with remote users from any number of servers - -## Configuration - -When you open the Federation config screen, this is what you see: - -![Initial Federation Screen](../../../.gitbook/assets/initial.png) - -The following is a brief explanation of each configuration option: - -### Enabled - -It determines whether or not Federation is enabled on this server. - -### Status - -It is the current Federation status, which can be one of the following: - -* **Could not enable, settings are not fully set :** make sure all the options are correctly filled and saved -* **Booting... :** the federation is initializing -* _\[HUB Only\]_ **Registering with Hub... :** the federation is trying to register with the Hub -* _\[HUB Only\]_ **Disabled, could not register with Hub :** the federation could not register with the Hub -* **Disabled :** the federation is disabled -* **Running :** the federation is running and ready to communicate with other servers - -### Domain - -Fill this option with your domain name, usually the one that hosts the Rocket.Chat. - -### Public Key - -All Federation communications are double-encrypted, which means messages cannot be delivered by mistake to a wrong peer. This is your public key, which is specially generated for Rocket.Chat and by Rocket.Chat, and is shared with peers you communicate with. - -The encryption process encrypts the message using the Server A private key, and the Server B public key. - -When a server receives the message, it uses the Server B private key and the Server A public key to decrypt it. - -So, let's say the message ended up on Server C: this server won't have Server B private key to decrypt it, so the message can't be read at all. - -### Discovery Method - -How are you going to be found in the Rocket.Chat Federated Network? You can choose through DNS or, as a fallback, the Rocket.Chat Hub. - -**Important:** We recommend using the DNS method. The Hub is a tool to allow users to easily adopt, try and validate the feature or as a different way to be part of the Rocket.Chat Federated Network until DNS record changes are made. Also, the Hub requires external communication and access to a specific e-mail address owned by your domain, as explained below, which introduces extra configuration steps in some protected internal networks. - -## Adding Federation to your Server - -You have two ways to add your server to the Rocket.Chat Federated Network: - -### Recommended: Configure your DNS - -To add your server to the Federated Network using the DNS, fill all the configuration fields required. Make sure to pick `true` on the `Enabled`, and select **DNS** as your `Discovery Method` option, save and follow the guide below. - -Let's suppose we have a domain named `mydomain.com`, and my Rocket.Chat server is hosted at `mydomain.com`, port `443`. - -You must add two DNS records: - -#### SRV Record \(2.0.0 or newer\) - -* Service: `_rocketchat` -* Protocol: `_https` -* Name: `mydomain.com` -* Weight: `1` -* Priority: `1` -* TTL: `1 hour` -* Target: `mydomain.com` -* Port: `443` - -#### Public Key TXT Record - -* Host: `rocketchat-public-key.mydomain.com` -* Value: `` - -**Note**: Some DNS providers do not allow to enter the full public key string. So, after saving, make sure the string is complete: it starts as `-----BEGIN PUBLIC KEY-----` and ends as `-----END PUBLIC KEY-----`. If that is not the case, follow your provider's instructions. For example, AWS Route 53 needs to split the string in two pieces, as follows: - -```text -"-----BEGIN PUBLIC KEY-----...." -"...-----END PUBLIC KEY-----" -``` - -#### If you use http instead of https - -We recommend to use `HTTPS` for all kinds of communications, but sometimes that is not possible. If you need, in the SRV DNS entry replace: - -* the protocol: change `_https` to `_http` -* the port: change `443` to `80` - -#### Legacy Support: If your DNS provider does not support SRV records with `_http` or `_https` - -Some DNS providers will not allow setting `_https` or `_http` on SRV records, so we have support for those cases, using our old DNS record resolution method. - -#### Legacy Support: SRV Record - -* Service: `_rocketchat` -* Protocol: `_tcp` -* Name: `mydomain.com` -* Weight: `1` -* Priority: `1` -* TTL: `1 hour` -* Target: `mydomain.com` -* Port: `443` - -#### Legacy Support: protocol TXT Record \(if not provided, HTTPS will be use\) - -* Host: `rocketchat-tcp-protocol.mydomain.com` -* Value: `https` or `http` - -#### Test your configuration from CLI - -From your CLI, issue the following commands and make sure the answers look like the following: - -```text -dig srv _rocketchat._https.mydomain.com -... -;; ANSWER SECTION: -_rocketchat._https.mydomain.com. 1800 IN SRV 1 1 443 mydomain.com. -... - -dig -t txt rocketchat-public-key.mydomain.com -... -;; ANSWER SECTION: -rocketchat-public-key.mydomain.com. 1799 IN TXT "-----BEGIN PUBLIC KEY----- THEPUBLICKEY :) -----END PUBLIC KEY-----" -... -``` - -#### Conclusion - -When the SRV and the Public Key TXT records are added to the DNS records, other peers should be able to find you after the propagation. - -### Alternative: Register on Hub - -To add your server to the Federated Network using the Hub, fill all the configuration fields needed. Make sure to pick **true** on the `Enabled` field\), pick the **Hub** as your `Discovery Method` option, save and follow the guide below. - -#### Confirm Domain Ownership - -When you click **Save** on the Federation config screen, you begin your registration process. This process takes a few seconds and if you are not yet registered to the Hub, you should receive an email at `webmaster@mydomain.com`, where `mydomain.com` is the domain address you configured on the `Domain` field. - -Make sure the data is correct and confirm the changes. - -After that step, other peers should be able to find you in the Rocket.Chat Federated Network. - -## Using Rocket.Chat Federation - -Click [here](../../user-guides/talking-to-users-from-another-server.md) to learn how to use Rocket.Chat Federation. - diff --git a/guides/rocket.chat-administrator-guides/settings/file-upload/README.md b/guides/rocket.chat-administrator-guides/settings/file-upload/README.md deleted file mode 100644 index 2311f62172..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/file-upload/README.md +++ /dev/null @@ -1,231 +0,0 @@ -# File Upload - -In this article you will find all of the settings related to File Uploads. - -## General Settings - -### File Uploads Enabled - -Use this setting to enable or restrict file uploads on your server - -### File Uploads Enabled in Direct Messages - -Use this setting to enable or restrict file uploads on Direct Messages - -### Maximum File Upload Size \(in bytes\) - -Use this setting to define the maximum allowed file size for uploads. - -> Set it to -1 to remove the file size limitation. - -### Accepted Media Types - -Use this setting to define what types of files the users will be able to upload. - -> Comma-separated list of media types. Leave it blank for accepting all media types. - -### Protect Uploaded Files - -* **Yes**: Only authenticated users will have access to the uploaded files. -* **No**: If in possession of the uploaded file's URL, unauthenticated users will be able to access and download said files. - -### Storage Type - -* **GridFS**: Uses the GridFS storage type -* **AmazonS3**: Uses the [Amazon S3](./#amazon-s3) storage type -* **Google Cloud Storage**: Uses the [Google Cloud Storage](./#google-cloud-storage) storage type -* **WebDAV**: Uses the [WebDav](./#webdav) storage type -* **FileSystem**: Uses the [FileSystem](./#filesystem) storage type - -## Amazon S3 - -You can find a more detailed guide on how to set your Amazon S3 server [here](amazon-s3.md). - -### Access Key - -Your Amazon Access Key ID \(optional\) - -### Secret Key - -Your Amazon Secret Access Key \(optional\) - -> **Note**: If no `AWSAccessKeyId` and `AWSSecretAccessKey` are set, the underlying AWS SDK will fallback to trying to retrieve credentials from the [usual locations](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-node.html). - -### Acl - -\(Optional\) - -A _Canned ACL_ configuration \(see a full list [here](http://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl)\) - -### Bucket name - -The bucket name you've created on Amazon S3 - -### Bucket URL - -\(Optional\) - -Override URL to which files are uploaded. This URL will also be used for downloads unless a CDN is given - -### CDN Domain for Downloads - -\(Optional\) - -If you had set a CDN for your bucket, put it here - -### Proxy Avatars - -Proxy avatar file transmissions through your server instead of direct access to the asset's URL - -### Proxy Uploads - -Proxy upload file transmissions through your server instead of direct access to the asset's URL - -### Region - -\(Optional\) - -If you have created your bucket on region different from the US Standard, you **have** to set their code here \(see a list of region codes [here](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-available-regions)\) - -### Signature Version - -Identifies the version of AWS Signature that you want to support for authenticated requests. - -### URLs Expiration Timespan - -Time after which Amazon S3 generated URLs will no longer be valid \(in seconds\). If set to less than 5 seconds, this field will be ignored. - -> If you run into issues with files not loading consistently for some users located further from server location. Increasing this time might help. - -## FileSystem - - - -### System Path - -The local path for where the uploaded files will be stored. - -## Google Cloud Storage - -Settings used when configuring a Google Cloud Storage server. You can find more details in [here](google-cloud-storage.md) - -### Google Storage Access Id - -The access ID \(or username\) of the service account which has access to your Cloud Storage bucket. - -> The Access Id is generally in an email format, for example: "example-test@example.iam.gserviceaccount.com" - -### Google Storage Bucket Name - -The name of the bucket which the files should be uploaded to. - -### Proxy Avatars - -Proxy avatar file transmissions through your server instead of direct access to the asset's URL - -### Proxy Uploads - -Proxy upload file transmissions through your server instead of direct access to the asset's URL - -### Google Storage Secret - -What is a essentially a .pem containing your private key and certificate. - -> You can find a guide [here](https://github.com/CulturalMe/meteor-slingshot#google-cloud) on how to get your keys. - -## Google Vision - -Settings related to the _Google Vision_ feature. - -> Google vision is a **Paid** API from Google, using it on Rocket.Chat may generate fees, see [Google Vision](https://cloud.google.com/vision/) page. - -### Block Adult Images - -This setting enables the blocking of adult images - -> Blocking adult images will not work once the monthly limit has been reached - -### Current Month Calls - -Here it will be displayed how many calls were made this month - -### Enable Google Vision - -This enables the Google vision feature on your server. - -### Max Monthly Calls - -Here you can define the max amount of calls that should be made in a month. - -> Use 0 for unlimited - -### Google Vision Service Account - -Create a [server key](https://cloud.google.com/vision/docs/auth) \(JSON format\) and paste the JSON content in the field. - -### Document Text Detection - -This will enable text detection on images, when text is detected on an image, a property with the text will be added on the file entry in the database. - -### Face Detection - -This will enable face detection on images, when a face is detected on an image, a property with the face information will be added on the file entry in the database. - -### Labels Detection - -This will enable labeling on uploaded images, then a property with the image labels will be added on the file entry in the database. - -> E.g If you post an image of a cat with glasses, the categories `CAT` and `GLASSES` will be added to the file. - -### Landmarks Detection - -This will enable landmarks detection on images, when a landmark is detected on an image, a property with the landmark information will be added on the file entry in the database. - -### Logos Detection - -This will enable logos detection on images, when a logo is detected on an image, a property with the logo information will be added on the file entry in the database. - -### Properties \(Color\) Detection - -This will enable color detection on images, this will create a property with the colors used on the image on the file entry in the database. - -### SafeSearch Detection - -Safe Search Detection detects explicit content such as adult content or violent content within an image. This feature uses five categories \("adult", "spoof", "medical", "violence", and "racy"\) and returns the likelihood that each is present in a given image - -Categories will be added as a property on the file entry on the database. - -### Search Similar Images - -This will enable users to search for similar images directly from Rocket.Chat. - -## WebDAV - -Settings used in the setting of a WebDAV storage server. - -### WebDAV Password - -Password for the remote webdav server. - -### Proxy Avatars - -Proxy avatar file transmissions through your server instead of direct access to the asset's URL. - -### Proxy Uploads - -Proxy upload file transmissions through your server instead of direct access to the asset's URL. - -### WebDAV Server Access URL - -The URL of the WebDAV server \([WebDAV URLs of Common Cloud Storage Services](https://community.cryptomator.org/t/webdav-urls-of-common-cloud-storage-services/75)\). - -### Upload Folder Path - -WebDAV folder path which the files should be uploaded to. - -### WebDAV Username - -Username for the remote WebDav server. - - - diff --git a/guides/rocket.chat-administrator-guides/settings/file-upload/amazon-s3.md b/guides/rocket.chat-administrator-guides/settings/file-upload/amazon-s3.md deleted file mode 100644 index 9a66fe63de..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/file-upload/amazon-s3.md +++ /dev/null @@ -1,75 +0,0 @@ -# Amazon S3 - -Set set the following _CORS Configuration_ to your bucket. - -XML format \(if using the old AWS console Interface\): - -```markup -[ - { - "AllowedHeaders": [ - "*" - ], - "AllowedMethods": [ - "PUT", - "POST", - "GET", - "HEAD" - ], - "AllowedOrigins": [ - "*ROCKET_CHAT_DOMAIN*" - ], - "ExposeHeaders": [], - "MaxAgeSeconds": 3000 - } -] -``` - -JSON format \(if using the new AWS console Interface\): - -```javascript -[ - { - "AllowedHeaders": [ - "*" - ], - "AllowedMethods": [ - "PUT", - "POST", - "GET", - "HEAD" - ], - "AllowedOrigins": [ - "*ROCKET_CHAT_DOMAIN*" - ], - "ExposeHeaders": [], - "MaxAgeSeconds": 3000 - } -] -``` - -**Note**: Replace `*ROCKET_CHAT_DOMAIN*` with the domain of your Rocket.Chat installation, e.g. `https://chat.example.com`. If for some reason you want to make your CORS configuration ridiculously insecure, you can set it to `*` to allow CORS requests from any host on the Internet, but do so at your own risk. - -## Basic Configuration - -Set the following fields: - -| Config. Name | Description | -| :--- | :--- | -| **Amazon S3 bucket name** | The bucket name you created on Amazon S3 | -| **Amazon S3 AWSAccessKeyId** | Your Amazon Access Key ID \(optional\) | -| **Amazon S3 AWSSecretAccessKey** | Your Amazon Secret Access Key \(optional\) | - -**Note**: If no `AWSAccessKeyId` and `AWSSecretAccessKey` are set, the underlying AWS SDK will fallback and try to retrieve credentials from the [usual locations](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-node.html). - -## Advanced Configuration - -The following fields are optional, and you don't need to set them to get the upload to S3 working. - -| Config. Name | Description | -| :--- | :--- | -| **Region** | If you created your bucket on a region different from the US Standard, this is where you **must** set their code \(see a list of region codes [here](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-available-regions)\) | -| **Amazon S3 acl** | A _Canned ACL_ configuration \(see a full list [here](http://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl)\) | -| **CDN domain for downloads** | If you set a CDN for your bucket, put it here | -| **Bucket URL** | Override URL to which files are uploaded. This URL is also used for downloads, unless youset a CDN. | - diff --git a/guides/rocket.chat-administrator-guides/settings/file-upload/file-upload-faqs.md b/guides/rocket.chat-administrator-guides/settings/file-upload/file-upload-faqs.md deleted file mode 100644 index 817d2e5c81..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/file-upload/file-upload-faqs.md +++ /dev/null @@ -1,14 +0,0 @@ -# File Upload FAQs - -## Why am I getting the "**Request Entity Too Large"** error on file upload? - -The error shown below is when the upload limit is less than the size of the file in rocket.chat. - -![](../../../../.gitbook/assets/image%20%28178%29.png) - -If you are using nginx as your load balancer, it could be nginx limit that is throwing the following error not your rocket.chat limit. - -![](../../../../.gitbook/assets/image%20%28289%29%20%281%29.png) - -Please follow the nginx instructions [here](https://www.cyberciti.biz/faq/linux-unix-bsd-nginx-413-request-entity-too-large/) to resolve this issue. - diff --git a/guides/rocket.chat-administrator-guides/settings/file-upload/google-cloud-storage.md b/guides/rocket.chat-administrator-guides/settings/file-upload/google-cloud-storage.md deleted file mode 100644 index f83a7a83e8..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/file-upload/google-cloud-storage.md +++ /dev/null @@ -1,29 +0,0 @@ -# Google Cloud Storage - -Here is more information on the fields required to set up your Google Cloud Storage with Rocket.Chat using a service account. - -Set the following fields: - -| Config. Name | Description | -| :--- | :--- | -| **Google Storage Bucket Name** | The bucket name you created on Google Storage | -| **Google Storage Access Id** | The access ID \(or username\) of the service account that has access to your Cloud Storage bucket, usually in the following format: example-test@example.iam.gserviceaccount.com | -| **Google Storage Secret** | Essentially a PEM that contains your private key and certificate | - -## More Information - -**Google Storage Secret**: the value pushed here takes an argument of a PEM file to connect to your Cloud Storage bucket. When you create a service account, you have the ability to download a JSON file that contains a number of variables. You need the unescaped private key, along with one of the certificates linked at the bottom of the JSON. - -Syntax then looks just like a regular PEM file: - -```text ------BEGIN PRIVATE KEY----- -unescaped private key goes here ------END PRIVATE KEY----- -----BEGIN CERTIFICATE----- -first certificate goes here ------END CERTIFICATE----- -``` - -Enter this into Rocket.Chat to allow the authentication with Google and store items in the bucket. - diff --git a/guides/rocket.chat-administrator-guides/settings/file-upload/minio.md b/guides/rocket.chat-administrator-guides/settings/file-upload/minio.md deleted file mode 100644 index 2844f16532..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/file-upload/minio.md +++ /dev/null @@ -1,58 +0,0 @@ -# Minio - -## Introduction - -Minio is an object storage server built for cloud applications and DevOps. Minio is S3 compatible and provides an open source alternative to AWS S3. You can [download and install](https://minio.io/downloads) Minio pretty quickly. Minio also provides an [official Docker image](https://hub.docker.com/r/minio/minio/). For further details, check out [Minio documentation website](https://docs.minio.io/). - -## AccessKey and SecretKey - -Once you install and deploy Minio server, you can get the AccessKey and SecretKey from the startup message. - -```bash -2017-01-24T19:53:21.141689279Z -2017-01-24T19:53:21.141730078Z Endpoint: http://172.17.0.2:9000 http://127.0.0.1:9000 -2017-01-24T19:53:21.141735582Z AccessKey: 5fD3434325fDaGE77BNJlSoV1xGp -2017-01-24T19:53:21.141738933Z SecretKey: Quie2teech4oofoo9Dahsoo7aithauja -2017-01-24T19:53:21.141742292Z Region: us-east-1 -2017-01-24T19:53:21.141745405Z SQS ARNs: -2017-01-24T19:53:21.141749472Z -2017-01-24T19:53:21.141752499Z Browser Access: -2017-01-24T19:53:21.141755711Z http://172.17.0.2:9000 http://127.0.0.1:9000 -2017-01-24T19:53:21.141758830Z -2017-01-24T19:53:21.141762000Z Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide -2017-01-24T19:53:21.141765638Z $ mc config host add myminio http://172.17.0.2:9000 1H2MI5BCU45990DZ3WRL flJlSoV1xGp+u2fhfDaGE77BNE6OdyvAsdI15kPq -2017-01-24T19:53:21.141768751Z -2017-01-24T19:53:21.141771631Z Object API (Amazon S3 compatible): -2017-01-24T19:53:21.141774638Z Go: https://docs.minio.io/docs/golang-client-quickstart-guide -2017-01-24T19:53:21.142003548Z Java: https://docs.minio.io/docs/java-client-quickstart-guide -2017-01-24T19:53:21.142019474Z Python: https://docs.minio.io/docs/python-client-quickstart-guide -2017-01-24T19:53:21.142024004Z JavaScript: https://docs.minio.io/docs/javascript-client-quickstart-guide -2017-01-24T19:53:21.142027614Z -2017-01-24T19:53:21.142030994Z Drive Capacity: 262 GiB Free, 303 GiB Total -``` - -To override Minio auto-generated keys, you may pass secret and access keys explicitly as environment variables. Find more details [here](https://docs.minio.io/docs/minio-docker-quickstart-guide). - -## Setup Rocket.Chat to use Minio - -To setup Minio as the file storage server in Rocket.Chat, go to `File Uploads` section under `Administration`, then set `Storage Type: GridFS (default)` to `AmazonS3`. Next, access the `AmazonS3` menu and update the following details: - -| Configuration Name | Description | -| :--- | :--- | -| Bucket name | Minio Bucket Name | -| Access Key | Minio server Access Key | -| Secret Key | Minio server Secret Access Key | -| Region | us-east-1 | -| Bucket URL | `http://[your.minio.domain/bucketname]` | -| Signature Version | v2 \(This may not be needed if using ssl\) | -| Force Path Style | true \(this may not be needed if using ssl\) | -| URLs expiration time | 0 \(if you want that your files don't have an expiry date\) | - -## Set up Production - -In production, you can use a reverse proxy with Minio server. Check out the documentation for [Nginx](https://docs.minio.io/docs/setup-nginx-proxy-with-minio#main), [Apache](https://docs.minio.io/docs/setup-apache-http-proxy-with-minio-server) and [Apache2](https://www.digitalocean.com/community/tutorials/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension). - -You can secure access to Minio server with TLS. Check out the documentation [here](https://docs.minio.io/docs/how-to-secure-access-to-minio-server-with-tls). - -**Note**: If you specify a different region in Minio, make sure it is the same as the S3 region. Find a full list of regions [here](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-available-regions). - diff --git a/guides/rocket.chat-administrator-guides/settings/file-upload/recommendations-for-file-upload.md b/guides/rocket.chat-administrator-guides/settings/file-upload/recommendations-for-file-upload.md deleted file mode 100644 index 081eae27a3..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/file-upload/recommendations-for-file-upload.md +++ /dev/null @@ -1,30 +0,0 @@ -# Recommendations for File Upload - -## GridFS - -GridFS is the MongoDB specification for storing and retrieving large files such as images, audio files, video files, etc. It is a kind of a file system to store files but its data is stored within MongoDB collections. GridFS has the capability to store files even greater than its document size limit of 16MB. - -GridFS divides a file into chunks and stores each chunk of data in a separate document, each of maximum size 255k. - -GridFS by default uses two collections **fs.files** and **fs.chunks** to store the file's metadata and the chunks. Each chunk is identified by its unique \_id ObjectId field. The fs.files serves as a parent document. The **files\_id** field in the fs.chunks document links the chunk to its parent. - -Though GridFS is used in rocket.chat for file storage because MongoDB offers this functionality with zero configuration but GridFS is not recommended for day to day file storage needs in a production environment because it puts an immense amount of load on the database. - -{% hint style="info" %} -**GridFS** is only sustainable if you are using Retention Policy and only storing a small number of files per week which are not hefty but it is not recommended by us because it is not scalable. -{% endhint %} - -## FileSystem - -It stores the files on the FileSystem of the server where your rocket.chat instance is running. It is a good option but the problem arises when you start to scale. Because if you decide to have multiple rocket.chat servers to support a larger number of users, the FileSystem needs to be shared between all the rocket.chat servers. - -If you want to have two separate virtual/physical servers you will somehow have to share the folder too where your files are stored using for example NFS. It will require a lot of configurations. - -{% hint style="info" %} -We suggest **FileSystem** only when you are running a single rocket.chat instance. -{% endhint %} - -{% hint style="info" %} -What we recommend as the best option for the file upload system are **Amazon** **S3** and **Google Cloud Storage**. -{% endhint %} - diff --git a/guides/rocket.chat-administrator-guides/settings/file-upload/webdav.md b/guides/rocket.chat-administrator-guides/settings/file-upload/webdav.md deleted file mode 100644 index 1a092c9646..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/file-upload/webdav.md +++ /dev/null @@ -1,11 +0,0 @@ -# WebDAV - -Set the following fields: - -| Config. Name | Description | -| :--- | :--- | -| **WebDAV Server Access URL** | WebDAV server URL [WebDAV URLs of Common Cloud Storage Services](https://bit.ly/2M0T9mv) | -| **WebDAV Username** | Username for the remote server | -| **WebDAV Password** | Password for the remote server | -| **Upload Folder Path** | WebDAV folder path to which you want to upload the files. | - diff --git a/guides/rocket.chat-administrator-guides/settings/general/README.md b/guides/rocket.chat-administrator-guides/settings/general/README.md deleted file mode 100644 index 30d94a44f4..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/general/README.md +++ /dev/null @@ -1,221 +0,0 @@ -# General - -## General Settings - -### Allow Invalid Self-Signed Certs - -Allow invalid and self-signed SSL certificates for link validation and previews. - -### Bugsnag API Key - -If you are integrating Bugsnag with Rocket.Chat, you should put your Bugsnag API Key here. - -### CDN Prefix for JS/CSS - -Insert here the prefix for the CDN that should load the JS/CSS assets - -### CDN Prefix - -If you want to use a CDN to load the assets of your server, insert here your CDN Prefix. - -### Use CDN Prefix for all assets - -This will define if all assets from the server will come from a CDN. - -### Enable Favorite Rooms - -* **Yes**: Users will be able to favorite public, private and direct channels. -* **No**: Users won't be able to favorite channels. - -### First Channel After Login - -Insert here the name of the channel that the user will enter after logging in. Setting this field to empty or setting a invalid name will result in the user being directed to the server's home page. - -### Force Disable OpLog for Cache - -Will not use OpLog to sync cache even when it's available - -### Force SSL - -You can use this setting to force SSL on your server. We **Strongly Discourage** the usage of this setting, this should be done at the reverse proxy level by redirecting to https. - -> _Caution!_ _Force SSL_ should never be used with reverse proxy. If you have a reverse proxy, you should do the redirect THERE. This option exists for deployments like Heroku, that does not allow the redirect configuration at the reverse proxy. - -### Google Tag Manager Id - -You can use Google Tag Manager on Rocket.Chat by setting your Id on this setting. - -### Language - -This sets the default language for the server. This setting will be overridden if the user has changed his language preference. - -### Restart - -This button restarts the server. - -### Robots.txt File Contents - -This sets the content of the Robots.txt file, used to help indexing your server on different search engines and crawlers. - -### Show Setup Wizard - -For now this setting **SHOULD NOT** be changed. Setting this to `pending` and logging out can basically lock down your server. Please refer to this [issue](https://github.com/RocketChat/Rocket.Chat/issues/13840). - -### Site Name - -This sets the name of the server. - -### Site URL - -This sets the URL of the server. - -> Example: `https://chat.domain.com/` - -### Store Last Message - -Store last message sent on each room. This will enable the viewing of the last message on the left sidebar \(should be on by default\) - -### Unread Count - -This setting changes the behavior of the unread counter - -* **All messages**: All messages will be counted on the counter, regardless if they are a mention or not. -* **User mentions only**: Only mentions using `@yourUsername` will be counted on the counter. -* **Group mentions only**: Only group mentions using `@all` or `@here` will be counted on the counter. -* **User and group mentions only**: All mentions will be counted, this includes `@all`, `@here` and `@yourUsername` - -### Unread Count for Direct Messages - -This setting changes the behavior of the unread counter on Direct Messages - -* **All messages**: All messages sent by another user will be counted on the counter. -* **Mentions only**: Only mentions using `@yourUsername` will be counted on the counter. - -## Apps - -### Enable the App Framework - -Use this setting to enable the Rocket.Chat Apps Framework. This allows you to add Rocket.Chat Apps from our Marketplace to your server. - -## Iframe Integration - -### Enable Receive - -This setting defines if a parent window can send commands to Rocket.Chat. - -### Receive Origins - -Origins with protocol prefix, separated by commas, which are allowed to receive commands e.g. `https://localhost`, `http://localhost`, or \* to allow receiving from anywhere. - -### Enable Send - -This setting defines if Rocket.Chat can send events to the parent window. - -### Send Target Origin - -Origin with protocol prefix, which commands are sent to e.g. `https://localhost`, or \* to allow sending to anywhere. - -## Notifications - -### Always notify mobile - -Choose to always notify mobile device regardless of presence status. - -### Max Room Members Before Disabling All Message Notifications - -Max number of members in room when notifications for all messages gets disabled. Users can still change per room setting to receive all notifications on an individual basis. \(0 to disable\) - -## REST API - -### Allow Getting Everything - -This setting affects the `count` query parameter. See more at [Offset and Count Information](https://developer.rocket.chat/api/rest-api/offset-and-count-and-sort-info) - -* **Yes**: Allows the usage of the number `0` as `count` parameter. Setting `count` to `0` will return **ALL** the data from that endpoint -* **No**: Setting the number `0` on `count`, will return `0` results. - -> Should calls to the REST API be allowed to return everything in one call? - -### CORS Origin - -Here you can set what origins are allowed to make requests to your server. - -> You can use `*` to accept from all origins. For multiple Origins use a comma separated list. E.g `https://domain1.com, https://domain2.com, https://domain3.com` - -### Default Count - -The default count for REST API results if the consumer did not provided any. - -### Enable CORS - -Use this setting to enable [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) for the REST API. Enabling CORS will make the server only accept API Calls from specific origins. - -> **Note**: Setting this to `false`, will make your server only accept requests from the same domain of said server. E.g. `rocket.chat` server will only accept requests from the `rocket.chat` domain. - -### Enable Direct Message History Endpoint - -This enables the `/api/v1/im.history.others` which allows the viewing of direct messages sent by other users that the caller is not part of. - -### Enable Shields - -Enables the usage of [Shields](https://developer.rocket.chat/api/rest-api/methods/miscellaneous/shield-svg) via API - -> Enabled shields are available at `/api/v1/shield.svg` - -### Shield Types - -Types of shields to enable as a comma separated list, choose from `online`, `channel` or `*` for all - -### Max Record Amount - -This sets the maximum number of records the REST API should return when not set to unlimited - -### User Limit for Adding All Users to Channel - -This limits the amount of users that can be added to a Channel at the same time. - -## Reporting - -### Send Statistics to Rocket.Chat - -By sending your statistics, you'll help us identify how many instances of Rocket.Chat are deployed, as well as how good the system is behaving, so we can further improve it. Don't worry, as no user information is sent and all the information we receive is kept confidential. - -## Stream Cast - -### Stream Cast Address - -IP or Host of your Rocket.Chat central Stream Cast. E.g. `192.168.1.1:3000` or `localhost:4000` - -## Translations - -### Custom Translations - -With this setting you can configure custom translations for your server. - -Should be a valid JSON where keys are languages containing a dictionary of key and translations. Example: - -```javascript -{ - "en": { -  "Channels": "Rooms" - }, - "pt": { -  "Channels": "Salas" - } -} -``` - -## UTF8 - -### UTF8 Names Validation - -RegExp that will be used to validate usernames and channel names - -> **Note**: If you are having problems with names when creating channels \(when using non-english characters for example\) changing these values will probably fix it. For example using `[\w_-]+` should allow any non-space character to be part of a name. - -## Update - -### Update Latest Available Version - -Whenever we have a new version available, it will show up on this field. - diff --git a/guides/rocket.chat-administrator-guides/settings/general/net-promoter-score-nps-survey.md b/guides/rocket.chat-administrator-guides/settings/general/net-promoter-score-nps-survey.md deleted file mode 100644 index 71e1d2dbf9..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/general/net-promoter-score-nps-survey.md +++ /dev/null @@ -1,59 +0,0 @@ -# Net Promoter Score \(NPS\) survey - -This feature aims to assess user satisfaction and make the Rocket.Chat experience even more pleasant for users. - -By allowing it to run on your workspace you are helping Rocket.Chat to: - -* Build a better product & better user experience -* Develop and prioritize features aligned with our users’ needs -* Get accurate user feedback on what needs fixing versus what needs improvements. - -## **What users will see?** - -A banner will be exhibited with the question: “**How likely are you to recommend us to a friend or colleague?**” and a scale from 0-10 to collect the answer. - -If the user clicks on a score, a modal will be exhibited to collect text feedback. - -Both actions can be dismissed by the user. - -![](https://lh6.googleusercontent.com/4BBASQyWUP1BM9x1Qouv-cxLUNY3TZBwobJV-N5LVzDZYxOjRmSOPDS9e2twv19d6D24UZhSjDwcwlK7H1U1em9OlWLaoueg0HcEUNcKIr6gSu0z6YGjAKovbj7E_YEA2aC3CmuW) - -![](https://lh5.googleusercontent.com/fbYrzTYf-5ybS8kbgjM6QFf7q8hjrHBf2KRrpiwoF1_D1wBpBS2QjBnskXWmjvFXK-MWQj0VhHytBJaq9bJ1mqo887nENWgxim4y6BD4aoql6LZGEbBuqzUJwgAnKc3JSIFcoEky) - -## How does NPS work? - -NPS surveys will be triggered every 6 months via Rocket.Chat cloud. The workspace needs to be registered in Rocket.Chat cloud, otherwise, the survey will never be triggered. - -All users in the workspace will receive the survey on the same day. - -Admins will get notified two months before the NPS is rolled out via in-app banner and alert via Rocket.Cat. That means admins can quickly turn off the NPS in case they prefer. - -It’s possible to check more details directly in the code [here](https://github.com/RocketChat/Rocket.Chat/blob/3.17.0/server/services/nps/service.ts). - - -## How is NPS data collected? - -All feedback received through the NPS is anonymous. It does not collect any personal data. - -The following data elements are transmitted via statistics collector: - -* Per-user who participates in the NPS - * An anonymous, but unique hash value per user. The hash is created locally in form of a SHA256-hash of the combined user ID and NPS ID. - * The user ID is a local server value per user and is not transmitted outside of the server for the NPS campaign. - * The NPS ID is a string that identifies the NPS campaign to which the user is responding \(as there are multiple campaigns over the years\). - * From the hash itself, user ID and NPS ID cannot be reversely identified. - * The user role \(e.g. guest, admin\) - * The numerical NPS score of the user \(a number between 1-10\) - * An optional comment from the user \(e.g. “I like the emojis a lot!”\) -* A workspace ID, which is a unique string per server, but does not indicate who uses it - -## How to turn it off NPS survey? - -Our users have total freedom to disable the NPS survey. Simply follow the steps below to switch NPS off: - -* Within Rocket.Chat, access **Administration > General** -* **NPS** > Uncheck “**Enable NPS Survey**” -* Once the setting is turned off, the NPS survey stays off indefinitely. - -![](https://lh5.googleusercontent.com/dy4TrUEoeGsj3rFes4or0m5hZ-Jvxp1mtz_zrt2f-Diaox-CTttatqaVWLkSpQ2TJt6n9j3Zd-yCf_RQS1H1zeH4M8gYPpLm2Gpk_lp50NulU56arxdL5zyQTZRzGG6uKlEr7KMY) - diff --git a/guides/rocket.chat-administrator-guides/settings/irc-federation.md b/guides/rocket.chat-administrator-guides/settings/irc-federation.md deleted file mode 100644 index c06dc8a033..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/irc-federation.md +++ /dev/null @@ -1,4 +0,0 @@ -# IRC Federation - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/layout.md b/guides/rocket.chat-administrator-guides/settings/layout.md deleted file mode 100644 index f57684aa3a..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/layout.md +++ /dev/null @@ -1,4 +0,0 @@ -# Layout - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/ldap/README.md b/guides/rocket.chat-administrator-guides/settings/ldap/README.md deleted file mode 100644 index d79da3aef4..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/ldap/README.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -description: >- - To configure LDAP authentication, go to the LDAP section of administration - settings, enable LDAP, and add configurations to connect with your LDAP - server. ---- - -# LDAP - - - -{% hint style="info" %} -We're not experts on LDAP, so there might be lots of features we don't know about and we'd love to have your comments and feedback on what we can do to improve it. -{% endhint %} - - - diff --git a/guides/rocket.chat-administrator-guides/settings/ldap/authentication-settings.md b/guides/rocket.chat-administrator-guides/settings/ldap/authentication-settings.md deleted file mode 100644 index 135a99722e..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/ldap/authentication-settings.md +++ /dev/null @@ -1,18 +0,0 @@ -# Authentication Settings - -## Enable - -Disable Authentication to skip binding the user DN and password. - -## User DN - -The LDAP user that performs user lookups to authenticate other users when they sign in. This is typically a service account created specifically for third-party integrations. Use a fully qualified name, such as - -```text -cn=Administrator,cn=Users,dc=Example,dc=com -``` - -## Password - -The password for the User DN above. - diff --git a/guides/rocket.chat-administrator-guides/settings/ldap/basic-settings.md b/guides/rocket.chat-administrator-guides/settings/ldap/basic-settings.md deleted file mode 100644 index 0b3d45bdd3..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/ldap/basic-settings.md +++ /dev/null @@ -1,60 +0,0 @@ -# Basic Settings - -### Enable - -Turns LDAP Authentication ON or OFF. - -### Login Fallback - -Enable this option to also allow regular password users to log in on Rocket.Chat. It will also let LDAP users continue using Rocket.Chat if the LDAP server is down. - -### Find user after login - -After a successful login, Rocket.Chat will search for the user on the LDAP server and reject the login if it is not found. Use this to prevent anonymous logins to Rocket.Chat when the LDAP Server allows anonymous logins. - -### Host - -The LDAP connection host, e.g. ldap.example.com or 10.0.0.30 - -## Port - -The LDAP connection Port, usually 389 or 636. - -### Reconnect - -Try to reconnect automatically when the connection is interrupted by some reason while executing operations - -### Encryption - -The encryption method used to secure communications to the LDAP server. - -| Value | Usage | -| :--- | :--- | -| No Encryption | | -| StartTLS | Upgrade to encrypted communication once connected | -| SSL/LDAPS | Encrypted from the start | - -### CA Cert - -### Reject Unauthorized - -Disable this option to allow certificates that can not be verified. Usually, Self Signed Certificates will require this option disabled to work - -### Base DN - -The fully qualified Distinguished Name \(DN\) of an LDAP subtree you want to search for users and groups. You can add as many as you like; however, each group must be defined in the same domain base as the users that belong to it. Example: - -```text - ou=Users+ou=Projects,dc=Example,dc=com -``` - -If you specify restricted user groups, only users that belong to those groups will be in scope. We recommend that you specify the top level of your LDAP directory tree as your domain base and use a search filter to control access. - -### Internal Log Level - -What log level should be used for the internal LDAP communication logs. - -### Test Connection - -Use this button to test if the connection settings are valid. This will test the authentication and encryption, but not the syncing settings. - diff --git a/guides/rocket.chat-administrator-guides/settings/ldap/examples.md b/guides/rocket.chat-administrator-guides/settings/ldap/examples.md deleted file mode 100644 index cdb2cdd765..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/ldap/examples.md +++ /dev/null @@ -1,72 +0,0 @@ -# Examples - -* `Host = ldap.domain.com` -* `Group = CN=ROCKET_ACCESS,CN=Users,DC=domain,DC=com (Access Control Group)` -* `Proxy User = rocket.service@domain.com or CN=rocket service,CN=Users,DC=domain,DC=com (DN or userPrincipalName)` -* `Proxy User password = urpass (Proxy Users password)` - -For now \(until we add more input fields to LDAP\) set it like this: \(This is based on the above assumptions, replace with your environment\) - -## Log on with a username - -* `LDAP_Enable = True` -* `LDAP_Dn = dc=domain,dc=com` -* `LDAP_Url = ldap://ldapserver` -* `LDAP_Port = 389` -* `LDAP_Bind_Search =` - -`{"filter": "(&(objectCategory=person)(objectclass=user)(memberOf=CN=ROCKET_ACCESS,CN=Users,DC=domain,DC=com)(sAMAccountName=#{username}))", "scope": "sub", "userDN": "rocket.service@domain.com", "password": "urpass"}` - -If you need to auth users from subgroups in LDAP use this filter: - -`LDAP_Bind_search = {"filter": "(&(objectCategory=person)(objectclass=user)(memberOf:1.2.840.113556.1.4.1941:=CN=ROCKET_ACCESS,CN=Users,DC=domain,DC=com)(sAMAccountName=#{username}))", "scope": "sub", "userDN": "rocket.service@domain.com", "password": "urpass"}` - -## Log on with email address - -* `LDAP_Enable = True` -* `LDAP_Dn = dc=domain,dc=com` -* `LDAP_Url = ldap://ldapserver` -* `LDAP_Port = 389` -* `LDAP_Bind_Search =` - -`{"filter": "(&(objectCategory=person)(objectclass=user)(memberOf=CN=ROCKET_ACCESS,CN=Users,DC=domain,DC=com)(mail=#{username}))", "scope": "sub", "userDN": "rocket.service@domain.com", "password": "urpass"}` - -## Log on with either email address or username - -* `LDAP_Enable = True` -* `LDAP_Dn = dc=domain,dc=com` -* `LDAP_Url = ldap://ldapserver` -* `LDAP_Port = 389` -* `LDAP_Bind_Search =` - -`{"filter": "(&(objectCategory=person)(objectclass=user)(memberOf=CN=ROCKET_ACCESS,CN=Users,DC=domain,DC=com)(|(mail=#{username})(sAMAccountName=#{username})))", "scope": "sub", "userDN": "rocket.service@domain.com", "password": "urpass"}` - -## Log in - -When you enable LDAP the login form will login users via LDAP instead the internal account system. - -### LDAPS - SSL Connection - -Use stunnel to create a secure connection to the LDAP server. Create a new configuration file /etc/stunnel/ldaps.conf with following content: - -```text -options = NO_SSLv2 - -[ldaps] -client = yes -accept = 389 -connect = your_ldap_server.com:636 -``` - -To enable Stunnel automatic startup change the `ENABLED` variable in /etc/default/stunnel4 to `1`: - -```bash -# Change to one to enable stunnel automatic startup -ENABLED=1 -``` - -Finally on the Rocket.Chat server under /admin/LDAP set - -* `LDAP_Url = localhost` -* `LDAP_Port = 389` - diff --git a/guides/rocket.chat-administrator-guides/settings/ldap/faq.md b/guides/rocket.chat-administrator-guides/settings/ldap/faq.md deleted file mode 100644 index 922a80261a..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/ldap/faq.md +++ /dev/null @@ -1,22 +0,0 @@ -# FAQ - -## What's the "Bind successful but user was not found via search" error? - -This error means that the login attempt was successful, but a subsequent search for the user on the LDAP Server returned no results. If you want to disable this search, you can turn off the "Find user after login" setting. - -## How do I stop disabled LDAP users from logging in on Rocket.Chat? - -You need to use the "Sync User Active State" setting under Advanced Sync, but it is not yet compatible with all LDAP Servers. - -### I cannot log in even everything looks good - -If you cannot log in without getting any error messages \(the last thing in the log you see is `Attempt to bind `\), make sure the username of your LDAP account does not match any username of a local account. For example if you created a local user with a username`joe`, then enable LDAP and try to login with a username `joe` \(who exists on your LDAP server\), it will silently fail without any error message in your log simply saying username or password does not match. You cannot log in by`joe,`your LDAP password nor by your local password anymore. - -### No users are created even if everything looks good - -Every rocket.chat-user has to have an email. So either the LDAP users need to have an email or you have to set a default domain using the setting "default domain". - -## References - -MS LDAP Info: [https://msdn.microsoft.com/en-us/library/windows/desktop/aa746475\(v=vs.85\).aspx](https://msdn.microsoft.com/en-us/library/windows/desktop/aa746475%28v=vs.85%29.aspx) - diff --git a/guides/rocket.chat-administrator-guides/settings/ldap/settings.md b/guides/rocket.chat-administrator-guides/settings/ldap/settings.md deleted file mode 100644 index 04980bf863..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/ldap/settings.md +++ /dev/null @@ -1,309 +0,0 @@ -# Settings - -## Basic Settings - -#### Enable - -Turns LDAP Authentication ON or OFF. - -#### Login Fallback - -Enable this option to also allow regular password users to log in on Rocket.Chat. It will also let LDAP users continue using Rocket.Chat if the LDAP server is down. - -#### Find user after login - -After a successful login, Rocket.Chat will search for the user on the LDAP server and reject the login if it is not found. Use this to prevent anonymous logins to Rocket.Chat when the LDAP Server allows anonymous logins. - -#### Host - -The LDAP connection host, e.g. ldap.example.com or 10.0.0.30 - -### Port - -The LDAP connection Port, usually 389 or 636. - -#### Reconnect - -Try to reconnect automatically when the connection is interrupted by some reason while executing operations. - -#### Encryption - -The encryption method used to secure communications to the LDAP server. - -| Value | Usage | -| :--- | :--- | -| No Encryption | | -| StartTLS | Upgrade to encrypted communication once connected | -| SSL/LDAPS | Encrypted from the start | - -#### CA Cert - -#### Reject Unauthorized - -Disable this option to allow certificates that can not be verified. Usually, Self Signed Certificates will require this option disabled to work. - -#### Base DN - -The fully qualified Distinguished Name \(DN\) of an LDAP subtree you want to search for users and groups. You can add as many as you like; however, each group must be defined in the same domain base as the users that belong to it. Example: - -```text - ou=Users+ou=Projects,dc=Example,dc=com -``` - -If you specify restricted user groups, only users that belong to those groups will be in scope. We recommend that you specify the top level of your LDAP directory tree as your domain base and use search filter to control access. - -#### Internal Log Level - -What log level should be used for the internal LDAP communication logs. - -#### Test Connection - -Use this button to test if the connection settings are valid. This will test the authentication and encryption, but not the syncing settings. - -## Authentication - -#### Enable - -Disable Authentication to skip binding the user DN and password. - -#### User DN - -The LDAP user that performs user lookups to authenticate other users when they sign in. This is typically a service account created specifically for third-party integrations. Use a fully qualified name, such as: - -```text -cn=Administrator,cn=Users,dc=Example,dc=com -``` - -#### Password - -The password for the User DN above. - -## Enhanced Sync \(Enterprise only\) - -#### Sync User Active State - -Determine if users should be enabled or disabled on Rocket.Chat, based on the LDAP status. The 'pwdAccountLockedTime' attribute will be used to determine if the user is disabled. This setting is not yet compatible with all LDAP Servers, so if you don't use the 'pwdAccountLockedTime' attribute, you may want to disable it completely. - -## Role Mapping - -#### Role mapping from LDAP to Rocket.Chat. - -Use this setting to map LDAP groups into Rocket.Chat roles. - -You need to use an object format where the object key must be the LDAP group and the object value must be an array of RC roles. Example: - -```text -{ - 'ldapRole': [ - 'rcRole', - 'anotherRCRole' - ] -} -``` - -#### Validate mapping for each login - -If the validation should occur for each login. - -Be careful with this setting because it will overwrite the user roles in each login, otherwise, this will be validated only at the moment of user creation. - -#### Default role to the user - -The default RC role to be applied to the user if the user has some LDAP group that is not mapped. - -#### LDAP query to get user groups - -LDAP query to get the LDAP groups that the user is part of. - -## Sync / Import - -#### Username Field - -Which field will be used as a username for new users. Usually `sAMAccountName` or `uid`. Leave empty to let the user pick their own Rocket.Chat username. You can use template tags too, for example: - -```text -#{givenName}.#{sn} -``` - -#### Unique Identifier Field - -Which field will be used to link the LDAP user and the Rocket.Chat user. You can inform multiple values separated by a comma to try to get the value from the LDAP record. - -#### Default Domain - -If provided the Default Domain will be used to create a unique email for users where email was not imported from LDAP. The email will be mounted as `username@default_domain` or `unique_id@default_domain`. - -#### Merge Existing Users - -**Caution!** When importing a user from LDAP and a user with the same username already exists the LDAP info and password will be set into the existing user. This will let LDAP users take over password accounts with the same username. - -#### Sync User Data - -Keep user data in sync with a server on **login** or on **background sync** \(eg: name, email, and custom fields\). - -#### User Data Field Map - -Configure how user account fields \(like email\) are populated from a record in LDAP \(once found\). - -As an example, `{"cn":"name", "mail":"email"}` will choose a person's human-readable name from the cn attribute, and their email from the mail attribute. - -Additionally, it is possible to use variables, for example, the following objectives will use a combination of the user's first name and last name for the rocket chat. - -```text -{ - "#{givenName} #{sn}": "name", - "mail": "email" -} -``` - -#### Sync LDAP Groups - -Enable this setting to activate role mapping from user groups on the community edition of Rocket.Chat. - -#### Auto Remove User Roles - -Enable this setting to automatically remove roles from LDAP users that don't have the corresponding group. This will only remove roles automatically that are set under the user data group map below. - -#### User Group Filter - -The LDAP search filter used to check if a user is in a group. - -#### LDAP Group BaseDN - -The LDAP BaseDN used to lookup if users are in a group. - -#### User Data Group Map - -The mapping of LDAP groups to Rocket.Chat roles, in JSON format. - -As an example, the following object will map the rocket-admin LDAP group to Rocket.Chat's "admin" role and the "tech-support" group to the "support" role. - -```text -{ - "rocket-admin":"admin", - "tech-support":"support" -} -``` - -#### Auto Sync LDAP Groups to Channels - -Enable this feature to automatically add users to a channel based on their LDAP group. - -#### Channel Admin - -When the above setting causes a channel to be created automatically during user sync, this setting will determine what user will become the admin of the channel. - -#### LDAP Group Channel Map - -The map of LDAP groups to Rocket.Chat channels, in JSON format. As an example, the following objective will add any user in the LDAP group "employee" to the general channel on Rocket.Chat. - -```text -{ - "employee":"general" -} -``` - -#### Auto Remove Users from Channels - -Enabling this will remove any users in a channel that does not have the corresponding LDAP group! This will happen in every login and background sync, so removing a group on LDAP will not instantly remove access to channels on Rocket.Chat. - -#### Sync User Avatar - -Toggle avatar syncing on or off. - -#### User avatar field - -What LDAP field will be used as **avatar** for users. Leave empty to use `thumbnailPhoto` first and `jpegPhoto` as fallback. - -#### Background Sync - -Enable periodic background sync. - -#### Background Sync interval - -The interval between synchronizations, using the [Cron Text](https://bunkat.github.io/later/parsers.html#text) format. - -#### Background Sync Import New Users - -Will import all users \(based on your filter criteria\) that exist in LDAP and do not exist in Rocket.Chat. - -#### Background Sync Update Existing Users - -Will sync the avatar, fields, username, etc \(based on your configuration\) of all users already imported from LDAP on every **Sync Interval**. - -#### Execute Synchronization Now - -Will execute the Background Sync now rather than wait for the Sync Interval even if Background Sync is False. This Action is asynchronous, please see the logs for more information about the process. - -## Timeouts - -#### Timeout \(ms\) - -How many milliseconds to wait for a search result before returning an error. - -#### Connection Timeout \(ms\) - -#### Idle Timeout \(ms\) - -How many milliseconds to wait after the latest LDAP operation before closing the connection. \(Each operation will open a new connection\) - -## User Search - -#### Filter - -If specified, only users that match this filter will be allowed to log in. If no filter is specified, all users within the scope of the specified domain base will be able to sign in. - -E.g. for Active Directory - -```text -memberOf=cn=ROCKET_CHAT,ou=General Groups -``` - -E.g. for OpenLDAP \(extensible match search\) - -```text -ou:dn:=ROCKET_CHAT -``` - -#### Scope - -#### Search Field - -The LDAP attribute that identifies the LDAP user who attempts authentication. This field should be`sAMAccountName`for most Active Directory installations, but it may be`uid`for other LDAP solutions, such as OpenLDAP. You can use`mail`to identify users by email or whatever attribute you want. - -You can use multiple values separated by a comma to allow users to login using multiple identifiers like username or email. - -#### Search Page Size - -The maximum number of entries each result page will return to be processed. - -#### Search Size Limit - -The maximum number of entries to return. **Attention** This number must be larger than the one on **Search Page Size**. - -## User Search \(Group Validation\) - -#### Enable LDAP User Group Filter - -Restrict access to users in an LDAP group Useful for allowing OpenLDAP servers without a **memberOf** filter to restrict access by groups. - -#### Group ObjectClass - -The **objectclass** that identify the groups. E.g. **OpenLDAP**:groupOfUniqueNames - -#### Group ID Attribute - -E.g. OpenLDAP:cn - -#### Group Member Attribute - -E.g. **OpenLDAP**:uniqueMember - -#### Group Member Format - -E.g. **OpenLDAP**:uid=\#{username},ou=users,o=Company,c=com - -#### Group name - -Group name to which the user should belong. - diff --git a/guides/rocket.chat-administrator-guides/settings/ldap/sync-settings.md b/guides/rocket.chat-administrator-guides/settings/ldap/sync-settings.md deleted file mode 100644 index 758c7395dd..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/ldap/sync-settings.md +++ /dev/null @@ -1,163 +0,0 @@ -# Sync Settings - -## Sync / Import - -### Username Field - -Usually`sAMAccountName`or `uid` field will be used as username for new users. Leave empty to let the user pick their own Rocket.Chat username. You can use template tags too, for example: - -```text -#{givenName}.#{sn} -``` - -### Unique Identifier Field - -Which field will be used to link the LDAP user and the Rocket.Chat user. You can inform multiple values separated by a comma to try to get the value from LDAP record. - -### Default Domain - -If provided the Default Domain will be used to create a unique email for users where email was not imported from LDAP. The email will be mounted as `username@default_domain` or `unique_id@default_domain`. - -### Merge Existing Users - -**Caution!** When importing a user from LDAP and a user with same username already exists the LDAP info and password will be set into the existing user. This will let LDAP users take over password accounts with the same username. - -### Sync User Data - -Keep user data in sync with the server on **login** or on **background sync** \(eg: name, email, and custom fields\). - -### User Data Field Map - -Configure how user account fields \(like email\) are populated from a record in LDAP \(once found\). - -As an example, `{"cn":"name", "mail":"email"}` will choose a person's human-readable name from the cn attribute, and their email from the mail attribute. - -Additionally, it is possible to use variables, for example, the following object will use a combination of the user's first name and last name for the rocket chat. - -```text -{ - "#{givenName} #{sn}": "name", - "mail": "email" -} -``` - -### Sync LDAP Groups - -Enable this setting to activate role mapping from user groups on the community edition of Rocket.Chat. - -### Auto Remove User Roles - -Enable this setting to automatically remove roles from LDAP users that don't have the corresponding group. This will only remove roles automatically that are set under the user data group map below. - -### User Group Filter - -The LDAP search filter is used to check if a user is in a group. If the search returns any results the user is considered to be in the group. When performing the search, the following strings, if present in the filter, will be substituted with data from the user and group whose membership status is being checked: - -* `#{username}` - Replaced with the username of the user in RocketChat -* `#{groupName}` - Replaced with the name of the group in LDAP -* `#{userdn}` - Replaced with the LDAP Distinguished Name of the user - -### LDAP Group BaseDN - -The LDAP BaseDN used to lookup if users are in a group. - -### User Data Group Map - -The mapping of LDAP groups to Rocket.Chat roles, in JSON format. - -As an example, the following object will map the rocket-admin LDAP group to Rocket.Chat's "admin" role and the "tech-support" group to the "support" role. - -```text -{ - "rocket-admin":"admin", - "tech-support":"support" -} -``` - -### Auto Sync LDAP Groups to Channels - -Enable this feature to automatically add users to a channel based on their LDAP group. - -### Channel Admin - -When the above setting causes a channel to be created automatically during user sync, this setting will determine what user will become the admin of the channel. - -### LDAP Group Channel Map - -The map of LDAP groups to Rocket.Chat channels, in JSON format. As an example, the following objectives will add any user in the LDAP group "employee" to the general channel on Rocket.Chat. - -```text -{ - "employee":"general" -} -``` - -### Auto Remove Users from Channels - -Enabling this will remove any users in a channel that does not have the corresponding LDAP group! This will happen in every login and background sync, so removing a group on LDAP will not instantly remove access to channels on Rocket.Chat. - -### Sync User Avatar - -Toggle avatar syncing on or off. - -### User avatar field - -What LDAP field will be used as **avatar** for users. Leave empty to use `thumbnailPhoto` first and `jpegPhoto` as fallback. - -### Background Sync - -Enable periodic background sync. - -### Background Sync interval - -The interval between synchronizations, using the [Cron Text](https://bunkat.github.io/later/parsers.html#text) format. - -### Background Sync Import New Users - -Will import all users \(based on your filter criteria\) that exist in LDAP and do not exist in Rocket.Chat. - -### Background Sync Update Existing Users - -Will sync the avatar, fields, username, etc \(based on your configuration\) of all users already imported from LDAP on every **Sync Interval**. - -### Execute Synchronization Now - -Will execute the Background Sync now rather than wait for the Sync Interval even if Background Sync is False. This Action is asynchronous, please see the logs for more information about the process. - -## Enhanced Sync \(Enterprise only\) - -### Sync User Active State - -Determine if users should be enabled or disabled on Rocket.Chat based on the LDAP status. The 'pwdAccountLockedTime' attribute will be used to determine if the user is disabled. This setting is not yet compatible with all LDAP Servers, so if you don't use the 'pwdAccountLockedTime' attribute, you may want to disable it completely. - -## Role Mapping Settings - -### Role mapping from LDAP to Rocket.Chat. - -Use this setting to map LDAP groups into Rocket.Chat roles. - -You need to use an object format where the object key must be the LDAP group and the object value must be an array of RC roles. Example: - -```text -{ - 'ldapRole': [ - 'rcRole', - 'anotherRCRole' - ] -} -``` - -### Validate mapping for each login - -If the validation should occur for each login. - -Be careful with this setting because it will overwrite the user roles in each login, otherwise, this will be validated only at the moment of user creation. - -### Default role to the user - -The default RC role to be applied to the user if the user has some LDAP group that is not mapped. - -### LDAP query to get user groups - -LDAP query to get the LDAP groups that the user is part of. - diff --git a/guides/rocket.chat-administrator-guides/settings/ldap/timeouts-settings.md b/guides/rocket.chat-administrator-guides/settings/ldap/timeouts-settings.md deleted file mode 100644 index 32cec4860e..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/ldap/timeouts-settings.md +++ /dev/null @@ -1,12 +0,0 @@ -# Timeouts Settings - -## Timeout \(ms\) - -How many milliseconds to wait for a search result before returning an error. - -## Connection Timeout \(ms\) - -## Idle Timeout \(ms\) - -How many milliseconds to wait after the latest LDAP operation before closing the connection. \(Each operation will open a new connection\) - diff --git a/guides/rocket.chat-administrator-guides/settings/ldap/user-search-settings.md b/guides/rocket.chat-administrator-guides/settings/ldap/user-search-settings.md deleted file mode 100644 index ef0d6805e8..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/ldap/user-search-settings.md +++ /dev/null @@ -1,62 +0,0 @@ -# User Search Settings - -## User Search - -### Filter - -If specified, only users that match this filter will be allowed to log in. If no filter is specified, all users within the scope of the specified domain base will be able to sign in. - -E.g. for Active Directory - -```text -memberOf=cn=ROCKET_CHAT,ou=General Groups -``` - -E.g. for OpenLDAP \(extensible match search\) - -```text -ou:dn:=ROCKET_CHAT -``` - -### Scope - -### Search Field - -The LDAP attribute that identifies the LDAP user who attempts authentication. This field should be `sAMAccountName` for most Active Directory installations, but it may be `uid` for other LDAP solutions, such as OpenLDAP. You can use `mail` to identify users by email or whatever attribute you want. - -You can use multiple values separated by comma to allow users to login using multiple identifiers like username or email. - -### Search Page Size - -The maximum number of entries each result page will return to be processed. - -### Search Size Limit - -The maximum number of entries to return. **Attention**, this number must be larger than the one on **Search Page Size**. - -## User Search \(Group Validation\) - -### Enable LDAP User Group Filter - -Restrict access to users in a LDAP group Useful for allowing OpenLDAP servers without a **memberOf** filter to restrict access by groups. - -### Group ObjectClass - -The **objectclass** that identify the groups. E.g. **OpenLDAP**:groupOfUniqueNames - -### Group ID Attribute - -E.g. OpenLDAP:cn - -### Group Member Attribute - -E.g. **OpenLDAP**:uniqueMember - -### Group Member Format - -E.g. **OpenLDAP**:uid=\#{username},ou=users,o=Company,c=com - -### Group name - -Group name to which the user should belong. - diff --git a/guides/rocket.chat-administrator-guides/settings/message.md b/guides/rocket.chat-administrator-guides/settings/message.md deleted file mode 100644 index 58efe81e85..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/message.md +++ /dev/null @@ -1,4 +0,0 @@ -# Message - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/meta.md b/guides/rocket.chat-administrator-guides/settings/meta.md deleted file mode 100644 index 96669fcffa..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/meta.md +++ /dev/null @@ -1,4 +0,0 @@ -# Meta - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/mobile.md b/guides/rocket.chat-administrator-guides/settings/mobile.md deleted file mode 100644 index 280f6b72e9..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/mobile.md +++ /dev/null @@ -1,4 +0,0 @@ -# Mobile - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/oauth/README.md b/guides/rocket.chat-administrator-guides/settings/oauth/README.md deleted file mode 100644 index 0827eea9b8..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/oauth/README.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -description: >- - Rocket.Chat supports several different ways to authenticate, beyond the basic - username/password authentication. Most authentication providers require a - clientID and a secret. ---- - -# OAuth - -To set up your desired provider: - -1. Go to **Administration.** - -![](../../../../.gitbook/assets/image%20%2830%29.png) - -2. Search '**OAuth'** in **Settings** and open it. - -![](../../../../.gitbook/assets/image%20%28153%29.png) - -## Facebook - -* Callback URL: `<>/_oauth/facebook?close` - -## GitHub - -* Callback URL: `<>/_oauth/github?close` - -### GitHub Set up - -1. Go to your [Application Settings](https://github.com/settings/applications) -2. Under the `Developer applications` tab, click the **Register new application** button -3. Fill in the form, and make sure you use the correct callback URL. - -**Note**: If your callback URL is wrong, GitHub does not display any error. Instead of logging in, you receive an error message saying, "No matching login attempt found." - -## Google - -* Callback URL: `<>/_oauth/google?close` - -### Google Set up - -1. Go to the [Google Developer Console](https://console.developers.google.com), and create a new project -2. Set up your project by creating an "OAuth 2.0 client ID" \(under `APIs & Auth` and `Credentials`\) -3. After that, make sure you define a **Product Name** in the OAuth consent screen, and select **Web App** as the application type. Otherwise, you won't be able to provide a callback URL - -## Apple - -To use Apple account for authentication: - -1. Turn on **Sign in with Apple**. - -![](../../../../.gitbook/assets/image%20%28152%29.png) - -## LinkedIn - -* Callback URL: `<>/_oauth/linkedin` - -### LinkedIn Set up - -1. Go to the [Developers Linkedin](https://www.linkedin.com/developers/) and create a new app -2. Go to Auth tab. -3. Set up your project by creating an OAuth client ID and Client Secret. - -## Twitter - -* Callback URL: `<>/_oauth/twitter` - -## WordPress - -Please follow the instructions [here](https://docs.rocket.chat/guides/administrator-guides/authentication/oauth/wordpress). - -## Add Custom OAuth - -To add custom OAuth: - -1. Click **Add custom oAuth** - -![](../../../../.gitbook/assets/image%20%28151%29.png) - -2. Give a unique name for the custom oauth - -![](../../../../.gitbook/assets/image%20%28150%29.png) - -## Refresh OAuth Services - -Click Refresh OAuth Services to refresh the options that are displayed on the login screen based on the settings you saved, as shown below: - - - diff --git a/guides/rocket.chat-administrator-guides/settings/oauth/wordpress.md b/guides/rocket.chat-administrator-guides/settings/oauth/wordpress.md deleted file mode 100644 index b520b3c302..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/oauth/wordpress.md +++ /dev/null @@ -1,69 +0,0 @@ -# WordPress OAuth Setup - -The easiest way to configure Rocket.Chat using WordPress as your identity backend is to use the MiniOrange oAuth Plugin Version 2.5.6 or higher: [https://wordpress.org/plugins/miniorange-oauth-20-server/](https://wordpress.org/plugins/miniorange-oauth-20-server/) - -## Instructions - -* Sign into your Rocket.Chat instance with an administrator account. -* Procced to the `oAuth` section under `Administration`. -* Click on **Add custom oAuth** to create a new OAuth Application, as depicted below: - -![](https://savvymatthew.sfo2.cdn.digitaloceanspaces.com/rocketchat-docs/rct-oauth-step-03.png) - -* In the **Application Configuration** tab, copy the `Callback URL` \(example: `http://your.domain.com/_oauth/id`\), and put it into a notepad, or another text application, as we will need it in the next few steps. -* Log into your WordPress site as an administrator and navigate to **Add New** under `Plugins`. -* Search for "MiniOrange oAuth Server" \(Red below\). -* Install and activate the `MiniOrange oAuth Server` plugin \(Purple, and then Green\). - -![](https://savvymatthew.sfo2.cdn.digitaloceanspaces.com/rocketchat-docs/rct-oauth-step-8.png) - -* Navigate to the `MiniOrange oAuth Server` Menu item, and click though the quick guided tour. -* Click **Add client** \(Red\). - -![](https://savvymatthew.sfo2.cdn.digitaloceanspaces.com/rocketchat-docs/rct-oauth-step-10.png) - -* Give your client a name \(Red\), enter the Callback URL you saved before \(Purple\), and click **Save client**. - -![](https://savvymatthew.sfo2.cdn.digitaloceanspaces.com/rocketchat-docs/rct-oauth-step-11.png) - -* It now shows your `Client ID` \(Red\) and `Client Secret` \(Purple\). Copy them into the same notepad, or another text application where you have your Callback URL. - -![](https://savvymatthew.sfo2.cdn.digitaloceanspaces.com/rocketchat-docs/rct-oauth-step-12.png) - -* Click the **Endpoints** tab, and copy each line from the purple box to your notepad. Don't forget to note the endpoint each line represents. - -![](https://savvymatthew.sfo2.cdn.digitaloceanspaces.com/rocketchat-docs/rct-oauth-step-13.png) - -* Go back to the custom oAuth you already created in Rocket.Chat, and match the information saved in the notepad into the correct fields listed below and in the screenshot: -* **Enable** = True -* **URL** = `https://your.domain.com` \(do not include a trailing “/”\) -* **Token Path** = Access Token Endpoint -* **Token Sent Via** = Payload -* **Identity Token Sent Via** = Payload -* **Identity Path** = Get User Info Endpoint -* **Authorize Path** = Authorize Endpoint -* **Scope** = Profile -* **Id** = Client ID -* **Secret** = Client Secret -* **Login Style** = Redirect \(you can use any of them, but redirect is really the only one that plays nice with mobile and desktop apps\) -* **Username field** = username \(a normal hook for a WordPress username is user\_login, but the plugin rewrites this in the JSON response to Rocket for username\) -* **Merge users** = true - -![](https://savvymatthew.sfo2.cdn.digitaloceanspaces.com/rocketchat-docs/rct-oauth-step-14.png) - -### Button Customization - -In regards to the customization of the **Log in** button, you can customize it without affecting oAuth working. - -**Note**: When using mobile and desktop apps, your imputed **Button** text is not displayed. Instead, the apps will display your custom oAuth name at the top. - -### Troubleshooting oAuth - -The first thing to do when having an issue with oAuth is to enable `Level 2 Logging` to see what's going on: `Administration > Logs > Log Level > View Logs`. - -When looking at the logs, you may want to open an incognito mode browser window for the log in screen, and have the logs and your login screen side-by-side. When you attempt a login, the log displays the oAuth response in real time, which gives you valuable information to help you troubleshoot your issue. - -Here are some forum threads that provide issues experienced by others: - -**The redirect URI provided is missing or does not match** [https://wordpress.org/support/topic/rocketchat-wordpress-the-redirect-uri-provided-is-missing-or-does-not-match/](https://wordpress.org/support/topic/rocketchat-wordpress-the-redirect-uri-provided-is-missing-or-does-not-match/) - diff --git a/guides/rocket.chat-administrator-guides/settings/omnichannel.md b/guides/rocket.chat-administrator-guides/settings/omnichannel.md deleted file mode 100644 index 5622542af4..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/omnichannel.md +++ /dev/null @@ -1,4 +0,0 @@ -# Omnichannel - -Please find the manual in the omnichannel section. - diff --git a/guides/rocket.chat-administrator-guides/settings/otr.md b/guides/rocket.chat-administrator-guides/settings/otr.md deleted file mode 100644 index e6ff58f279..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/otr.md +++ /dev/null @@ -1,12 +0,0 @@ -# OTR - -{% hint style="info" %} -This feature is currently in beta. Search operations will not find encrypted messages of encrypted rooms. The mobile apps and multi-DMs may not support the encrypted messages \(currently under implementation\). File Uploads will not be encrypted in this version. -{% endhint %} - -Off-the-record \(OTR\) Messaging is a feature that allows users to exchange **temporary, encrypted messages directly between each other**. This happens by using the local**,** non-persistent session storage of their browser rather than storing messages on the Rocket.Chat server. After an OTR session ends and the session storage is cleared, the OTR messages are removed and can no longer be restored. - -As an administrator, you can enable/disable OTR for your workspace, as shown below: - -![](../../../.gitbook/assets/image%20%28387%29.png) - diff --git a/guides/rocket.chat-administrator-guides/settings/push-notifications-admin-guide.md b/guides/rocket.chat-administrator-guides/settings/push-notifications-admin-guide.md deleted file mode 100644 index df384dd506..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/push-notifications-admin-guide.md +++ /dev/null @@ -1,175 +0,0 @@ -# Push \(Notifications Admin Guide\) - -By default, the community users have 10k push notifications for free. If you are a deployment that uses mobile clients a lot, you might feel the need to extend your per-month push notification limit. To subscribe to your desired push notification bundle, you first need to [subscribe to our cloud account](https://docs.rocket.chat/guides/administrator-guides/connectivity-services) if you don't have one. - -## Subscribe a Package - -To subscribe to a push notification package: - -1. Please go to our [sponsorship page](https://sponsorship.rocket.chat/) -2. Choose your desired package from the packages below: - -![](../../../.gitbook/assets/image%20%281%29.png) - -3. Login with your GitHub account - -4. Login with [Rocket.Chat Cloud](https://cloud.rocket.chat/) - -5. Select **the workspace you want to apply the cap to**. The cap will be applied automatically with the respective limit according to the selected sponsorship perk. - -{% hint style="info" %} -Please note that only **one** sponsorship subscription can be applied to a workspace. You can not stack a few subscriptions to get more push messages. If you need more than 20k you will need to contact our sales representative at [sales@rocket.chat](mailto:sales@rocket.chat) -{% endhint %} - -## Set default user preferences \(admin and users\) - -{% hint style="info" %} -Default user preferences are universal for all the users until individual users change them for themselves. -{% endhint %} - -To check user preferences for push notifications: - -1. Go to **Administration** - -![](../../../.gitbook/assets/image%20%2830%29.png) - -2. Goto '**Account'** in **Settings** and scroll down to **Default User Preference** - -![](../../../.gitbook/assets/image%20%2821%29.png) - -3. Set **Mobile Notifications Default Alert** to Mentions. It will send notifications in case of a mention of the user's name or only the threads the user has intentionally subscribed to. - -![](../../../.gitbook/assets/image%20%2841%29.png) - -{% hint style="warning" %} -We suggest you should check the push notification configuration in user preferences before enabling them because you might want to use your limit wisely. -{% endhint %} - -## Push Notifications Configuration - -To enable push notifications: - -1. Go to **Administration** - -![](../../../.gitbook/assets/image%20%2830%29.png) - -2. Search '**Push'** in **Settings** - -![](../../../.gitbook/assets/image%20%28137%29.png) - -3. **Enable** push notifications - -4. **Enable** your Gateway \(_Option not available on a cloud server_\) - -{% hint style="info" %} -If you are on a cloud server, you don't get to choose as there is a default rocket.chat gateway. On a self-hosted server, you have an option to either use rocket.chat gateway or configure your own. -{% endhint %} - -5. Enable **Production** - -6. You are all set to send a test push to your user now. - -{% hint style="info" %} -To successfully send a test push to your user, you will have to be logged in to the server on your mobile client and then close or minimize the application. -{% endhint %} - -![](../../../.gitbook/assets/image%20%2860%29.png) - -### Privacy - -In Privacy, you can configure what amount of information you want your push notification to have. - -1. Go to **Administration** - -![](../../../.gitbook/assets/image%20%2830%29.png) - -2. Search '**Push'** in **Settings** - -![](../../../.gitbook/assets/image%20%28137%29.png) - -3. Go to **Privacy** - -![](../../../.gitbook/assets/image%20%28165%29.png) - -![](../../../.gitbook/assets/image%20%2891%29.png) - -{% hint style="info" %} -Above are the default settings. If **Fetch full message content from the server on the receipt** is enabled and you're running the _Enterprise Edition or Gold_, the notification payload sent through the Apple Push Notification service or Firebase Cloud Messaging service contains no message content. Instead, it contains only the message ID, which is then used by the mobile app to fetch the message content from the [Rocket.Chat](http://rocket.chat/) server to display the notification. If something happens and the app cannot reach the server in time, a generic push notification message is shown. When the setting is disabled, the whole message content is sent via push notification payload so the mobile app can display the notification right away. -{% endhint %} - -## Cloud Service Privacy Terms Agreement - -Make sure you have agreed to terms and conditions. - -1. Go to **Administration** - -![](../../../.gitbook/assets/image%20%2830%29.png) - -2. Search '**Setup Wizard'** in **Settings** - -![](../../../.gitbook/assets/image%20%28163%29.png) - -3. Go to '**Cloud Info'** - -![](../../../.gitbook/assets/image%20%28162%29.png) - -4. Turn the **Cloud Service Privacy Terms Agreement** toggle on - -![](../../../.gitbook/assets/image%20%28160%29.png) - -{% hint style="info" %} -If **Cloud Service Privacy Terms Agreement** is not toggled ON, the push won't work. -{% endhint %} - -5. Hit **Save changes** - -![](../../../.gitbook/assets/image%20%28156%29.png) - -## Connect to cloud - -When you purchase any package of push notifications as a self-managed customer, you need to connect your workspace to our cloud. - -1. Go to connectivity services; check if you are connected. Cloud workspace should be connected by default. -2. If not, go to [connectivity services](https://docs.rocket.chat/guides/administrator-guides/connectivity-services) and follow the guide. -3. Once done, go to Push and send a test message to your user. - -## Check the count of notification used per month - -To check the count of notification used per month: - -1. Go to [cloud.rocket.chat](http://cloud.rocket.chat/) - -![](../../../.gitbook/assets/image%20%28157%29.png) - -2. Go to Workspaces and select the workspace you want to check count for. - -3. Push notifications block will show the number of used notifications per your current limit per month. - -![](../../../.gitbook/assets/image%20%28158%29.png) - -## Enable push notifications for channels - -Users can configure what notifications they want to receive on mobile for each channel. - -To enable push notifications for channels: - -1. Open room actions - -![](../../../.gitbook/assets/image%20%28161%29.png) - -2. Notification preferences - -![](../../../.gitbook/assets/image%20%28166%29.png) - -3. Mobile - -![](../../../.gitbook/assets/image%20%28164%29.png) - -4. Select what type of notifications you want to receive. - -![](../../../.gitbook/assets/image%20%28159%29.png) - -{% hint style="info" %} -On some channels, notifications can stop if the number of users exceeds the set limit. The limit is set in the Administration -> General -> Notifications. -{% endhint %} - diff --git a/guides/rocket.chat-administrator-guides/settings/rate-limiter.md b/guides/rocket.chat-administrator-guides/settings/rate-limiter.md deleted file mode 100644 index 815ad21422..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/rate-limiter.md +++ /dev/null @@ -1,4 +0,0 @@ -# Rate Limiter - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/retention-policies.md b/guides/rocket.chat-administrator-guides/settings/retention-policies.md deleted file mode 100644 index 2407f71e16..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/retention-policies.md +++ /dev/null @@ -1,62 +0,0 @@ -# Retention Policy - -This feature adds the ability to set retention policies on channels and globally. Such retention policies can automatically remove old messages and files with custom rules. - -**Note**: This feature is only available from version 0.67 or later. - -## Permissions - -The ability to set retention policies depends on two permissions: `edit-privileged-setting` and `edit-room-retention-policy`: - -* To set **a global policy**, the `edit-privileged-setting` permission is required -* To set **a per-channel policy**, the `edit-room-retention-policy` permission is required - -If you want to enable channel owners to set their own policies, assign the `edit-room-retention-policy` permission to channel owners - by default, it is assigned to Admins only. - -## Configuration - -Retention policies have two levels, global policies \(enforced everywhere\) and per-channel policies \(enforced in specific channels\). - -To turn on retention policies, set `Enabled` to `True`. - -**Note**: If you wish to use per-channel policies but not a global policy, set all three `Applies to` options to `False` but set the global `Enabled` option to `True`. - -### Global policies - -**Note**: Tweaking these settings without extreme caution can **destroy** **all message history across your server**. Please read this entire section **before** you turn the feature on. - -You can find the settings for this feature in `Retention Policy` in the Admin panel, under the `Global Policy` section. - -The policy is split up into three parts, a policy for all channels, one for all private groups, and one for all direct messages. Each type has two options: - -* **Applies to channels/private groups/direct messages**: establishes whether the global retention policy should apply to this type. For example, if you only wish to prune messages in private groups, set this to `True` for private groups, and to `False` for all others. -* **Maximum message age in channels/private groups/direct messages**: establishes how old messages maybe, in days. For example, to make the policy automatically delete all messages older than 30 days, enter `30`; to make the policy automatically delete all messages older than a year, enter `365`, etc. - -Furthermore, three more options allow you to specify how the policy works: - -* **Exclude pinned messages**: when set to `True`, pinned messages are not deleted. For example, when you pin a few messages with important links, these messages stay intact. -* **Only delete files**: when set to `True`, messages are not deleted, but files are. They are replaced by a simple _File removed by automatic prune_ message. When used together with **Exclude pinned messages**, only unpinned files are deleted. -* **Timer Precision**: establishes how often the deletion script should run. when your policies have long lifetime, or you simply do not care about the policy's precision, you can lower this to save processing power. - -### Per-channel Policies - -**Note**: Tweaking these settings without extreme caution can **destroy** **all message history across your server**. Please read this entire section **before** you turn the feature on. - -Find the settings for this feature in the `Settings` screen of a channel, if you have the `edit-room-retention-policy` permission. - -The `Automatically prune old messages` option has three states: - -* **Default**: uses the global policy if enabled, otherwise do nothing -* **Disabled**: does nothing; the retention policy never applies to the channel -* **Enabled**: uses the retention policy described below, instead of any global policy - -If you set `Automatically prune old messages` to `Enabled`, there are a few settings you can tweak to specify the new policy: - -* **Maximum message age in days**: establishes how old messages may be, in seconds. For example, to make the policy automatically delete all messages older than 30 days, enter `30`; to make the policy automatically delete all messages older than a year, enter `365`, etc. -* **Exclude pinned messages**: if enabled, pinned messages are not deleted. For example, if you pinned a few messages with important links, they stay intact. -* **Prune files only, keep messages**: if enabled, messages are not be deleted, but files are; they are replaced by a simple _File removed by automatic prune_ message. When used together with **Exclude pinned messages**, only unpinned files are deleted. - -## Info Available to Users - -Users can see if a channel's messages will be pruned by either scrolling to the very top of the message history, or opening the channel info. A message is displayed if a policy, \(global or per-channel\) is present, for example: _Messages older than 30 days are automatically pruned here_ or _Unpinned files older than a year are automatically pruned here_. - diff --git a/guides/rocket.chat-administrator-guides/settings/saml/README.md b/guides/rocket.chat-administrator-guides/settings/saml/README.md deleted file mode 100644 index ee2ff8b80d..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/saml/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# SAML - -{% page-ref page="rocket.chat-server-settings.md" %} - -{% page-ref page="simple-saml-php.md" %} - -{% page-ref page="active-directory-federation-services.md" %} - -{% page-ref page="oracle-cloud.md" %} - diff --git a/guides/rocket.chat-administrator-guides/settings/saml/active-directory-federation-services.md b/guides/rocket.chat-administrator-guides/settings/saml/active-directory-federation-services.md deleted file mode 100644 index d2d4c1e0d1..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/saml/active-directory-federation-services.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -description: Authenticating Rocket.Chat and Microsoft ADFS via SAML ---- - -# Active Directory Federation Services - -It is possible to set up the authentication between Rocket.Chat and Active Directory Federation Services by setting up SAML authentication scenario. - -Microsoft ADFS provides an IdP service that can be consumed by Rocket.Chat for authentication. Important: If you are using Active Directory _without_ Federation Services, you should perform the user synchronization via LDAP only. - - This document takes into consideration that your ADFS environment is deployed and running. For further info, please refer to [this guide](https://docs.microsoft.com/en-us/previous-versions/dynamicscrm-2016/deployment-administrators-guide/gg188612%28v=crm.8%29). - -The Rocket.Chat configuration should be done as follows: - -1. Go to Administration -> SAML and configure the entry points and the IdP path. - -![](../../../../.gitbook/assets/adfs_1.png) - -2. Add the private key certificate related to the ADFS server. - -Important: ADFS uses .pfx certificate extensions \(widely used on Windows landscapes\) and Rocket.Chat uses .pem files. So, before setting the certificate here, it must be converted. - -![](../../../../.gitbook/assets/adfs_2.png) - -3. Set the _Custom Authn Context_ and _User Data Field Map_ according to the scenario you have on your Active Directory Federation Services - -![](../../../../.gitbook/assets/image%20%28190%29.png) - -**Important:** The Custom Authorization context fields must match the authentication methods selected on ADFS. Microsoft Federation Services provides two authentication methods: Forms authentication and Windows Authentication. - -![](../../../../.gitbook/assets/adfs_1%20%281%29.png) - -* Forms authentication: If this option is selected as 'primary', a login form provided by ADFS will be called by the SAML assertion to perform the login operation. For this method, the recommended "Custom Authn Context" in Rocket.Chat should be _**urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport**_ -* Windows authentication: if this option is selected as **'**primary', ADFS will expect the login assertions on the Windows Domain level. To set a full SSO scenario between Rocket.Chat and ADFS, the recommended "Custom Authn Context" should be _**urn:federation:authentication:windows**_ - - - - - - - - - diff --git a/guides/rocket.chat-administrator-guides/settings/saml/keycloak.md b/guides/rocket.chat-administrator-guides/settings/saml/keycloak.md deleted file mode 100644 index cd5392f70b..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/saml/keycloak.md +++ /dev/null @@ -1,44 +0,0 @@ -# Keycloak - -[https://www.keycloak.org/](https://github.com/RocketChat/docs/tree/383996fe726bc870c25c540068bd6a4b8cb8b7b5/guides/administrator-guides/authentication/saml/Keycloak/README.md) is another popular open-source IdP that you can use in connection with Rocket.Chat. - -## Prerequisites - -* Rocket.Chat server accessible like e.g. [https://r.example.com](https://r.example.com) -* Keycloak server accessible like e.g. [https://sso.example.com](https://sso.example.com) - -Keycloak: - -* Decide/set up a realm you want to use, e.g. `master`. The realm will be referenced by the placeholder ``. - -## Setting up Rocketchat - -Go to the SAML settings in Rocketchat administration: - -* Decide the keycloak server "nickname" - e.g. `keycloak`. -* For the custom entry point and IDP SLO Redirect URL, go for `https://sso.example.com/auth/realms//protocol/saml` -* Note the Custom Certificate - this is the Keycloak's realm certificate. Check out the realm settings, examine the Keys tab, and get the RSA Certificate and paste it to the field. Don't include the `-----BEGIN/END CERTIFICATE-----` headers/footers. -* Generate the Public Certificate and Private Key if needed, or leave them as they are if they are present. - -## Setting up Keycloak - -Go to `https://r.example.com/_saml/metadata/keycloak` - you should get an XML file. Save the raw file to your disk. Go to keycloak and open the "Add Client" dialogue. Select the SAML protocol, and import the XML file from the previous step. You will be redirected to a partially pre-filled client setting page. The client ID referenced by Keycloak should be the same as the metadata URL. - -Create client, and now revisit its settings: - -* Check out Valid Redirect URIs - make sure that it is set to `https://r.example.com/_saml/validate/keycloak`. -* Set the `Name ID Format` to `email`. -* Go to the `SAML Keys` tab, and make sure that the public key \(certificate\) is the same as the Rocketchat's public key. Note that the `-----BEGIN/END CERTIFICATE-----` header/footer is not supposed to be part of the Keycloak's public key view, but the rest should be the same. If they are not the same, save the Rocketchat public key one into a text file, and import it from Keycloak - use the import PEM functionality. -* Go to the Mappers tab, and create mappers for the required data that Rocketchat expects. You shouldn't need `email` or `username`, but you probably need `cn`. - - Click Create, and choose the type `User Property` and set the `SAML Attribute NameFormat` to `basic`. For the first name, set `Name` and `Property` to `firstName`, and `SAML Attribute name` to `cn`. - -## Troubleshooting - -You should be done by now. However, you may run into some problems for various reasons: - -* Q: I keep getting the `Unable to validate response url: Error: Status is: urn:oasis:names:tc:SAML:2.0:status:Responder` error. -* A: Make sure that the respective Keycloak user has an e-mail address. This may not be the case e.g. for Keycloak admin. -* Q: How do I generate a certificate pair? -* A: Try `openssl req -newkey rsa:3072 -new -x509 -days 3652 -nodes -out saml.crt -keyout saml.pem`. Then, just copy file contents to the respective fields. - diff --git a/guides/rocket.chat-administrator-guides/settings/saml/oracle-cloud.md b/guides/rocket.chat-administrator-guides/settings/saml/oracle-cloud.md deleted file mode 100644 index 315c3d92a7..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/saml/oracle-cloud.md +++ /dev/null @@ -1,58 +0,0 @@ -# Oracle Identity Cloud Service - -## Configuring the Identity Provider - -Oracle Identity Cloud Service is integrated as a SAML Identity Provider. For a detailed explanation of the SAML options on Rocket.Chat, check the [SAML Documentation](./). - -## Step by Step configuration of Oracle Identity Cloud Service - -### Before you begin - -Before you create your IDCS application, make sure you have enabled SAML per the [SAML Documentation](../../misc.-admin-guides/authentication/). You will need to have entered a _Custom Provider_ and a _Custom Issuer_ URL on the SAML settings page in Rocket.Chat. - -**Note:** Leave the _Custom Entry Point_ and _IDP SLO Redirect URL_ values as the default values for now. We will obtain these URLs below, but you must save the SAML settings with your _Custom Issuer_ URL so you can visit this URL and obtain values that are necessary when creating the IDCS application below. - -### Adding a new Application - -On your Oracle Cloud Applications Dashboard, find a button to add a new application. It should open the following pop-up: - -![](../../../../.gitbook/assets/addapplication.png) - -Select **SAML Application** to open the configuration wizard. - -### App Details - -![](../../../../.gitbook/assets/appdetails.png) - -The only information needed on this page is the application name and URL. The URL you need to use here is the same one that is set on the _Custom Issuer_ SAML configuration field on the Rocket.Chat settings. - -### SSO Configuration - -![](../../../../.gitbook/assets/ssoconfiguration.png) - -To get the values for those new settings, you need to access the same _Custom Issuer_ URL that you used on the previous page. It should show an XML file similar to the one below: - -![](../../../../.gitbook/assets/samplexmlconfiguration.png) - -On the **AssertionConsumerService** tag, you need to copy the value of the _Location_ attribute. Then paste this value on the _Assertion Consumer URL_ field on the Oracle Settings. On the **SingleLogoutService** tag, you need to copy the value of the _Location_ attribute, then paste it in the _Single Logout URL_ param of the Advanced Settings. On the same **SingleLogoutService** tag, you need to copy the value of the _ResponseLocation_ attribute, then paste it in the _Logout Response URL_ param of the Advanced Settings. - -Finally, the _Entity Id_ param receives the URL of the XML file itself \(same URL you used as the application URL\). - -Before clicking on **Finish**, click the **Download Identity Provider Metadata** button to download another XML file. - -### Rocket.Chat Settings - -![](../../../../.gitbook/assets/rocketchatsettings.png) - -There are two Rocket.Chat settings that need to be copied from the IDP Metadata you just downloaded: _Custom Entry Point_ and _IDP SLO Redirect URL_. - -For the first one, locate the tag **md:SingleSignOnService** and copy the value of the _Location_ attribute, \(ends with `/idp/sso`\). - -For the second param, locate the tag **md:SingleLogoutService** and copy the value of the _Location_ attribute \(ends with `/idp/slo`\). - -There may be multiple occurrences of those tags in the XML file, so make sure that the copied URLs end with `/idp/sso` and `/idp/slo` and not `/sp/sso` and `/sp/slo`. - -### Testing - -Everything should be properly configured now. You can now add users to your SAML Integration app on the Oracle Dashboard and then test the login on your Rocket.Chat instance. - diff --git a/guides/rocket.chat-administrator-guides/settings/saml/rocket.chat-server-settings.md b/guides/rocket.chat-administrator-guides/settings/saml/rocket.chat-server-settings.md deleted file mode 100644 index c74a277fc7..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/saml/rocket.chat-server-settings.md +++ /dev/null @@ -1,54 +0,0 @@ -# Rocket.Chat server settings - -### Custom Provider \(Suffix to SP entityID\) - -This is the unique name for your application as a Service Provider \(SP\) for SAML. Whatever you enter here produces a metadata XML file you need in order to populate the metadata your IdP \(Identity Provider\) requires. For example, if you put 'my-app', then your metadata will be at: - -`https://my-rocketchat-domain.tld/_saml/metadata/my-app` - -### Custom Entry Point \(IDP SSO Redirect URL\) - -This is the URL provided by your IdP for logging in. In SAML-terminology, it refers to the location \(URL\) of the SingleSignOnService with the Redirect binding \(urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\). - -### IDP SLO Redirect URL - -This is the URL provided by your IdP for logging out. In SAML-terminology, it refers to the location \(URL\) of the SingleLogoutService with the Redirect binding \(urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\). - -### Custom Issuer \(SP entityID\) - -The URI is the unique identifier of your service. By convention, this is also the URL of your \(unedited\) metadata. Again, where you set Custom Provider to 'my-app', this will be: - -`https://my-rocketchat-domain.tld/_saml/metadata/my-app` - -### Custom Certificate \(IDP Signing Certificate\) - -This is the public certificate for IdP providers used to verify SAML requests. Format for this is PEM without `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`. - -### Public Cert Contents \(SP Signing Certificate\) - -The public part of the self-signed certificate you created for encrypting your SAML transactions. [Example of self-signed certificate on the SimpleSAMLphp website here.](https://simplesamlphp.org/docs/stable/simplesamlphp-sp#section_1_1) - -Format for this is PEM WITH `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`. - -### Private Key Contents \(SP Signing Private Key\) - -The private key matches the self-signed certificate you created as PKCS\#1 PEM. Format for this is PEM WITH `-----BEGIN PRIVATE KEY-----` and `-----END PRIVATE KEY-----`. - -### SAML Assertion - -You must send the **Email** field in your assertion, or it doesn't work. When the email matches the existing user, it overwrites the user's username with the username value, if that is in your assertion. - -### SAML Encryption - -SAML Assertions encryption on **either** site might not work and cause signature validation to fail. See [\#10556](https://github.com/RocketChat/Rocket.Chat/issues/10556) for more up to date information on this issue. - -As a popular open-source IdP, SimpleSAMLphp can be used to provide an authentication endpoint for Rocket.Chat and the build-in SAML support. Assuming that you have a SimpleSAMLphp IdP up and running - [quickstart instructions here](https://simplesamlphp.org/docs/stable/simplesamlphp-idp), you can find the metadata for the Rocket.Chat SAML Service Provider \(SP\) here, where 'my-app' is whatever you put in the **Custom Provider** box in the Rocket.Chat SAML admin page: - -`https://my-rocketchat-domain.tld/_saml/metadata/my-app` - -1. Copy the XML on this page -2. Open the metadata converter page in your SimpleSAMLphp admin UI found at: `/admin/metadata-converter.php` -3. Paste the XML, and submit it -4. Copy the resulting PHP output to the file in your SimpleSAMLphp installation under metadata: `/metadata/saml20-sp-remote.php` -5. You should now see your SP on the SimpleSAMLphp Federation page, listed as a trusted SAML 2.0 SP at: `module.php/core/frontpage_federation.php` - diff --git a/guides/rocket.chat-administrator-guides/settings/saml/simple-saml-php.md b/guides/rocket.chat-administrator-guides/settings/saml/simple-saml-php.md deleted file mode 100644 index 1d270180ac..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/saml/simple-saml-php.md +++ /dev/null @@ -1,22 +0,0 @@ -# Simple SAML php - -As a popular open-source IdP, SimpleSAMLphp can be used to provide an authentication endpoint for Rocket.Chat and the build-in SAML support. Assuming that you have a SimpleSAMLphp IdP up and running - [quickstart instructions here](https://simplesamlphp.org/docs/stable/simplesamlphp-idp), you can find the metadata for the Rocket.Chat SAML Service Provider \(SP\) here, where 'my-app' is whatever you put in the **Custom Provider** box in the Rocket.Chat SAML admin page: - -`https://my-rocketchat-domain.tld/_saml/metadata/my-app` - -1. Copy the XML on this page -2. Open the metadata converter page in your SimpleSAMLphp admin UI found at: `/admin/metadata-converter.php` -3. Paste the XML, and submit it -4. Copy the resulting PHP output to the file in your SimpleSAMLphp installation under metadata: `/metadata/saml20-sp-remote.php` -5. You should now see your SP on the SimpleSAMLphp Federation page, listed as a trusted SAML 2.0 SP at: `module.php/core/frontpage_federation.php` - -## IdP Attribute Mapping - -Use the following attributes required to return user information to Rocket.Chat: - -| Idp Returned Attribute Name | Usage | -| :--- | :--- | -| cn | User's Full Name | -| email | User's Email Address | -| username | User's username | - diff --git a/guides/rocket.chat-administrator-guides/settings/setup-wizard.md b/guides/rocket.chat-administrator-guides/settings/setup-wizard.md deleted file mode 100644 index 931428894b..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/setup-wizard.md +++ /dev/null @@ -1,4 +0,0 @@ -# Setup Wizard - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/slackbridge.md b/guides/rocket.chat-administrator-guides/settings/slackbridge.md deleted file mode 100644 index 293e957799..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/slackbridge.md +++ /dev/null @@ -1,4 +0,0 @@ -# SlackBridge - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/smarsh.md b/guides/rocket.chat-administrator-guides/settings/smarsh.md deleted file mode 100644 index 0695228caf..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/smarsh.md +++ /dev/null @@ -1,4 +0,0 @@ -# Smarsh - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/sms.md b/guides/rocket.chat-administrator-guides/settings/sms.md deleted file mode 100644 index ef167bb5fd..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/sms.md +++ /dev/null @@ -1,4 +0,0 @@ -# SMS - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/threads.md b/guides/rocket.chat-administrator-guides/settings/threads.md deleted file mode 100644 index 0a17c0b394..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/threads.md +++ /dev/null @@ -1,4 +0,0 @@ -# Threads - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/troubleshoot.md b/guides/rocket.chat-administrator-guides/settings/troubleshoot.md deleted file mode 100644 index 0ccd7ae7c4..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/troubleshoot.md +++ /dev/null @@ -1,4 +0,0 @@ -# Troubleshoot - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/untitled.md b/guides/rocket.chat-administrator-guides/settings/untitled.md deleted file mode 100644 index 2e473a8c62..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/untitled.md +++ /dev/null @@ -1,4 +0,0 @@ -# Search - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/user-data-download.md b/guides/rocket.chat-administrator-guides/settings/user-data-download.md deleted file mode 100644 index 5da92bee20..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/user-data-download.md +++ /dev/null @@ -1,4 +0,0 @@ -# User Data Download - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/video-conference.md b/guides/rocket.chat-administrator-guides/settings/video-conference.md deleted file mode 100644 index 432429f2ea..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/video-conference.md +++ /dev/null @@ -1,4 +0,0 @@ -# Video Conference - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/webdav-integration.md b/guides/rocket.chat-administrator-guides/settings/webdav-integration.md deleted file mode 100644 index 50b6295ddf..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/webdav-integration.md +++ /dev/null @@ -1,4 +0,0 @@ -# Webdav Integration - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/webrtc.md b/guides/rocket.chat-administrator-guides/settings/webrtc.md deleted file mode 100644 index 4db72b1a1d..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/webrtc.md +++ /dev/null @@ -1,4 +0,0 @@ -# WebRTC - -Document Under Development - diff --git a/guides/rocket.chat-administrator-guides/settings/youtube-broadcasting.md b/guides/rocket.chat-administrator-guides/settings/youtube-broadcasting.md deleted file mode 100644 index af8b229424..0000000000 --- a/guides/rocket.chat-administrator-guides/settings/youtube-broadcasting.md +++ /dev/null @@ -1,20 +0,0 @@ -# Livestream & Broadcasting \(Youtube\) - -> Please note that this feature will only be available from versions 0.66 and forward. - -This feature adds an integration between Rocket.Chat and Youtube Live, when enabled and set up, your channel owners will be able to broadcast their camera feed live to the Livestream feature which allows all users on the channel to watch a common stream. - -## Configuration - -The Broadcasting feature can only be used with the Livestream Tab feature. - -You can find the settings for this feature on `Livestream & Broadcasting` in the admin panel. - -If you set the `Broadcasting Enable` setting to false, users wont be able to create live streams using their webcams, but will still be able to link a live stream from youtube. - -_Currently the admin needs a valid Google app with access to the Youtube API to use youtube live integration \(More details on the_ [_Google Developer page_](https://developers.google.com/youtube/v3/)_\), this will allow the administrator to have a valid API Key, Client ID & Secret which are used on the Broadcasting feature._ - -## Livestream tab - -After a correct set up, the Livestream tab will now allow you to Broadcast your camera when editing the source url. When opening the popout, it might take a moment while we prepare the broadcast and livestream for your session, this will be indicated by the blinking icon and "Preparing" status displayed in the control bar. After that initial phase, the broadcast will be Ready and available to start with your click. - diff --git a/guides/roles-in-rocket.chat/README.md b/guides/roles-in-rocket.chat/README.md deleted file mode 100644 index e741247563..0000000000 --- a/guides/roles-in-rocket.chat/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Roles in Rocket.Chat - diff --git a/guides/roles-in-rocket.chat/marketplace-roles.md b/guides/roles-in-rocket.chat/marketplace-roles.md deleted file mode 100644 index 09d56a113b..0000000000 --- a/guides/roles-in-rocket.chat/marketplace-roles.md +++ /dev/null @@ -1,38 +0,0 @@ -# Marketplace Roles - -With the most recent release of Marketplace, we have introduced roles. Internally, we have two different roles; one within the publisher and the second within the system. Henceforth known as publisher roles and system roles. - -## Publisher Roles - -There are three different roles within a Publisher. - -* Owner -* Developer -* Viewer - -as shown below: - -![](../../.gitbook/assets/image%20%28446%29%20%282%29.png) - -The Owner role is applied whenever someone creates a publisher. Each of the subsequent roles only applies to people they have invited. - -### Publisher: Owner - -The owner can do everything. - -An owner can change the role of another user, as shown below: - -![](../../.gitbook/assets/image%20%28459%29.png) - -![](../../.gitbook/assets/image%20%28457%29.png) - -### Publisher: Developer - -The developer can read everything. However, the developer role can also update Apps \(can not create them, that requires an Owner\). - -### Publisher: Viewer - -The viewer role can read everything but can not update anything. - - - diff --git a/guides/security/README.md b/guides/security/README.md deleted file mode 100644 index 57325975a8..0000000000 --- a/guides/security/README.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -description: Rocket.Chat Security Documentation ---- - -# Security and Compliance Guides - -### One-Stop-Shop - -Here you can find all Rocket.Chat security- and compliance-related Documentation with links to the different sections to navigate our documentation more efficiently. - -If you still have questions, feel free to reach out to [security@rocket.chat](mailto:security@rocket.chat) - -## Product-related security information - -Security is built-in myriads of features in Rocket.Chat. Detailed information about each of the security features of our product can best be found via the **search** function of our Docs section. Use keywords \(e.g. OAuth, LDAP, Encryption\) to narrow your search. - -We have compiled summaries of important security aspects on the pages below: - -### Learn more - -* [Compliance Resources, including certifications](compliance-resources.md) like ISO 27001 to help your organization to determine, if Rocket.Chat fits your needs. -* [Security fixes and update](https://docs.rocket.chat/guides/security/security-updates) - an overview of vulnerabilities that have recently been closed and in which versions. -* [End-to-End Encryption Specifications](https://docs.rocket.chat/guides/security/end-to-end-encryption-algorithms) - an overview of our algorithms and functionality. - -## Outside Resources - -Below are related resources in other sections of Rocket.Chat's Documentation. - -### Security Features Overview - -* [Security Solutions](https://rocket.chat/security) - features, testimonials, and use cases on how Rocket.Chat can help you to secure your data. - -### Privacy - -* [Privacy Policy](https://rocket.chat/privacy) - how we process personal data. -* [Terms of Service](https://rocket.chat/terms) - legal documentation on how we provide services to you \(e.g. push notifications, etc.\). -* [GDPR](https://rocket.chat/gdpr) - a special page dedicated to GDPR requirements we implemented in 2018. - -### Community - -* [Report Vulnerabilities](https://docs.rocket.chat/contributing/security/) - how to best let us know about the security vulnerabilities you have found. -* [Code of Conduct](https://rocket.chat/code-of-conduct) - rules that apply to our servers. -* [White Hat Hall of Fame](https://docs.rocket.chat/contributors/contributing/security#whitehat-hall-of-fame) - famous contributors that made Rocket.Chat even more secure. - -### Rocket.Chat Handbook - -* [Company Security Policy](https://rocket.chat/handbook/operations/security-policy/) - how we ourselves do security internally. - diff --git a/guides/security/end-to-end-encryption-algorithms.md b/guides/security/end-to-end-encryption-algorithms.md deleted file mode 100644 index a74cb5448e..0000000000 --- a/guides/security/end-to-end-encryption-algorithms.md +++ /dev/null @@ -1,199 +0,0 @@ ---- -description: >- - The following contains an overview of the implemented mechanisms of the - Rocket.Chat End to End Encryption feature. It provides technical information - and supplements the user guide. ---- - -# End-to-End Encryption Specifications - -## Encryption Process Overview - -{% hint style="info" %} -End-to-end encryption and its related features \(as listed below\) are currently in beta mode. If you come across problems and areas for improvement, please submit an issue in Github. -{% endhint %} - -Upon login, the client auto-generates the encryption password and asks the user to save it. This password is used to generate a secure 256-bit **AES-CBC** encryption key, called “**Master** **Key.**” - -For using end-to-end encryption \(**E2EE**\), the client \(**C**\) of a user \(**U**\) needs to have a Public-Private key pair \(**Ku, Kr**\). This key pair is generated when the user logs in with a client for the first time. The public key is sent to the server and stored in the database in the User model. The private key is first encrypted using the Master key and then sent to the server for storing in the User model database. If a public-private key pair already exists in the database for the user, instead of generating it again, it is downloaded from the server. The downloaded public key is used as-is, and the encrypted private key is first decrypted using the master key. If the master key has not been decrypted client-side already, the user is prompted to enter the master key again. - -The public key is used to encrypt a persistent session key \(**Ks**\), which is then used for the actual encryption of messages and files. This encrypted session key is stored in the database, in the Subscription model for every user in a room \(including the user who initiates the **E2EE** session\). Note that this method works for direct messages as well as groups since direct messaging is just a room with only two people in it. - -When starting a new **E2EE** session, first, if an existing session key exists in the room subscription of the current user, it is downloaded and decrypted using the user’s private key and then used to encrypt future messages. In case an existing session key is not found in the database, a new session key is generated by the current user and then stored in the database encrypted for every user in the room. - -Once a session key has been obtained in the above manner, we enter **E2EE** mode, and all messages sent henceforth are encrypted using this session key. - -Because keys are stored in the database and are persistent, the other users in the room do not need to be online to participate in an **E2EE** conversation. - -## Code - -The relevant code for E2EE is located in - -\(rocket.chat/app/e2e/client\) [_https://github.com/RocketChat/Rocket.Chat/tree/2bf8edab056dbc5e0d40aeae2c4472f729ec09d9/app/e2e/client_](https://github.com/RocketChat/Rocket.Chat/tree/2bf8edab056dbc5e0d40aeae2c4472f729ec09d9/app/e2e/client)\_\_ - -_\(rocket.chat/app/e2e/client\)_ [https://github.com/RocketChat/Rocket.Chat/tree/2bf8edab056dbc5e0d40aeae2c4472f729ec09d9/app/e2e/client](https://github.com/RocketChat/Rocket.Chat/tree/2bf8edab056dbc5e0d40aeae2c4472f729ec09d9/app/e2e/client) -**And** -[https://github.com/RocketChat/Rocket.Chat/blob/2bf8edab056dbc5e0d40aeae2c4472f729ec09d9/app/e2e/client/helper.js ](https://github.com/RocketChat/Rocket.Chat/blob/2bf8edab056dbc5e0d40aeae2c4472f729ec09d9/app/e2e/client/helper.js)[https://github.com/RocketChat/Rocket.Chat/blob/2bf8edab056dbc5e0d40aeae2c4472f729ec09d9/app/e2e/client/helper.js](https://github.com/RocketChat/Rocket.Chat/blob/2bf8edab056dbc5e0d40aeae2c4472f729ec09d9/app/e2e/client/helper.js) - -contains the technical specifications of the implementation of E2EE. - -## Algorithms Used - -Specifically, **E2EE** uses: - -`- client key pair: RSA-OAEP, length 2048` - -`- master key: AES-CBC, length 256, iterations: 1000` - -`- session key: AES-CBC, length 128` - -## Architectural Specifications - -1. **User Login:** As soon as the user logs in, we ask for their “**E2E** **password**”. Using this password with a **PBKDF** \(Password-based Key Derivation Function\), we generate a “Master Key.” We then check the server database for whether a public-private key pair exists for this user. If it does, we download that key pair. The public key is used as-is. The private key is in encrypted form and will be decrypted using the master key before it can be used. -2. **Client Startup:** Using _`startClient()`_ in `rocketchat.e2e.js`, check the local storage of the client to determine whether this is a new client or not. If local storage does not have the public-private key pair for this client, then this is treated as a new client, and this RSA-OAEP key pair is generated using a function call to: `crypto.subtle.generateKey({name: 'RSA-OAEP', modulusLength: 2048, publicExponent: new Uint8Array([0x01, 0x00, 0x01]), hash: {name: 'SHA-256'}}, true, ['encrypt', 'decrypt']);` This key pair is finally stored in the client’s local storage in a serialized form \(JSON-stringified\). This serial form of the public key and encrypted private key is also sent over to the server database using a server-method call to `addKeyToChain()`. -3. The client starts the encryption session from the E2E flex tab button: The handshake\(\) function in rocketchat.e2e.room.js is called for the room where the client started the session. First, try fetching an encrypted session key from the subscription for this user-room pair from the database. If this key is found, decrypt this using the client’s private key, and the **E2EE** session is started using this decrypted key. If the user’s subscription to this room does not contain a key, generate a new AES-CBC session key for use. This is done by a function call to: `RocketChat.E2E.crypto.generateKey({name: 'AES-CBC', length: 128}, true, ['encrypt', 'decrypt'])` Once a key has been generated, it has to be stored, encrypted in the subscriptions of all users in the current room. This is done by: Fetch public keys for all users in the room using server-method calls to `getUsersOfRoom()` and `fetchKeychain()`. One by one, encrypt the newly generated session key using each of these public keys, and store this encrypted key in the corresponding user’s subscription to this room using a server-method call to `updateGroupE2EKey()`. **E2EE** session is now started using the generated session key. 4. Client sends a message: Making use of the `onClientBeforeSendMessage` event when the user sends the message, the message object is encrypted using the session key obtained in the previous step when **E2E** is in session. This encrypted message is wrapped in another object, in a “msg” parameter, and a new parameter for type, called “t”, is added to this new object with the value “**e2e**” to distinguish it from a regular message. Thus, the new object becomes: - -`final_message: {` - -`msg: <encrypted_message>,` - -`T: “e2e” }` -This new object is sent to the other client. Note that the original message is not visible to anyone, and only the encrypted message is sent. - -1. The client receives a message: When a message object is received, using the \``onClientMessageReceived` event, we intercept it and check whether the “t” type parameter of the message object is “**e2e**”, like we set when sending the message. If it is not, we don't need to decrypt it as it is a plaintext message, and **E2EE** was not used. If it is an encrypted message, we take the “msg” parameter’s value and decrypt that message using the session key. - - Note that if the receiving client does not have the session key in its local storage, it will have to download the encrypted session key from the server using the `fetchGroupE2EKey`\`method, and then decrypt it using its own private key, and then use this key for decryption of the incoming message. - -## Server Methods - -### 1. `addKeyToChain(key)` - -For saving a newly generated public key to the database for the current user. -**Request:** - -`key = {` - -`RSA-PubKey: “< The generated public key for a client>”,` - -`RSA-EPrivKey: “<` **\`\`**`Generated private key, encrypted using the master key>”` - -`}` - -The keys have been converted from ArrayBuffer to String format before sending them. - -**Response:** null - -### 2. fetchGroupE2EKey\(rid\) - -For fetching the encrypted session key for a conversation, for the current user. - -**Request:** - -`rid = The room id of a conversation` \(either of direct or private\). - -**Response:** - -The **E2EE** session key for the current user for that conversation. - -### 3. fetchKeychain\(userId\) - -For fetching the public key of a user \(to be used for encrypting the session key for that user\). - -**Request:** - -`userId = The id of a user` - -**Response:** - -`{` - -`RSA-PubKey: “< The public key for that user>”,` - -`RSA-EPrivKey: “< The private key, encrypted using the master key>”` - -`}` - -### 4. updateGroupE2EKey\(rid, uid, key\) - -For saving an encrypted session key to the database for a user. - -**Request:** - -`rid = The room id of a conversation (either of direct or private)` - -`uid = The id of a user` - -`key = The E2EE Session key for that user, for that conversation` - -**Response:** - -`{ RocketChat subscription object }` - -### 5. emptyKeychain\(\) - -Clears out the current user’s public and encrypted private keys from the server database. - -**Request:** {} - -**Response:** {} - -### 6. fetchMyKeys\(\) - -Fetches current user’s public and encrypted private keys from the server database. - -**Request:** {} - -**Response:** - -`{` - -`RSA-PubKey: “<The public key for current user>”,` - -`RSA-EPrivKey: “<The private key, encrypted using the master key>”` - -`}` - -## REST API routes for encryption-related requests - -Each route directly corresponds to one server DDP method described above. These routes follow the same naming system as the DDP methods described above. Please refer to the above description to know more about the individual request/response pairs for each route. - -`GET e2e.fetchGroupE2EKey(rid)` - -`GET e2e.fetchKeychain(uid)` - -`GET e2e.fetchMyKeys()` - -`POST e2e.addKeyToChain(RSAPubKey, RSAEPrivKey)` - -`POST e2e.emptyKeychain()` - -`POST e2e.updateGroupE2EKey(uid, rid, key)` - -## Push Notifications of End-to-End encrypted messages - -Push Notifications for messages of an E2EE room just contain the encrypted payload of a message, the job of decrypting this content before shown is done locally by the mobile clients \(iOS/Android\). - -### Process - -The server sends Push notifications. The server, however, doesn't store the unencrypted content of any message from an E2EE room, because only the encrypted string is stored on the server. These encrypted strings can only be decrypted using the private key of a user that is stored locally on clients. - -When a new push notification from a E2EE message arrives, it has a messageType: '`e2e`'. The mobile client then starts decrypting the message, within the push payload, checking for the locally stored private key of a user and the E2EE key of the room that the message came from. If both are found, the message is decrypted locally on the device and then shows the plaintext message. In this process, only the encrypted message content passed via the push notification gateways. - -This feature is available in our **Community Edition.** - -### Fetching full message content from the server on receipt \(Enterprise Edition only\) - -To add an additional layer of security, there exists another feature for push notifications: - -`Fetch full message content from the server on receipt` - -This means to request the push message content from the server to display it, and it does not pass any message content - encrypted or not - via Google/Apple/other push gateways. Instead, the message content itself is fetched by and within the Rocket.Chat client itself. What passes via the gateways is only the information that a new message should be fetched and then shown as a push notification. Once the client receives this, the client will fetch the content. This way, you can prevent that the message content \(even in encrypted form\) passes via a separate gateway. - -Note: This feature is **Enterprise Edition only**. - -## Off-the-record Messaging \(OTR\) encryption specifications - -OTR is closely related to End-to-End-Encryption. It uses the same ciphers but instead uses only the participant´s local session storage to store the keys. - -Keys are exchanged when the OTR invitation is accepted by the counterpart, that is why all participants need to be online. Messages from an OTR session are removed when the session storage is cleared. - diff --git a/guides/security/security-updates.md b/guides/security/security-updates.md deleted file mode 100644 index 2495789b40..0000000000 --- a/guides/security/security-updates.md +++ /dev/null @@ -1,284 +0,0 @@ -# Security fixes and updates - -This page includes regular updates about recently patched security issues in Rocket.Chat. - -Do you want to report a security issue yourself? Please have a look at our [Responsible Disclosure Policy](https://docs.rocket.chat/contributors/contributing/security#if-you-find-a-security-issue). We appreciate your reports. - -New issues are listed below, at first without details to give administrators and users sufficient time to upgrade. Details to the issue are added in with the next version release, e.g.: fixes introduced in version x.1 will be added when version x.2 is available. - -{% hint style="info" %} -Providing fixes for legacy versions of Rocket.Chat becomes increasingly difficult due to the code differences, which is why we focus on providing fixes for the most recent versions only. Please see our [support policy](https://docs.rocket.chat/getting-support), which outlines our supported versions. -{% endhint %} - -Please make sure to follow new version updates by subscribing to our newsletters or activating the announcement feature for new releases directly in the Rocket.Chat server administration settings. We recommend updating to the newest version as soon as possible to always have the newest security fixes. - -**Issues** - -{% hint style="warning" %} -**0034 - Medium Severity issue** fixed at **2021-07-13.** - -Rocket.Chat Server - affects **all,** fixed on **3.14.6, 3.15.4, 3.16.3** - -_Details about this security fix will be provided later as per our responsible disclosure policy. \(reference:_ 3t33pd\) -{% endhint %} - -{% hint style="warning" %} -**0033 - Medium Severity issue** fixed at **2021-07-13.** - -Rocket.Chat Server - affects **all,** fixed on **3.14.6, 3.15.4, 3.16.3** - -_Details about this security fix will be provided later as per our responsible disclosure policy. \(reference:_ 5nc7fh\) -{% endhint %} - -{% hint style="warning" %} -**0032 - Medium Severity issue** fixed at **2021-07-13.** - -Rocket.Chat Server - affects **all,** fixed on **3.14.6, 3.15.4, 3.16.3** - -_Details about this security fix will be provided later as per our responsible disclosure policy. \(reference:_ 2x348d\) -{% endhint %} - -{% hint style="danger" %} -**0031 - High Severity issue** fixed at **2021-05-28.** - -Rocket.Chat Server - affects **all,** fixed on **3.12.7, 3.13.5, 3.14.4** - -_\(**XSS**\) An issue with the HTML sanitizer could be exploited, leading to potential Cross-Site-Scripting. \(reference:_ 4bak1j\) -{% endhint %} - -{% hint style="warning" %} -**0030 - Medium Severity issue** fixed at **2021-05-24.** - -Rocket.Chat Server - affects **all,** fixed on **3.12.6, 3.13.4, 3.14.2** - -_\(**SSRF**\) A method could be called without authentication, leading to potential Server-side Request Forgery. \(reference:_ 317v72\) -{% endhint %} - -{% hint style="danger" %} -**0029 - High Severity issue** fixed at **2021-05-24.** - -Rocket.Chat Server - affects **all,** fixed on **3.12.6, 3.13.4, 3.14.2** - -_\(**XSS**\) An improperly used front-end library together with a validation bypass in a function could be exploited, leading to potential Cross-Site-Scripting . \(reference:_ 79y67r\) -{% endhint %} - -{% hint style="danger" %} -**0028 - High Severity issue** fixed at **2021-05-24.** - -Rocket.Chat Server - affects **all,** fixed on **3.12.6, 3.13.4, 3.14.2** - -_\(**RCE**\) An API endpoint was vulnerable to NoSQL-injection attacks, leading to potential Remote Code Execution. \(reference:_ 3v29b6\) -{% endhint %} - -{% hint style="warning" %} -**0027 - Medium Severity issue** fixed at **2021-05-24.** - -Rocket.Chat Server - affects **all,** fixed on **3.12.6, 3.13.4, 3.14.2** - -_\(**IDOR**\) An IDOR vulnerability could be used to export data of other users. \(reference:_ 6tr8jg\) -{% endhint %} - -{% hint style="danger" %} -**0026 - Critical Severity issue** fixed at **2021-04-14.** - -Rocket.Chat Server - affects **all,** fixed on **3.13.2, 3.12.4, 3.11.4** - -_\(**NoSQL injection**\) An unauthenticated method could be exploited for a potential NoSQL injection, resulting in potential account takeover. \(reference:_ 3v299a\) -{% endhint %} - -{% hint style="danger" %} -**0025 - Critical Severity issue** fixed at **2021-04-14.** - -Rocket.Chat Server - affects **all,** fixed on **3.13.2, 3.12.4, 3.11.4** - -_\(**NoSQL injection**\) An authenticated endpoint could be exploited for a potential NoSQL injection, resulting in potential account takeover. \(reference:_ 3v29b6\) -{% endhint %} - -{% hint style="danger" %} -**0024 - Critical Severity issue** fixed at **2021-04-14.** - -Rocket.Chat Live.Chat - affects **all,** fixed on **3.13.2, 3.12.4, 3.11.4** - -_\(**XSS**\) An improper input sanitization in the livechat widget could be exploited for an XSS attack. Variation of 0023. \(reference:_ 3h5cty\) -{% endhint %} - -{% hint style="danger" %} -**0023 - High Severity issue** fixed at **2021-03-26.** - -Rocket.Chat Live.Chat - affects **all,** fixed on **3.13, 3.12.2, 3.11.3** - -_**\(XSS**\) An improper input sanitization in the livechat widget could be exploited for an XSS attack. \(reference:_ 3h5cty\) -{% endhint %} - -{% hint style="info" %} -**022 - Low Severity issue** fixed at **2021-03-26** - -Rocket.Chat Server - affects **all,** fixed on **3.13, 3.12.2, 3.11.3** - -_\(**Self-XSS\)** An issue with SVG files not being sanitized allowed for potential self XSS. \(reference:_ 98bfae\) -{% endhint %} - -{% hint style="info" %} -**0021 - Low Severity issue** fixed at **2021-03-26.** - -Rocket.Chat Server - affects **all,** fixed on **3.13, 3.12.2, 3.11.3** - -_\(**Email enumeration\)** An issue with an API method allowed for potential email enumeration. \(reference:_ 6tr8gn\) -{% endhint %} - -{% hint style="warning" %} -**0020 - Medium Severity issue** fixed at **2021-03-26.** - -Rocket.Chat Server - affects **all,** fixed on **3.13, 3.12.2, 3.11.3** - -_\(**ReDOS\)** An issue with certain regular expressions could lead potentially to Denial of Service. \(reference:_ 2q6wxz\) -{% endhint %} - -{% hint style="warning" %} -**0019 - Medium Severity issue** fixed at **2021-02-27.** - -Rocket.Chat Server - affects **all,** fixed on **3.12, 3.11.2, 3.10.6** - -_\(**Authentication\)** An authentication issue allowed adding users to rooms without proper authorization. \(reference:_ 330zt5_\)_ -{% endhint %} - -{% hint style="danger" %} -**0018 - Critical Severity issue** fixed at **2021-02-27.** - -Rocket.Chat Server - affects **all,** fixed on **3.12, 3.11.2, 3.10.6** - -**\(SAML\)** A race condition in the SAML implementation could be exploited by an attacker. An issue with the token syntax could be exploited. \(reference: 397ymy\) -{% endhint %} - -{% hint style="info" %} -**0017 - Low Severity issue** fixed at **2021-02-27.** - -Rocket.Chat Server - affects **all,** fixed on **3.12, 3.11.2, 3.10.6** - -_\(**Self-XSS\)** A sanitization issue could be exploited for a Self-XSS exploit._ -{% endhint %} - -{% hint style="warning" %} -**0016 - Medium Severity issue** fixed at **2021-01-26.** - -Rocket.Chat Server / LiveChat - affects **all,** fixed on **3.11, 3.10.5, 3.9.7, 3.8.8.** - -**\(Authentication\)** An issue with the Live Chat could potentially allow a user without the proper permission to modify a setting. -{% endhint %} - -{% hint style="danger" %} -**0015 - Critical Severity issue** fixed at **2021-01-26.** - -Rocket.Chat Server / LiveChat - affects **all,** fixed on **3.11, 3.10.5, 3.9.7, 3.8.8.** - -**\(Authentication\)** An issue with the Live Chat accepting invalid parameters could potentially allow unauthenticated access to messages and user tokens. -{% endhint %} - -{% hint style="danger" %} -**0014 - High Severity issue** fixed at **2021-01-26.** - -Rocket.Chat Server - affects **all,** fixed on **3.11, 3.10.5, 3.9.7, 3.8.8.** - -**\(XSS\)** An issue with the message parser could potentially lead to XSS. -{% endhint %} - -{% hint style="warning" %} -**0013 - Medium Severity issue** fixed at **2021-01-26.** - -Rocket.Chat Server - affects **all,** fixed on **3.11, 3.10.5, 3.9.7, 3.8.8.** - -**\(XSS\)** An issue with the rendering of the user profile could potentially lead to XSS. -{% endhint %} - -{% hint style="info" %} -**0012 - Low Severity issue** fixed at **2021-01-26.** - -Rocket.Chat Server - affects **all,** fixed on **3.11, 3.10.5, 3.9.7, 3.8.8.** - -**\(System Information Disclosure\)** A method was removed, that could be called by unauthenticated users to potentially gather information about the target host. -{% endhint %} - -{% hint style="info" %} -**0011 - Low Severity issue** fixed at **2021-01-26.** - -Rocket.Chat Server - affects **all,** fixed on **3.11, 3.10.5, 3.9.7, 3.8.8.** - -**\(User enumeration\)** A method could be called by unauthenticated users, potentially leading to user enumeration. -{% endhint %} - -{% hint style="danger" %} -**0010 - High Severity issue** fixed at **2021-01-26.** - -Rocket.Chat Server - affects **all,** fixed on **3.11, 3.10.5, 3.9.7, 3.8.8.** - -**\(Authentication\)** An issue with invite-tokens could allow unauthenticated users to guess a valid invite token. -{% endhint %} - -{% hint style="warning" %} -**0009 - Medium Severity issue** fixed at **2021-01-26** - -Rocket.Chat Server - affects **all,** fixed on **3.11, 3.10.5, 3.9.7, 3.8.8.** - -**\(Information Disclosure\)** An issue with a real time method could lead to leakage of message IDs. -{% endhint %} - -{% hint style="danger" %} -**0008 - High Severity issue** fixed at **2021-01-26** - -Rocket.Chat Server - affects **all,** fixed on **3.11, 3.10.5, 3.9.7, 3.8.8.** - -**\(Information Disclosure\)** An issue with the return of a real time method could lead to unauthorized leaks of message content. -{% endhint %} - -{% hint style="warning" %} -**0007 - Medium Severity issue** fixed at **2020-11-28** -Rocket.Chat Server - affects **all,** fixed on **3.9.** -\(**Self-XSS**\) An issue with the drag and drop functionality was fixed that - under certain circumstances - could be used as part of possible self-xss attack_._ - -Thanks a lot to Jorge Cardona for reporting this. - -CVE-ID: CVE-2020-8292 __ -{% endhint %} - -{% hint style="danger" %} -**0006 - Critical Severity issue** fixed at **2020-12-18** -Rocket.Chat Server - affects **1.x, 2.x**, **3.x,** fixed on **3.9.3 / 3.8.4 / 3.7.4 / 2.4.14 / 1.3.5** -**\(XSS\)** A vulnerability in the message renderer was fixed that allowed for possible XSS attacks. More details [here](https://rocket.chat/xss-vulnerability-hotfix-available-for-all-affected-versions). - -CVE-ID: __CVE-2020-8288 -{% endhint %} - -{% hint style="danger" %} -**0005 - Critical Severity issue** fixed at **2020-12-05** -Rocket.Chat Server - affects **0.x, 1.x, 2.x**, **3.x,** fixed on **3.9.1 / 3.8.3 / 3.7.3 / 2.4.13 / 1.3.4 / 0.74.4** -**\(Authentication bypass\)** A SAML vulnerability was fixed that allowed adding custom SAML providers. More details [here](https://rocket.chat/saml-security-hotfix-available/). - -CVE-ID: CVE-2020-29594 -{% endhint %} - -{% hint style="danger" %} -**0004 - High Severity issue** fixed at **2020-10-01** -Rocket.Chat Desktop Client - affects **2.x**, ****fixed on **3.0** -**\(RCE\)** Fixed via context isolation an issue where link preload could be used to execute code. -{% endhint %} - -{% hint style="danger" %} -**0003 - High Severity issue** fixed at **2020-08-29** -Rocket.Chat Server - affects **3.4.x**, ****fixed on **3.6** -**\(RCE\)** Fixed an issue where discussion messages could be used to insert and execute code. -{% endhint %} - -{% hint style="info" %} -**0002 - Low Severity issue** fixed at **2020-08-29** -Rocket.Chat Server - affects **3.x**, ****fixed on **3.6** -Added a missing X-Frame Options Header in the admin -{% endhint %} - -{% hint style="danger" %} -**0001 - High Severity issue** fixed at **2020-07-25** -Rocket.Chat Server - affects **3.4.x**, ****fixed on **3.5** and **3.4.2** -**\(RCE\)** Fixed an issue where thread starting messages could be used to insert and execute code. Thanks to Pawel Wylecial of [REDTEAM](http://redteam.pl/)_.PL_ -{% endhint %} - - - diff --git a/guides/user-guides/README.md b/guides/user-guides/README.md deleted file mode 100644 index 1bb03b1ea4..0000000000 --- a/guides/user-guides/README.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -description: End-user Training Guides ---- - -# User Guides - diff --git a/guides/user-guides/channels/README.md b/guides/user-guides/channels/README.md deleted file mode 100644 index 6e960bc9f0..0000000000 --- a/guides/user-guides/channels/README.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -description: >- - Conversations in Rocket.Chat occur in channels. Channels are chat rooms with - useful features designed to increase communication and collaboration. ---- - -# Channels - -Following is the channels's symbol: - -![](../../../.gitbook/assets/image%20%28415%29.png) - -## Listing channels - -Find public and private channels that you are watching in the left sidebar under the **Channels** sections. - -Public channels are represented by a hash symbol next to the channel name, and private channels by a lock. Public channels appear first above private channels below them and alphabetically ordered. - -### Unread messages - -Channels with new messages appear bolded. - -When using the **Unread Mode**, a new section called **Unread** appears on the left sidebar. All channels with unread messages move to this new section until the messages have been reads. - -To activate Unread Mode, go to **My Account**> **Preferences**. Change the **Sidebar channel list mode** setting to **Unread Rooms Mode**. - -### Mentions - -When someone mentions you with `@username`, `@all` or `@here`, a symbol or a number will appear alongside the channel name. When mentioned, an `@` symbol appears next to your name. If someone mentions `@all` or `@here` a number will show up showing the number of times the mention is specific to you. - -### Notifications Preferences - -There are several notification settings a user can customize to channels. To find notification settings for a specific channel, go to the channel and click the **More** symbol at the top-right of the chat view. Then, select **Notification Preferences**. - -* **Mute/Receive alerts:** Receive or mute any notifications from a channel. -* **Mute/Receive mentions:** Receive or mute notifications for mentions while receiving notifications for messages in a channel. -* **Hide/Show counter:** Show the number of unread messages for a channel. -* **Notification sound:** Choose a sound for notifications besides the alerts default **Desktop**. Mobile currently supports only the alerts inside your mobile device. You can also select when to play the alert, duration of the alert, and the alert itself. - -> There are some default choices for audio provided by Rocket.Chat. However, you also get to choose custom audio files for the same. Get further information about [Custom Sounds](../../administration/administration/custom-sounds.md). - -## Joining new channels and starting direct messages - -There are three ways of joining a public channel; through search, invites, or mentions. - -For starting a direct message, you can either search the user you want to talk or click on that user's avatar and click on the **Conversation Button**. - -To search for channels and users, use the search bar under your account box. Alternatively you can press Ctrl/Cmd + k to access the search bar quickly. - -A search will find channels \(including the ones you are part of\) and users. You can not search inside private channels. - -When you click on a search result, the following can happen: - -* If the result is a channel, and you already aren't part of it, you will join that channel; -* If the result is a user, you will start a direct message with that user; - -## Leaving channels - -There are two options for leaving a channel: - -1. **Hide:** Remain a member of the channel but remove it from your list of channels on the left-hand pane. -2. **Leave:** Remove the channel your list of channels and abdicate membership. - -Every channel has an **owner**, and the owner of a channel cannot leave a channel until setting someone else as the owner of that channel. - -To leave a channel, enter the command `/part` or `/leave` in the message window. Alternatively, hover your mouse over the channel in the list of channels on the left-hand side and click on the **leave channel** button. - -To hide a channel, hover your mouse over the channel in the list of channels on the left-hand side and click on the **hide channel** button. - -## Creating Channels - -A pop-up opens. - diff --git a/guides/user-guides/channels/channel-actions/README.md b/guides/user-guides/channels/channel-actions/README.md deleted file mode 100644 index 86b7969be9..0000000000 --- a/guides/user-guides/channels/channel-actions/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Channel Actions - -Inside channels, you can also do more than post messages and upload files. Increase your interaction with messages through Channel actions. - -## Find channel actions - -To find channel actions, go to the right of the channel title and click the menu. - -{% hint style="info" %} -Channel actions vary depending on the server configuration, so the items listed below might not all be visible in your installation. -{% endhint %} - diff --git a/guides/user-guides/channels/channel-actions/channel-info.md b/guides/user-guides/channels/channel-actions/channel-info.md deleted file mode 100644 index 42c0b295a7..0000000000 --- a/guides/user-guides/channels/channel-actions/channel-info.md +++ /dev/null @@ -1,15 +0,0 @@ -# Channel Info - -Here you can see all kinds of information about the current channel. If you admin permissions, you can edit this information. These are the channel info options: - -* **Channel Name**: The channel's name, how users see the title and find the channel via search. -* **Topic**: The topic shows next to the title on the channel header. Great for giving more info about the channel. -* **Announcement**: Announcements post in a bar under the channel header. -* **Description**: The description of the channel. -* **Private**: Tells whether a channel is private and can set the channel to private or public. -* **Read Only**: Tells whether a channel is read-only and toggles the read-only status on the channel. In read-only channels, only people with admin permissions can post messages. Good for announcements channels. -* **Archived**: Tells if a channel is archived and toggles the archived status of a channel. Nobody can post messages in an archived channel, and channel search will not find that channel. -* **Password**: Tells whether a channel has a password and let you set the password. If a channel has a password, other users need to enter the password to become a channel's member. - -If a [retention policy](../../../administration/administration/settings/retention-policies.md) is active on this channel, a red warning box appears stating when messages or files are deleted. - diff --git a/guides/user-guides/channels/channel-actions/channel-message-list.md b/guides/user-guides/channels/channel-actions/channel-message-list.md deleted file mode 100644 index d783f0cbe6..0000000000 --- a/guides/user-guides/channels/channel-actions/channel-message-list.md +++ /dev/null @@ -1,9 +0,0 @@ -# Channel Message List - -This section details a list of all different types of lists specific to channels: - -* **Files List**: A list of all the files uploaded to the current channel. -* **Mentions**: All messages that mentioned you on the current channel. -* **Starred Messages**: All messages that you have starred in the current channel. -* **Pinned Messages**: All messages are pinned to the current channel. - diff --git a/guides/user-guides/channels/channel-actions/channel-notifications.md b/guides/user-guides/channels/channel-actions/channel-notifications.md deleted file mode 100644 index 8638fcdcc0..0000000000 --- a/guides/user-guides/channels/channel-actions/channel-notifications.md +++ /dev/null @@ -1,14 +0,0 @@ -# Channel Notifications - -You can change the behavior of notifications for channels where you are a member. By default, a channel notifies you whenever someone mentions you or uses the `@all` mention. - -These options are on the channel notifications tab: - -* **Disable Notifications**: Disable all notifications for the channel. -* **Audio**: Select whether the channel will emit a sound whenever someone mentions you or posts a message in that channel. The sound played can be customized. -* **Desktop**: Controls notification behavior when using any desktop app or browser. -* **Mobile**: Controls push notification behavior when using any mobile app. -* **Email**: Set whether an email sends whenever someone mentions you or posts a message, or disable email notifications. -* **Unread Room Status**: Control whether the channel on the channel list highlights when there is a new message or mention. -* **Unread Tray Icon**: Controls whether the tray icon highlights new messages or mentions on the current channel. - diff --git a/guides/user-guides/channels/channel-actions/mark-channel-as-favorite.md b/guides/user-guides/channels/channel-actions/mark-channel-as-favorite.md deleted file mode 100644 index efe4572fc3..0000000000 --- a/guides/user-guides/channels/channel-actions/mark-channel-as-favorite.md +++ /dev/null @@ -1,8 +0,0 @@ -# Mark Channel as Favorite - -To help organize and prioritize your communications, you can **favorite** \(or **star**\) channels, private groups, and DMs. - -To favorite a channel, click the **star** icon to the left of the channel header. - -Favoriting a channel moves it to a **Favorites** section on the channels list, making it easier to access and find. - diff --git a/guides/user-guides/channels/channel-actions/members-list-of-a-channel/README.md b/guides/user-guides/channels/channel-actions/members-list-of-a-channel/README.md deleted file mode 100644 index f2e334aec5..0000000000 --- a/guides/user-guides/channels/channel-actions/members-list-of-a-channel/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Members List of a Channel - -Here you can see all the users on the channel and see more information about them. If you have the proper permission, you can manage them on your channel. - -At first, the list only shows currently active users. To see all users, click the **show all**. - -To see more information on a user, click their name on the list. - -The user preview screen shows their name, username, any role tags they might have, and their current timezone. From there, you can: - -* Start a direct conversation with the user by clicking the `conversation` option -* Start a video call with the user -* Set the user as channel owner -* Set the user as a channel's moderator -* Mute the user -* Remove the user from the channel - diff --git a/guides/user-guides/channels/channel-actions/members-list-of-a-channel/add-user-to-a-channel.md b/guides/user-guides/channels/channel-actions/members-list-of-a-channel/add-user-to-a-channel.md deleted file mode 100644 index 4dd11a8731..0000000000 --- a/guides/user-guides/channels/channel-actions/members-list-of-a-channel/add-user-to-a-channel.md +++ /dev/null @@ -1,25 +0,0 @@ -# Add User to a Channel - -It is the option used to add users who are already in your workspace. - -To add a new user: - -1. Click **Members** -2. Click **Add** **Users** - -![](../../../../../.gitbook/assets/image%20%28412%29.png) - -1. Choose users from the drop-down: - -![](../../../../../.gitbook/assets/image%20%28343%29.png) - -1. Hit **Add users** - -![](../../../../../.gitbook/assets/image%20%28406%29.png) - -The new users are added, as shown below: - -![](../../../../../.gitbook/assets/image%20%28396%29.png) - -Invite Link - diff --git a/guides/user-guides/channels/channel-actions/members-list-of-a-channel/invite-users-to-a-channel.md b/guides/user-guides/channels/channel-actions/members-list-of-a-channel/invite-users-to-a-channel.md deleted file mode 100644 index 323c5f82fb..0000000000 --- a/guides/user-guides/channels/channel-actions/members-list-of-a-channel/invite-users-to-a-channel.md +++ /dev/null @@ -1,42 +0,0 @@ -# Invite Users to a Channel - -It is the option used to invite users to your channel. - -To add a new user: - -1. Click **Members** -2. Click **Invite** **Users** - -![](../../../../../.gitbook/assets/image%20%28407%29.png) - -1. Copy the link and share it with your invitees - -![](../../../../../.gitbook/assets/image%20%28386%29.png) - -{% hint style="info" %} -The link works for the user who is already on your workspace or outside of it. In case your invitee is outside of your rocket.chat workspace, they can use this link to register to your workspace and then use the channel. -{% endhint %} - -## Edit Invite Link - -You can edit the expiration date and number of uses of your invite link**.** - -* Hit **Edit Invite** - -![](../../../../../.gitbook/assets/image%20%28413%29%20%281%29.png) - -* Set the expiration date and number of uses of your invite link -* Hit **Generate New Link** - -![](../../../../../.gitbook/assets/image%20%28414%29%20%281%29%20%281%29%20%281%29.png) - -Your new link is generated with the selected attributes, as shown below: - -![](../../../../../.gitbook/assets/image%20%28395%29.png) - -## Permissions - -Please note that in order to use Invite Link Feature you need to have the **Create Invite Link** permission granted for your role. By default, it is **ON** for Admin, Owner, and Moderator roles. But you can always request your admin to change it as per your needs. - -![](../../../../../.gitbook/assets/image%20%28411%29.png) - diff --git a/guides/user-guides/channels/channel-actions/prune-messages-from-a-channel.md b/guides/user-guides/channels/channel-actions/prune-messages-from-a-channel.md deleted file mode 100644 index f34273e626..0000000000 --- a/guides/user-guides/channels/channel-actions/prune-messages-from-a-channel.md +++ /dev/null @@ -1,21 +0,0 @@ -# Prune Messages from a Channel - -If you are a server admin, or your admin has given you the **clean-channel-history** permission, the **prune messages** option allows you to delete messages from a channel swiftly. - -_Note: Messages and files deleted with this option are deleted forever and cannot be recovered. Be careful and double-check your arguments before pressing Prune._ - -Use the following parameters to delete specific messages: - -* `Newer than`: Deletes all messages posted **after** a particular date. -* `Older than`: Deletes all messages posted **before** a particular date. - -Fill dates for both the `Newer than` and `Older than` fields to delete all messages. - -* `Users`: Allows you to specify any users to delete the content. When filled with a username, that user's messages deleted. - -Refine the parameters above with the following options. Check each to enable: - -* **Inclusive**: Deletes all messages that land on the exact start/end times you have specified in the `Newer than` and `Older than` fields. -* **Exclude pinned messages**: Do **not** delete pinned messages. -* **Only remove the attached files, keep messages**: Removes files but not the messages themselves - diff --git a/guides/user-guides/channels/channel-actions/search-messages-in-a-channel.md b/guides/user-guides/channels/channel-actions/search-messages-in-a-channel.md deleted file mode 100644 index 12a0c27c0c..0000000000 --- a/guides/user-guides/channels/channel-actions/search-messages-in-a-channel.md +++ /dev/null @@ -1,33 +0,0 @@ -# Search Messages in a Channel - -Rocket.Chat search supports basic search commands which work like Gmail search. - -Rocket.Chat also supports the use of "[regular expressions](https://en.wikipedia.org/wiki/Regular_expression)." Regular expressions provide flexibility to search chat entries in any language, even the ones traditionally a challenge like "CJK" languages \(Chinese, Japanese, Korean\). - -## Basic Search Commands - -You can use these commands before or after entering search terms: - -* `from:me` to search for messages only created by the current user. -* `from:user.name` to search for messages created by a specific user. The username entered must be the format without spaces \(i.e., "john.doe" and not "John Doe."\) Search for any mentions of a user by searching for their username. -* `has:star` returns messages that are starred by the current user. -* `is:pinned` or `has:pin` returns messages that pin in the current channel. -* `has:url` or `has:link` returns messages that contain a link. -* `has:location` or `has:map` returns messages that have a location attached. -* `before:dd/mm/yyyy`, `after:dd/mm/yyyy` and `on:dd/mm/yyyy` return message that was created before, after, or on the provided date. - - Dashes `dd-mm-yyyy` or dots `dd.mm.yyyy` can be used instead of slashes. `order:asc`, `order:ascend`, or `order:ascending` sorts messages by ascending timestamp. - -* `order:desc`, `order:descend`, or `order:descending` sorts messages by descending timestamp. - - You can also jump to where a message is located by hovering the mouse over the search result and selecting `jump to message.` - -## Regex - -These references tell more about the powerful world of regex: - -* Wikipedia - [https://en.wikipedia.org/wiki/Regular\_expression](https://en.wikipedia.org/wiki/Regular_expression) -* Regex 101 - [https://regex101.com/\#javascript](https://regex101.com/#javascript) -* Regexr - [http://regexr.com/](http://regexr.com/) -* Regex Info - [http://www.regular-expressions.info/javascriptexample.html](http://www.regular-expressions.info/javascriptexample.html) - diff --git a/guides/user-guides/channels/channel-actions/streaming-in-a-channel.md b/guides/user-guides/channels/channel-actions/streaming-in-a-channel.md deleted file mode 100644 index 2e08aa8414..0000000000 --- a/guides/user-guides/channels/channel-actions/streaming-in-a-channel.md +++ /dev/null @@ -1,25 +0,0 @@ -# Streaming in a Channel - -## Streaming - -If the feature [Youtube Livestream](../../../administration/administration/settings/youtube-broadcasting.md) is enabled, the **Streaming** Tab activates on the channel actions menu. - -Through the **Streaming** tab, owners of the channel of server admins can start streaming or add another stream to the channel using a URL. - -### Start a stream - -_Note: Depending on the settings of the server, you might be only able to link live streams from Youtube. In doubt, always ask your server's admin._ - -1. Press the **Broadcast my Camera** button. -2. Login with a Google account. Remember that streaming must be activated through your Youtube account. For more information, see [Introduction to live streaming](https://support.google.com/youtube/answer/2474026?hl=en) Google guide\). - -To add a different Livestream, get the URL \(must be from Youtube\) for the stream, enter it into the **Livestream source** field, and hit save. - -You can also add a message whenever the stream is unavailable in the **Livestream not available message** field. - -To add a stream with no video and only audio, use the **Enable audio-only button**. - -### \(Users\) Start a Live Stream - -If you are not a channel owner and there is already a live stream set to that channel, press **play** on the stream tab. This starts a pop-up with the stream embedded. The pop-up does not close even if you change channels. - diff --git a/guides/user-guides/channels/create-a-new-channel.md b/guides/user-guides/channels/create-a-new-channel.md deleted file mode 100644 index 62c7d66be8..0000000000 --- a/guides/user-guides/channels/create-a-new-channel.md +++ /dev/null @@ -1,23 +0,0 @@ -# Create a new Channel - -To create a new channel: - -![](../../../.gitbook/assets/image%20%28390%29.png) - -You can set the name of that channel, choose if the channel is public or private, set the channel to read-only, broadcast the channel, and invite users. - -In read-only channels, messages can only be sent by users with write permissions. All users can react to messages in this channel. Read-only channels are most suitable for announcements and voting. - -Encrypted channels, messages will be end-to-end encrypted. See: [End to End Encryption](../security-bundle/end-to-end-encryption.md) for details. - -Broadcasted channels behave like read-only channels, with only users with the right permission being able to post there. The differences to a read-only channel are: - -* Users without permission \(the same one to post on read-only channels\) inside this channel won't be able to see each other in the user list. -* Users without permission won't be able to react to messages. -* Every message contains a reply button that redirects the user to a direct message with the user that posted the message. -* This channel cannot be converted to a read-only or open channel again. - -![](../../../.gitbook/assets/image%20%28375%29.png) - -Hit create and your new channel is created. - diff --git a/guides/user-guides/channels/types-of-channels.md b/guides/user-guides/channels/types-of-channels.md deleted file mode 100644 index 1757eb7c3f..0000000000 --- a/guides/user-guides/channels/types-of-channels.md +++ /dev/null @@ -1,24 +0,0 @@ -# Types of Channels - -There are three kinds of channels: [public channels](./#public-channels), [private groups](./#private-groups), and [direct \(1-on-1\) messages](./#direct-messages). - -## Public channels ![](../../../.gitbook/assets/2021-04-24_02-19-38.jpg) - -**Public channels** \(also called **channels** for short\) act as a base for all channel types. Use channels for conversations that are open to your entire team. Anyone on your team can join a channel. - -Channels make it easy to find what's going on with your team. New team members can join a channel and read all the information previously shared by other users. - -When in doubt, create a channel. Public conversations help you build a knowledge base of your organization with minimal effort. For example, create a channel for a company department or to discuss a specific programming language. - -## Private groups ![](../../../.gitbook/assets/2021-04-24_02-15-58%20%281%29.jpg) - -**Private groups** are closed channels. They are visible only to their members. Use private groups for subjects that are sensitive, confidential, or limited to a small group of team members. - -Private groups are joined through invitation only. The administrator sets the permissions that determine who can invite others to a private group. By default, only administrators, room owners, and moderators can invite others to private rooms. - -## Direct Messages - -**Direct messages \(DMs\)** are a private 1-on-1 conversation between team members. They can be sent to any user on your server. - -**Direct Messages Between Multiple Users** There is a feature that allows you to chat with multiple users inside a DM. For more info check: [Direct Messages Between Multiple Users](../direct-messages-between-multiple-users.md). - diff --git a/guides/user-guides/connecting-to-a-server.md b/guides/user-guides/connecting-to-a-server.md deleted file mode 100644 index e341adaa02..0000000000 --- a/guides/user-guides/connecting-to-a-server.md +++ /dev/null @@ -1,34 +0,0 @@ -# Connect to a Rocket.Chat server - -Use a web browser, the Rocket.Chat desktop/mobile application or your choice of [client applications](https://rocket.chat/download) to connect to a Rocket.Chat server. - -## Use a web browser - -To connect to a Rocket.Chat server through a web browser, enter the desired server address in the browser's address bar such as `https://open.rocket.chat`. - -After entering a valid Rocket.Chat server address, the [registration](registration.md), and [log in]() page appears. Enter your credentials to log in or register to become a member of that server. - -## Use the desktop app - -To connect to a Rocket.Chat server using the desktop app: - -1. [Download](https://rocket.chat/download) the app specific to your operating system. -2. Install and open the app. -3. The server connect screen appears. To connect to a server, enter a valid server address and click **Connect**. - -After entering a valid Rocket.Chat server address, the [registration](registration.md) and [log in]() page appear. Enter your credentials to log in or register to become a member of that server. - -### Connect to more than one server - -When using a Rocket.Chat desktop application you can connect to multiple Rocket.Chat servers. - -To add a new server, click the **plus** icon below the server list on the left sidebar and follow the [instructions](connecting-to-a-server.md) to connect to a Rocket.Chat server. - -## Use the mobile app - -To connect to a Rocket.Chat server using a mobile client app [download](../../installing-and-updating/mobile-and-desktop-apps.md#mobile-apps) the app for your mobile operating system. - -Open the app. If this is your first time using the mobile app, the server connect screen appears. Press **Join a workspace**, enter a valid server address and then click **Connect**. - -After entering a valid Rocket.Chat server address, the [registration](registration.md) and login page appear. Enter your credentials to log in or register to become a member of that server. - diff --git a/guides/user-guides/direct-messages-between-multiple-users.md b/guides/user-guides/direct-messages-between-multiple-users.md deleted file mode 100644 index 4a472ef8b5..0000000000 --- a/guides/user-guides/direct-messages-between-multiple-users.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -description: Direct messages between multiple users ---- - -# Multi-users Direct Message - -The feature allows the creation of direct message rooms between several users to exchange messages and files. - -Unlike creating [**private groups**](channels/), you do not need to specify the name or topic of the conversation; and you do not have to decide whether the room is read-only. - -It works just like regular direct 1:1 messaging, the only difference is that multiple users are involved. - -## How to create the multi-users direct message room - -Find the Create button in the top menu of your workspace. Click create, select Direct Messages: - -![Create direct message option](../../.gitbook/assets/create-direct-message-option.png) - -Choose who you want to add to the direct message room: - -![Select direct message participants](../../.gitbook/assets/select-users.png) - -Once created, the room will appear in the direct message section of the rooms list on the left \(if you sort by type\): - -![Room list](../../.gitbook/assets/room-list.png) - -## Configurations - -Multi-users direct message rooms’ actions and options remain the same as in [**direct \(1-on-1\) messages**](channels/), except for the ability to execute actions like: ignore, mute, block or remove. - -The only user actions available are: - -* ability to make an audio call with the user -* jump to a direct chat with them - -![User actions](../../.gitbook/assets/user-actions.png) - -## Administration - -As administrator, you can configure the maximum number of participants allowed in a direct message room \(globally\). - -Look under **Administration -> Message**: - -![Admin](../../.gitbook/assets/admin.png) - -Our recommendation is a maximum of 8 users, but you can change the limit for your own needs. - -**Important**: Since direct messages between multiple users are still a type of direct messages, for the first version of this feature, we decided to keep the same behaviors as a simple direct message as much as possible. - -We have established a few rules to mimic this behavior: - -* You cannot create multiple direct message rooms with the same users combination; -* You cannot change the room's name; -* There is no description or topic fields; -* You can not invite users for a pre-existing room \(once created, the membership of the room CANNOT change\); -* You can not kick users from the direct messages room; -* There is no owner \(unlike channels\); -* It's not possible to delete the room, delete will **ONLY** hide the conversation **FOR YOU** \(since there is no owner\); -* If you want to delete somebody from the conversation, create a new direct messages room without that participant. Same goes to adding a user to the room \(there is currently no shortcut to this, you must respecify all the participants you want in the room\). -* Rocket.Chat allows user deletion, in this case, the messages from the deleted user will be gone, but the room will be preserved. - diff --git a/guides/user-guides/messaging/README.md b/guides/user-guides/messaging/README.md deleted file mode 100644 index 2e3e2d91ad..0000000000 --- a/guides/user-guides/messaging/README.md +++ /dev/null @@ -1,109 +0,0 @@ -# Messages - -This page explains the ins and outs of messaging in Rocket.Chat. - -## Compose messages - -To compose a message in Rocket.Chat, go to the channel or user you want to send a message. Type message in the message box and press Enter or the **Send** Button. - -If you want to add new lines of text, press `Shift + Command` to add a new line. - -## Cursor movement - -While writing or editing messages, you can move the cursor using the arrow keys. Where the cursor moves depends on the wrapping of the text. - -Hold `Alt` or `Command` while pressing the right or left arrow keys to move the cursor to the beginning or end of the message. - -## Notify other team members - -To get the attention of a specific team member in a channel, type `@` followed by their username, for example, `@username`. The mentioned user sees a red badge on the channel or is notified via email or their mobile device if they're not online. - -You can also notify everyone in a channel by typing `@all`. Although notifying everyone in the channel is useful for announcements, not every message requires this. We recommend using `@all` sparingly. - -## Send attachments - -You can send a variety of attachments with your messages, like files, audio, links, videos, and many more. - -To access the attachment menu you can, click on the **plus** \(+\) icon on the message input. - -### Files - -You can select files using three methods: - -* By choosing the **Select Files from Computer** option from the attachment menu -* By dragging and dropping the file on Rocket.Chat -* By pasting an image from the clipboard - -After selecting the file, add a name and a description of the file and press **Send**. - -_Remember that the server administrator can block certain file types from being uploaded._ - -### Audio - -When using Rocket.Chat through a web browser, give Rocket.Chat permission to use your microphone. - -To start recording, click on **Create new Audio Message** or the option in the attachment menu or microphone icon inside the message box. To stop recording, click the green checkmark. The audio message automatically sends. You can choose to play or download the message. - -### Video - -When using Rocket.Chat through a web browser, give Rocket.Chat permission to use your webcam. - -To start recording, click on the **Create new Video Message** option in the attachment menu, then click the red circle icon. - -While recording, a stop button appears. To end the recording, press **Stop**. - -Preview the video you recorded by pressing **Ok**. A window appears where you can watch, download, and name the video. To send the video, click **Send** or click **Cancel** to discard the video. - -## Interacting with Google Drive - -_Note:_ Google Drive features available only if the server's admin has enabled Google Drive access and provided the correct API keys. For instructions to obtain these keys can see the [Administrator guides](../../administration/). - -### From Google Drive to Rocket.Chat - -Files can be uploaded from Google Drive to a room by selecting the **Select Files from Google Drive** option on the attachment menu. This opens a Google Drive file picker GUI with search and view modes. Select the required file, enter a title and description, and then click **Upload**. - -Files are upload in the same format as they are stored in Google Drive with exception of Google Docs, Google Slides, and Google Sheets which are converted to pdf upon upload. - -### From Rocket.Chat to Google Drive - -Files uploaded as a message attached to a room can be uploaded to Google Drive. Click **Save to Google Drive** above the file attachment. The file saves to Google Drive in its original format. - -### Create Google Docs, Slides and Sheets - -Create Google docs, slides, and sheets by clicking to corresponding file type in the attachments menu. The file saves to that user's Google Drive account and posts on the message or channel from which creation occurs. The sharing setting for the file shall remain default. It can be changed by the file owner via the link to collaborate with other users. - -## Links - -URLs to other sites automatically generate a preview of that site's content. Copy and paste the link into the message box to create the preview. - -## Location - -To share your location, click **Share My Location**. A message with the link to your location on Google Maps is generated. - -## Emoji - -To insert an emoji, click the **smiley face icon** in the message box. Browse through emoji using the icon categories or through the search box. - -You can also insert emojis by inputting an [emoji code](https://www.webfx.com/tools/emoji-cheat-sheet/). - -### Emoticons - -Rocket.Chat changes common emoticons, or symbols used to represent emoji, to the equivalent emoji. For example, `:)` converts to the `:smiley:` emoji. - -### Disabling emojis - -Emojis can be enabled/disabled in [Your Account](../user-panel/managing-your-account.md) settings under the **Messages** section. - -When graphical emojis are disabled, emoji keywords and shortcuts display as regular text. - -## Formatting - -Use the following symbols to format text as desired: - -* Bold: `*Lorem ipsum dolor*` -* Italic: `_Lorem ipsum dolor_` -* Strike: `~Lorem ipsum dolor~` -* Inline code: ```Lorem ipsum dolor``` -* Image: `![Alt text](https://rocket.chat/favicon.ico)` -* Link: `[Lorem ipsum dolor](https://www.rocket.chat/)` or `` - diff --git a/guides/user-guides/messaging/off-the-record-otr-messaging-guide.md b/guides/user-guides/messaging/off-the-record-otr-messaging-guide.md deleted file mode 100644 index 24dda8f788..0000000000 --- a/guides/user-guides/messaging/off-the-record-otr-messaging-guide.md +++ /dev/null @@ -1,55 +0,0 @@ -# Off-the-record \(OTR\) Messaging User Guide - -{% hint style="info" %} -This feature is currently in beta. Search operations will not find encrypted messages of encrypted rooms. The mobile apps and multi-DMs may not support the encrypted messages \(currently under implementation\). File Uploads will not be encrypted in this version. -{% endhint %} - -Off-the-record \(OTR\) Messaging is a feature that allows users to exchange **temporary, encrypted messages directly between each other**. This happens by using the local, non-persistent session storage of their browser rather than storing messages on the Rocket.Chat server. After an OTR session ends and the session storage is cleared, the OTR messages are removed and can no longer be restored. - -{% hint style="success" %} -OTR messages can help exchange confidential information between users without creating a record of this exchange on the server. -{% endhint %} - -{% hint style="info" %} -In contrast to OTR, _end-to-end encrypted messages_ have a record on the server \(in the form of the encrypted message string\) and are persistent. -{% endhint %} - -## Getting started - -Prerequisites for using OTR are: - -* OTR has been enabled by your server administrator \(if not, you will not be able to see OTR in the DM context menu\) -* a direct message \(DM\) room with only one other participant -* you and your DM-partner have entered their [end-to-end encryption key](https://docs.rocket.chat/guides/user-guides/end-to-end-encryption) -* you and your DM-partner are both online - -## Starting an OTR conversation - -_See the following steps with the sample users A and B._ - -_User A:_ Start the OTR conversation by clicking the DM context menu and selecting **OTR**. This will open the OTR-sidebar. - -![Selecting OTR-Panel](../../../.gitbook/assets/image%20%2895%29.png) - -**User A:** Start OTR. - -![Starting OTR-Chat](../../../.gitbook/assets/image%20%28115%29.png) - -_User B:_ Accept the OTR invitation. - -![Accepting the invitation](../../../.gitbook/assets/image%20%28129%29.png) - -The following messages will be subject to the OTR session and be marked by a key-icon. Unlike end-to-end encryption, this key icon is **bold**. - -![OTR messages visual display](../../../.gitbook/assets/image%20%2835%29.png) - -If User A or B breaks OTR \(by clearing their local session storage, e.g., refreshing the web client\), one of them needs to re-initiate the OTR session by clicking **Refresh Keys**. - -![Options during OTR conversation](../../../.gitbook/assets/image%20%28176%29.png) - -## Ending an OTR conversation - -In case User A or B wants to end the OTR session, one needs to click "End OTR". This ends the OTR session. The following messages will follow the normal configuration of the DM and be recorded on the server again. Refreshing his local session storage will make all **OTR messages disappear for the user.** - -![Ending OTR conversations](../../../.gitbook/assets/image%20%2847%29.png) - diff --git a/guides/user-guides/registration.md b/guides/user-guides/registration.md deleted file mode 100644 index 3717820b34..0000000000 --- a/guides/user-guides/registration.md +++ /dev/null @@ -1,26 +0,0 @@ -# Registering an account - -To access any Rocket.Chat server, register an account manually or by using one of the many supported OAuth services \(if the desired server has enabled these services\). After successfully registering, you can log in to the server. - -## Manual registration - -You can create an account by providing your: - -* Name -* Email -* Password - -A server can ask for you to verify your email, this can be done by simply clicking on the link sent to the registered email. - -Servers can be configured to use custom parameters. Therefore each Rocket.Chat server might ask for different information or restrict registration based on the rules set by the server. If you are unsure how to register, please contact your server administrator. - -## OAuth registration - -If your server has configured OAuth services \(i.e. GitHub or Google\), use the account credentials for that supported service to register into the server. - -## Choosing a username and display name - -After you have successfully registered, you will be asked to choose your username. Your username is your unique identifier for others to use to direct message or mention you. Your username is separate from your display name on the server. - -Usernames on each Rocket.Chat server must be unique to that server. However, display names can repeat on the same server. For example, there can be only one user with the username `johnsmith` but there can be more than one user with the display name `John Smith`. - diff --git a/guides/user-guides/rooms/teams/README.md b/guides/user-guides/rooms/teams/README.md new file mode 100644 index 0000000000..e6fb8a0e36 --- /dev/null +++ b/guides/user-guides/rooms/teams/README.md @@ -0,0 +1,57 @@ +--- +description: >- + A team is a digital workspace where teammates can collaborate and work + together towards a common goal. +--- + +# Teams + +A **Team** can have multiple [channels](https://docs.rocket.chat/guides/user-guides/rooms/channels). In Rocket.Chat, **Team** is a digital workspace that allows you to manage multiple users simultaneously, making it easier for you to collaborate with teammates. For example, you have a team in your workspace for all core members that contains a list of channels you want them to belong to. If you add a new core member to that team, they have access to all the channels in that team. There will be no need to add them to those channels individually. + +**Teams** are available to both community and enterprise clients. They are identified by: ![](<../../../../.gitbook/assets/team (2).png>) + +\ +**Teams** can be made private so that only invited members are allowed to join or public so that all Rocket.Chat users can see them. Each **Team** may consist of channels, which may also be either [public ](https://docs.rocket.chat/guides/user-guides/rooms/channels/types-of-channels#public-channels)or [private](https://docs.rocket.chat/guides/user-guides/rooms/channels/types-of-channels#private-channels). + +## Team Privacy and Encryption + +#### Read-Only Teams + +Only authorized users (users with write permissions) can send messages in read-only teams. All other users can react to messages on this channel. + +#### Broadcast Teams + +Like read-only teams, broadcast teams allow only authorized users with the appropriate permissions to write new messages, while other users can reply to existing messages. + +However, it differs from read-only teams in the following ways: + +* All messages have a reply button that redirects you to the sender's direct message (DM), replying to the message as a quote. +* The team cannot be converted to a read-only again. + +#### Encrypted Teams + +Encrypted teams have end-to-end encryption enabled across all messages exchanged by the Team members. + +{% hint style="info" %} +To learn more, see [Teams: Efficiently Manage Your Remote Team on Rocket.Chat](https://www.rocket.chat/blog/teams). +{% endhint %} + +{% content-ref url="create-a-new-team.md" %} +[create-a-new-team.md](create-a-new-team.md) +{% endcontent-ref %} + +{% content-ref url="../../../../use-rocket.chat/user-guides/rooms/teams/edit-a-team.md" %} +[edit-a-team.md](../../../../use-rocket.chat/user-guides/rooms/teams/edit-a-team.md) +{% endcontent-ref %} + +{% content-ref url="../../../../use-rocket.chat/user-guides/rooms/teams/manage-team-members.md" %} +[manage-team-members.md](../../../../use-rocket.chat/user-guides/rooms/teams/manage-team-members.md) +{% endcontent-ref %} + +{% content-ref url="../../../../use-rocket.chat/user-guides/rooms/teams/manage-team-channels.md" %} +[manage-team-channels.md](../../../../use-rocket.chat/user-guides/rooms/teams/manage-team-channels.md) +{% endcontent-ref %} + +{% content-ref url="teams-enterprise-edition.md" %} +[teams-enterprise-edition.md](teams-enterprise-edition.md) +{% endcontent-ref %} diff --git a/guides/user-guides/rooms/teams/create-a-new-team.md b/guides/user-guides/rooms/teams/create-a-new-team.md new file mode 100644 index 0000000000..806a6fd605 --- /dev/null +++ b/guides/user-guides/rooms/teams/create-a-new-team.md @@ -0,0 +1,21 @@ +# Create a new Team + +To create a new team: + +* On the Rocket.Chat menu bar, click the **Create New** icon, then select **Team**. +* Give the team a name. +* Update your preferred [privacy and encryption settings](https://docs.rocket.chat/use-rocket.chat/user-guides/rooms/teams#team-privacy-and-encryption) for the team. +* Add members to the team. Then, click **Create.** + +{% hint style="info" %} +A team name must not include space or any special character except dash (-) and underscore(\_). +{% endhint %} + +## **Mark Team as Favorite** + +All teams marked as favorites are listed at the top of the sidebar so that it is easy to access. + +To mark a team as favorite, + +* At the top of the team screen, click the **star** icon next to the team name to mark that team as **Favorite**. +* To remove a team from **Favorites,** click the **star** icon again. diff --git a/guides/user-guides/rooms/teams/teams-enterprise-edition.md b/guides/user-guides/rooms/teams/teams-enterprise-edition.md new file mode 100644 index 0000000000..a038a99d5a --- /dev/null +++ b/guides/user-guides/rooms/teams/teams-enterprise-edition.md @@ -0,0 +1,17 @@ +# Teams Enterprise Edition + +
+ +The Enterprise edition brings all functionalities available in Community Edition and additionally the ones listed below: + +#### Mention teams + +With Teams, you don’t need to remember everyone’s name to communicate with a team quickly. Just mention a Team — @engineers, for instance — and all members will get notified instantly. + +#### AD / LDAP Sync + +Using Teams is a piece of cake for IT teams that have already mapped their organization’s teams through Active Directory Groups or Keycloak. The feature connects Rocket.Chat to your company’s infrastructure at ease, so whenever you update a department or user information, Rocket.Chat will receive those updates in real-time too. + +It is particularly beneficial if you manage large teams, constantly creating or deactivating members. + +The feature ensures that as you update your workgroups and new members are added or deleted, Rocket.Chat’s teams are automatically aligned with it. diff --git a/guides/user-guides/security-bundle/README.md b/guides/user-guides/security-bundle/README.md deleted file mode 100644 index fea28e1527..0000000000 --- a/guides/user-guides/security-bundle/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Security Bundle - -The Security Bundle offers clients a way out of the unsafe closed-source communication world. Security teams won’t worry about risky apps carrying their companies’ valuable information away anymore. - -The Rocket.Chat's Security Bundle is composed of the following tools: - -1. Data Loss Prevention app -2. Open-source Antivirus app -3. E2E Encryption - diff --git a/guides/user-guides/security-bundle/antivirus-clamav-app.md b/guides/user-guides/security-bundle/antivirus-clamav-app.md deleted file mode 100644 index 6c3308b677..0000000000 --- a/guides/user-guides/security-bundle/antivirus-clamav-app.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -description: >- - This app enables forwarding uploaded files to an open-source antivirus - (ClamAV) application and prevents the upload from completing in Rocket.Chat in - case of virus. ---- - -# Antivirus ClamAV App - -ClamAV app is a simple integration with the ClamAV server which is the antivirus. You have to install and run the ClamAV server and then the ClamAV app connects to it. - -Please visit the ClamAV [documentation](https://www.clamav.net/documents/clam-antivirus-user-manual) to find details on installing and running the server. - -This app enables forwarding uploaded files to an open-source antivirus \(ClamAV\) application and prevents the upload from completing in Rocket.Chat if a virus is detected. It works across web browsers, desktop apps and mobile apps Use it to prevent users from spreading viruses and malware via Rocket.Chat ClamAV is an open-source \(GPL\) antivirus engine used in a variety of situations, including email scanning, web scanning, and endpoint security. It provides a number of utilities including a flexible and scalable multi-threaded daemon, a command-line scanner, and an advanced tool for automatic database updates. - -You can find/install it under Apps in the Administration menu, as shown below: - -![](../../../.gitbook/assets/image%20%28388%29.png) - -If you install/open the app, there are only two settings that you need for the integration to work. - -You need to enter the ClamAV Server Host \(where your ClamAV server is hosted\) and the port for your ClamAV server. - -![](../../../.gitbook/assets/image%20%28344%29%20%281%29.png) - -## **View Logs** - -To view logs: - -![](../../../.gitbook/assets/image%20%28408%29%20%281%29.png) - -![](../../../.gitbook/assets/image%20%28409%29%20%281%29.png) - diff --git a/guides/user-guides/security-bundle/data-loss-prevention-user-guide.md b/guides/user-guides/security-bundle/data-loss-prevention-user-guide.md deleted file mode 100644 index 725551308a..0000000000 --- a/guides/user-guides/security-bundle/data-loss-prevention-user-guide.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -description: >- - Data loss prevention (DLP), in its simplest terms, is a set of tools and - processes used to ensure that sensitive data is not unduly shared, misused, - lost, or accessed by unauthorized users. ---- - -# Data Loss Prevention User Guide - -If you are in a channel in your Rocket.Chat where sensitive information, such as a credit card number, is sent by a contact you might want to prevent confidential content from being shared and sent between users in real-time. Rocket.Chat uses Data Loss Prevention to assures this, as shown below: - -![](../../../.gitbook/assets/image%20%28280%29.png) - - - -![](../../../.gitbook/assets/image%20%28285%29.png) - -It appears as - -![](../../../.gitbook/assets/image%20%28282%29.png) - -A warning is also displayed. - - If you click on **More Info**, - -![](../../../.gitbook/assets/image%20%28284%29.png) - -you are given an explanation with a status, as shown below: - -![](../../../.gitbook/assets/image%20%28287%29.png) - -If you are a moderator and have access to your company's data-loss-prevention channel, you can go ahead and approve it, as shown below: - -![](../../../.gitbook/assets/image%20%28288%29.png) - -and it starts appearing in the chat: - -![](../../../.gitbook/assets/image%20%28283%29.png) - - - diff --git a/guides/user-guides/security-bundle/end-to-end-encryption.md b/guides/user-guides/security-bundle/end-to-end-encryption.md deleted file mode 100644 index fc0b70f9c2..0000000000 --- a/guides/user-guides/security-bundle/end-to-end-encryption.md +++ /dev/null @@ -1,66 +0,0 @@ -# End to End Encryption User Guide - -> Note: This feature is currently in beta. Encrypted messages of encrypted rooms will not be found by search operations. Bots may not be able to see encrypted messages until they implement support for it. File uploads will not be encrypted in this version. - -## Getting started - -Once your server admin has enabled End to End Encryption as an option you will see a banner across the top of your interface like this: - -![ ](../../../.gitbook/assets/e2e-banner.png) - -If you click this banner you will be presented with a dialogue containing a password. Rocket.Chat server does not know this password. So you will need to store it in your password manager along with your login password. - -![ ](../../../.gitbook/assets/e2e-alert.png) - -You will need this password on any other device you wish to participate in end to end conversations. - -Once you have this password saved somewhere it is safe to dismiss the alert. - -## Changing Encryption Password - -If you would like to change your encryption password you can do so by going to: My Account->Encryption - -![ ](../../../.gitbook/assets/e2e-changepassword.png) - -Once you make this change it will be used for connecting on new devices. - -## Starting an End to End Conversation - -Click the channel creation icon - -![ ](../../../.gitbook/assets/e2e-createchannelbutton.png) - -From this screen on private groups you can toggle Encrypted to on - -![ ](../../../.gitbook/assets/e2e-createchannelscreen.png) - -## Convert an existing group to use End to End encryption - -You can convert existing groups and direct messages to use end to end encryption. - -As a room owner you can click the room info icon - -![ ](../../../.gitbook/assets/e2e-roominfo.png) - -Once this is up click the edit button - -![ ](../../../.gitbook/assets/e2e-editroombutton.png) - -From here scroll to the bottom and toggle encrypted on - -![ ](../../../.gitbook/assets/e2e-toggle-encrypted.png) - -## FAQ - -### How can I tell if the room is encrypted? - -If the room is using End to End Encryption you should see a key icon by the channel name. - -![ ](../../../.gitbook/assets/e2e-keybychannel.png) - -### How can I tell if a message is encrypted? - -You will see a key icon by the username. - -![ ](../../../.gitbook/assets/e2e-keybymessage.png) - diff --git a/guides/user-guides/talking-to-users-from-another-server.md b/guides/user-guides/talking-to-users-from-another-server.md deleted file mode 100644 index 83e73a3707..0000000000 --- a/guides/user-guides/talking-to-users-from-another-server.md +++ /dev/null @@ -1,31 +0,0 @@ -# Talking to users from another server - -Once you have [added your server to the Federated Network](../administration/administration/settings/federation.md), you can talk to users from servers who have done the same. - -## Using Rocket.Chat Federation - -After enabling federation, you should be able to start chatting with other servers. - -## Inviting users from a different server - -To do so, you should go to the `Directory` section, `Users` tab, and pick `Every Workspace` from the dropdown menu. - -![Directory Search Users](../../.gitbook/assets/directory.png) - -Then, you should be able to look for users on remote servers, called peers. You can search using a combination of a username and a domain or an e-mail address, like: - -* Username: `myfriendsusername@anotherdomain.com` -* E-mail address: `joseph@remotedomain.com` - -If the remote server is within Rocket.Chat Federated Network; you will be able to see the users: - -![Directory Search Result](../../.gitbook/assets/directory-result.png) - -## Inviting remote users and chatting - -If you click on one of those listed users, you will invite them to your server without login access. Also, you and everyone else on your server will be able to chat with that new remote user. - -![Chat](../../.gitbook/assets/chat.png) - -From now on, you can invite that user only to private rooms or discussions. Those channels are going to be replicated to the remote server, without the message history. - diff --git a/guides/user-guides/teams/README.md b/guides/user-guides/teams/README.md deleted file mode 100644 index ae11fa913f..0000000000 --- a/guides/user-guides/teams/README.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -description: >- - Now, instead of creating a channel for your company’s teams, you can easily - group your users as Teams on Rocket.Chat. ---- - -# Teams - -The feature takes the hassle out of managing one by one and allows managing multiple users at once by providing a digital workspace to facilitate your collaboration with teammates on Rocket.Chat. -Each team can have its own channels, which can be public or private. Teams allow you to handle multiple users at the same time efficiently. So you don’t need to go through the manual process of adding users repetitively. - -* Following is the team's symbol - -![](../../../.gitbook/assets/image%20%28354%29.png) - -* The homepage of a team is the main team’s channel, as shown below: - -![](../../../.gitbook/assets/image%20%28356%29.png) - -{% hint style="info" %} -Please visit our blog post to know all the details about [Teams](https://rocket.chat/blog/product/teams/) -{% endhint %} - -{% page-ref page="create-a-new-team.md" %} - -{% page-ref page="teams-channels/" %} - -{% page-ref page="teams-enterprise-edition.md" %} - diff --git a/guides/user-guides/teams/create-a-new-team.md b/guides/user-guides/teams/create-a-new-team.md deleted file mode 100644 index a892150a55..0000000000 --- a/guides/user-guides/teams/create-a-new-team.md +++ /dev/null @@ -1,28 +0,0 @@ -# Create a new Team - -You can leverage teams for specific discussions and topics. When creating a team, it’s possible to define both permission and encryption levels for its channels: - -* Read Only: Allow users from the team to write messages or simply receive them -* Encrypted: Enables end-to-end encryption across all messages exchanged by the team -* Broadcast: Only authorized users can write new messages, but the other users will be able to reply - -## **Steps to create your team in Rocket.Chat** - -Setting up your first team is easy, and both community and enterprise clients can access the feature. Follow the steps below to create your very first team: - -* Click **Create New** - **Team** - -![](../../../.gitbook/assets/image%20%28337%29.png) - -* Define privacy and encryption options for your team. Include all members who should join the team. Click **Create** - -![](../../../.gitbook/assets/image%20%28338%29.png) - -Your new Team is created, as shown below: - -![](../../../.gitbook/assets/image%20%28339%29.png) - -* You can mark a team favorite using the star - -![](../../../.gitbook/assets/image%20%28349%29%20%281%29%20%281%29%20%281%29%20%281%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%281%29%20%283%29.png) - diff --git a/guides/user-guides/teams/delete-a-team.md b/guides/user-guides/teams/delete-a-team.md deleted file mode 100644 index 0d92510833..0000000000 --- a/guides/user-guides/teams/delete-a-team.md +++ /dev/null @@ -1,18 +0,0 @@ -# Delete a Team \(Team Owner Permission\) - -{% hint style="info" %} -Only the team owner can delete a team. -{% endhint %} - -To delete a team go to Team Information and hit **Delete** - -![](../../../.gitbook/assets/image%20%28360%29.png) - -![](../../../.gitbook/assets/image%20%28353%29.png) - -{% hint style="info" %} -When deleting a team, you have the option to delete or keep the team's channels. If you delete a team and decide to keep the channels, those will go to the workspace. -{% endhint %} - -\*\*\*\* - diff --git a/guides/user-guides/teams/hide-or-leave-a-team.md b/guides/user-guides/teams/hide-or-leave-a-team.md deleted file mode 100644 index cc1c0a69db..0000000000 --- a/guides/user-guides/teams/hide-or-leave-a-team.md +++ /dev/null @@ -1,36 +0,0 @@ -# Hide or Leave a Team - -To **Hide** or **Leave** a team: - -![](../../../.gitbook/assets/image%20%28368%29.png) - -## Hide a Team - -To hide a team: - -![](../../../.gitbook/assets/image%20%28384%29.png) - -![](../../../.gitbook/assets/image%20%28340%29.png) - -The team is hidden. - -{% hint style="info" %} -To unhide a team, please search it in the spotlight. -{% endhint %} - -## Leave a Team - -To leave a team: - - - - - -![](../../../.gitbook/assets/image%20%28381%29.png) - -When leaving a team, you have the option to decide if you want to continue in teams channels or not, as shown below: - -![](../../../.gitbook/assets/image%20%28355%29.png) - - - diff --git a/guides/user-guides/teams/team-information-view-and-edit.md b/guides/user-guides/teams/team-information-view-and-edit.md deleted file mode 100644 index cb9a1e874c..0000000000 --- a/guides/user-guides/teams/team-information-view-and-edit.md +++ /dev/null @@ -1,18 +0,0 @@ -# Team Information \(view and edit\) - -Click **Team Information** to view and edit team information, as shown below: - -![](../../../.gitbook/assets/image%20%28347%29.png) - -* Click **Edit** to edit the following information - -![](../../../.gitbook/assets/image%20%28341%29.png) - -* Hit **Save**. - -![](../../../.gitbook/assets/image%20%28362%29.png) - -{% hint style="info" %} -Teams can be set as private – only invited users can join them, or public – visible to all Rocket.Chat users and findable through the platform’s spotlight. -{% endhint %} - diff --git a/guides/user-guides/teams/teams-channels/README.md b/guides/user-guides/teams/teams-channels/README.md deleted file mode 100644 index 0eaaac8bf7..0000000000 --- a/guides/user-guides/teams/teams-channels/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# Teams Channels - -* Teams can have their own channels -* Teams can have both public channels and private channels -* Teams can have Auto-join channels that the members of the team are automatically added to once they join a team -* When a team member leaves or is removed from a team, it is possible to decide if the user will also be removed from the team’s channels or not -* It is possible to transform a channel into a team \(one way\) -* It is possible to remove a channel from a team -* It is possible to add existing channels to teams -* Add all team members to a channel -* It’s possible to add users outside the team to the team’s channels - -{% hint style="info" %} -A team can have a maximum of 100 channels -{% endhint %} - -To access channels within a team: - -* Click channel sign, as shown below: - -![](../../../../.gitbook/assets/image%20%28374%29.png) - -{% hint style="info" %} -It’s still possible for channels to exist that don’t belong to any team -{% endhint %} - diff --git a/guides/user-guides/teams/teams-channels/add-an-existing-channel-to-a-team.md b/guides/user-guides/teams/teams-channels/add-an-existing-channel-to-a-team.md deleted file mode 100644 index 873e8c5944..0000000000 --- a/guides/user-guides/teams/teams-channels/add-an-existing-channel-to-a-team.md +++ /dev/null @@ -1,26 +0,0 @@ -# Add an existing channel to a team - -{% hint style="info" %} -The user must be the channel owner AND have the specific rights in the team to be able to add an existing channel. -{% endhint %} - -To add an existing channel to a team: - -* Click **Add Existing** - -![](../../../../.gitbook/assets/image%20%28345%29.png) - -![](../../../../.gitbook/assets/image%20%28376%29.png) - -* Select the channel that you want to add. - -![](../../../../.gitbook/assets/image%20%28358%29.png) - -The channels are added to the team, as shown below: - -![](../../../../.gitbook/assets/image%20%28357%29.png) - -{% hint style="warning" %} -When adding a channel to a team, the team owner gains owner rights over the channel \(e.g. It's possible for the team owner to delete that channel\) -{% endhint %} - diff --git a/guides/user-guides/teams/teams-channels/create-new-channel-for-a-team.md b/guides/user-guides/teams/teams-channels/create-new-channel-for-a-team.md deleted file mode 100644 index 9caf8337ea..0000000000 --- a/guides/user-guides/teams/teams-channels/create-new-channel-for-a-team.md +++ /dev/null @@ -1,16 +0,0 @@ -# Create New Channel for a Team - -To create a new channel for a team: - -* Click **Create new** - -![](../../../../.gitbook/assets/image%20%28370%29.png) - -* Name your channel, set a topic, mention it as private/public, and other basic settings. Finally add members from the drop-down and hit **Create**. - -![](../../../../.gitbook/assets/image%20%28365%29.png) - -Your new channel is created. \(with a lock symbol that indicates its a private channel. - -![](../../../../.gitbook/assets/image%20%28348%29.png) - diff --git a/guides/user-guides/teams/teams-channels/delete-a-teams-channel.md b/guides/user-guides/teams/teams-channels/delete-a-teams-channel.md deleted file mode 100644 index 1c1625eefc..0000000000 --- a/guides/user-guides/teams/teams-channels/delete-a-teams-channel.md +++ /dev/null @@ -1,14 +0,0 @@ -# Delete a Team's Channel - -To delete a team's channel: - -![](../../../../.gitbook/assets/image%20%28344%29%20%282%29%20%283%29%20%283%29%20%283%29%20%283%29%20%282%29%20%281%29%20%284%29.png) - -![](../../../../.gitbook/assets/image%20%28346%29.png) - -The channel is deleted as shown below: - -![](../../../../.gitbook/assets/image%20%28372%29.png) - -![](../../../../.gitbook/assets/image%20%28346%29.png) - diff --git a/guides/user-guides/teams/teams-channels/remove-a-chnnel-from-team.md b/guides/user-guides/teams/teams-channels/remove-a-chnnel-from-team.md deleted file mode 100644 index ae6e045dc7..0000000000 --- a/guides/user-guides/teams/teams-channels/remove-a-chnnel-from-team.md +++ /dev/null @@ -1,16 +0,0 @@ -# Remove a Channel from Team - -To remove a channel from the team: - -![](../../../../.gitbook/assets/image%20%28359%29.png) - -![](../../../../.gitbook/assets/image%20%28367%29.png) - -{% hint style="info" %} -Please note that after a channel is removed from the team, it is moved to the workspace. -{% endhint %} - -{% hint style="info" %} -If the _channel was a public channel_ inside a private team, then after removal from the team the _channel will be public_ in the workspace -{% endhint %} - diff --git a/guides/user-guides/teams/teams-channels/teams-channel-auto-join.md b/guides/user-guides/teams/teams-channels/teams-channel-auto-join.md deleted file mode 100644 index 79eb5a5802..0000000000 --- a/guides/user-guides/teams/teams-channels/teams-channel-auto-join.md +++ /dev/null @@ -1,20 +0,0 @@ -# Team's Channel Auto-Join - -To access your team's channel actions: - -* Click the menu, as shown below - -![](../../../../.gitbook/assets/image%20%28371%29.png) - -## Auto-join - -When you create a Team, it can have Auto-join channels – channels to which the team members are automatically added. It reduces extra work with handling users and the channels where they must be included. It’s also handy for onboarding purposes and teams with a large number of different channels. - -For instance, you can use Auto-join to quickly include new members who have just joined the company to specific onboarding channels. Or you could set Auto-join to automatically include team members in company-related channels, such as channels meant to share updates and company news. - -{% hint style="info" %} -You can mark a channel **Auto-join** for members to join them automatically, once they join a team. -{% endhint %} - -![](../../../../.gitbook/assets/image%20%28352%29.png) - diff --git a/guides/user-guides/teams/teams-channels/transforming-a-channel-into-a-team.md b/guides/user-guides/teams/teams-channels/transforming-a-channel-into-a-team.md deleted file mode 100644 index b97067dee9..0000000000 --- a/guides/user-guides/teams/teams-channels/transforming-a-channel-into-a-team.md +++ /dev/null @@ -1,22 +0,0 @@ -# Transforming a channel into a team - -{% hint style="warning" %} -This action cannot be undone! So please be very careful when transforming a channel into a team. -{% endhint %} - -The channel owner is able to transform an existing channel into a team at any time. The channel needs to belong to the workspace \(can not belong to a team\) otherwise the option to transform in a team is not available. - -To transform a channel into a team: - -![](../../../../.gitbook/assets/image%20%28379%29.png) - -![](../../../../.gitbook/assets/image%20%28378%29.png) - -The channel is successfully converted into a team: - -![](../../../../.gitbook/assets/image%20%28383%29.png) - -{% hint style="info" %} -Note that a private channel converts to a private team and a public channel converts to a public team. -{% endhint %} - diff --git a/guides/user-guides/teams/teams-enterprise-edition.md b/guides/user-guides/teams/teams-enterprise-edition.md deleted file mode 100644 index 20daa56be5..0000000000 --- a/guides/user-guides/teams/teams-enterprise-edition.md +++ /dev/null @@ -1,20 +0,0 @@ -# Teams Enterprise Edition - -## Enterprise Edition ![](../../../.gitbook/assets/image%20%28326%29.png) - -{% hint style="info" %} -To be released in 3.14 -{% endhint %} - -The Enterprise edition should bring all functionalities available in Community Edition and additionally the ones below: - -### Mention teams - -With Teams, you don’t need to remember everyone’s name to communicate with a team quickly. Just mention a Team — @engineers, for instance — and all members will be instantly notified. This feature is currently available for Enterprise customers. - -### AD / LDAP Sync - -Using Teams is a piece of cake for IT teams that already mapped their organization’s teams through Active Directory groups or Keycloak. The feature connects Rocket.Chat to your company’s infrastructure at ease, so whenever you update a department or user information, Rocket.Chat will receive those updates in real-time too. - -That’s particularly beneficial if you manage large teams, constantly creating or deactivating members. The feature ensures that as you update your workgroups and new members are added or deleted, Rocket.Chat’s teams are automatically aligned with it. This feature is expected for the next release \(May\). - diff --git a/guides/user-guides/teams/teams-members.md b/guides/user-guides/teams/teams-members.md deleted file mode 100644 index 0eaca328ec..0000000000 --- a/guides/user-guides/teams/teams-members.md +++ /dev/null @@ -1,34 +0,0 @@ -# Teams Members - -{% hint style="info" %} -All regular users must be able to be part of multiple teams - -It is possible to view/add/remove team members - -Team members must have roles \(owner, leader, moderator, member\) -{% endhint %} - -To see members of a team: - -![](../../../.gitbook/assets/image%20%28363%29.png) - -You can add members to a team in two ways: - -## **Invite Link** - -![](../../../.gitbook/assets/image%20%28369%29.png) - -Copy the link and share it - -![](../../../.gitbook/assets/image%20%28342%29.png) - -## **Add users** - -To add the users manually: - -![](../../../.gitbook/assets/image%20%28377%29.png) - -![](../../../.gitbook/assets/image%20%28380%29.png) - -![](../../../.gitbook/assets/image%20%28382%29.png) - diff --git a/guides/user-guides/user-panel/README.md b/guides/user-guides/user-panel/README.md deleted file mode 100644 index 3cff35a313..0000000000 --- a/guides/user-guides/user-panel/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# User Panel - -Located on the upper left side of the screen, the user panel allows the end-user to edit their status and personal preferences and settings. When clicking the avatar icon, a panel will be displayed as below: - -![](../../../.gitbook/assets/user_panel_1.png) - -The User Panel is divided into three main sections - -* **Name and Current Status:** Displays the user name and the current status selected by the user -* **Status selection:** The second section shows the statuses available for the end-user to choose: online, away, busy, or invisible. - * The _Edit Status_ option allows the user to customize their status by adding a custom status message -* **My Account and Logout** - diff --git a/guides/user-guides/user-panel/managing-your-account.md b/guides/user-guides/user-panel/managing-your-account.md deleted file mode 100644 index 144cdc8416..0000000000 --- a/guides/user-guides/user-panel/managing-your-account.md +++ /dev/null @@ -1,144 +0,0 @@ -# My Account - -Manage Your Rocket.Chat account settings through the browser, desktop, and mobile apps. - -## Access account settings - -To access and manage your Rocket.Chat account on a server: - -[Log in](https://open.rocket.chat) to the server with your username and password. Click your profile picture and select **My Account**. - -Account settings changed on a single server **do not** change settings on a different server. - -You can change the following account settings: - -![](../../../.gitbook/assets/user_panel_3.png) - -## Preferences - -In the [_Preferences_](https://open.rocket.chat/account/preferences) section, the end-user has the ability to configure and set their own user preferences on Rocket.Chat server. - -### Localization - -Set the language to use for the Rocket.Chat user interface. - -### User Presence - -Enable Auto-Away: This setting enables the auto-away functionality, which changes the status to _away_ after an idle period. The idle time limit is configured in the field below \(in seconds\) - -![](../../../.gitbook/assets/screenshot_524.png) - -### Notifications - -This section allows the end-user to change their notification preferences. - -* Require Interaction to Dismiss Desktop Notification: This setting enables the possibility to disable the desktop notification while Rocket.Chat is being used. -* Show Desktop Notifications: User can select the type of messages for which the notifications have to be triggered \(for both browser and desktop app notifications\) -* Push Mobile Notifications: User can select the type of messages for which the notifications have to be triggered \(for mobile notification\) -* Offline Email Notifications - -![](../../../.gitbook/assets/user_panel_4.png) - -### Sidebar - -Group discussions: Controls the ability to group discussions in the sidebar - -### Messages - -Enable or disable all desktop notifications, test desktop notifications, and configure: - -* The global notification duration in seconds -* Enter key behavior: - * Normal mode \(send with Enter\) - * Alternative mode \(send with Enter + Ctrl/Alt/Shift/CMD\) - * Desktop mode \(only sends with Enter on desktop\) -* View mode - * Normal: The default spacing between messages - * Cozy: More space between messages \(less on the screen\) - * Compact: Less space between messages \(more on the screen\) -* Offline Email Notifications - * Disabled - * Every Mention/Direct Message - -As well as enable or disable the following preferences: - -* **Unread Tray Icon Alert**: Toggles if the tray icon highlights when you have unread messages -* \_\_Use Emojis: Toggles emojis in messages -* **Convert ASCII to Emoji**: Toggles emoji conversion when inputting ASCII characters -* **Auto Load Images**: Disables clicking on images to preview them -* **Save Mobile Bandwidth**: Saves mobile data when the app is open. -* **Collapse embedded media by default**: Toggles if messages with files collapse by default -* **Unread Rooms Mode**: Creates a new section on the channel list with all channels with unread messages -* **Hide usernames**: Hides usernames on the channels, showing only the users avatars. -* **Hide roles**: Hides role tags from users -* **Hide right sidebar with a click**: Automatically closes the right sidebar when clicked. -* **Hide Avatars**: Hides avatars on the channels, showing only the users' usernames. -* **Group by Type:**: Groups your channels by Type or merge them in a single list - -### Highlights - -Specify a comma-separated list of words or phrases to trigger notifications for when mentioned by anyone in public or private channels of which you are a member - -### Sound - -Configure audio notifications used for the following: - -* New Room -* New Message - -Available audio notifications: - -* None -* Beep -* Chelle -* Ding -* Droplet -* Highbell -* Seasons - -## Profile - -Verify and edit the following profile information: - -* Name -* Username -* Email -* Set a new password - -Upon verification of your email by the Rocket.Chat server, a check appears alongside it. - -Should you need another verification email, select the **Verify email** option. - -To set or change your avatar for a Rocket.Chat server, click on one of the images beside your current avatar. To upload a new avatar, click the **Upload Avatar** option. - -## Security - -Enable or disable Two Factor Authentication \(2FA\) for your account on a Rocket.Chat server. - -When you enable 2FA, you are required to get a key code from an app on your phone, thus increasing security when logging in. - -**Note**: 2FA can be turned on and off by the system admin. If you can't find this setting, please contact your system admin. - -To enable 2FA, you need to: - -* Click the **Enable two-factor authentication** button. -* Use an authentication app, such as Google Authenticator, Authy, or Duo, to scan the QR code. Scanning the QR code displays a six-digit code. Enter the code into Rocket.Chat. -* Copy your backup code somewhere safe if you need to access it in the future without the authentication app. Click **Send** to finish. -* To disable the 2FA, click on **Stop two-factor authentication**. - -## Personal Access Tokens - -The personal access token section allows the user to create their personal tokens to consume Rocket.Chat API, for example. - -![](../../../.gitbook/assets/screenshot_565.png) - -To create your personal access token, hit the _Add_ button. - -![](../../../.gitbook/assets/pat_1.png) - -After creating the token, it will be listed as below: - -![](../../../.gitbook/assets/screenshot_566.png) - -The two highlighted icons are, respectively: _refresh_ \(it will refresh and generate a new token\) and _delete_ - diff --git a/guides/user-guides/video-conferencing/README.md b/guides/user-guides/video-conferencing/README.md deleted file mode 100644 index e0af5fdf1d..0000000000 --- a/guides/user-guides/video-conferencing/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# Video Conferencing - -In Rocket.Chat start video and audio conferences using [Jitsi Meet](https://jitsi.org/jitsi-meet/). - -**Note:** This feature must be enabled by the server's administrator. See [Setting up video conferencing](../../administration/misc.-admin-guides/setting-up-video-conferencing/). - -## Start a Jitsi meet - -To start a Jitsi meet: - -Go to the channel or user that you want to start a video conference. Access the channel actions menu and then select **Video Chat**. A Jitsi meet starts in a new tab or through the Jitsi app on mobile. - -**Note:** If you can't see the **Video Chat** option on the channel actions menu, please contact your system admin, since video conferencing can be allowed only on private channels or on all channels depending on the server configuration. - -Other users can join the meeting using the **Click to Join!** an option that sends to the channel or user. - -## Screen Sharing - -To share your screen during a Jitsi meet, select **Share Screen**. Choose what browser, desktop, or tab you want to share in the conference. - -To end a screen share, click **End share**. - -To use screen share in Chrome, install this [extension](https://chrome.google.com/webstore/detail/rocketchat-screen-share/nocfbnnmjnndkbipkabodnheejiegccf). - diff --git a/guides/user-guides/video-conferencing/bigbluebutton-user-guide.md b/guides/user-guides/video-conferencing/bigbluebutton-user-guide.md deleted file mode 100644 index 9f01af35e5..0000000000 --- a/guides/user-guides/video-conferencing/bigbluebutton-user-guide.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -description: >- - BigBlueButton is a free software web conferencing system designed for online - learning. It has integrations for many of the major learning and content - management systems. ---- - -# BigBlueButton User Guide - -BigBlueButton offers the core features one would expect from a web conferencing system, including: - -* real-time sharing of audio, video, screen -* public/private chat -* upload of PDF and Microsoft Office documents -* Interactive whiteboard -* Integration with phone systems - -If you have BigBlueButton configured on your server, follow the following instructions to use it as your web conferencing solution. - diff --git a/installation/README.md b/installation/README.md deleted file mode 100644 index 415cfffdcc..0000000000 --- a/installation/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Installing and Updating - -Rocket.Chat can be hosted on our Cloud, installed from a variety of marketplaces, or installed on your own server. Find a guide below that matches your needs. - -{% page-ref page="snaps/" %} - -{% page-ref page="paas-deployments/" %} - -{% page-ref page="automation-tools/" %} - -{% page-ref page="manual-installation/" %} - -{% page-ref page="docker-containers/" %} - diff --git a/installation/automation-tools/README.md b/installation/automation-tools/README.md deleted file mode 100644 index cde148b29e..0000000000 --- a/installation/automation-tools/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Automation Tools - diff --git a/installation/automation-tools/ansible.md b/installation/automation-tools/ansible.md deleted file mode 100644 index e0e8285c23..0000000000 --- a/installation/automation-tools/ansible.md +++ /dev/null @@ -1,164 +0,0 @@ -# Ansible - -## Quick Links - -* [Rocket.Chat official Ansible role](https://galaxy.ansible.com/RocketChat/Server/#readme) -* [Ansible official install guide](http://docs.ansible.com/ansible/intro_installation.html) - -## About - -This document will explain, to those unfamiliar with Ansible, how they can get an Ansible environment set up quickly, with the end goal of deploying Rocket.Chat to a \(or multiple\) server\(s\). - -It is a quick, dirty How To format, not intended to teach you Ansible's full capabilities. Ansible is an incredible tool, with great documentation, a welcoming community, and it's all very easy to pick up - not to mention extremely powerful and suited for just about any situation. - -## Operational Overview - -Ansible works on a "push to clients" basis. You have your control node, which pushes all the configuration/ad-hoc tasks out to your systems via SSH, with no client running on the systems you're deploying to! This model means it's very fast, efficient, secure, scalable, and extremely portable. - -So, to control remote systems, you only need to install Ansible on your control node - your own desktop would make a great control node to deploy from :\) - -## Getting Ansible - -It's recommended that you check out [Ansible's official documentation on installing](http://docs.ansible.com/ansible/intro_installation.html) \(it's really easy!\), but here's a quick rundown of installation methods: - -### Package manager - -If you're running a UNIX-like system, like Linux or BSD, Ansible is likely available in your official package repositories. Use your package manager to see if it's available and if so, install it! [Ansible's installation documentation has a section on this](http://docs.ansible.com/ansible/intro_installation.html#latest-release-via-yum) - just scroll down until you see your OS. - -### Via Pip - -Ansible is written in Python, so, it's only natural that it be available for install via [`pip`](https://pypi.python.org/pypi). If you have `pip` installed it's as easy as: `$ sudo pip install ansible` - -If not, check to see if you can install `pip` via your system's package manager \(you want the Python 2.7 version!\). - -Or, if you're on Mac OS X, and you're not using [Homebrew](http://brew.sh) or [pkgsrc](https://github.com/cmacrae/saveosx), you should be able to install `pip` using `easy_install`, like so: `$ sudo easy_install pip` then - -```text -$ sudo pip install ansible -``` - -For any other systems, please refer to [Ansible's official documentation on installing](http://docs.ansible.com/ansible/intro_installation.html). - -### Simple Deployment Environment for Rocket.Chat - -So, now you've got Ansible installed, you can get ready to deploy Rocket.Chat! - -### Prerequisites - -* You must have SSH access to the system you want to deploy to as the `root` user. -* The system you're deploying to must have Python installed \(pretty much comes with most operating systems nowadays, easy to install if not\). -* The system you're deploying to must run one of the following operating systems: - - * EL 7 \(RHEL/CentOS\) - * Debian 8 \(Jessie\) LTS - * Ubuntu 16.04 LTS - * Ubuntu 19.04 - - Future releases of the [official Rocket.Chat Ansible role](https://galaxy.ansible.com/RocketChat/Server/#readme) will include other Linux distributions/releases and other operating systems. If you'd like to see your OS of choice supported, feel free to [raise an issue](https://github.com/RocketChat/Rocket.Chat.Ansible/issues) to ask if it can be added. - -### Inventory set-up - -Make a directory somewhere, perhaps in your home directory, or somewhere you keep Git repositories or code. It doesn't really matter what it's called, but for example's sake, we'll call ours `ansible`: - -```text -~/ $ mkdir ansible -~/ $ cd ansible -~/ansible $ -``` - -Now we're in our `ansible` directory, we're going to make an inventory file. This is a simple formatted file that contains a list of systems that we want to connect to and control using Ansible. It can contain single hosts, group hosts together, groups of groups, set variables on a host or group basis... there are lots of things you can do with the inventory, but that's outside the scope of this document's intended teachings. - -Make the inventory file `inventory`, for simplicity's sake: `~/ansible $ touch inventory` - -Now, with your favorite editor, open the file and add the hostname or FQDN of the server\(s\) you want to deploy Rocket.Chat to, like so: - -```text -[chat_servers] -chat.my.domain -``` - -Notice the `[chat_servers]` line? This denotes a group, simply called "chat\_servers". Any hostnames/FQDNs/IP addresses under this will be members of the "chat\_servers" group. If you want to add another server, just drop it in like so: - -```text -[chat_servers] -chat.my.domain -talk.my.domain -``` - -We're pretty much done with the inventory, just one last thing whilst we're on the subject: if you are not using SSH key-pairs for authenticating your SSH connections to your server\(s\)... you should be... but if you're not, you can tell Ansible the `root` user's password here in the inventory file. This is, of course, insecure, and is considered bad practice - so should only be temporary. Let's set the `root` user's password for the `chat.my.domain` host: - -```text -[chat_servers] -chat.my.domain ansible_ssh_pass=SuP3rseCre7pA$sw0rd -talk.my.domain -``` - -Simple as that! Alright, we're almost ready to deploy Rocket.Chat, just two more things to sort out. - -### Download the Rocket.Chat Ansible role - -Ansible has a nice and easy way to share and use other people's roles: [Galaxy](http://galaxy.ansible.com). You can download roles you want to use by using a command-line tool that was installed earlier when you installed Ansible, `ansible-galaxy`. - -First off, our roles need somewhere to live, so, let's make a `roles` directory: - -```text -~/ansible $ mkdir roles -``` - -Then, we need to create a `requirements.yml` file that will describe to `ansible-galaxy` how we want to fetch the role. So, create and open the file `roles/requirements.yml` using your favorite editor. The contents of `requirements.yml` will vary based on which version of Ansible you're running. Run `ansible --version` to find out. - -If you're running Ansible 1.9.4, paste the following into your `requirements.yml`: - -```yaml -- src: RocketChat.Server - version: master -``` - -If you're running Ansible 2.0, paste the following into your `requirements.yml`: - -```yaml - - src: RocketChat.Server - version: v2.2.2 -``` - -Next, let's fetch the Rocket.Chat Ansible role using the `ansible-galaxy` command: `~/ansible $ ansible-galaxy install -p roles/ -r roles/requirements.yml`This command says "Hey, I want to install any roles I have defined in `requirements.yml`". Hopefully, after a couple of seconds, you should have the `RocketChat.Server` role in your `roles` directory: - -```text -~/ansible $ ls roles -RocketChat.Server -``` - -Great! One last thing to prepare! - -### Create a Playbook to "play" the Rocket.Chat Ansible Role - -Ansible roles are built out of a collection of "plays" - which are essentially tasks/actions to take. To use a role, we need to create a very simple little playbook that tells Ansible "I want to run this role, on these systems.". - -Let's call the playbook `rocket_chat.yml` \(the `.yml` denotes a YAML document, which is what language you use to express most things in Ansible\): `~/ansible $ touch rocket_chat.yml` - -Now, again, with your favorite editor, add the following to your `rocket_chat.yml` playbook: - -```yaml ---- - - - name: Apply the RocketChat.Server role to all chat_servers - hosts: chat_servers - - roles: - - RocketChat.Server -``` - -That's it! You're ready to go! - -### Deploy Rocket.Chat using Ansible - -To run the playbook, use the `ansible-playbook` command, like so: `~/ansible $ ansible-playbook -i inventory rocket_chat.yml` - -This command could be expressed as "Run the `rocket_chat.yml` playbook with the inventory file `inventory`.". - -Now we just sit back and watch the magic happen! - -When it's all done, provided all went well and no parameters were changed, you should be able to visit `https://chat.my.domain` and be greeted by a wonderful Rocket.Chat logo and login screen! - -There are _lots_ of options you can set with this role, just take a look at the [README](https://github.com/RocketChat/Rocket.Chat.Ansible/blob/master/README.md) to find out more. - diff --git a/installation/automation-tools/helm-chart.md b/installation/automation-tools/helm-chart.md deleted file mode 100644 index 9a6b8e9d71..0000000000 --- a/installation/automation-tools/helm-chart.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -description: Installing Rocket.Chat Chart on Kubernetes using Helm ---- - -# Kubernetes using Helm - -> **WARNING**: Upgrading to chart version 1.1.0 \(Rocket.Chat 1.0.3\) might require extra steps to retain the MongoDB data. See [Upgrading](helm-chart.md#upgrading) for more details. - -Helm is a tool that streamlines installing and managing Kubernetes applications. Think of it like apt/yum/homebrew for Kubernetes, helm uses a packaging format called charts. A chart is a collection of files that describe a related set of Kubernetes resources. The Rocket.Chat helm chart packages Rocket.Chat server and mongodb. Options for the Rocket.Chat helm chart can be found [here](https://artifacthub.io/packages/helm/helm-stable/rocketchat). - -Working with Helm and Kubernetes is especially simple if you are using Ubuntu 20.04lts, 18.04lts, or 16.04lts. See [microk8s installation ](https://microk8s.io/docs%20)details. Helm 3 is the latest version, and it is already built into microk8s, you can access it via the command: - -```bash -$ microk8s.helm3 -``` - -> **NOTE:** Helm 3 no long includes a default chart repository. Make sure you [add the stable chart repository ](https://helm.sh/docs/intro/quickstart/#initialize-a-helm-chart-repository)to your Helm 3 instance. - -## Default settings for Rocket.Chat helm chart - -* Rocket.Chat chart installs rocketchat server \(stable/rocketchat\) -* Rocket.Chat chart installs mongodb chart \(stable/mongodb\) -* Authentication for mongodb is enabled by default \(usePassword : true\) -* Two persistent volumes will be created, one for mongodb that will store Rocket.Chat data and one for Rocket.Chat uploads -* If not set, a random password will be generated for the root user in mongodb, and no custom user, password and database will be created for Rocket.Chat so we recommend installing this chart setting those parameters. - -### Install Rocket.Chat chart and configure mongodbUsername, mongodbPassword, mongodbDatabase and mongodbRootPassword: - -```bash -$ helm install --set mongodb.mongodbUsername=rocketchat,mongodb.mongodbPassword=changeme,mongodb.mongodbDatabase=rocketchat,mongodb.mongodbRootPassword=root-changeme my-rocketchat stable/rocketchat -``` - -* mongodbUsername: This user will have access to the rocketchat database \(mongodbDatabase\) and is authenticated using mongodbDatabase -* mongodbPassword: Password for accessing your Rocket.Chat data -* mongodbDatabase: Database used to store Rocket.Chat application and authenticate the mongodbUsername -* mongodbRootPassword: The password for the root user, administrator of the mongodb statefulset and authenticated using the admin database - -Is possible to check both passwords, mongodbPassword and mongodbRootPassword, in mongodb secret, use `kubectl get secrets`. - -#### If you would like to install a different image than the default for this chart, add to the command the image you would like to install: - -```bash -$ helm install --set mongodb.mongodbUsername=rocketchat,mongodb.mongodbPassword=changeme,mongodb.mongodbDatabase=rocketchat,mongodb.mongodbRootPassword=root-changeme,repository= my-rocketchat stable/rocketchat -``` - -#### And if you only would like to install another version of rocket.chat image, add tag value to the command: - -```bash -$ helm install --set mongodb.mongodbUsername=rocketchat,mongodb.mongodbPassword=changeme,mongodb.mongodbDatabase=rocketchat,mongodb.mongodbRootPassword=root-changeme,image.pullPolicy=Always,image.tag=3.7.0 my-rocketchat stable/rocketchat -``` - -#### Check rocketchat values.yaml file for more details and adjust to your needs, after you can install Rocket.Chat chart using this command, remember to set mongodbUsername, mongodbPassword, mongodbDatabase and mongodbRootPassword: - -```bash -$ helm install --name my-rocketchat -f values.yaml stable/rocketchat -``` - -## Typical k8s/Helm Deployment on AWS EKS - -This is an example of how Rocket.Chat instances can be deployed in a very scalable, fault-tolerant and backed up configuration, suitable for critical production services. - -![Multi Instance k8s/Helm Deployment on AWS EKS](../../.gitbook/assets/rocket-chat-aws-eks.svg) - -## Upgrading - -Rocket.Chat version 1.x requires a MongoDB ReplicaSet to be configured. When using the dependent `stable/mongodb` chart \(`mongodb.enabled=true`\), enabling ReplicaSet will drop the PVC and create new ones, therefore loosing the database content, check instructions on how to manually upgrade below. - -Backwards compatibility is not guaranteed unless you modify the labels used on the chart's deployments. Use the workaround below to upgrade from versions previous to 1.0.0. The following example assumes that the release name is my-rocketchat: - -```text -$ kubectl delete deployment my-rocketchat-rocketchat --cascade=false -``` - -### Follow these steps to manually upgrade: - -We recommend setting up another set of k8s resources, test that the upgrade is correct and then remove resources from previous version. - -* Create a backup of the Rocket.Chat database: - -```bash -$ kubectl exec -- sh -c 'mongodump -u -p --archive=/tmp/rocketchat-db-bkup.gz --gzip --db ' -``` - -* Copy the backup file to working directory: - -```bash -$ kubectl cp :/tmp/rocketchat-db-bkup.gz . -``` - -* Install the new helm chart with Rocket.Chat version > 1.0 following instructions below, use a different name but keep your previously configured mongodbUsername, mongodbPassword and mongodbDatabase: - -```bash -$ helm install --set mongodb.mongodbUsername=rocketchat,mongodb.mongodbPassword=changeme,mongodb.mongodbDatabase=rocketchat,mongodb.mongodbRootPassword=root-changeme --name my-rocketchat-1 stable/rocketchat -``` - -* Copy the database backup file from working directory to the new mongodb pod: - -```bash -$ kubectl cp rocketchat-db-bkup.gz my-rocketchat-1-mongodb-primary-0:/tmp -``` - -* Restore the database: - -```bash -$ kubectl exec my-rocketchat-1-mongodb-primary-0 -- sh -c 'mongorestore -u -p --archive=/tmp/rocketchat-db-bkup.gz --gzip --db ' -``` - -* Check that the database was restored successfully: - -```bash -kubectl exec my-rocketchat-1-mongodb-primary-0 -- sh -c 'mongo -u -p --eval="printjson(db.runCommand( { listCollections: 1.0, nameOnly: true } ))"' -``` - diff --git a/installation/automation-tools/openshift.md b/installation/automation-tools/openshift.md deleted file mode 100644 index 59f355f642..0000000000 --- a/installation/automation-tools/openshift.md +++ /dev/null @@ -1,55 +0,0 @@ -# OpenShift - -This repository hosts some templates for provision Rocket.Chat in OpenShift. - -[http://developers.redhat.com/](http://developers.redhat.com/) - -## Installation on Container Development Kit \(CDK\) - -* Download and install CDK -* Download and install the OpenShift Client tool -* Run OpenShift vagrant machine -* Pull the Rocket.Chat Docker image from Docker Hub and tag/push to the internal OpenShift registry: - -```bash -docker pull registry.rocket.chat/rocketchat/rocket.chat -docker tag rocketchat/rocket.chat hub.openshift.rhel-cdk.10.1.2.2.xip.io/openshift/rocket-chat -docker push hub.openshift.rhel-cdk.10.1.2.2.xip.io/openshift/rocket-chat -``` - -* Login in OpenShift and create a new project in OpenShift - -```bash -oc login -u openshift-devel https://10.1.2.2:8443 -oc new-project rocket-chat -``` - -* Clone this repo and add the templates and ImageStream to openshift namespace: - -```bash -git clone https://github.com/rimolive/rocketchat-openshift -oc create -n openshift -f rocket-chat-is.json -oc create -n openshift -f rocket-chat-ephemeral.json -``` - -* Create the rocket-chat app: - -```bash -oc new-app rocket-chat -p MONGODB_DATABASE=rocketchat,MONGODB_USER=rocketchat-admin,MONGODB_PASS=rocketchat -``` - -* Rocket.Chat uses a domain check code to verify the validity of the e-mail address. To disable it, run the following commands: - -```bash -oc port-forward 27017 -mongo localhost:27017 -``` - -Inside the mongo client: - -```javascript -use rocketchat -db.auth('rocketchat-admin','rocketchat') -db.rocketchat_settings.update({_id:'Accounts_UseDNSDomainCheck'},{$set:{value:false}}) -``` - diff --git a/installation/community-supported-installation/README.md b/installation/community-supported-installation/README.md deleted file mode 100644 index c87c577c92..0000000000 --- a/installation/community-supported-installation/README.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -description: Community Supported Installation Methods ---- - -# Nonofficial Methods - -The installation methods in this folder are not officially supported by Rocket.Chat, so we can't assure that these are working or updated. - -As we know, there are people who use these methods, so we will leave them open for contributions from the community. - -You can also check their respective forum pages under [Community Guides](https://forums.rocket.chat/c/community-guides) category. - -* [FreeBSD](freebsd/) -* [Windows 10 Pro](windows-10-pro.md) -* [Windows Server 2012](windows-server.md) -* [OpenSUSE](opensuse.md) -* [Kali](../manual-installation/kali-linux.md) - - - diff --git a/installation/community-supported-installation/freebsd/README.md b/installation/community-supported-installation/freebsd/README.md deleted file mode 100644 index 9666d4fdc2..0000000000 --- a/installation/community-supported-installation/freebsd/README.md +++ /dev/null @@ -1,242 +0,0 @@ ---- -description: Deploying Rocket.Chat on FreeBSD ---- - -# FreeBSD - -_Note: This is a community supported installation method. You can discuss about this in the_ [_forum thread_](https://forums.rocket.chat/t/freebsd-installation-guide/651)_._ - -## Prerequisites - -Valid for: - -* FreeBSD 10.3-RELEASE - -\(64bit, meteor's development scripts will not compile under 32bit\) - -_Please use a fresh system without traces of node or npm. Most of my initial problems came from old and/or special versions of node/npm/meteor_ - -## Packages - -You need to install the following packages either as root or via sudo: - -```text -$ sudo pkg install git scons python gcc48 gmake npm bash wget -``` - -Also install mongodb if you will be running the database setup on this server as well. - -If you get the following output: - -```text -The package management tool is not yet installed on your system. -Do you want to fetch and install it now? [y/N]: -``` - -It's just because the pkg-ng binary package system have not been setup / bootstraped yet. Simply choose yes \(y\) here. And press enter. - -### Installing pm2 - -We need pm2 later to daemonize or Rocket.Chat build. - -Now, install pm2: - -```text -$ sudo npm install pm2 -g -$ sudo pm2 startup freebsd -``` - -## Add user for Rocket.Chat - -This user will be the one used for running Rocket.Chat server. - -```text -$ adduser -Username: rocketchat -Full name: User used for running rocket chat -Uid (Leave empty for default): *press enter* -Login group [rocketchat]: *press enter* -Login group is rocketchat. Invite rocketchat into other groups? []: *press enter* -Login class [default]: *press enter* -Shell (sh csh tcsh git-shell bash rbash nologin) [sh]: bash -Home directory [/home/rocketchat]: *press enter, or pick where you want your Rocket.Chat installation to be* -Home directory permissions (Leave empty for default): *press enter* -Use password-based authentication? [yes]: *press enter* -Use an empty password? (yes/no) [no]: *press enter* -Use a random password? (yes/no) [no]: yes -Lock out the account after creation? [no]: *press enter* -Username : rocketchat -Password : -Full Name : User used for running Rocket.Chat -Uid : 1001 -Class : -Groups : rocketchat -Home : /home/rocketchat -Home Mode : -Shell : /usr/local/bin/bash -Locked : no -OK? (yes/no): yes -adduser: INFO: Successfully added (rocketchat) to the user database. -adduser: INFO: Password for (rocketchat) is: qGn&j9nXBx&j*C#u -Add another user? (yes/no): no -``` - -Be sure to save the password somewhere safe if you will need to login as the Rocket.Chat user in the future. - -### Switch to the newly created user - -```text -$ su -l rocketchat -``` - -\(Or what ever username you picked\). - -## Building the dev\_bundle - -### Setting up the environment - -Set some environment Variables to make the build work under FreeBSD: - -```text -$ export MAKE_CMD=gmake -$ export CXX=clang++ -$ export CC=clang -``` - -`MAKE_CMD=gmake` is important, because meteor requires GNU make to build. The fork we will be building lets us set `MAKE_CMD` so we don't have to do nasty stuff to our BSD make. - -### Building meteor - -We need a fork of meteor which allows us to set `MAKE_CMD` as mentioned before: - -```text -$ cd $HOME -$ git clone -b freebsd https://github.com/williambr/meteor -``` - -Meteor comes with scripts to build it: - -```text -$ cd meteor -$ ./scripts/build-mongo-for-dev-bundle.sh -$ ./scripts/build-node-for-dev-bundle.sh -$ ./scripts/generate-dev-bundle.sh -``` - -\(These commands might take a long time to run depending on your hardware\) - -After compiling the development bundles above test out the meteor setup - -```text -$ ./meteor --version -``` - -This should give you output: - -```text -It's the first time you've run Meteor from a git checkout. -I will download a kit containing all of Meteor's dependencies. -Skipping download and installing kit from /usr/home/rocketchat/meteor2/dev_bundle_FreeBSD_amd64_0.5.16.tar.gz -*** SNIPPED HERE *** -Unreleased, running from a checkout at 9719021 (HEAD -> freebsd, origin/freebsd) -``` - -This should output no errors \(Also version numbers might change\). - -#### Troubleshooting - -That should run without problems. If you run into issues check the following: - -* is the Environment setup right? -* Are the scripts running in bash? -* do I have `gmake` installed? - -## Running Rocket.Chat - -First, we need the `meteor` binary in our `$PATH` - -```text -$ export PATH=$PATH:$HOME/meteor -``` - -Next, we need to download Rocket.Chat: - -```text -$ cd $HOME -$ git clone https://github.com/RocketChat/Rocket.Chat.git -$ cd Rocket.Chat -``` - -We need to install bcrypt separately. - -```text -$ npm install --clang=1 bcrypt -``` - -After that: Go ahead and start Rocket.Chat! - -```text -$ meteor -``` - -The first launch of Rocket.Chat might take some time as its installing dependencies. If all goes well you would see output like this: - -```text -=> App running at: http://localhost:3000/ -I20160422-21:52:50.733(2)? ➔ System ➔ startup -I20160422-21:52:50.734(2)? ➔ +----------------------------------------+ -I20160422-21:52:50.735(2)? ➔ | SERVER RUNNING | -I20160422-21:52:50.735(2)? ➔ +----------------------------------------+ -I20160422-21:52:50.736(2)? ➔ | | -I20160422-21:52:50.737(2)? ➔ | Version: 0.27.0 | -I20160422-21:52:50.737(2)? ➔ | Process Port: 21690 | -I20160422-21:52:50.738(2)? ➔ | Site URL: http://localhost:3000/ | -I20160422-21:52:50.739(2)? ➔ | | -I20160422-21:52:50.739(2)? ➔ +----------------------------------------+ -``` - -If you would like to have the Rocket.Chat daemon running while signed out. You could use tmux to keep it running. - -### Install tmux \(optional\) - -```text -$ sudo pkg install tmux -``` - -Start a tmux session and run Rocket.Chat - -```text -$ tmux (when tmux is running) -$ meteor -``` - -This will run Rocket.Chat inside a tmux session allowing you to disconnect from the terminal and let the daemon running. - -* Press `ctrl+b d` to exit the tmux session. -* And use `tmux a` to access the session again. - -To read more about using tmux see this page: - -[http://man.openbsd.org/OpenBSD-current/man1/tmux.1](http://man.openbsd.org/OpenBSD-current/man1/tmux.1) - -Or look up one of the many tmux guides online. - -### Troubleshooting tmux - -If you run into any troubles with bcrypt, try this: `cp -R ~/meteor/packages/non-core/npm-bcrypt ~/Rocket.Chat/packages/*` - -If you run into problems with `fibers` check your `node` and `npm` version. Then try to build it again. - -### Notes - -* This guide is tested in a FreeBSD 10.3-RELEASE jail. -* Ensure you don't expose the mongoDB instance to the internet without setting up security for it! - -## Thanks - -* Filias Heidt -* Matt Olander -* William Grzybowski -* Cory Smelosky -* Sing Li - diff --git a/installation/community-supported-installation/freebsd/universal.md b/installation/community-supported-installation/freebsd/universal.md deleted file mode 100644 index b2ac497651..0000000000 --- a/installation/community-supported-installation/freebsd/universal.md +++ /dev/null @@ -1,71 +0,0 @@ -# Deploying Rocket.Chat Server Binaries on a FreeBSD system - -**Note: This deployment method is not officially supported by Rocket.Chat, you might need to build your own or find a community version of the tar file.** - -This is the recommended production deployment method on and is based on the excellent [Meteor Universal fork](http://meteor-universal.tumblr.com/) by Tom Freudenberg. - -As `root`: - -```text -# pkg install bash git GraphicsMagick mongodb python scons gmake -# sysrc mongod_enable=YES -# service mongod start -# pw groupadd rocketchat -# pw useradd rocketchat -g rocketchat -s /usr/local/bin/bash -m -# su -l rocketchat -``` - -As user running Rocket.Chat: - -```text -$ git clone --depth 1 -b release-1.2.1-universal https://github.com/4commerce-technologies-AG/meteor -$ cd meteor -$ ./meteor --version -$ cd $HOME -$ tar xf rocket.chat-freebsd-develop.tgz -$ cd $HOME/bundle/programs/server -$ $HOME/meteor/dev_bundle/bin/npm install -$ cd $HOME/bundle -$ export MONGO_URL=mongodb://localhost:27017/rocketchat -$ export Accounts_UseDNSDomainCheck=false -$ export ROOT_URL=http://your.host:3000 -$ export PORT=3000 -$ export ADMIN_PASS=supersecret -$ export ADMIN_USER=admin -$ $HOME/meteor/dev_bundle/bin/node $HOME/bundle/main.js -``` - -A very crude startup file for the server, \(very ugly, does not fork, don't set rocketchat\_enable=YES\): - -```text -#!/bin/sh - -# PROVIDE: rocketchat -# REQUIRE: LOGIN mongod -# KEYWORD: shutdown -# -# Add the following lines to /etc/rc.conf.local or /etc/rc.conf -# to enable this service: -# -# rocketchat_enable (bool): Set to "NO" by default. -# rocketchat_env (str): List of environment variables passed to rocketchat -# - -. /etc/rc.subr - -name="rocketchat" -rcvar=rocketchat_enable - -load_rc_config $name - -: ${rocketchat_enable="NO"} -: ${rocketchat_env="MONGO_URL=mongodb://localhost:27017/rocketchat PORT=3000"} -: ${rocketchat_user="rocketchat"} -: ${rocketchat_group="rocketchat"} - -command=/home/rocketchat/meteor/dev_bundle/bin/node -command_args="/home/rocketchat/Rocket.Chat/.meteor/local/build/main.js" - -run_rc_command "$1" -``` - diff --git a/installation/community-supported-installation/opensuse.md b/installation/community-supported-installation/opensuse.md deleted file mode 100644 index 841b986ef8..0000000000 --- a/installation/community-supported-installation/opensuse.md +++ /dev/null @@ -1,418 +0,0 @@ ---- -description: Install and Run Rocket.Chat on OpenSUSE Leap 42.2 ---- - -# OpenSUSE Leap 42.2 - -_Note: This is a community supported installation method. You can discuss about this in the_ [_forum thread_](https://forums.rocket.chat/t/opensuse-installation-guide/657)_._ - -_Last updated 2017-08-26_ - -Node.js version: 8.9.3 - -Rocket.Chat version: 0.60.0 - -These are barebones instructions for how to set up a Rocket.Chat server on OpenSUSE Leap 42.2 using nginx as a reverse proxy. These will help you set up a system you can experiment with. **THEY ARE NOT INTENDED FOR SETUP OF A PRODUCTION SYSTEM!** They are oriented on using a VM from AWS, but should work for any Leap 42.2 system. - -## Overview - -You will install and configure: - -1. Node.js -2. MongoDB -3. Let's Encrypt SSL certificates -4. nginx -5. Rocket.Chat and its dependencies - -To do this, you will: - -1. Acquire a VM to install on -2. Install all the packages you'll need -3. Start and configure MongoDB -4. Install Let's Encrypt SSL certificates -5. Configure and start nginx -6. Install and start Rocket.Chat - -Things you'll need to do afterwards on your own, **especially if you want a production-worthy system**: - -* Create a `systemctl` script to restart Rocket.Chat if the server is rebooted -* Configure email on the server \(so Rocket can request account validation\) -* Secure the server \(e.g. get rid of the default user on a VM, etc.\) -* Monitor the server so you can respond if it goes down - * Rocket.Chat availability - * MongoDB availability - * nginx availability -* Configure MongoDB for production use - * Use an XFS volume - * Use persistent \(e.g. non-local\) storage if you're using a VM - * Configure replica sets - * Consider setting /sys/kernel/mm/transparent\_hugepage/enabled to "never" as recommended by Mongo at startup -* Set up periodic updates for the system - -## Acquire a VM with OpenSUSE Leap 42.2 - -I like to use AWS spot instances as a very cheap way to experiment with things. I find I can usually get an m3.medium \(1 vCPU, 3.75GB RAM\) for ~$0.01/hour, or ~$7/month if run continuously. Pick the right region and you'll rarely if ever be shut down. - -There's a `spot_instance.json` below that I generally use to set up an instance. I already have a few security groups to lock down all but the ports I need, an IAMS profile to allow just the privileges I want, and an SSH keypair generated; I'm not going to tackle those here, so if you want to do this, you probably should do some quick research and set those up yourself. - -I also use the AWS CLI, so it's preconfigured for my favorite region, credentials, etc. If you don't have that set up, you'll want to. - -When you've got those set, getting an instance is really straightforward: - -```text -aws ec2 request-spot-instances --cli-input-json file://spot_instance.json -``` - -Note: if you get an error saying that you must subscribe to the AMI before using it, copy the URL in the error message and open it in a browser. The "subscription" costs $0.00/hour, so it's just a formality. - -## Configure the Box - -The default user in the Leap 42.2 image is `ec2-user`. You'll ssh into the box using that user, and immediately become root. - -```text -> ssh ec2-user@IP-OR-HOSTNAME-FOR-YOUR-BOX -> sudo su - -``` - -### Update and Install Packages using zypper - -1. Add the repo for MongoDB -2. Refresh metadata for all repos -3. Update all the packages on the box -4. Install the new packages we need - -```text -zypper addrepo http://download.opensuse.org/repositories/server:database/openSUSE_Leap_42.2/server:database.repo -zypper refresh -zypper -n update -zypper -n install mongodb nodejs4 npm4 nginx GraphicsMagick gcc-c++ -``` - -### Start and Configure MongoDB - -1. Enable and start MongoDB -2. Create the admin user -3. Create the DB and user for Rocket.Chat - -In a shell: - -```text -systemctl enable mongodb -systemctl start mongodb -``` - -Now start a MongoDB shell and add the admin user: - -```text -> mongo -use admin - -db.createUser({ - user: "root", - pwd: "fl!bb3rtyJ!bb3tt", - roles: [ "root" ] -}) - -exit -``` - -Now re-open a MongoDB shell as your admin user and create the Rocket.Chat db and admin user. You'll use these later to tell Rocket how to access its DB. - -Note: Don't use `:` or `@` in this user's password or you'll need to URL escape them later. It's easier to avoid those characters. - -```text -> mongo --authenticationDatabase admin -u root -p - -use rocketchat - -db.createUser({ - user: "rocket", - pwd: "4rgl3b4rgl3", - roles: [ "readWrite", "dbAdmin" ] -}) - -exit -``` - -### Install Let's Encrypt SSL Certificates - -This is so crazy easy. Remember when this was hard, and when it cost $20-$200 per year? Please consider using one of the donation links given afterwards as a way to support continued development of CertBot. - -* [https://letsencrypt.org/donate](https://letsencrypt.org/donate) -* [https://eff.org/donate-le](https://eff.org/donate-le) - -Replace `YOUR.SERVER.NAME` below with the hostname your server will be accessed from, e.g. `chat.example.com`, and replace `YOUR@EMAIL.ADDRESS` with your email address, e.g. `admin@example.com` - -```text -git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt -cd /opt/letsencrypt && ./letsencrypt-auto certonly --standalone --email YOUR@EMAIL.ADDRESS -d YOUR.SERVER.NAME -``` - -### Configure and Start nginx - -1. Set up a more modern site config management scheme -2. Set the base `nginx` config -3. Add the config needed for Rocket.Chat -4. Enable and start nginx - -```text -cd /etc/nginx -mkdir sites-enabled sites-available -``` - -Now do two things: - -1. Replace the contents of `/etc/nginx.conf` with the `nginx.conf` below. -2. Copy the contents of `rocket_chat.conf` below to `/etc/nginx/sites-available/rocket_chat.conf` - -Now you can enable the Rocket.Chat config, then enable and start nginx - -```text -cd /etc/nginx/sites-enabled -ln -s ../sites-available/rocket_chat.conf . - -systemctl enable nginx -systemctl start nginx -``` - -### Install and Configure Rocket.Chat - -1. Add a `rocket` user and group -2. Download the latest Rocket.Chat -3. Install all the node.js dependencies for Rocket.Chat using `npm` -4. Set the required environment variables -5. Start the Rocket.Chat server - -Replace `YOUR.SERVER.NAME` below with the hostname your server will be accessed from, e.g. `chat.example.com` - -```text -groupadd -g 2000 rocket -useradd -g rocket -u 2000 rocket - -cd /opt -curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz -tar zxvf rocket.chat.tgz -mv bundle Rocket.Chat -chown -R rocket:rocket /opt/Rocket.Chat - -su - rocket -cd /opt/Rocket.Chat/programs/server -npm install -cd ../.. - -# TODO: Make a script for this for systemctl -export ROOT_URL=http://YOUR.SERVER.NAME/ -export MONGO_URL=mongodb://rocket:4rgl3b4rgl3@localhost:27017/rocketchat -export PORT=3000 - -node main.js -``` - -If everything is working as planned, you'll see something like: - -```text -Will load cache for users -0 records load from users -Will load cache for rocketchat_room -0 records load from rocketchat_room -Will load cache for rocketchat_subscription -0 records load from rocketchat_subscription -Will load cache for rocketchat_settings -0 records load from rocketchat_settings -Updating process.env.MAIL_URL -Will load cache for rocketchat_permissions -0 records load from rocketchat_permissions -Will load cache for rocketchat_roles -0 records load from rocketchat_roles -LocalStore: store created at -LocalStore: store created at -Setting default file store to GridFS -Updating process.env.MAIL_URL -Using GridFS for custom sounds storage -Using GridFS for custom emoji storage -ufs: temp directory created at "/tmp/ufs" -➔ System ➔ startup -➔ +--------------------------------------------------------+ -➔ | SERVER RUNNING | -➔ +--------------------------------------------------------+ -➔ | | -➔ | Rocket.Chat Version: 0.60.0 | -➔ | NodeJS Version: 8.9.3 - x64 | -➔ | Platform: linux | -➔ | Process Port: 3000 | -➔ | Site URL: http://YOUR.SERVER.NAME:3000/ | -➔ | ReplicaSet OpLog: Disabled | -➔ | Commit Hash: 988103d449 | -➔ | Commit Branch: HEAD | -➔ | | -➔ +--------------------------------------------------------+ -``` - -... and that's Rocket.Chat all set. Direct a browser to `https://YOUR.SERVER.NAME` and register a yourself as new user. The first user you register will be made the server admin. - -## Sources - -These are docs and snippets I used to figure all of this out. - -[https://en.opensuse.org/MongoDB](https://en.opensuse.org/MongoDB) - -[https://docs.rocket.chat/installation/manual-installation/ubuntu/](https://docs.rocket.chat/installation/manual-installation/ubuntu/) - -[https://docs.rocket.chat/installation/paas-deployments/aws/](https://docs.rocket.chat/installation/paas-deployments/aws/) - -[https://www.digitalocean.com/community/tutorials/how-to-install-configure-and-deploy-rocket-chat-on-ubuntu-14-04](https://www.digitalocean.com/community/tutorials/how-to-install-configure-and-deploy-rocket-chat-on-ubuntu-14-04) - -## Config Files - -### `/etc/nginx.conf` - -This config relies on you creating `/etc/nginx/sites-available` and `/etc/nginx/sites-enabled` - -```text -user rocket; -worker_processes auto; -pid /run/nginx.pid; - -events { - worker_connections 768; - # multi_accept on; -} - -http { - - ## - # Basic Settings - ## - - sendfile on; - tcp_nopush on; - tcp_nodelay on; - keepalive_timeout 65; - types_hash_max_size 2048; - # server_tokens off; - - # server_names_hash_bucket_size 64; - # server_name_in_redirect off; - - include /etc/nginx/mime.types; - default_type application/octet-stream; - - ## - # SSL Settings - ## - - ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE - ssl_prefer_server_ciphers on; - - ## - # Logging Settings - ## - - access_log /var/log/nginx/access.log; - error_log /var/log/nginx/error.log; - - ## - # Gzip Settings - ## - - gzip on; - gzip_disable "msie6"; - - # gzip_vary on; - # gzip_proxied any; - # gzip_comp_level 6; - # gzip_buffers 16 8k; - # gzip_http_version 1.1; - # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; - - ## - # Virtual Host Configs - ## - - include /etc/nginx/conf.d/*.conf; - include /etc/nginx/sites-enabled/*; -} - - -#mail { -# # See sample authentication script at: -# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript -# -# # auth_http localhost/auth.php; -# # pop3_capabilities "TOP" "USER"; -# # imap_capabilities "IMAP4rev1" "UIDPLUS"; -# -# server { -# listen localhost:110; -# protocol pop3; -# proxy on; -# } -# -# server { -# listen localhost:143; -# protocol imap; -# proxy on; -# } -#} -``` - -### `/etc/nginx/sites-available/rocket_chat.conf` - -Replace `YOUR.SERVER.NAME` below with the hostname your server will be accessed from, e.g. `chat.example.com` - -```text -server { - listen 443 ssl; - server_name YOUR.SERVER.NAME; - ssl_certificate /etc/letsencrypt/live/YOUR.SERVER.NAME/fullchain.pem; - ssl_certificate_key /etc/letsencrypt/live/YOUR.SERVER.NAME/privkey.pem; - ssl_protocols TLSv1 TLSv1.1 TLSv1.2; - ssl_prefer_server_ciphers on; - ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; - root /usr/share/nginx/html; - index index.html index.htm; - # Make site accessible from http://localhost/ - server_name localhost; - location / { - proxy_pass http://localhost:3000/; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_set_header Host $http_host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto https; - proxy_set_header X-Nginx-Proxy true; - proxy_redirect off; - } -} -server { - listen 80; - server_name YOUR.SERVER.NAME; - return 301 https://$host$request_uri; -} -``` - -### `spot_instance.json` - -Replace `Subnet-Id`, `Arn`, and `SecurityGroupIds` content below with your own. The `ImageId` given is for the OpenSUSE Leap 42.2 AMI. - -```text -{ - "InstanceCount": 1, - "SpotPrice": "0.015", - "LaunchSpecification": - { - "ImageId": "ami-49570529", - "InstanceType": "m3.medium", - "SubnetId": "subnet-########", - "KeyName": "tinyjoy", - "IamInstanceProfile": { - "Arn": "arn:aws:iam::############:instance-profile/IAMS-PROFILE-NAME" - }, - "SecurityGroupIds": ["sg-########"] - }, - "Type": "one-time" -} -``` - diff --git a/installation/community-supported-installation/windows-10-pro.md b/installation/community-supported-installation/windows-10-pro.md deleted file mode 100644 index 867616836e..0000000000 --- a/installation/community-supported-installation/windows-10-pro.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -description: Installing on Windows 10 Pro 64bit with Docker for Windows ---- - -# Windows 10 - -_Note: This is a community supported installation method. You can discuss about this in the_ [_forum thread_](https://forums.rocket.chat/t/windows-10-pro-installation-guide/408)_._ - -Please make sure: - -* you have at least 4 GB of memory on your Windows 10 Pro machine -* you are running 64 bit edition of Windows 10 Pro -* you have the latest updates installed, and no updates pending -* you have enabled Hyper-V \(requires a reboot, go to Control Panel -> Add Windows Components -> Hyper-V\) -* you have at least 20 GB of disk space, preferably SSD - -## Steps: - -* Download and install [Docker for Windows](https://docs.docker.com/docker-for-windows/) -* Create a file named `docker-compose.yml` that contains: - -```text -db: - image: mongo:3.0 - command: mongod --smallfiles --oplogSize 128 - -rocketchat: - image: registry.rocket.chat/rocketchat/rocket.chat:latest - environment: - - PORT=3000 - - ROOT_URL=http://docker:3000 - - MONGO_URL=mongodb://db:27017/rocketchat - links: - - db:db - ports: - - 3000:3000 -``` - -* In the same directory as the above file, enter command `docker-compose up` -* Wait for the server to fully start, takes a couple of minutes -* Access your Rocket.Chat server at `http://docker:3000` - diff --git a/installation/community-supported-installation/windows-server.md b/installation/community-supported-installation/windows-server.md deleted file mode 100644 index accab00c5c..0000000000 --- a/installation/community-supported-installation/windows-server.md +++ /dev/null @@ -1,171 +0,0 @@ ---- -description: Rocket.Chat Windows Installation Guide ---- - -# Windows Server - -_Note: This is a community supported installation method. You can discuss about this in the_ [_forum thread_](https://forums.rocket.chat/t/broken-windows-server-2012-r2-installation-guide/413/2)_._ - -## How to install Rocket.Chat on Windows Server 2012 R2 - -The following guide will step through the various steps for installing Rocket.Chat on Windows Server 2012 R2. - -**Important**: Production deployment using any client versions of Windows, such as Windows 7, 8, or 10 is not supported. However, beta deployment for Windows 10 Pro \(or Enterprise or Education\) version is available via Docker for Windows see [Installing on Windows 10 Pro 64bit with Docker for Windows](windows-10-pro.md). - -Mobile clients \(iOS and Android\) are currently not supported using this method of deployment. However, [Windows 10 Pro 64bits with Docker for Windows](windows-10-pro.md) based deployment should support mobile clients. - -**Note**: The steps will include all dependencies. If a particular dependency has already been installed, please skip to any relevant configuration section. - -### Binary Dependencies - -To start, go to `Control Panel -> Programs and Features` and uninstall each of the following \(if present\): - -* Microsoft Visual C++ 2010 x64 Redistributable -* Microsoft Visual C++ 2010 x86 Redistributable - -Then, download and install each of the following **in order**: - -1. [Python 2.7.3](https://www.python.org/ftp/python/2.7.3/python-2.7.3.msi) \(if you have Python 3.x already installed, just leave it, both can coexist\) -2. [Visual C++ 2010 Express](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) or Visual Studio 2010 -3. [Windows SDK 7.1](http://www.microsoft.com/en-us/download/details.aspx?id=8279) -4. [Visual Studio 2010 SP1](https://www.microsoft.com/en-us/download/details.aspx?id=34677) -5. [Visual C++ 2010 SP1 Compiler Update for the Windows SDK 7.1](http://www.microsoft.com/en-us/download/details.aspx?id=4422) -6. [GraphicsMagick](http://www.graphicsmagick.org/INSTALL-windows.html#prerequisites) -7. [Ghostscript](http://ghostscript.com/download/gsdnld.html) \(Optional for PDF rendering\) - -### MongoDB - -* Download [MongoDB](https://www.mongodb.org/downloads#production). \(Note: This can be done on a separate computer\) -* Run the installer and choose `Custom` -* Click the `Browse` button to select desired install path, such as `C:\MongoDB` -* Continue through the rest of the installer. -* Now open NotePad and enter the following, replacing \[Data Path\] with where the database will be stored, such as `C:\MongoDB\data` - -```text -systemLog: - destination: file - path: [Data Path]\logs\mongod.log -storage: - dbPath: [Data Path]\data -replication: - replSetName: rs1 -``` - -* Save the file as `[Installation Path]\mongod.cfg` where \[Installation Path\] is the location you installed Mongo -* Open the Command Prompt by pressing `Windows Key + R` and then entering `cmd`, right click on Command Prompt and select `Run as administrator` -* Now enter the following: - -```text -> mkdir [Data Path] -> cd [Data Path] -> mkdir [Data Path]\db -> mkdir [Data Path]\logs - -> cd [Installation Path]\bin -> mongod.exe --config "[Installation Path]\mongod.cfg" --install -> net start MongoDB - -> mongo.exe -> rs.initiate() -> exit -``` - -> _Note: Do not include the `>`_ - -### Rocket.Chat files - -1. Download the latest Rocket.Chat **Windows Release** from the Rocket.Chat releases page \(not available anymore\) -2. Using an archive utility such as [7zip](http://www.7-zip.org/) or [tar for Windows](http://gnuwin32.sourceforge.net/packages/gtar.htm), extract the tar.gz file -3. Place the files in the desired install path, such as `C:\RocketChat` - -### Node.js - -Rocket.Chat is built on top of Node.js v8.9.3. So we need to install this first. - -1. Download [Node.js v8.9.3](https://nodejs.org/dist/v8.9.3/node-v8.9.3-x86.msi) -2. Run the installer with all default option. - -### Node Packages - -1. Open the _Windows SDK 7.1 Command Prompt_ by pressing Start, typing its name, and clicking on it in the search results \(Note: It needs to be the SDK Command Prompt\) -2. Now enter the following, replacing: - * \[Installation Path\] with the location you placed the Rocket.Chat files - * \[Port to Use\] with the port for the Rocket.Chat server to use, such as `3000` - * \[Rocket.Chat URL\] with the URL you will use for Rocket.Chat, such as `rocketchat.example.com` - * \[Address to MongoDB\] with the IP Address of your MongoDB. \(NOTE: If you didn't install Mongo on another computer, use `localhost`\) - * \[MongoDB Database\] with the name of the database you would like to use, such as `rocketchat` - -```text -> SetEnv /x86 -> cd [Installation Path] -> npm install nave -g -> npm install node-windows - -> npm config set python /Python27/python.exe --global -> npm config set msvs_version 2010 --global - -> set PORT=[Port to Use] -> set ROOT_URL=[Rocket.Chat URL] -> set MONGO_URL=mongodb://[Address to Mongo]:27017/[MongoDB Database] -> set MONGO_OPLOG_URL=mongodb://[Address to Mongo]:27017/local -> set SCRIPT_PATH=[Installation Path]\main.js - -> cd programs\server -> npm install - -> cd ../.. -> node rocket.service.js install -> net start Rocket.Chat -``` - -> Note: If missing, rocket.service.js can be found [here](https://github.com/Sing-Li/bbug/blob/master/images/rocket.service.js) _Note: Do not include the `>`_ - -### Verifying the Install - -1. View the installed services by pressing `Windows Key + R` and then entering `services.msc` -2. Find `Rocket.Chat` in the list. Its status should be `Running` -3. Open a browser and, in the address bar, enter `http://localhost:[Port Used]` -4. Rocket.Chat should load. - -### Mobile Support - -In order to use Rocket.Chat on mobile devices, you must also configure your installation to support SSL with a valid certificate. - -### IIS Configuration \(Optional\) - -The following steps will detail integrating Rocket.Chat with IIS. - -#### Get UrlRewrite and ARR - -1. Open IIS, click on your server, and then click on `Get New Web Platform Components` in the right hand menu -2. Install the Web Platform Installer if prompted -3. Once open, search for `Routing` in the upper right search box -4. Click on the `Add` button for Application Request Routing 3.0 and then `Install` -5. Once ARR and UrlRewrite are installed, close and reopen IIS - -#### Adding the SSL Certificate - -1. Click on your server in the left menu and then click on `Server Certificates` -2. In the right hand menu, click on `Import...` -3. Find your SSL Certificate and enter your password -4. Click `Ok` - -#### Setting up the Rocket.Chat site - -1. Create a new Web Site and bind it to the \[Rocket.Chat Url\] previously specified. - - **NOTE: If you plan on using the Rocket.Chat mobile apps, you must use HTTPS. HTTP is optional only for PCs** - -2. For the physical path, point it to an empty folder in your webroot. \(Note: There will be no default document here, just the web.config.\) -3. Press `Ok` -4. Select the new Rocket.Chat site and click on `Url Rewrite` -5. In the upper right hand menu, select `Add Rule(s)...` and then `Reverse Proxy` -6. Enter `http://localhost:[Port Used]` in the top box and hit `Ok` \(Note: This must remain HTTP even if you are using HTTPS\) - -#### Troubleshooting - -* If the Rocket.Chat service isn't running, check the Event Viewer under `Windows Logs\Application` for errors from the Rocket.Chat service. -* If the page didn't load, check the log files in \[Data Path\]\logs for clues. -* If that doesn't help, or if you had any other problems during the process, try searching our [GitHub Issues](https://github.com/RocketChat/Rocket.Chat/issues) -* If you are still having problems, visit the [\#support](https://open.rocket.chat/channel/support) channel and we'll be happy to help. - diff --git a/installation/community-supported-installation/windows-server/rocket.service.js b/installation/community-supported-installation/windows-server/rocket.service.js deleted file mode 100644 index a62503f223..0000000000 --- a/installation/community-supported-installation/windows-server/rocket.service.js +++ /dev/null @@ -1,156 +0,0 @@ -//rocket.service.js -var Service = require('node-windows').Service; -var EventLogger = require('node-windows').EventLogger; - -var logger = new EventLogger('Rocket.Chat'); - -// Create a new service object -var svc = new Service({ - name:'Rocket.Chat', - description: 'Rocket.Chat Service', - script: process.env["SCRIPT_PATH"], - env: [{ - name: "PORT", - value: process.env["PORT"] - }, - { - name: "ROOT_URL", - value: process.env["ROOT_URL"] - }, - { - name: "MONGO_URL", - value: process.env["MONGO_URL"] - }, - { - name: "MONGO_OPLOG_URL", - value: process.env["MONGO_OPLOG_URL"] - }] -}); - -var log = function(message){ - console.log(message); - logger.info(message); -}; - -var warn = function(message){ - console.warn(message); - logger.warn(message); -}; - -var error = function(message){ - console.error(message); - logger.error(message); -}; - -svc.on('install',function(){ - if(process.env["MONGO_OPLOG_URL"] == null) - { - - } - else if(process.env["MONGO_OPLOG_URL"] == null) - { - - } - else if(process.env["MONGO_OPLOG_URL"] == null) - { - - } - else if(process.env["MONGO_OPLOG_URL"] == null) - { - - } - else if(process.env["MONGO_OPLOG_URL"] == null) - { - - } - else - { - log('Install complete!'); - svc.start(); - } -}); - -svc.on('uninstall',function(){ - log((svc.exists) - ? error("Error. The Rocket.Chat service still exists.") - : log('Uninstall complete.')); -}); - -svc.on('start',function(){ - log('The Rocket.Chat service is starting...'); -}); - -svc.on('stop',function(){ - warn('The Rocket.Chat service has stopped.'); -}); - -svc.on('error',function(){ - error('Error. Something went wrong...'); -}); - -svc.on('alreadyinstalled',function(){ - log('The Rocket.Chat service has already been installed.'); -}); - -svc.on('invalidinstallation',function(){ - error('Unable to install the Rocket.Chat service. Something is wrong with the data provided.'); -}); - -var command = (process.argv.length > 2) ? process.argv[2] : null; - -var doCommand = function() -{ - switch(command) - { - case 'install': - log('Attempting to create the Rocket.Chat service...'); - svc.install(); - break; - - case 'uninstall': - log('Attempting to remove the Rocket.Chat service...'); - svc.uninstall(); - break; - - case 'start': - log('Attempting to start the Rocket.Chat service...'); - svc.start(); - - case 'stop': - log('Attempting to stop the Rocket.Chat service...'); - svc.stop(); - break; - - default: - console.error('Error. Unknown command!'); - break; - } -} - -var varsAreSpecified = function() -{ - var result = true; - - var requiredVars = [ 'PORT', 'ROOT_URL', 'MONGO_URL', 'MONGO_OPLOG_URL', 'SCRIPT_PATH' ]; - - for(var x =0; x < requiredVars.length; x++) - { - var required = requiredVars[x]; - - if(process.env[required] == null) - { - error('Error. '+ required +' was not defined!'); - - result = false; - - x = requiredVars.length; - } - } - - return result; -} - -if(command == 'stop' || command == 'uninstall' || varsAreSpecified()) -{ - doCommand(); -} \ No newline at end of file diff --git a/installation/docker-containers/README.md b/installation/docker-containers/README.md deleted file mode 100644 index d68f17f482..0000000000 --- a/installation/docker-containers/README.md +++ /dev/null @@ -1,499 +0,0 @@ ---- -description: Docker-Ubuntu 16.04 LTS (64 bit) VPS with Nginx SSL and Hubot ---- - -# Docker Containers - -## Introduction - -This guide will walk you through the installation and configuration of a Docker-based Rocket.Chat instance on Ubuntu 16.04 LTS \(64 bit\) VPS, using Nginx as a reverse SSL proxy, Hubot chatbot, and necessary scripts for an automatic restart and crash recovery. - -For people new to docker here's a quick primer: Docker is a program to allow other programs and their dependencies to be run in a type of virtual container. Using this deployment guide, you do not need to download any of the rocket chat program files manually whatsoever. Docker will get everything that is needed for Rocket.Chat to run. If you follow this guide closely, it provides everything from start to finish needed to install, create, and run your own Rocket.Chat web instance with Nginx handling SSL termination, and a Hubot chatbot keeping your general chat channel warm on those cold winter mornings. - -This guide is designed for everyone, however, it is intentionally detailed to help new users who may need a little extra guidance. If you're experienced with things like docker, Nginx, etc. you may prefer one of the other deployment guides found elsewhere on this wiki. - -## What we'll cover in this guide - -1. [Securing the server: Firewall basics \(optional\)](./#1-securing-the-server-firewall-basics-optional-recommended) -2. [Securing the server: Fail2Ban IDS \(optional\)](./#2-securing-the-server-fail2ban-optional-recommended) -3. [Installing Docker and Docker-Compose](./#3-installing-docker-and-docker-compose) -4. [Editing the hosts file](./#4-editing-the-hosts-file) -5. [Installing Nginx SSL Reverse Proxy](./#5-installing-nginx--ssl-certificate) -6. [Creating docker-compose.yml](./#6-create-the-docker-composeyml-file--local-directories) -7. [Automatic start-up, and crash recovery](./#7-automatic-startup--crash-recovery) -8. [Reboot & Status check](./#8-reboot-and-status-check) -9. [Registering & Configuring Hubot, the chat robot](./#9-registering--configuring-hubot-the-chat-robot) -10. [FAQ & Troubleshooting](./#10-troubleshooting--faq) -11. [TODO](./#11-todo) -12. [Known Issues](./#12-known-issues) - -## Prerequisites - -This guide is written assuming that you're starting with: - -* a clean new installation of Ubuntu 16.04 LTS \(64 bit\) -* properly configured DNS that resolves requests to your domain name - -## 1. Securing the server: Firewall basics \(optional, recommended\) - -First, make sure UFW \(Uncomplicated Fire Wall\) is installed. It should be installed by default in Ubuntu, but if it’s not, you can install the package using apt-get. **IMPORTANT:** We're going to add a firewall rule to permit your SSH connection on port 22/tcp. That is the default SSH port. If you have changed it to something else, you must modify the rule below to reflect your required port number. Failure to do so will break your SSH connection and lock you out of the server as soon as you enable the firewall! - -**Confirm UFW is installed:** - -```text -sudo apt-get install ufw -``` - -_Set the default access rules:\*_ - -```text -sudo ufw default deny incoming - -sudo ufw default allow outgoing -``` - -**Set the service rules \(SSH / HTTPS\):** - -```text -sudo ufw allow 22/tcp - -sudo ufw allow 443/tcp -``` - -**Enable the firewall:** - -```text -sudo ufw enable -``` - -**Check the Firewall status:** - -```text -sudo ufw status -``` - -**If you ever add or delete rules you should reload the firewall:** - -```text -sudo ufw reload -``` - -**If you ever need to turn off the firewall:** - -```text -sudo ufw disable -``` - -## 2. Securing the server: Fail2ban \(optional, recommended\) - -Fail2ban is an intrusion prevention software framework which protects computer servers from brute-force attacks. - -**Install:** - -```text -sudo apt-get update - -sudo apt-get install fail2ban -``` - -Press **Y** when prompted to proceed with the install. - -## 3. Installing Docker and Docker-Compose - -**Install Docker** [https://docs.docker.com/linux/step\_one/](https://docs.docker.com/linux/step_one/) - -**Install Docker-Compose version 1.24.0 \(64 bit\) via cURL** - -```text -sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-Linux-x86_64" -o /usr/local/bin/docker-compose -``` - -**Set the executable permissions:** - -```text -sudo chmod +x /usr/local/bin/docker-compose -``` - -**Notes:** We're using version 1.24.0 for this guide. If you wish to try a newer version, you will need to edit the cURL command to reflect the alternate version number. If you get a "Permission denied" error, your `/usr/local/bin` directory probably isn't writable and you'll need to install Compose as the superuser. Run `sudo -i`, then the two commands above, then `exit`. \(credit: docker compose docs\) - -**Confirm docker-compose is properly installed** - -```text -sudo docker-compose --version -``` - -**Notes:** For minimal distributions, or systems where `/usr/local/bin` is not part of the `$PATH` env you might need to symlink the binary into `/usr/bin` as well: - -```text -sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose -``` - -## 4. Editing the hosts file - -If your hostname.domain.tld is mapped to a publicly routable IP, it needs to be set to your local address, for example, 127.0.0.1. Please note that the order in which localhost and your hostname are placed in this file is important; make sure localhost is first. - -**Edit the hosts file:** - -```text -sudo nano /etc/hosts -``` - -```text -127.0.0.1 localhost.localdomain localhost -127.0.0.1 chat.inumio.com chat -``` - -Save and Exit. \(Press **CTRL-X** to save, **Y** for yes, then **ENTER** to save as current filename.\) - -## 5. Installing Nginx & SSL certificate - -**Install Nginx** - -```text -sudo apt-get install nginx -``` - -### 5a. Using a commercial SSL cert \(recommended\) - -If you don't have a certificate already, you can grab one for free at [Let's Encrypt](https://letsencrypt.org/). - -Or, if you want to use a self-signed SSL cert instead, skip ahead to [Self-Signed SSL](./#5b-self-signed-ssl). - -**Install the private key \(created when you generated the CSR\):** - -```text -sudo nano /etc/nginx/certificate.key -``` - -Open the private key and Copy the entire private key text-block from the file that was generated when you created the CSR. Right click on the terminal window and select paste to paste it into nano. Alternatively, if you have a tool such as filezilla, you can use it via SSH over FTP to upload your cert and key files instead of copy / paste. - -Save and Exit. - -**Install the SSL certificate \(note that this goes in certificate.**_**crt**_**, not .**_**key**_**\):** - -```text -sudo nano /etc/nginx/certificate.crt -``` - -Open the SSL Certificate provided by the SSL vendor \(will probably have a .crt or .pem extension\) and copy the entire text-block. Right click on the terminal window and select paste to paste it into nano. - -Save and Exit. - -### 5b. Self-Signed SSL - -If you acquired an SSL cert and installed it via the steps above, skip this step. - -**Create and install a self-signed SSL certificate:** - -```text -sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/certificate.key -out /etc/nginx/certificate.crt -``` - -**Follow the prompts.** - -Tip: It is **IMPORTANT** that the **Common Name** be set properly. Enter your fully qualified domain name \(FQDN\) here or, if you don’t have a FQDN, use your public IP address. For example, my FQDN for the chat server is `chat.inumio.com`. - -Save and Exit. - -### 5c. Set Key Permissions, Dhparams, Configure NGINX - -**Set permissions:** - -```text -sudo chmod 400 /etc/nginx/certificate.key -``` - -**Generate Strong Diffie Helman group** - -```text -sudo openssl dhparam -out /etc/nginx/dhparams.pem 2048 -``` - -**Configure Nginx:** - -```text -sudo nano /etc/nginx/sites-available/default -``` - -Delete the example in this file, and paste in the following: - -```bash -# HTTPS Server - server { - listen 443 ssl; - server_name chat.inumio.com; - - error_log /var/log/nginx/rocketchat_error.log; - - ssl_certificate /etc/nginx/certificate.crt; - ssl_certificate_key /etc/nginx/certificate.key; - ssl_dhparam /etc/nginx/dhparams.pem; - ssl_protocols TLSv1.2; - ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; - ssl_prefer_server_ciphers on; - ssl_session_cache shared:SSL:20m; - ssl_session_timeout 180m; - - location / { - proxy_pass http://chat.inumio.com:3000/; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_set_header Host $http_host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto https; - proxy_set_header X-Nginx-Proxy true; - proxy_redirect off; - } - } -``` - -**Edit the config** Change the server name and proxy\_pass to reflect your own details. - -Save and Exit. - -**Test the config & Restart nginx:** - -```text -sudo service nginx configtest && sudo service nginx restart -``` - -**TIP:** You can pinpoint problems in your nginx config using the following command - -```text -sudo nginx -t -``` - -## 6. Create the docker-compose.yml file & local directories - -**Create the directories:** - -```text -sudo mkdir -p /var/www/rocket.chat/data/runtime/db -sudo mkdir -p /var/www/rocket.chat/data/dump -``` - -**Create the docker-compose.yml file:** - -* Edit the ROOT\_URL value to be your FQDN. -* Edit the ROCKETCHAT\_URL to be your _public_ IP address. Keep the port \(3000\) the same. -* Edit ROCKETCHAT\_USER, ROCKETCHAT\_PASSWORD, and BOT\_NAME. -* If your Rocket.Chat docker instance is behind a proxy, set the additional env-variable "Accounts\_UseDNSDomainCheck" to "false" \(this only works, if these is a completely new deployment\) - -Save and Exit. - -Start the services by: - -```bash -docker-compose up -d -``` - -## 7. Automatic Startup & Crash Recovery - -**Create the upstart job for MongoDB** - -```text -sudo nano /etc/init/rocketchat_mongo.conf -``` - -```bash -description "MongoDB service manager for rocketchat" - -# Start MongoDB after docker is running -start on (started docker) -stop on runlevel [!2345] - -# Automatically Respawn with finite limits -respawn -respawn limit 99 5 - -# Path to our app -chdir /var/www/rocket.chat - -script - # Showtime - exec /usr/local/bin/docker-compose up mongo -end script -``` - -Save and Exit. - -**Create the upstart job for Rocket.Chat** - -```bash -sudo nano /etc/init/rocketchat_app.conf -``` - -```bash -description "Rocketchat service manager" - -# Start Rocketchat only after mongo job is running -start on (started rocketchat_mongo) -stop on runlevel [!2345] - -# Automatically Respawn with finite limits -respawn -respawn limit 99 5 - -# Path to our app -chdir /var/www/rocket.chat - -script - # Bring up rocketchat app and hubot - exec /usr/local/bin/docker-compose up rocketchat hubot -end script -``` - -Save and Exit. - -## 8. Reboot and Status check - -We're ready to start the show! With luck, you should be able to reboot, and the chat system will come online by itself. The first time the system runs, it will have to download a bunch of docker image files. You won't see this occurring when you log back in. It's important to allow the downloads to complete without interruption. - -After the downloads are extracted, the total combined installation is around 800 MB, so this initial downloading may take it awhile. On a commercial server with a fast connection, this will typically take a few minutes. - -**Restart the server:** - -```text -sudo reboot -``` - -**Reconnect via SSH, and do a systems check by viewing the docker containers:** - -```text -sudo docker ps -a -``` - -```text -[![docker ps -a](https://www.imageforge.us/images/c90bd55a7b357c20b18815a5560f43f3.png)](https://www.imageforge.us/image/60kNT) -``` - -As you can see, our three docker containers are up and running: Rocket.Chat, MongoDB, and Hubot. NOTE: You may see only one, or none at all if the downloads are still in progress. Be patient, and check it periodically. Eventually, it should look similar to our sample screenshot. If it does, congratulations, you did it! GREAT JOB! - -Next, let's try opening the web browser and going to your new chat room. Provided that your DNS is properly configured, you should be able to simply type your chatroom URL into the browser and open it up. - -**First try with HTTPS:** - -```text -https://chat.inumio.com -``` - -**If for some reason that fails, try HTTP:** **Open port 3000/tcp in the firewall, and reload to set the new policy** - -```text -sudo ufw allow 3000/tcp - -sudo ufw reload -``` - -**Try accessing in your web browser via HTTP** - -```text -http://chat.inumio.com:3000 -``` - -**PROBLEM?** See [Section 10: Troubleshooting](./#10-troubleshooting--faq) - -Once you've successfully reached your chat room login page, you need to register your admin account. By default, the first account to register on Rocket.Chat becomes the admin, so if your chat room is public, do this immediately in order to prevent someone else from registering and becoming the administrator. - -_Great! I'm in, but the bot is nowhere to be seen!_ - -No worries! In order to get your bot up and running, we must register it… - -## 9. Registering & Configuring Hubot, the chat robot - -Previously, we created the docker-compose.yml file. It's this file where we defined the basic attributes for Hubot. We set the bot name, password, room to join, and scripts to run. Before the bot can join the chat room, we must manually create the bot using the configuration details we provided in docker-compose.yml. - -[https://github.com/RocketChat/hubot-rocketchat\#creating-a-user-on-the-server](https://github.com/RocketChat/hubot-rocketchat#creating-a-user-on-the-server) - -You can now optionally login and set some of the preferences, such as bot avatar. When finished, log out of the bot account. - -With the bot account created, you can force it to join by simply rebooting the server, upon which the init script should automatically launch your chat room, and the bot should join the “General” room. - -For basic command help, in the chat message box, type BOTNAME help \(where BOTNAME is your bot's name\). - -## 10. Troubleshooting & FAQ - -### FAQ - -Q: _It works! But how do I add more functionality to the bot?_ A: You can add more scripts to the bot by adding them to the EXTERNAL\_SCRIPTS definitions: `nano /var/www/rocket.chat/docker-compose.yml` - -Find out more about Hubot scripts here: [https://github.com/RocketChat/hubot-rocketchat](https://github.com/RocketChat/hubot-rocketchat) and here: [https://github.com/hubot-scripts](https://github.com/hubot-scripts). Some of the available scripts for example: hubot-help, hubot-isup, hubot-4chan, hubot-strawpoll, hubot-seen, hubot-weather, hubot-hackerman, hubot-links, hubot-greetings, hubot-tell, hubot-geo, hubot-decides, hubot-praise, hubot-hello-ninja, hubot-thank-you, hubot-cool-ascii-faces, hubot-insulter, hubot-reddit - -Q: _How do I get email working?_ A: You need to configure SMTP parameters via the Administration UI \(from inside rocketchat\). - -### TROUBLESHOOTING - -**PROBLEM:** _I can't bring up my chat page in the browser using HTTPS!_ - -**POSSIBLE SOLUTIONS:** If you're able to resolve HTTP, but not HTTPS, you need to re-visit sections 4 & 5 of this guide. Make sure you've correctly entered the data in the hosts file, as well as in the /etc/nginx/sites-available/default file. - -**Check the nginx logs for any errors or other clues** - -```text -sudo cat /var/log/nginx/error.log -``` - -**Check the Firewall policy to make sure port 443 is open** - -```text -sudo ufw status -``` - -**Check your SSL installation** [https://www.digicert.com/help/](https://www.digicert.com/help/) - -**PROBLEM:** _I rebooted and waited forever for docker to download everything and start the chat room. NOTHING happened. It's like it didn't even try!_ - -**POSSIBLE SOLUTION:** If there are errors in the docker-compose.yml file, it will fail to bring up the rocketchat app. Improperly formatted yml will cause problems. - -**Check upstart jobs for log errors** - -```text -cd /var/log/upstart - -sudo cat rocketchat_mongo.log - -sudo cat rocketchat_app.log -``` - -Look for any errors in the output of those last two commands, which show the log contents of the upstart jobs we created in step 7. - -**Test your YML** [http://www.yamllint.com/](http://www.yamllint.com/) simply copy the contents of docker-compose.yml and paste into the tool. - -**Try to start it manually** - -```text -cd /var/www/rocket.chat - -/usr/local/bin/docker-compose up -``` - -If docker-compose doesn't throw an error and instead launches the job, then the problem is possibly in the upstart script. - -**PROBLEM:** _When I upload a file the server crashes!_ - -**POSSIBLE SOLUTION:** If you're running low on system resources, such as RAM, this can cause problems with not just performance, but stability. Make sure that you're not running out of memory, or have any other choke points, like not enough CPU, etc. One way to check is to issue the following command via SSH \(or console\) which runs TOP, a utility that will show valuable information about system resources and processes. - -```text -sudo top -``` - -With TOP running, try to replicate the problem while watching TOP for high loads, overloaded CPU, etc. While Rocket.Chat can be run on a single core with 512MB of memory, that's really not enough for stable performance. If you're seeing high values in TOP, consider upgrading your server to at least 1GB or RAM, or more. - -## 11. TODO - -* Add section for updating & backing up - -## 12. KNOWN ISSUES - -* \[FIXED\] Issue \#978: Avatars not saving, or crashing the server. [https://github.com/RocketChat/Rocket.Chat/issues/978](https://github.com/RocketChat/Rocket.Chat/issues/978) -* If you are saving your avatars inside the container, they will be lost after a "docker pull" update job - -## See Also - -You can also deploy using Docker and Docker Compose by following one of these guides: - -* [Docker Compose](docker-compose.md) -* [Available Images](available-images.md) - diff --git a/installation/docker-containers/available-images.md b/installation/docker-containers/available-images.md deleted file mode 100644 index 5a2f1b7239..0000000000 --- a/installation/docker-containers/available-images.md +++ /dev/null @@ -1,42 +0,0 @@ -# Available Images - -Rocket.Chat is a rapidly-moving FOSS project. We maintain 3 Docker images for the diverse needs of our global user community. To use these images you will need to have [Docker](https://docs.docker.com/install/) installed and operational. - -Discovering existing releases: You can select the release you need from our [GitHub Release Page](https://github.com/RocketChat/Rocket.Chat/releases). Here's a description of our [current branching strategy](../../guides/developer/branches-and-releases.md). - -## Official image \(stable and tested\) - -The [Official Docker Images Repository](https://docs.docker.com/docker-hub/official_images/) is where Rocket.Chat's Official, stable image is maintained and controlled by Docker, and reviewed by the Docker committee. - -```bash -docker pull rocket.chat -``` - -## Latest Release Image - -This is an image that is maintained at Rocket.Chat's own docker repository. The release may be from the develop or master branch. - -```bash -docker pull registry.rocket.chat/rocketchat/rocket.chat:latest -``` - -## Specific Release Image - -This is an image that is maintained at Rocket.Chat's own docker repository. It is associated with a release build. - -```bash -docker pull registry.rocket.chat/rocketchat/rocket.chat:X.X.X -``` - -### Discovering existing releases - -You can select the release you need from our [DockerHub Tags](https://hub.docker.com/r/rocketchat/rocket.chat/tags/). - -#### Bleeding-edge untested develop build image - -This is an image that is maintained at Rocket.Chat's own docker repository. It is updated from our `develop` \(untested\) branch, that is, absolute latest, for those who needs to work with latest code. - -```bash -docker pull registry.rocket.chat/rocketchat/rocket.chat:develop -``` - diff --git a/installation/docker-containers/docker-compose.md b/installation/docker-containers/docker-compose.md deleted file mode 100644 index 8b3b2e1e4b..0000000000 --- a/installation/docker-containers/docker-compose.md +++ /dev/null @@ -1,46 +0,0 @@ -# Docker Compose - -Instead of using the standard Docker commands, you may wish for a bit more automated management of the deployment. This is where the use of Docker-compose may come in handy. - -* Make sure you have [Docker](https://docs.docker.com/install) and [Docker-compose](https://docs.docker.com/compose/install/) installed and operational. -* Create `docker-compose.yml` based on [our example](https://github.com/RocketChat/Rocket.Chat/blob/develop/docker-compose.yml). This is the ONLY file you will need. You can create this file on your own machine by copy and pasting the content. -* Edit `image: registry.rocket.chat/rocketchat/rocket.chat:latest` to specify which image you wish to use \(see section [Docker Images Available](available-images.md) \) -* Edit `ROOT_URL` to match your domain name or IP address - -You can download our docker-compose.yaml: - -```bash -curl -L https://raw.githubusercontent.com/RocketChat/Rocket.Chat/develop/docker-compose.yml -o docker-compose.yml -``` - -Start the stack with: - -```bash -docker-compose up -d -``` - -This will: - -* Start a MongoDB service named `mongo`. -* Start a service named `mongo-init-replica` that will wait for `mongo` to be ready, connect to it, initialize it and terminate itself \(`mongo` will keep running\). -* Start a service `rocketchat`, that will also wait for `mongo` to be ready, the `mongo-init-replica` to initialize, and then run Rocket.Chat. - -Mongo supports 24 x 7 operations and live backup. You should not need to restart it too frequently. See [mongodb documentations](https://docs.mongodb.org/manual/) for proper operation and management of a mongo server. - -Optionally, if you want to manage your messages and configuration information, edit the file again to uncomment the volume mounts. Make sure you have a `data` subdirectory to mount and store the data. - -Optionally, if you want a bot, so you don't have to talk to yourself, after you've created an admin user and also a bot user, edit the file `docker-compose.yml` again to change the variables `ROCKETCHAT_USER` and `ROCKETCHAT_PASSWORD` in the hubot section and then start up hubot: - -```text -docker-compose up -d hubot -``` - -To update the `rocketchat` docker image to the latest version, you can use the following commands. Your data should not be affected by this, since it's located in the `mongo` image. - -```text -docker pull registry.rocket.chat/rocketchat/rocket.chat:latest -docker-compose stop rocketchat -docker-compose rm rocketchat -docker-compose up -d rocketchat -``` - diff --git a/installation/docker-containers/generic-linux/BACKUP b/installation/docker-containers/generic-linux/BACKUP deleted file mode 100755 index ec37bfae9c..0000000000 --- a/installation/docker-containers/generic-linux/BACKUP +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -eux -URL=${PWD##*/} -db_container_name=`echo ${URL}_db_1 | sed "s/\.//g"`; \ - -docker exec $db_container_name mongodump diff --git a/installation/docker-containers/generic-linux/RUN b/installation/docker-containers/generic-linux/RUN deleted file mode 100755 index c9048d9e4d..0000000000 --- a/installation/docker-containers/generic-linux/RUN +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -eux -/opt/bin/docker-compose kill || : -/opt/bin/docker-compose rm -f || : -/opt/bin/docker-compose up - diff --git a/installation/docker-containers/generic-linux/STOP b/installation/docker-containers/generic-linux/STOP deleted file mode 100755 index 70cb05190a..0000000000 --- a/installation/docker-containers/generic-linux/STOP +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -eux -/opt/bin/docker-compose stop -/opt/bin/docker-compose kill || : -/opt/bin/docker-compose rm -f || : - diff --git a/installation/docker-containers/generic-linux/docker-compose.yml b/installation/docker-containers/generic-linux/docker-compose.yml deleted file mode 100644 index 91ad072d85..0000000000 --- a/installation/docker-containers/generic-linux/docker-compose.yml +++ /dev/null @@ -1,18 +0,0 @@ -db: - image: mongo - volumes: - - ./data/runtime/db:/data/db - - ./data/dump:/dump - command: mongod --smallfiles -web: - image: registry.rocket.chat/rocketchat/rocket.chat - environment: - - MONGO_URL=mongodb://db:27017/rocketchat - - ROOT_URL=https://rocketchat.test - - MAIL_URL=smtp://USERNAME:PASSWORD@HOST:PORT/ - links: - - db:db - volumes: - - logs:/home/app/logs - expose: - - "3000" diff --git a/installation/docker-containers/high-availability-install.md b/installation/docker-containers/high-availability-install.md deleted file mode 100644 index 4d286d58c0..0000000000 --- a/installation/docker-containers/high-availability-install.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -description: Install Rocket.Chat as HA with mongodb replicaset as backend ---- - -# High Availability - -## Install MongoDB Replicaset - -* Use [https://medium.com/@gargar454/deploy-a-mongodb-cluster-in-steps-9-using-docker-49205e231319\#.8dfln7n8c](https://medium.com/@gargar454/deploy-a-mongodb-cluster-in-steps-9-using-docker-49205e231319#.8dfln7n8c) to setup the mongodb replicaset -* Create a user called oploguser with rights on local oplog database: - - `db.createUser({user: "oploguser", pwd: "password", roles: [{role: "read", db: "local"}, {role: "clusterMonitor", db: "admin"}]})` - -* Create rocket user to authenticate with rocketchat database: - - `db.createUser({user: "rocket", pwd: "password", roles: [{role: "readWrite", db: "rocketchat"}, {role: "clusterMonitor", db: "admin"}]})` - -## Create rocket.chat docker container - -* Use example docker-compose.yaml in repo -* Fill the INSTANCE\_IP env with the local ip of the docker-host \(in a 3 node setup this is unique on every host\) -* Fill the passwords from rocket and oplogger -* Change the IP of every host in the example docker-compose.yaml -> extra\_hosts inserts host entries so each rocketchat-container could resolve the others by the name -* Be sure that the instances could communicate on port 3000 with each other, this is important to see messages on other hosts directly - -```text -rocketchat: - image: registry.rocket.chat/rocketchat/rocket.chat:latest - environment: - - PORT=3000 - - ROOT_URL=https://chat.domain.de - - MONGO_URL=mongodb://rocket:password@rocket-1:27017,rocket-2:27017,rocket-3:27017/rocketchat?authSource=admin&replicaSet=rs0&w=majority - - MONGO_OPLOG_URL=mongodb://oploguser:password@rocket-1:27017,rocket-2:27017,rocket-3:27017/local?authSource=admin&replicaSet=rs0 - - INSTANCE_IP= - ports: - - 3000:3000 - extra_hosts: - - "rocket-1:10.250.250.13" - - "rocket-2:10.250.250.14" - - "rocket-3:10.250.250.17" -``` - -### Create Loadbalancer - -* Now setup up a [reverse proxy](../manual-installation/configuring-ssl-reverse-proxy.md) on each host to terminate ssl on each rocket.chat node or terminate ssl on the loadbalancer, this is up to you. -* See [Nginx multi instance reverse proxy example](https://docs.rocket.chat/installation/manual-installation/multiple-instances-to-improve-performance#update-your-nginx-proxy-config) -* Setup a loadbalancer to reach each instance on 443 or 3000 \(depends on the choice above\) - diff --git a/installation/docker-containers/mongodb-mmap-to-wiredtiger-migration.md b/installation/docker-containers/mongodb-mmap-to-wiredtiger-migration.md deleted file mode 100644 index a029bd1ed2..0000000000 --- a/installation/docker-containers/mongodb-mmap-to-wiredtiger-migration.md +++ /dev/null @@ -1,144 +0,0 @@ ---- -description: >- - Migrate your existing mmap based MongoDB instance into a wiredTiger one - without with as little downtime as possible. ---- - -# MongoDB mmap to wiredTiger migration - -Starting with the major release 4.X.Y of Rocket.Chat, MongoDB has to be setup with a _WiredTiger_ storage engine rather than the deprecated _mmap_ one. This is mandatory, if you plan to upgrade to one of the future Rocket.Chat versions and has to be prepared before initiating the application upgrade. - -[This project/repository](https://github.com/RocketChat/docker-mmap-to-wiredtiger-migration) aims to help out people migrating their existing dockerized, _mmap_ based MongoDB installation into a _WiredTiger_ one. - -### Requirements - -* Docker-based Rocket.Chat deployment -* MongoDB instance with _mmap_ storage engine - -### Quick usage - -1. Make sure you have met all requirements listed above. -2. Create a database dump to ensure a backup is in place in case anything goes south! -3. Stop running Rocket.Chat system. -4. Update `docker-compose.yml` to include the migration container/logic. -5. Start up containers, wait for the migration to be completed. -6. Once finished, Rocket.Chat should be up again - just running with a WiredTiger MongoDB storage engine now. - -### Detailed usage - -#### Assumptions - -* Your existing `docker-compose.yml` file is located within `/opt/rocketchat` -* Your "mongo" container has a `/data/db` volume mapped, that holds the existing \(mmap\) data files of MongoDB -* Your "mongo" container has a `/dump` volume mapped, that is accessible from the host and can be used to store the backup/dump - -#### Step-by-step guide - -1. Create a database dump of your existing MongoDB, save it on the host to have a backup just in case: - - ```bash - cd /opt/rocketchat - docker-compose exec mongo mongodump --archive=/dump/mmap --gzip - cp /data/dump/mmap ~/mongo-mmap-dump.gzip - ``` - -2. Stop your existing Rocket.Chat system including all its services \(especially MongoDB\). - - ```bash - docker-compose stop - ``` - -3. [Download the repository](https://github.com/RocketChat/docker-mmap-to-wiredtiger-migration/archive/main.zip) or clone it using `git` and extract it to `/opt/rocketchat-migration`: - - ```bash - git clone https://github.com/RocketChat/docker-mmap-to-wiredtiger-migration /opt/rocketchat-migration - ``` - -4. Copy the `docker/` folder that holds the Dockerfile of the custom migrator image into your existing compose folder: - - ```bash - cp -r /opt/rocketchat-migration/docker /opt/rocketchat/docker - ``` - -5. Backup and rename your current `docker-compose.yml` file to `docker-compose.mmap.yml`: - - ```bash - mv /opt/rocketchat/docker-compose.yml /opt/rocketchat/docker-compose.mmap.yml - ``` - -6. Copy the new `docker-compose.yml` file into your compose folder: - - ```bash - cp /opt/rocketchat-migration/docker-compose.yml /opt/rocketchat/docker-compose.yml - ``` - -7. Apply any possible customizations that you had in your old `docker-compose.mmap.yml` file to the new one \(volume, port mappings, service names, etc.\) -8. Run `diff` and make sure it looks \(more or less\) like the output below when you compare your old and new `docker-compose.yml` files: - - ```bash - diff /opt/rocketchat/docker-compose.mmap.yml /opt/rocketchat/docker-compose.yml - ``` - - ```diff - 8c8 - < "for i in `seq 1 30`; do - --- - > "for (( ; ; )); do - 11c11 - < echo \"Tried $$i times. Waiting 5 secs...\"; - --- - > echo \"Could not start Rocket.Chat. Waiting 5 secs...\"; - 37c37,45 - < command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1 - --- - > command: > - > bash -c - > "while [ ! -f /data/db/WiredTiger ]; do - > echo \"wiredTiger migration hasn't started yet. Waiting 30 secs...\"; - > sleep 30; - > done; - > docker-entrypoint.sh mongod --oplogSize 128 --replSet rs0 --storageEngine=wiredTiger;" - > depends_on: - > - migrator - 40a49,53 - > migrator: - > build: ./docker/ - > volumes: - > - ./data/db:/data/db - > - 45c58 - < "for i in `seq 1 30`; do - --- - > "for (( ; ; )); do - 51c64 - < echo \"Tried $$i times. Waiting 5 secs...\"; - --- - > echo \"Could not reach MongoDB. Waiting 5 secs ...\"; - ``` - - All changes above, summarized: - - * `for` loops slightly adjusted for both "rocketchat" and "mongo-init-replica" to run them endlessly - * Adjusted `command` property for "mongo" service: - * `while` loop to check for initiated WiredTiger migration \(in `$MONGO_DATA_DIR/WiredTiger`\) - * Use [custom entrypoint](https://github.com/RocketChat/docker-mmap-to-wiredtiger-migration/blob/main/docker/entrypoint.sh) that applies the migration - * Use `--storageEngine=wiredTiger` switch instead of `--storageEngine=mmapv1` - * Added "migrator" service - -9. Build the "migrator" image and start up the containers again: - - ```bash - docker-compose up --build -d - ``` - -10. Wait for the migration to be completed - optionally check logs of "migrator" and "mongo" containers: - - ```bash - docker-compose logs -f migrator # once that one has completed the migration ... - docker-compose logs -f mongo # ... check if the mongo one already took over - ``` - -### Help and support - -If you encounter any problems during the migration or in case you have general feedback or improvement ideas, feel free to create an issue in [the GitHub repository](https://github.com/RocketChat/docker-mmap-to-wiredtiger-migration). - diff --git a/installation/docker-containers/systemd.md b/installation/docker-containers/systemd.md deleted file mode 100644 index 2629d90bbb..0000000000 --- a/installation/docker-containers/systemd.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -description: Deploy Rocket.Chat to Linux that run on systemd ---- - -# systemd - -## Prerequisite - -You need to have [docker](https://docs.docker.com/linux/started/) installed. - -## How to run Rocket.Chat on systemd - -1. Create a docker network `docker network create rocketchat_default` -2. Create two service files: mongo.service and rocketchat.service -3. Enable the service files -4. Run the mongo.service -5. Create the mongo-init-replica to enable opolog -6. Run the rocketchat.service - -If you reboot the server, the services will start automatically in the right order. - -## Service Files - -mongo.service: - -```text -[Unit] -Description=mongo -Requires=docker.service -After=docker.service - -[Service] -EnvironmentFile=/etc/environment -User=dockeruser -Restart=always -TimeoutStartSec=0 -ExecStartPre=-/usr/bin/docker kill mongo -ExecStartPre=-/usr/bin/docker rm mongo -ExecStartPre=-/usr/bin/docker pull mongo:3.2 - - -ExecStart=/usr/bin/docker run \ - --name mongo \ - -v .../path/to/data/db:/data/db \ - -v .../path/to/data/dump:/data/dump \ <--optional - --net=rocketchat_default \ - mongo:3.2 \ - mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1 - -ExecStop=-/usr/bin/docker kill mongo -ExecStop=-/usr/bin/docker rm mongo -``` - -rocketchat.service: - -```text -[Unit] -Description=rocketchat -Requires=docker.service -Requires=mongo.service -After=docker.service -After=mongo.service - -[Service] -EnvironmentFile=/etc/environment -User=dockeruser -Restart=always -TimeoutStartSec=0 -ExecStartPre=-/usr/bin/docker kill rocketchat -ExecStartPre=-/usr/bin/docker rm rocketchat -ExecStartPre=-/usr/bin/docker pull registry.rocket.chat/rocketchat/rocket.chat:latest - -ExecStart=/usr/bin/docker run \ - --name rocketchat \ - -v .../path/to/uploads:/app/uploads \ - -e MONGO_OPLOG_URL=mongodb://mongo:27017/local \ - -e MONGO_URL=mongodb://mongo:27017/rocketchat \ - -e ROOT_URL=https://sub.domain.xx \ - --link mongo:mongo \ - --net=rocketchat_default \ - --expose 3000 \ - registry.rocket.chat/rocketchat/rocket.chat:latest - -ExecStop=-/usr/bin/docker kill rocketchat -ExecStop=-/usr/bin/docker rm rocketchat -``` - -## Build the mongo-init-replica container \(only run once\) - -Execute: - -```text -docker run \ - --name mongo-init-replica \ - --link mongo:mongo \ - --rm \ - --net=rocketchat_default \ - mongo:3.2 \ - mongo mongo/rocketchat --eval "rs.initiate({ _id: 'rs0', members: [ { _id: 0, host: 'localhost:27017' } ]})" -``` - -## Reverse Proxy - -If you are running a reverse proxy make sure it is joining the rocketchat\_default network. Add `ExecStartPre=-/usr/bin/docker network connect rocketchat_default Nginx` to the rocketchat.service if you Proxy container is named `Nginx` and be sure to configure it correctly. - -If you choose to use a non-dockerized nginx as a reverse proxy, please not that you then have to add `-p your-host-port:3000` to the `ExecStart` command of `rocketchat.service` and then configure your vhost to pass to `your-host-port`. - -## Backup - -All data will be hourly backed up to `/data/domains/example.org/data` folder. We advise to copy this folder to a remote location in case of hardware failure. - -## Questions - -If you have any questions, don't hesitate to open issues. - diff --git a/installation/docker-containers/systemd/backup@.service b/installation/docker-containers/systemd/backup@.service deleted file mode 100644 index 94adf41b5a..0000000000 --- a/installation/docker-containers/systemd/backup@.service +++ /dev/null @@ -1,8 +0,0 @@ -[Unit] -Description=Back up data from %i - -[Service] -Type=oneshot -TimeoutStartSec=0 -WorkingDirectory=/data/domains/%i/ -ExecStart=/bin/bash -euxc '/data/domains/%i/BACKUP' diff --git a/installation/docker-containers/systemd/backup@.timer b/installation/docker-containers/systemd/backup@.timer deleted file mode 100644 index a6d89194de..0000000000 --- a/installation/docker-containers/systemd/backup@.timer +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=Hourly backup of %i content. - -# Dependency binding -BindsTo=universal@%i.service - -[Timer] -OnActiveSec=20 -OnUnitActiveSec=60min - diff --git a/installation/docker-containers/systemd/universal@.service b/installation/docker-containers/systemd/universal@.service deleted file mode 100644 index c161b8723f..0000000000 --- a/installation/docker-containers/systemd/universal@.service +++ /dev/null @@ -1,19 +0,0 @@ -[Unit] -Description=%p-%i - -# Requirements -Requires=docker.service -Requires=backup@%i.timer - -# Dependency ordering -After=docker.service -Before=backup@%i.timer - -[Service] -WorkingDirectory=/data/domains/%i/ -ExecStart=/bin/bash -euxc '/data/domains/%i/RUN' -ExecStop=/bin/bash -euxc '/data/domains/%i/STOP' - -[Install] -WantedBy=multi-user.target - diff --git a/installation/hardware-requirements.md b/installation/hardware-requirements.md deleted file mode 100644 index ba45aa717a..0000000000 --- a/installation/hardware-requirements.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -description: Minimum Requirements for Server Deployment ---- - -# Hardware Requirements - -The actual requirement varies greatly with: - -* Number of concurrently active users -* Number of actually connected devices per user -* Activities of the users - solely text-based messaging takes minimal resources; while file sharing and jpg uploads will consume more resources -* Bot or integration activity level; different bot and/or integrations have different requirements - -The following are sized for the minimal cost deployment unit available for bare-metal server and cloud VPS. - -## Bare-metal Server - -* Intel Xeon E5-2603 v4 \(or equivalent\) \[1.7 GHz, 6 cores, $213 USD\] -* 4 GB RAM -* 500 GB hard disk or larger -* Ubuntu 18.04 LTS \(with or without docker\) - -The above minimal hardware configuration is ideal for corporate or group with up to 1,000 users, up to 300 concurrently active and moderate levels of mixed uploads, sharing, and bot activities. - -## VPS \(minimal\) - -* Single core \(2 GHz\) -* 1 GB RAM -* 30 GB of SSD - -The above minimal virtual configuration, when not over-provisioned by the provider, is ideal for small deployments of up to 200 users, up to 50 concurrently active and minimal level of mixed uploads, sharing, and bot activities. - -## VPS \(recommended\) - -* Dual-core \(2 GHz\) -* 2 GB RAM -* 40 GB of SSD - -The above virtual configuration, when not over-provisioned by the provider, can accommodate small deployments of up to 500 users, up to 100 concurrently active and moderate levels of mixed uploads, sharing, and bot activities. - -## Really Small office Server - -#### \(Under $100 on-premise server for small group\) - -* Raspberry Pi 3 or Pi 2 \($35 all-in-one system\) -* 4 cores 1 GB memory -* 32 GB SD card \($15\) - -The above minimal configuration can accommodate a small office or group of up to 50 users and up to 25 concurrently active and moderate levels of mixed uploads, sharing, and bot activities. This is based on a managed MongoDB service \(such as [mlab.com](https://mlab.com)\). Running mongo local to a Pi is not recommended at this time. - diff --git a/installation/manual-installation/README.md b/installation/manual-installation/README.md deleted file mode 100644 index c33f107af0..0000000000 --- a/installation/manual-installation/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Manual Installation - -Here you can find guides on how to manually install and manage Rocket.Chat server in different Operational systems: - -* [CentOS](centos.md) -* [Debian](debian.md) -* [Multiple Instances to Improve Performance](multiple-instances-to-improve-performance.md) -* [Migrating Meteor Mongo](migrating-meteor-mongo.md) -* [RedHat](redhat.md) -* [Ubuntu](https://docs.rocket.chat/installation/manual-installation/ubuntu) -* [Configuring Let's Encrypt Reverse Proxy](https://github.com/RocketChat/docs/tree/993b6977b995e9136c1f585e318301099f4e97c1/installation/manual-installation/lets-encrypt-reverse-proxy.md) -* [Configuring SSL Reverse Proxy](configuring-ssl-reverse-proxy.md) -* [PM2, Systemd, Upstart](pm2-systemd-upstart.md) -* [Running in a sub folder](running-in-a-sub-folder.md) - diff --git a/installation/manual-installation/centos.md b/installation/manual-installation/centos.md deleted file mode 100644 index 5e2fe4ad47..0000000000 --- a/installation/manual-installation/centos.md +++ /dev/null @@ -1,164 +0,0 @@ -# Rocket.Chat in CentOS - -This installation guide was tested in the following environment: - -* Rocket.Chat 3.9.0 -* OS: CentOS 7.6 -* Mongodb 4.0.9 -* NodeJS 12.18.4 - -## Install necessary dependency packages - -Update package list and configure yum to install the official MongoDB packages with the following yum repository file: - -```bash -sudo yum -y check-update -``` - -```bash -cat << EOF | sudo tee -a /etc/yum.repos.d/mongodb-org-4.0.repo -[mongodb-org-4.0] -name=MongoDB Repository -baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/ -gpgcheck=1 -enabled=1 -gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc -EOF -``` - -Configure Node.js to be installed via package manager: - -```bash -sudo yum install -y curl && curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash - -``` - -Install build tools, MongoDB, nodejs and graphicsmagick: - -```bash -sudo yum install -y gcc-c++ make mongodb-org nodejs -``` - -```bash -sudo yum install -y epel-release && sudo yum install -y GraphicsMagick -``` - -Using npm install inherits and n, and the node version required by Rocket.Chat: - -```bash -sudo npm install -g inherits n && sudo n 12.18.4 -``` - -## Install Rocket.Chat - -Download the latest Rocket.Chat version: - -```bash -curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz -``` - -```bash -tar -xzf /tmp/rocket.chat.tgz -C /tmp -``` - -Install \(this guide uses /opt but feel free to choose a different directory\): - -```bash -cd /tmp/bundle/programs/server && npm install -``` - -```bash -sudo mv /tmp/bundle /opt/Rocket.Chat -``` - -## Configure the Rocket.Chat service - -Add the rocketchat user, set the right permissions on the Rocket.Chat folder and create the Rocket.Chat service file: - -```bash -sudo useradd -M rocketchat && sudo usermod -L rocketchat -``` - -```bash -sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat -``` - -```bash -cat << EOF |sudo tee -a /lib/systemd/system/rocketchat.service -[Unit] -Description=The Rocket.Chat server -After=network.target remote-fs.target nss-lookup.target nginx.service mongod.service -[Service] -ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js -StandardOutput=syslog -StandardError=syslog -SyslogIdentifier=rocketchat -User=rocketchat -Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 ROOT_URL=http://localhost:3000/ PORT=3000 -[Install] -WantedBy=multi-user.target -EOF -``` - -Open the Rocket.Chat service file just created \(`/usr/lib/systemd/system/rocketchat.service`\) using sudo and your favourite text editor, and change the ROOT\_URL environmental variable to reflect the URL you want to use for accessing the server \(optionally change MONGO\_URL, MONGO\_OPLOG\_URL and PORT\): - -```bash -MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 -MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 -ROOT_URL=http://your-host-name.com-as-accessed-from-internet:3000 -PORT=3000 -``` - -Setup storage engine and replication for MongoDB \(mandatory for versions > 1\), and enable and start MongoDB and Rocket.Chat: - -```bash -sudo sed -i "s/^# engine:/ engine: mmapv1/" /etc/mongod.conf -``` - -```bash -sudo sed -i "s/^#replication:/replication:\n replSetName: rs01/" /etc/mongod.conf -``` - -```bash -sudo systemctl enable mongod && sudo systemctl start mongod -``` - -```bash -mongo --eval "printjson(rs.initiate())" -``` - -```bash -sudo systemctl enable rocketchat && sudo systemctl start rocketchat -``` - -## Optional configurations - -[Configure firewall rule](optional-configurations.md) [Configure a HTTP reverse proxy to access Rocket.Chat server](configuring-ssl-reverse-proxy.md) \[Configure mongo access control\] \[Configure production values for mongodb\] - -## Configure your Rocket.Chat server - -Open a web browser and access the configured ROOT\_URL \(`http://your-host-name.com-as-accessed-from-internet:3000`\), follow the configuration steps to set an admin account and your organization and server info. - -## ZLIB version problem - -Some users had experienced problems starting rocketchat server in CentOS because their zlib version is not compatible with rocket.chat. - -If you find an error message similar to the following in the logs: - -```bash -Exception in callback of async function: Error: /lib64/libz.so.1: version `ZLIB_1.2.9' not found -``` - -Add this environmental variable in the Rocket.Chat service file \(/usr/lib/systemd/system/rocketchat.service\): - -Environment=LD\_PRELOAD=/opt/Rocket.Chat/programs/server/npm/node\_modules/sharp/vendor/lib/libz.so - -## Troubleshooting - -**502 Bad Gateway** - -If your installing Rocket.Chat on CentOS or RHEL you may encounter a 502 Bad Gateway error after setting up setup a reverse proxy with Nginx. To fix this you need to enable loopback for your upstream in SELinux. - -```text -setsebool -P httpd_can_network_connect 1 -``` - diff --git a/installation/manual-installation/configuring-ssl-reverse-proxy.md b/installation/manual-installation/configuring-ssl-reverse-proxy.md deleted file mode 100644 index 0d88025e76..0000000000 --- a/installation/manual-installation/configuring-ssl-reverse-proxy.md +++ /dev/null @@ -1,180 +0,0 @@ -# Configuring SSL Reverse Proxy - -Rocket.Chat is a middle tier application server, by itself it does not handle SSL. However, Rocket.Chat works well with several industrial grade, battle-tested reverse proxy servers \(see nginx below, for example\) that you can configure to handle SSL. - -**Note:** You must use the outside https address for the value at `ROOT_URL` in \[\[Section 3\|Deploy-Rocket.Chat-without-docker\#3-download-rocketchat\]\] above. This includes the `https://` and leave off the port number. So instead of `ROOT_URL=http://localhost:3000` use something like `https://your_hostname.com` - -**Note:** When setting up a reverse proxy in front of your Rocket.Chat server you need to configure Rocket.Chat to use the correct clientAddress. The rate limiter \(and maybe other features\) will not work properly if this is not done. Set `HTTP_FORWARDED_COUNT` Environment variable to the correct number of proxies in front of Rocket.Chat. If you are using snap there's a documentation how to do it [here](https://docs.rocket.chat/installation/manual-installation/ubuntu/snaps/#how-do-i-change-other-environmental-variables-in-my-snap) - -## Running behind a nginx SSL Reverse Proxy - -**Note:** These instructions were written for Ubuntu. For Amazon Linux, the conf file for the proxy goes in `/etc/nginx/conf.d/` and needs to have a discrete name ending in `.conf` and nginx is installed using `yum -y install nginx`. - -Run this as root: - -```text -apt-get install nginx -``` - -Add your private key to `/etc/nginx/certificate.key` - -Lock down permissions: `chmod 400 /etc/nginx/certificate.key` - -Add your certificate to `/etc/nginx/certificate.crt` - -Edit `/etc/nginx/sites-enabled/default` or if you use nginx from docker `/etc/nginx/conf.d/default.conf` and be sure to use your actual hostname in lieu of the sample hostname "your\_hostname.com" below. - -```text -# Upstreams -upstream backend { - server 127.0.0.1:3000; -} - -# HTTPS Server -server { - listen 443; - server_name your_hostname.com; - - # You can increase the limit if your need to. - client_max_body_size 200M; - - error_log /var/log/nginx/rocketchat.access.log; - - ssl on; - ssl_certificate /etc/nginx/certificate.crt; - ssl_certificate_key /etc/nginx/certificate.key; - ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don’t use SSLv3 ref: POODLE - - location / { - proxy_pass http://backend; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_set_header Host $http_host; - - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto https; - proxy_set_header X-Nginx-Proxy true; - - proxy_redirect off; - } -} -``` - -Restart Nginx: `service nginx restart` - -## Running under Plesk Onyx behind Nginx - -Plesk Onyx has now a docker installation and Nginx proxy docker rule generator built in, that doesn't support adding custom directives. Disable it and add the rules manually in the additional Nginx directives space. A scheme follows \(replace 30000 with your external docker mapped port\). - -```text -#manual extension docker with socket upgrade begin -location ~ ^/.* { - proxy_pass http://0.0.0.0:3000; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_set_header X-Forwarded-Proto http; - proxy_set_header X-Nginx-Proxy true; - proxy_http_version 1.1; - - proxy_redirect off; -} - -#extension docker end -``` - -## Running behind an Apache SSL Reverse Proxy - -**Note:** You must use the outside https address for the value at `ROOT_URL` in \[\[Section 3\|Deploy-Rocket.Chat-without-docker\#3-download-rocketchat\]\] above. This includes the `https://` and leave off the port number. So instead of `ROOT_URL=http://localhost:3000` use something like `https://your_hostname.com` - -Run this as root: - -```text -apt-get update -apt-get install apache2 -a2enmod proxy_http -a2enmod proxy -a2enmod ssl -a2enmod proxy_wstunnel -a2enmod rewrite -``` - -Add your private key to `/etc/ssl/private/chat.domain.com.key` - -Lock down permissions: `chmod 400 /etc/ssl/private/chat.domain.com.key` - -Add your certificate to `/etc/ssl/certs/chat.domain.com.crt` - -Add your intermediate to `/etc/ssl/certs/intermediate.ca.pem` - -Edit `/etc/apache2/sites-enabled/rocketchat.conf` and be sure to use your actual hostname in lieu of the sample hostname "your\_hostname.com" below. - -```text - - ServerAdmin it@domain.com - ServerName chat.domain.com - - LogLevel info - ErrorLog /var/log/chat.domain.com_error.log - TransferLog /var/log/chat.domain.com_access.log - - SSLEngine On - SSLCertificateFile /etc/ssl/certs/chat.domain.com.crt - SSLCertificateKeyFile /etc/ssl/private/chat.domain.com.key - SSLCertificateChainFile /etc/ssl/certs/intermediate.ca.pem - - - Require all granted - - - RewriteEngine On - RewriteCond %{HTTP:CONNECTION} Upgrade [NC] - RewriteCond %{HTTP:Upgrade} =websocket [NC] - RewriteRule /(.*) ws://localhost:3000/$1 [P,L] - RewriteCond %{HTTP:Upgrade} !=websocket [NC] - RewriteRule /(.*) http://localhost:3000/$1 [P,L] - - ProxyPassReverse / http://localhost:3000/ - -``` - -Restart Apache: `service apache2 restart` - -## Running behind a Caddy Reverse Proxy with Free SSL - -First, download [Caddy](https://caddyserver.com/) - -`curl https://getcaddy.com | bash` - -Now Caddy is installed, but you still need a service to run Caddy http server on the background. - -You can find services backed by the community [here](https://github.com/mholt/caddy/tree/master/dist/init) - -You must have at least the port **443** opened so the Caddy server will request an SSL certificate from Let's Encrypt - -You can also open the port 80 to redirect http requests to https. - -Open `/etc/caddy/Caddyfile` - -Insert - -```text -your_domain.com { - proxy / 127.0.0.1:3000 { - header_upstream X-Forwarded-Proto {scheme} - header_upstream X-Forwarded-For {host} - header_upstream Host {host} - websocket - } -} -``` - -## Multi Instance Nginx reverse proxy - -Here is a link to a [Nginx multi instance reverse proxy example](multiple-instances-to-improve-performance.md) - diff --git a/installation/manual-installation/debian.md b/installation/manual-installation/debian.md deleted file mode 100644 index 94b24a4bed..0000000000 --- a/installation/manual-installation/debian.md +++ /dev/null @@ -1,133 +0,0 @@ -# Rocket.Chat on Debian - -This installation guide was tested in the following environment: - -* Rocket.Chat 3.9.0 -* OS: Debian 9.7 -* Mongodb 4.0.9 -* NodeJS 12.18.4 - -## Install necessary dependency packages - -Update package list and configure apt to install the official MongoDB packages with the following repository file: - -```bash -sudo apt-get -y update -``` - -```bash -sudo apt-get install -y dirmngr gnupg && sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 -``` - -```bash -echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list -``` - -Configure Node.js to be installed via package manager: - -```bash -sudo apt-get -y update && sudo apt-get install -y curl && curl -sL https://deb.nodesource.com/setup_12.x | sudo bash - -``` - -Install build tools, MongoDB, nodejs, fontconfig and graphicsmagick: - -```bash -sudo apt-get install -y build-essential mongodb-org nodejs fontconfig graphicsmagick -``` - -Using npm install inherits and n, and the node version required by Rocket.Chat: - -```bash -sudo npm install -g inherits n && sudo n 12.18.4 -``` - -## Install Rocket.Chat - -Download the latest Rocket.Chat version: - -```bash -curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz -``` - -```bash -tar -xzf /tmp/rocket.chat.tgz -C /tmp -``` - -Install \(this guide uses /opt but feel free to choose a different directory\): - -```bash -cd /tmp/bundle/programs/server && npm install -``` - -```bash -sudo mv /tmp/bundle /opt/Rocket.Chat -``` - -## Configure the Rocket.Chat service - -Add the rocketchat user, set the right permissions on the Rocket.Chat folder and create the Rocket.Chat service file: - -```bash -sudo useradd -M rocketchat && sudo usermod -L rocketchat -``` - -```bash -sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat -``` - -```bash -cat << EOF |sudo tee -a /lib/systemd/system/rocketchat.service -[Unit] -Description=The Rocket.Chat server -After=network.target remote-fs.target nss-lookup.target nginx.service mongod.service -[Service] -ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js -StandardOutput=syslog -StandardError=syslog -SyslogIdentifier=rocketchat -User=rocketchat -Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 ROOT_URL=http://localhost:3000/ PORT=3000 -[Install] -WantedBy=multi-user.target -EOF -``` - -Open the Rocket.Chat service file just created \(`/lib/systemd/system/rocketchat.service`\) using sudo and your favourite text editor, and change the ROOT\_URL environmental variable to reflect the URL you want to use for accessing the server \(optionally change MONGO\_URL, MONGO\_OPLOG\_URL and PORT\): - -```bash -MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 -MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 -ROOT_URL=http://your-host-name.com-as-accessed-from-internet:3000 -PORT=3000 -``` - -Setup storage engine and replication for MongoDB \(mandatory for versions > 1\), and enable and start MongoDB and Rocket.Chat: - -```bash -sudo sed -i "s/^# engine:/ engine: wiredTiger/" /etc/mongod.conf -``` - -```bash -sudo sed -i "s/^#replication:/replication:\n replSetName: rs01/" /etc/mongod.conf -``` - -```bash -sudo systemctl enable mongod && sudo systemctl start mongod -``` - -```bash -mongo --eval "printjson(rs.initiate())" -``` - -```bash -sudo systemctl enable rocketchat && sudo systemctl start rocketchat -``` - -## Optional configurations - -[Configure firewall rule](optional-configurations.md) [Configure a HTTP reverse proxy to access Rocket.Chat server](configuring-ssl-reverse-proxy.md) \[Configure mongo access control\] \[Configure production values for mongodb\] - -## Configure your Rocket.Chat server - -Open a web browser and access the configured ROOT\_URL \(`http://your-host-name.com-as-accessed-from-internet:3000`\), follow the configuration steps to set an admin account and your organization and server info. - diff --git a/installation/manual-installation/kali-linux.md b/installation/manual-installation/kali-linux.md deleted file mode 100644 index 34e6be4600..0000000000 --- a/installation/manual-installation/kali-linux.md +++ /dev/null @@ -1,135 +0,0 @@ -# Kali Linux - -This installation guide was tested in the following environment: - -* Rocket.Chat 3.9.0 -* OS: Kali Rolling 2020.2 -* Mongodb 4.0.19 -* NodeJS 12.18.4 - -As Kali is a distribution based on Debian the installation process is pretty the same, only adding some MongoDB dependencies installation. - -## Install necessary dependency packages - -Update package list and configure apt to install the official MongoDB packages with the following repository file: - -```bash -sudo apt-get -y update -``` - -```bash -sudo apt-get install -y dirmngr gnupg && sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 -``` - -```bash -echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list -``` - -Configure Node.js to be installed via package manager: - -```bash -sudo apt-get -y update && sudo apt-get install -y curl && curl -sL https://deb.nodesource.com/setup_12.x | sudo bash - -``` - -Install build tools, MongoDB and dependencies \(libcurl3 and mongoDB server\), nodejs and graphicsmagick: - -```bash -sudo apt-get install -y build-essential libcurl3 mongodb-org-server mongodb-org nodejs graphicsmagick -``` - -Using npm install inherits and n, and the node version required by Rocket.Chat: - -```bash -sudo npm install -g inherits n && sudo n 12.18.4 -``` - -## Install Rocket.Chat - -Download the latest Rocket.Chat version: - -```bash -curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz -``` - -```bash -tar -xzf /tmp/rocket.chat.tgz -C /tmp -``` - -Install \(this guide uses /opt but feel free to choose a different directory\): - -```bash -cd /tmp/bundle/programs/server && npm install -``` - -```bash -sudo mv /tmp/bundle /opt/Rocket.Chat -``` - -## Configure the Rocket.Chat service - -Add the rocketchat user, set the right permissions on the Rocket.Chat folder and create the Rocket.Chat service file: - -```bash -sudo useradd -M rocketchat && sudo usermod -L rocketchat -``` - -```bash -sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat -``` - -```bash -cat << EOF |sudo tee -a /lib/systemd/system/rocketchat.service -[Unit] -Description=The Rocket.Chat server -After=network.target remote-fs.target nss-lookup.target nginx.service mongod.service -[Service] -ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js -StandardOutput=syslog -StandardError=syslog -SyslogIdentifier=rocketchat -User=rocketchat -Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 ROOT_URL=http://localhost:3000/ PORT=3000 -[Install] -WantedBy=multi-user.target -EOF -``` - -Open the Rocket.Chat service file just created \(`/lib/systemd/system/rocketchat.service`\) using sudo and your favourite text editor, and change the ROOT\_URL environmental variable to reflect the URL you want to use for accessing the server \(optionally change MONGO\_URL, MONGO\_OPLOG\_URL and PORT\): - -```bash -MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 -MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 -ROOT_URL=http://your-host-name.com-as-accessed-from-internet:3000 -PORT=3000 -``` - -Setup storage engine and replication for MongoDB \(mandatory for versions > 1\), and enable and start MongoDB and Rocket.Chat: - -```bash -sudo sed -i "s/^# engine:/ engine: wiredTiger/" /etc/mongod.conf -``` - -```bash -sudo sed -i "s/^#replication:/replication:\n replSetName: rs01/" /etc/mongod.conf -``` - -```bash -sudo systemctl enable mongod && sudo systemctl start mongod -``` - -```bash -mongo --eval "printjson(rs.initiate())" -``` - -```bash -sudo systemctl enable rocketchat && sudo systemctl start rocketchat -``` - -## Optional configurations - -[Configure firewall rule](optional-configurations.md) [Configure a HTTP reverse proxy to access Rocket.Chat server](configuring-ssl-reverse-proxy.md) \[Configure mongo access control\] \[Configure production values for mongodb\] - -## Configure your Rocket.Chat server - -Open a web browser and access the configured ROOT\_URL \(`http://your-host-name.com-as-accessed-from-internet:3000`\), follow the configuration steps to set an admin account and your organization and server info. - diff --git a/installation/manual-installation/lets-encrypt-reverse-proxy.md b/installation/manual-installation/lets-encrypt-reverse-proxy.md deleted file mode 100644 index aa8fb3273b..0000000000 --- a/installation/manual-installation/lets-encrypt-reverse-proxy.md +++ /dev/null @@ -1,109 +0,0 @@ -# Configuring SSL Reverse Proxy with Let’s Encrypt - -Rocket.Chat is a middle tier application server, by itself it does not handle SSL. However, Rocket.Chat works well with several industrial grade, battle-tested reverse proxy servers (see nginx below, for example) that you can configure to handle SSL. - -**Note:** You must use the outside HTTPS address for the value at `ROOT_URL` in [[Section 3|Deploy-Rocket.Chat-without-docker#3-download-rocketchat]] above. This includes the `https://` and leave off the port number. So instead of `ROOT_URL=http://localhost:3000` use something like `https://your_hostname.com` - -**Note:** Let’s Encrypt does require your Rocket.Chat server to be fully accessible to the internet for your SSL certificate to be issued. - -## Running behind a nginx SSL Reverse Proxy (CentOS) - -**Install Dependencies** - -``` -sudo yum install -y epel-release && sudo yum install -y certbot-nginx && sudo yum install -y nginx && sudo yum install -y vim -``` - -**Start Nginx** - -``` -sudo systemctl start nginx -``` - -**Create the rocketchat.conf File** - -``` -Sudo Vim /etc/nginx/conf.d/rocketchat.conf -``` - -Add the follow lines of code to the rockertchat.conf file and change the “example.com” on the server _name line to your ROOT_URL without the http or https. - -``` -# Upstreams -upstream backend { - server 127.0.0.1:3000; -} - -server { - server_name example.com; - - location / { - proxy_pass http://backend/; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_set_header Host $http_host; - - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forward-Proto http; - proxy_set_header X-Nginx-Proxy true; - - proxy_redirect off; - } -} - -``` - -Save and Exit the File - -**Verify the Syntax of Your Configuration Edits** - -``` -sudo nginx -t -``` - -**Reload Nginx** - -``` -sudo systemctl reload nginx -``` - -**Request a Certificate From Let’s Encrypt** - -Certbot provides a variety of ways to obtain SSL certificates, through various plugins. The Nginx plugin will take care of reconfiguring Nginx and reloading the config whenever necessary. Change `example.com` to your `ROOT_URL` without HTTP or HTTPS. You will be asked to enter in your email and agree to the Let’s Encrypt Terms of service. - -``` -sudo certbot --nginx -d example.com -``` - -**Configure HTTPS Settings** - -If all is successful with the above command you will get an option to configure your HTTPS settings: -Output - -``` -Please choose whether HTTPS access is required or optional. -------------------------------------------------------------------------------- -1: Easy - Allow both HTTP and HTTPS access to these sites -2: Secure - Make all requests redirect to secure HTTPS access -------------------------------------------------------------------------------- -Select the appropriate number [1-2] then [enter] (press 'c' to cancel): -``` - -Choose option 2 “Secure - Make all requests redirect to secure HTTPS access” to force only HTTPS. - -Setting Up Auto Renewal - -``` -sudo crontab -e -``` - -Copy and past the below into the cronjob file: - -``` -. . . -15 3 * * * /usr/bin/certbot renew –quiet -``` - -At this point you should be able to load your Rocket.Chat install at `https://Root_URL`. diff --git a/installation/manual-installation/migrating-meteor-mongo.md b/installation/manual-installation/migrating-meteor-mongo.md deleted file mode 100644 index 0d744bdfcd..0000000000 --- a/installation/manual-installation/migrating-meteor-mongo.md +++ /dev/null @@ -1,20 +0,0 @@ -# Migrating database from Meteor built in MongoDB - -This guide will help you migrate from the mongo server built into meteor to an external mongo server - -We advise against running Rocket.Chat in production from source using the meteor command. Instead we recommend using a separate mongo database and using a compiled meteor bundle. Either our official release or your own. - -Before starting make sure meteor is running. - -Then run: `mongodump -h 127.0.0.1 --port 3001 -d meteor` - -It'll dump the database in a folder called dump. - -Then install mongodb on your system. Please see the [mongo section](./) in one of our guides for your current OS - -Once Mongo is installed restore the data using: `mongorestore -d meteor dump/meteor` - -If you want to use a different database, you'd take this as your opportunity to change the database name. Replacing -d meteor with your desired database name. - -Then follow the remainder of the guide on [setting up Rocket.Chat](./) for your current OS. - diff --git a/installation/manual-installation/mongo-options.md b/installation/manual-installation/mongo-options.md deleted file mode 100644 index fa610cc004..0000000000 --- a/installation/manual-installation/mongo-options.md +++ /dev/null @@ -1,27 +0,0 @@ -# Passing extra options to the Mongo driver - -It's possible to provide extra [connection settings](http://mongodb.github.io/node-mongodb-native/3.5/reference/connecting/connection-settings/) to the Mongo driver by setting the `MONGO_OPTIONS` environment variable to a JSON string, e.g.: - -```text -# we need to pass the contents of PEMs, etc in a format compatible with JSON, so add '\n' to the end of each line. -export TLS_CRT=$(cat /pems/tls.crt | awk '{printf "%s\\n",$0} END {print ""}') -export PEM=$(cat /pems/mongo.pem | awk '{printf "%s\\n",$0} END {print ""}') -export KEY=$(cat /pems/mongo.key | awk '{printf "%s\\n",$0} END {print ""}') -# now insert all the credentials into the JSON OPTIONS string -export MONGO_OPTIONS='{"sslCA":["'${TLS_CRT}'"],"sslCert":"'${PEM}'","sslKey":"'${KEY}'"}' -``` - -You might want to do this, for example, if you're backing Rocket.Chat with a TLS-secured Mongo [replica set](https://docs.mongodb.com/manual/replication/) and need to pass certificates/PEM files, etc. to connect to it. - -If you see the following error during startup: - -```text -MongoTimeoutError: Server selection timed out after 10000 ms -``` - -You can try increasing server selection time adding the following property to `MONGO_OPTIONS` to change the default value of `10000` to `20000`: - -```text -MONGO_OPTIONS='{ "serverSelectionTimeoutMS": 20000 }' -``` - diff --git a/installation/manual-installation/mongo-replicas.md b/installation/manual-installation/mongo-replicas.md deleted file mode 100644 index 3672a4ccdb..0000000000 --- a/installation/manual-installation/mongo-replicas.md +++ /dev/null @@ -1,102 +0,0 @@ -# Configure a replica set for MongoDB - -Rocket.Chat uses the [MongoDB replica set](http://docs.mongodb.org/manual/replication/) to improve performance via Meteor Oplog tailing. - -**Note** please check release notes to ensure you are using a compatible version of Mongo - -To configure the replica set add this section into `mongod.conf`: - -```yaml -replication: - replSetName: "rs01" -``` - -for example by running this command: - -```bash -echo -e "replication:\n replSetName: \"rs01\"" | sudo tee -a /etc/mongod.conf -``` - -## Restart MongoDB and initiate the replica set - -Restart MongoDB service: - -```text -sudo systemctl restart mongod -``` - -Start the MongoDB shell and initiate the replica set: - -```text -mongo -> rs.initiate() -``` - -The output of the command should look like this: - -```text -{ - "info2" : "no configuration specified. Using a default configuration for the set", - "me" : "127.0.0.1:27017", - "ok" : 1, - "operationTime" : Timestamp(1538772048, 1), - "$clusterTime" : { - "clusterTime" : Timestamp(1538772048, 1), - "signature" : { - "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), - "keyId" : NumberLong(0) - } - } -} -rs01:SECONDARY> -``` - -Note the "ok" value should be 1. Any other value, i.e. 93, means something is wrong. - -Hit enter, you should see your prompt turn into `rs01:PRIMARY>`, this indicates the replica set is being used. Type exit to get back to your regular shell: - -```text -rs01:PRIMARY> exit -bye -``` - -Depending on your network settings, including /etc/hosts and DNS, if you have configured Rocket.Chat to use localhost:27017 you may see an error similar to this: - -`[conn1] created this configuration for initiation : { _id: "rs0", version: 1, members: [ { _id: 0, host: "test:27017" } ] }` - -rs.initiate\(\) may be defaulting to the host name e.g. 'test' - -You can force a different hostname as follows: - -```text -rs.initiate({ _id: 'rs01', members: [ { _id: 0, host: 'localhost:27017' } ]}) -``` - -You should get a response similar to: - -```text -> rs.initiate({ _id: 'rs01', members: [ { _id: 0, host: 'localhost:27017' } ]}) -{ "ok" : 1 } -rs0:OTHER> -``` - -## Reconfigure and restart Rocket.Chat service - -After you configured replica set, you **MUST** add the `MONGO_OPLOG_URL` environment variable to the service definition and restart Rocket.Chat server. - -In CentOS open file `/usr/lib/systemd/system/rocketchat.service` - -In Ubuntu or Debian open file `/lib/systemd/system/rocketchat.service` - -and add this to the Environment line: - -```text -MONGO_OPLOG_URL=mongodb://localhost:27017/local?replSet=rs01 -``` - -Reload systemd state and restart Rocket.Chat: - -```text -sudo systemctl daemon-reload && sudo systemctl restart rocketchat -``` - diff --git a/installation/manual-installation/mongo-versions.md b/installation/manual-installation/mongo-versions.md deleted file mode 100644 index 61f8c89190..0000000000 --- a/installation/manual-installation/mongo-versions.md +++ /dev/null @@ -1,14 +0,0 @@ -# Supported Mongo Versions - -Rocket.Chat currently requires MongoDB from version 3.6 and higher. [Support of MongoDB 3.2 will be removed from Rocket.Chat 2.0.0 and MongoDB 3.4 will be removed from Rocket.Chat 4.x](https://github.com/RocketChat/Rocket.Chat/pull/15199). We recommend using version 3.6.9. - -**Note** Without mongodb version we can't ensure you are running a compatible version. If you are running your mongodb with auth enabled and an **user different from admin** you may need to grant permissions for this user to check cluster data. You can do it via mongo shell running the following command replacing the string _YOUR\_USER_ by the correct user\'s name: - -```text -db.runCommand({ grantRolesToUser: "YOUR_USER" , roles: [{role: "clusterMonitor", db: "admin"}]}) -``` - -## Supported Storage Engines - -The Storage engine recommended for Rocket.Chat is [WiredTiger](https://docs.mongodb.com/manual/core/wiredtiger/). - diff --git a/installation/manual-installation/mongodb-mmap-to-wiredtiger-migration.md b/installation/manual-installation/mongodb-mmap-to-wiredtiger-migration.md deleted file mode 100644 index ecb4a4a606..0000000000 --- a/installation/manual-installation/mongodb-mmap-to-wiredtiger-migration.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -description: Migrate your existing mmap based MongoDB instance into a wiredTiger manually. ---- - -# MongoDB mmap to wiredTiger migration - -Starting with the major release 4.X.Y of Rocket.Chat, MongoDB has to be setup with a _WiredTiger_ storage engine rather than the deprecated _mmapv1_ one. This is mandatory, if you plan to upgrade to one of the future Rocket.Chat versions and has to be prepared before initiating the application upgrade. - -If you are using a Docker setup, [click here to find an alternative article](https://docs.rocket.chat/installation/docker-containers/mongodb-mmap-to-wiredtiger-migration) in our docs about migration. - -## Requirements - -* MongoDB instance with _mmap_ storage engine - -## Quick usage - -1. Stop running Rocket.Chat -2. Create a database dump from the _mmapv1_ MongoDB \(also to have a backup in place\) -3. Stop _mmapv1_ MongoDB service, drop existing data files, start up with _wiredTiger_ -4. Import the dump into the new _wiredTiger_ MongoDB -5. Start Rocket.Chat - -## Detailed usage - -1. Stop Rocket.Chat service to ensure a consistent database dump: - - ```text - systemctl stop rocketchat - ``` - -2. Create a database dump from the current _mmapv1_ MongoDB: - - ```text - mongodump --archive=~/mmapdump.gz --gzip - ``` - -3. Stop MongoDB service: - - ```text - systemctl stop mongod - ``` - -4. Delete the _mmapv1_ based data files of your existing MongoDB: - - ```text - rm -rf /var/lib/mongodb/* - ``` - -5. Adjust MongoDB configuration to make use of _wiredTiger_ storage engine: - - ```text - vi /etc/mongod.conf - ``` - - ```text - [...] - engine: wiredTiger - [...] - ``` - -6. Start MongoDB service again: - - ```text - systemctl start mongod - ``` - -7. Import dump back into \(_wiredTiger_\) MongoDB: - - ```text - mongorestore --drop --archive=~/mmapdump.gz --gzip --noIndexRestore - ``` - -8. Repair databases and rebuild indices: - - ```text - mongo --eval 'db.repairDatabase()' - ``` - -9. Start Rocket.Chat service: - - ```text - systemctl start rocketchat - ``` - diff --git a/installation/manual-installation/multiple-instances-to-improve-performance.md b/installation/manual-installation/multiple-instances-to-improve-performance.md deleted file mode 100644 index 00b59c5fc1..0000000000 --- a/installation/manual-installation/multiple-instances-to-improve-performance.md +++ /dev/null @@ -1,225 +0,0 @@ -# Running Multiple Instances Per Host To Improve Performance - -You may find that Rocket.Chat slows down once you have a lot of concurrent users. When this sluggishness begins, you will likely see Rocket.Chat node process approaching 100% CPU \(even if the host CPU load is low\). This is due to the single-threaded nature of Node.js applications; they can't take advantage of multiple cores natively. - -While it's possible to scale out by adding more servers \(and this is recommended for HA purposes\), you can achieve better utilization of your existing hardware by running multiple instances of the Rocket.Chat application \(Node.js/Meteor app\) on your current host\(s\). Of course, you only want to do this if you're already running on a multi-core machine. A reasonable rule-of-thumb may be to run `N-1` Rocket.Chat instances, where `N=num_cores`. - -Running multiple instances of Rocket.Chat on a single host requires a reverse proxy in front of your application. This tutorial assumes that you've already followed the tutorial for [Running behind a Nginx SSL Reverse Proxy](https://docs.rocket.chat/installation/manual-installation/configuring-ssl-reverse-proxy). - -There's essentially just three steps: - -1. Enable ReplicaSet on your MongoDB installation \([https://docs.mongodb.com/manual/tutorial/deploy-replica-set/](https://docs.mongodb.com/manual/tutorial/deploy-replica-set/)\) -2. Start multiple instances of Rocket.Chat bound to different ports -3. Update your proxy to point at all local Rocket.Chat instances - -We'll be working with Nginx in our examples, but it should be possible with other reverse proxies as well. - -## Run multiple instances of Rocket.Chat - -We'll assume that you've configured Rocket.Chat to run as a systemd service. Since we want to run multiple instances simultaneously, we need to run at least two services. The only difference is the service name and port. If you don't have a service yet, the easiest way to do this for Rocket.Chat is to create a file in /usr/lib/systemd/system/ and call it rocketchat.service - -```text -[Unit] -Description=Rocket.Chat Server -After=syslog.target -After=network.target - -[Service] -Type=simple -Restart=always -StandardOutput=syslog -SyslogIdentifier=RocketChat -User=rocketchat -Group=rocketchat -Environment=MONGO_URL=mongodb://your_mongodb:27017/your_database?replicaSet=your_replica_set_name -Environment=MONGO_OPLOG_URL=mongodb://your_mongodb1:27017/local?replicaSet=your_replica_set_name -Environment=ROOT_URL=https://your_rocketchat_domain.com -Environment=PORT=3000 -WorkingDirectory=/path.to.rocketchat/rocket.chat -ExecStart=/usr/local/bin/node /path.to.rocketchat/rocket.chat/bundle/main.js - -[Install] -WantedBy=multi-user.target -``` - -Make sure the User and Group exist and both have read/write/execute Permissions for the rocketchat. Now you can run start, stop, restart, and status your rocketchat service. - -If you want multiple Services create another file in /usr/lib/systemd/system and call it rocketchat@.service with the following content: - -```text -[Unit] -Description=Rocket.Chat Server -After=syslog.target -After=network.target - -[Service] -Type=simple -Restart=always -StandardOutput=syslog -SyslogIdentifier=RocketChat -User=rocketchat -Group=rocketchat -Environment=MONGO_URL=mongodb://your_mongodb:27017/your_database?replicaSet=your_replica_set_name -Environment=MONGO_OPLOG_URL=mongodb://your_mongodb1:27017/local?replicaSet=your_replica_set_name -Environment=ROOT_URL=https://your_rocketchat_domain.com -Environment=PORT=%I -WorkingDirectory=/path.to.rocketchat/rocket.chat -ExecStart=/usr/local/bin/node /path.to.rocketchat/rocket.chat/bundle/main.js - -[Install] - WantedBy=rocketchat.service -``` - -Start the other Rocket.Chat Services with - -`systemctl start rocketchat@3001 (or any other desired port after the @)` - -If you want to run rocketchat at boot just enable the services with - -`systemctl enable rocketchat` - -The other Services will be enable since they are "WantedBy"=RocketChat.service - -### Ensure nodes can communicate - -If you run Rocket.Chat instances on multiple physical nodes. Or even in multiple containers make sure they can communicate with each other. - -Rocket.Chat makes use of a peer to peer connection to inform each other of events. Let's say you type a message and tag a friend or coworker that is connected to another instance. - -Two different events are fired: 1. The user \(you\) is typing 2. Notify user \(friend\) - -Each Rocket.Chat instance registers in your database the ip address it detected for its self. Other instances then use this list to discover and establish connections with each other. - -If you find instances unable to talk to each other you can try setting the `INSTANCE_IP` environment variable to the ip the other instances can use to talk to it. - -## Update your Nginx proxy config - -Edit `/etc/nginx/sites-enabled/default` or if you use nginx from docker `/etc/nginx/conf.d/default.conf` and be sure to use your actual hostname in lieu of the sample hostname "your\_hostname.com" below. - -You just need to setup a backend if one doesn't already exist. Add all local Rocket.Chat instances to it. Then swap out the host listed in the proxy section for the backend you defined with no port. - -Continuing the example, we'll update our Nginx config to point to the two Rocket.Chat instances that we started running on ports 3001 and 3002. - -```text -# Upstreams -upstream backend { - server 127.0.0.1:3000; - server 127.0.0.1:3001; - #server 127.0.0.1:3002; - #server 127.0.0.1:3003; - . - . - . -} -``` - -Now just replace `proxy_pass http://IP:3000/;` with `proxy_pass http://backend;`. Updating the [sample Nginx configuration](https://docs.rocket.chat/installation/manual-installation/configuring-ssl-reverse-proxy#running-behind-a-nginx-ssl-reverse-proxy) would result in a config like this: - -```text - # HTTPS Server -server { - listen 443; - server_name your_hostname.com; - - error_log /var/log/nginx/rocketchat.access.log; - - ssl on; - ssl_certificate /etc/nginx/certificate.crt; - ssl_certificate_key /etc/nginx/certificate.key; - ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don’t use SSLv3 ref: POODLE - - location / { - proxy_pass http://backend; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_set_header Host $http_host; - - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto https; - proxy_set_header X-Nginx-Proxy true; - - proxy_redirect off; - } -} -``` - -Now restart Nginx: `service nginx restart` - -## Update your Apache proxy config - -Run this as root \(to enable the necessary modules to use proxy balancer\): - -```text -a2enmod proxy_html -a2enmod proxy_balancer -a2enmod headers -a2enmod session -a2enmod session_cookie -``` - -Edit `/etc/apache2/sites-enabled/rocketchat.conf` and be sure to use your actual hostname in lieu of the sample hostname "your\_hostname.com" below. - -```text - - ServerAdmin it@domain.com - ServerName chat.domain.com - - LogLevel info - ErrorLog /var/log/chat.domain.com_error.log - TransferLog /var/log/chat.domain.com_access.log - - SSLEngine On - SSLCertificateFile /etc/ssl/certs/chat.domain.com.crt - SSLCertificateKeyFile /etc/ssl/private/chat.domain.com.key - - Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED - ProxyPreserveHost On - - - BalancerMember http://localhost:3000 route=1 - BalancerMember http://localhost:3001 route=2 - ... - ProxySet stickysession=ROUTEID - - - - BalancerMember ws://localhost:3000 route=1 - BalancerMember ws://localhost:3001 route=2 - ... - ProxySet stickysession=ROUTEID - - - - Require all granted - - - RewriteEngine On - RewriteCond %{HTTP:Upgrade} =websocket [NC] - RewriteRule /(.*) balancer://ws/$1 [P,L] - RewriteCond %{HTTP:Upgrade} !=websocket [NC] - RewriteRule /(.*) balancer://http/$1 [P,L] - - ProxyPassReverse / http://localhost/ - -``` - -Now restart Apache: `systemctl restart apache2.service` - -Visit `https://your_hostname.com` just as before the update. **Ooh, so fast!** - -To confirm you're actually using both services like you'd expect, you can stop one rocketchat service at a time and confirm that chat still works. Restart that service and stop the other. Still work? Yep, you're using both services! - -## Check your database - -Another very important part is your database. As mentioned above, you will need to make sure you are running a replicaset. - -This is important for a couple of reasons: 1. Database reliability. You will want to make sure that your data is replicated, and you have another node if something happens to your primary. 2. Rocket.Chat does what's called oplog tailing. The oplog is turned on when you setup a replicaset. Mongo makes use of this to publish events so the other nodes in the replicaset can make sure its data is up to date. Rocket.Chat makes use of this to watch for database events. If someone sends a message on Instance 1 and you are connected to Instance 2. Instance 2 watches for message insert events and then is able to show you a new message has arrived. - -### Database engine - -Another thing to keep in mind is the storage engine you are using. By default mongo uses Wiredtiger. Wiredtiger under some loads can be very CPU and Memory intensive. Under small single instance setups we don't typically see issues. But when you run multiple instances of Rocket.Chat it can sometimes get a bit unruly. - -It's because of this we recommend in multiple instance situations that you switch the mongo storage engine to mmapv1. - diff --git a/installation/manual-installation/optional-configurations.md b/installation/manual-installation/optional-configurations.md deleted file mode 100644 index 4b872f2c40..0000000000 --- a/installation/manual-installation/optional-configurations.md +++ /dev/null @@ -1,12 +0,0 @@ -# Firewall configuration - -If you are using firewalld and not using a reverse proxy, you may have to allow traffic to port 3000: - -```bash -sudo firewall-cmd --permanent --add-port=3000/tcp -``` - -```bash -sudo systemctl reload firewalld -``` - diff --git a/installation/manual-installation/pm2-systemd-upstart.md b/installation/manual-installation/pm2-systemd-upstart.md deleted file mode 100644 index b64b7ad3e9..0000000000 --- a/installation/manual-installation/pm2-systemd-upstart.md +++ /dev/null @@ -1,158 +0,0 @@ -# Setting up Process Managers and Init Systems - -## PM2 - -## Systemd - -Deploy [Rocket.Chat](https://github.com/RocketChat/Rocket.Chat) to Linux that run on systemd \(RedHat, Centos, Ubuntu, CoreOS and so on\). - -### How to run Rocket.Chat on systemd. - -First we need to create the unit file. - -`vi /etc/systemd/system/rocketchat.service` - -With the contents: - -```text -[Unit] -Description=RocketChat Server -After=network.target remote-fs.target nss-lookup.target mongod.target nginx.target # Remove or Replace nginx with your proxy - -[Service] -ExecStart=/usr/local/bin/node /var/www/rocketchat/main.js # Specify the location of node and location of main.js -Restart=always # If set to always, the service will be restarted regardless of whether it exited cleanly or not, got terminated abnormally by a signal, or hit a timeout. -RestartSec=10 # Restart service after 10 seconds if node service crashes -StandardOutput=syslog # Output to syslog -StandardError=syslog # Output to syslog -SyslogIdentifier=nodejs-example -#User= -#Group= -Environment=NODE_ENV=production PORT=3000 ROOT_URL=https://rocketchat.domain.com MONGO_URL=mongodb://localhost:27017/rocketchat - -[Install] -WantedBy=multi-user.target -``` - -Then you need to enable the service `systemctl enable rocketchat.service` - -To start the service `systemctl start rocketchat.service` - -To verify it is running `systemctl status rocketchat.service` - -### Backup - -All data will be hourly backed up to `/data/domains/example.org/data` folder. We advise to copy this folder to a remote location in case of hardware failure. - -## Upstart - Ubuntu - -**Note: Upstart is no longer supported. We no longer support Ubuntu 14.04. If upgrading please see systemd or Ubuntu 16.04** - -The following examples are upstart jobs which control automatic start-up and, if necessary, respawning of your Rocket.Chat app, as well as management of an optional hubot chat-bot. - -In order to use the examples, simply copy each example and save into a file, paying attention to the fact that the filenames should be preserved unless you edit the examples to reflect any filename changes you make. Be sure to edit the environment variables, and possibly paths, according to your particular installation. Once you've saved the files to the proper directory \(/etc/init\) usage is as simple as rebooting. - -Which upstart management jobs that you use depend on what type of Rocket.Chat deployment you are using \(Docker-compose, non-docker, etc\). A race-condition exists with docker-compose which requires that mongo and the Rocket.Chat application be started independently, thus a slightly modified upstart job is required compared to non-docker instances. - -### Non-Docker-Compose - -Save as: `/etc/init/rocketchat.conf` - -```text -description "rocketchat application server" - -# Wait for mongod before starting rocketchat app -start on (started mongod) -stop on runlevel [!2345] - -# Automatically attempt to restart with finite limits -respawn -respawn limit 99 5 - -# Export necessary variables and start the Applications / Services -script - export MONGO_URL=mongodb://localhost:27017/rocketchat - export ROOT_URL=https://host.yourdomain.tld - export PORT=3000 - exec /usr/local/bin/node /home/administrator/Rocket.Chat/main.js -end script -``` - -Save as: `/etc/init/rocketchat_hubot.conf` - -```text -description "hubot launcher" - -# Wait for the rocketchat upstart job before starting hubot -start on started rocketchat -stop on runlevel [!2345] - -# Automatically Respawn with finite limits -respawn -respawn limit 99 5 - -script - # Wait until Rocket.Chat is up and listening to port tcp 3000 - until nc -z localhost 3000; do - sleep 1 - done - - # Export necessary variables - export ROCKETCHAT_ROOM=GENERAL - export ROCKETCHAT_USER=bot_username - export ROCKETCHAT_PASSWORD=bot_password - - # Change to the hubot directory - cd /home/administrator/myhubot - - # Launch Hubot - exec bin/hubot -a rocketchat -end script -``` - -### Docker-Compose - -Save as: `/etc/init/rocketchat_mongo.conf` - -```text -description "MongoDB service manager for rocketchat" - -# Start MongoDB after docker is running -start on (started docker) -stop on runlevel [!2345] - -# Automatically Respawn with finite limits -respawn -respawn limit 99 5 - -# Path to our app -chdir /var/www/rocket.chat - -script - # start mongoDB - exec /usr/local/bin/docker-compose up db -end script -``` - -Save as: `/etc/init/rocketchat_app.conf` - -```text -description "Rocketchat service manager" - -# Start Rocketchat after mongo upstart job is running -start on (started rocketchat_mongo) -stop on runlevel [!2345] - -# Automatically Respawn with finite limits -respawn -respawn limit 99 5 - -# Path to our app -chdir /var/www/rocket.chat - -script - # Bring up rocketchat app and hubot - exec /usr/local/bin/docker-compose up rocketchat hubot -end script -``` - diff --git a/installation/manual-installation/redhat.md b/installation/manual-installation/redhat.md deleted file mode 100644 index 8006832ba0..0000000000 --- a/installation/manual-installation/redhat.md +++ /dev/null @@ -1,10 +0,0 @@ -# Installing Rocket.Chat on Redhat - -Rocket.Chat has published a Certified Container Image with Redhat's Certified Container Registry. - -You can get started by reading Rocket.Chat Technical Implementation Guide for our Certified Container: - -{% file src="../../.gitbook/assets/rocket.chat-technical-implementation-guide-v.20180316.pdf" caption="Rocket.Chat Technical Implementation Guide v.20180316" %} - -Or you can follow [CentOS doc](centos.md) to install manually. - diff --git a/installation/manual-installation/rocketchatctl.md b/installation/manual-installation/rocketchatctl.md deleted file mode 100644 index 2f83d234d0..0000000000 --- a/installation/manual-installation/rocketchatctl.md +++ /dev/null @@ -1,115 +0,0 @@ -# RocketChatCTL - -rocketchatctl is a command line tool written in bash to help you install and configure a RocketChat server in a Linux host, it will take care of everything needed for the server to run, configure extra repositories and install needed libraries to install the correct node version and mongo server, and it will also set up directories and permissions, and configure the systemd files for these new services. - -Once you have your rocketchat server installed and running, you can use the same command to easily keep that Rocketchat server installation up to date, rocketchatctl can check for Rocketchat updates available and update it to the latest release. - -Furthermore, rocketchatctl optionally installs a loadbalancer/proxy with auto SSL provided by Let's Encrypt. - -Check it out here: [https://github.com/RocketChat/install.sh](https://github.com/RocketChat/install.sh) - -## Environment - -Currently rocketchatctl is supported in these Linux distributions: - -* Supported OS: - - Ubuntu 18.04, 19.04, 20.04 CentOS 7 Debian 9 - -And installs these software versions, but this can change for future rocketchatctl versions: - -* Node version: 12.18.4 -* Mongo version: 4.0.10 -* Web Proxy/Loadbalancer optional: - - Traefik 1.7.12 Caddy 1.0.0 - -We understand that some users could already have node, mongo, or even a webserver already installed in their servers, `rocketchatctl install` will check for previously installed versions of node and mongo in your system. - -## Options and flags - -Run `rocketchatctl help` and check options and flags: - -```text -rocketchatctl command line tool to install and update RocketChat server - -Usage: rocketchatctl [options] [--root-url=ROOT_URL --port=PORT --letsencrypt-email=EMAIL --webserver=WEBSERVER --version=VERSION --install-node --use-mongo] -Installs node, mongo, RocketChat server and optionally a webserver (Caddy or Traefik), sets up directories and permissions to use Let's Encrypt certificates. -In case node or mongo already installed, it uses already installed versions though confirmation is required. -For node it set v8.11.4 as default in your system, for mongo mmapv1 storage engine and no authentication enabled is required during installation. -If you wish this script to run unattended, provide extra flags to the install option, server URL is required (--root-url). - -OPTIONS - -h help Display this message - install Install latest RocketChat server version - update Update RocketChat server from current version to latest version - check-updates Check for updates of RocketChat server - upgrade-rocketchatctl Upgrade the rocketchatctl command line tool. - -FOR UNATTENDED INSTALLATION - --root-url=ROOT_URL the public URL where RocketChat server will be accessible on the Internet (REQUIRED) - --port=PORT port for the RocketChat server, default value 3000 - --webserver=WEBSERVER webserver to install as reverse proxy for RocketChat server, options are caddy/traefik/none (REQUIRED) - --letsencrypt-email=EMAIL e-mail address to use for SSL certificates (REQUIRED if webserver is not none) - --version=VERSION RocketChat server version to install, default latest - --install-node in case node installed, sets node to RocketChat server recommended version, default behavoir cancel RocketChat server installation - --use-mongo in case mongo installed, and storage engine configured is mmapv1, skip mongo installation but uses systems mongo for RocketChat server database, default database name rocketchat -``` - -## How to use it - -### Install Rocket.Chat - -You can run `rocketchatctl install` directly curling the install.sh script from our website, install.sh will download rocketchatctl save it in /usr/local/bin and call rocketchatctl with the install option, this installation will be interactive: - -```bash -bash -c "$(curl https://install.rocket.chat)" -``` - -In case you want to have an unattended install, use unattended install flags with install.sh script like this: - -```bash -bash -c "$(curl https://install.rocket.chat)" -s --root-url=https://www.example.com --webserver=traefik --letsencrypt-email=myemail@mydomain.com -``` - -If you already have rocketchatctl installed just run: - -```bash -rocketchatctl install -``` - -Or if you want to use your mongo server, change node to the current needed version for Rocket.Chat, listen in a different port, and install another release, you can for example use these command: - -```bash -rocketchatctl install --root-url=https://www.example.com --webserver=none --use-mongo --install-node --port=4000 --version=3.9.0 -``` - -### Update Rocket.Chat - -Check for release updates: - -```bash -rocketchatctl check-updates -Current update available for RocketChat server: from 3.8.0 to 3.9.0 -``` - -And update to the latest release: - -```bash -rocketchatctl update -``` - -The update option creates a temporary backup directory, download the latest rocketchat release, starts it and checks that is healthy querying the info api. In case something goes wrong in the startup process, the previous installed version from backup is resotored and a error message is displayed. - -### Upgrade rockectchatctl - -This option will download the latest version available for rocketchatctl in the install repo, compare it to your current rocketchatctl and upgrade to the latest version if needed, be sure to check that you are running the latest rocketchactl. - -```bash -rocketchatctl upgrade-rockectchatctl -``` - -#### **Use rocketchatctl to automate your previously Rocket.Chat manual installation deployments !** - -Check out our webinar about it here: - diff --git a/installation/manual-installation/running-in-a-sub-folder.md b/installation/manual-installation/running-in-a-sub-folder.md deleted file mode 100644 index b773bd7298..0000000000 --- a/installation/manual-installation/running-in-a-sub-folder.md +++ /dev/null @@ -1,47 +0,0 @@ -# Running in a sub folder with Apache - -> NOTE: Running in a sub folder has been officially deprecated. It will no longer be supported in upcoming 4.0 release. See our [April 2020 announcement](https://forums.rocket.chat/t/support-for-installation-in-subdirectory-will-be-discontinued/6371). - -If you want to run your server in a subfolder like `https://your.domain.com/chat/` you have to setup a reverse proxy. See [Run Rocket.Chat behind a SSL Reverse Proxy](configuring-ssl-reverse-proxy.md) - -If you are using apache you have to tweak the configuration. First you have to put the Rewrite/Proxy into a Location-tag. For example, if you want to provide the service under the "chat" subfolder, your config should look like this: - -```text - - Order allow,deny - Allow from all - - RewriteEngine On - RewriteCond %{HTTP:Upgrade} =websocket [NC] - RewriteRule /var/www/(.*) ws://localhost:3000/$1 [P,L] - RewriteCond %{HTTP:Upgrade} !=websocket [NC] - RewriteRule /var/www/(.*) http://localhost:3000/$1 [P,L] - - ProxyPassReverse http://localhost:3000 - -``` - -The main difference to the standard reverse proxy configuration is an additional RewriteRule, `/var/www` in the example, which must be changed to your DocumentRoot \(if it's not already your DocumentRoot\). - -If you pass the whole path, including the DocumentRoot to the Rocket.Chat server, you'll get a 404 response and an `Unknown path` server error. - -In our example we used the `/chat` as subfolder \(it's parsed out of the ROOT\_URL provided\) but the Rocket.Chat server gets a request for `/var/www/chat`, detects a mismatch and returns the above mentioned error. - -**Additional notes:** - -* Using the RewriteBase Directive won't work. -* The ProxyPassReverse can be used inside a Location-tag and the first parameter must be omitted in this case. -* You don't need to configure a Location for the root folder `/` when using Rocket.Chat in a subfolder \(it's likely configured for other stuff already in this case\). -* For the those curious about the details: the mentioned path-handling is in `webapp.js`, search for `Unknown path`. -* Please make sure that the modules `rewrite`, `proxy_http` and `proxy_wstunnel` are enabled in the apache configuration. Otherwise the websocket calls will return a 500 http response. - -## Running the application - -To run in a subfolder you should pass the environment variable `ROOT_URL` to the process. For example: - -```text -ROOT_URL=https://your.domain.com/chat/ node main.js -``` - -If you followed the manual installation guide, you may already have configured \(and persisted\) this environment variable - in this case you can ignore this advice. - diff --git a/installation/manual-installation/ubuntu.md b/installation/manual-installation/ubuntu.md deleted file mode 100644 index bced69f9a9..0000000000 --- a/installation/manual-installation/ubuntu.md +++ /dev/null @@ -1,149 +0,0 @@ -# Rocket.Chat in Ubuntu - -## Recommended Fastest Server Install via Snaps - -Snaps are the easiest way for you to get your server up and running on all supported Linux distributions \(Ubuntu, etc\). - -Find out more information about installing using snaps [here](../snaps/) - -If you would like to enable TLS on your site like this `https://yoursite.com` when using the snap, please see [here](../snaps/autossl.md) - -## Manual install - -This installation guide was tested in the following environment: - -* Rocket.Chat 3.9.0 -* OS: Ubuntu 18.04 LTS, Ubuntu 19.04 and Ubuntu 20.04\(Latest\) -* Mongodb 4.0.9 -* NodeJS 12.18.4 - -## Install necessary dependency packages - -Update package list and configure apt to install the official MongoDB packages with the following repository file: - -```bash -sudo apt-get -y update -``` - -```bash -sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 -``` - -```bash -echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list -``` - -Configure Node.js to be installed via package manager: - -```bash -sudo apt-get -y update && sudo apt-get install -y curl && curl -sL https://deb.nodesource.com/setup_12.x | sudo bash - -``` - -Install build tools, MongoDB, nodejs and graphicsmagick: - -```bash -sudo apt-get install -y build-essential mongodb-org nodejs graphicsmagick -``` - -Only for Ubuntu 19.04 install npm: - -```bash -sudo apt-get install -y npm -``` - -Using npm install inherits and n, and the node version required by Rocket.Chat: - -```bash -sudo npm install -g inherits n && sudo n 12.18.4 -``` - -## Install Rocket.Chat - -Download the latest Rocket.Chat version: - -```bash -curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz -``` - -```bash -tar -xzf /tmp/rocket.chat.tgz -C /tmp -``` - -Install \(this guide uses /opt but feel free to choose a different directory\): - -```bash -cd /tmp/bundle/programs/server && npm install -``` - -```bash -sudo mv /tmp/bundle /opt/Rocket.Chat -``` - -## Configure the Rocket.Chat service - -Add the rocketchat user, set the right permissions on the Rocket.Chat folder and create the Rocket.Chat service file: - -```bash -sudo useradd -M rocketchat && sudo usermod -L rocketchat -``` - -```bash -sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat -``` - -```bash -cat << EOF |sudo tee -a /lib/systemd/system/rocketchat.service -[Unit] -Description=The Rocket.Chat server -After=network.target remote-fs.target nss-lookup.target nginx.service mongod.service -[Service] -ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js -StandardOutput=syslog -StandardError=syslog -SyslogIdentifier=rocketchat -User=rocketchat -Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 ROOT_URL=http://localhost:3000/ PORT=3000 -[Install] -WantedBy=multi-user.target -EOF -``` - -Open the Rocket.Chat service file just created \(`/lib/systemd/system/rocketchat.service`\) using sudo and your favourite text editor, and change the ROOT\_URL environmental variable to reflect the URL you want to use for accessing the server \(optionally change MONGO\_URL, MONGO\_OPLOG\_URL and PORT\): - -```bash -MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 -MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 -ROOT_URL=http://your-host-name.com-as-accessed-from-internet:3000 -PORT=3000 -``` - -Setup storage engine and replication for MongoDB \(mandatory for versions > 1\), and enable and start MongoDB and Rocket.Chat: - -```bash -sudo sed -i "s/^# engine:/ engine: mmapv1/" /etc/mongod.conf -``` - -```bash -sudo sed -i "s/^#replication:/replication:\n replSetName: rs01/" /etc/mongod.conf -``` - -```bash -sudo systemctl enable mongod && sudo systemctl start mongod -``` - -```bash -mongo --eval "printjson(rs.initiate())" -``` - -```bash -sudo systemctl enable rocketchat && sudo systemctl start rocketchat -``` - -## Optional configurations - -[Configure firewall rule](optional-configurations.md) [Configure a HTTP reverse proxy to access Rocket.Chat server](configuring-ssl-reverse-proxy.md) \[Configure mongo access control\] \[Configure production values for mongodb\] - -## Configure your Rocket.Chat server - -Open a web browser and access the configured ROOT\_URL \(`http://your-host-name.com-as-accessed-from-internet:3000`\), follow the configuration steps to set an admin account and your organization and server info. - diff --git a/installation/manual-installation/univention-corporate-server-ucs.md b/installation/manual-installation/univention-corporate-server-ucs.md deleted file mode 100644 index e06180dd96..0000000000 --- a/installation/manual-installation/univention-corporate-server-ucs.md +++ /dev/null @@ -1,25 +0,0 @@ -# Univention Corporate Server \(UCS\) - -[Univention Corporate Server \(UCS\)](https://www.univention.com/products/ucs/) is an enterprise Linux distribution derived from Debian GNU/Linux with a strong focus on identity and infrastructure management. It provides an Active Directory compatible domain and allows deployment in Microsoft Active Directory based infrastructure. Furthermore, it supports authentication protocols LDAP, SAML and OpenID Connect. - -Rocket.Chat is available as app in Univention App Center. - -## Deployment via Univention App Appliance - -The fastest and easiest way to run a deployment of Rocket.Chat on UCS is to download and run a virtual machine with Rocket.Chat and UCS pre-installed, called app appliance. The app appliance is available for VMware, VirtualBox and KVM. - -1. Download the app appliance from the [Univention App Catalog](https://www.univention.com/products/univention-app-center/app-catalog/rocketchat/) or with the direct links below: - * [VirtualBox image](https://appcenter.software-univention.de/univention-apps/current/rocketchat/Univention-App-rocketchat-virtualbox.ova) - * [VMware ESXi image](https://appcenter.software-univention.de/univention-apps/current/rocketchat/Univention-App-rocketchat-ESX.ova) - * [VMware Workstation image](https://appcenter.software-univention.de/univention-apps/current/rocketchat/Univention-App-rocketchat-vmware.zip) - * [KVM image](https://appcenter.software-univention.de/univention-apps/current/rocketchat/Univention-App-rocketchat-KVM.qcow2) -2. [Import the app appliance](https://www.univention.com/downloads/ucs-download/guide-for-virtual-appliance-import/) to the desired hypervisor. -3. Follow the instructions in the setup wizard. -4. [Register](https://help.univention.com/t/how-to-register-a-univention-app-appliance/11294) your app appliance. - -## Installation via Univention App Center - -If there is already a deployment of UCS running, Rocket.Chat can easily be installed directly via the App Center. - -Alternatively, the above mentioned app appliance can be setup and joined into an existing UCS deployment, called domain. - diff --git a/installation/manual-installation/updating/README.md b/installation/manual-installation/updating/README.md deleted file mode 100644 index fe73a58a81..0000000000 --- a/installation/manual-installation/updating/README.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -description: Updating Manual Installation ---- - -# Updating - -Usually you can update Rocket.Chat server pretty easily. - -Stop Rocket.Chat service: - -```text -sudo systemctl stop rocketchat -``` - -Remove the installation folder, usually in /opt: - -```text -sudo rm -rf /opt/Rocket.Chat -``` - -Update the node version required by Rocket.Chat: - -```text -sudo n install 12.18.4 -``` - -Download Rocket.Chat latest version: - -```text -curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz -``` - -```text -tar -xzf /tmp/rocket.chat.tgz -C /tmp -``` - -Install it and set right permissions to Rocket.Chat folder: - -```text -cd /tmp/bundle/programs/server && npm install -``` - -```text -sudo mv /tmp/bundle /opt/Rocket.Chat -``` - -```text -sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat -``` - -Start the service: - -```text -sudo systemctl start rocketchat -``` - -Please also have a look at the installation documentation for your method of deployment to check for paragraphs that refer to the process of updating. - -There might be some major changes when we introduce big new features or modifications, you can always take a look on the [releases page](https://github.com/RocketChat/Rocket.Chat/releases) to see what has been changed, broken or added to Rocket.Chat. - -You can see older major changes here: - -* [0.x.x to 0.40.0](from-0-x-x-to-0-40-0.md) - -## Caveats on upgrading your standalone Rocket.Chat database - -### Replicasets - -Any version after v1.0.x requires replicasets/oplogging enabled on Mongo. - -eg. [https://rocket.chat/docs/installation/manual-installation/mongo-replicas](https://rocket.chat/docs/installation/manual-installation/mongo-replicas) - -### Upgrading the database - -Due to Mongo DB schema changes between versions it is recommended to upgrade your database one Rocket.Chat version at a time to avoid database issues. - -Do _not_ backup from one version and try to restore to another eg: - -You have Rocket.Chat 0.65.x - -Do not try to backup the database and restore to direct to another version e.g. Rocket.Chat 1.2.x - -Follow this procedure: - -* Backup DB -> ~/Rocket/Backup/v0.65 -* Upgrade Rocket one version eg 0.65.x -> 0.66.x -* Check for errors -* Backup DB -> ~/Rocket/Backup/v0.66 -* Upgrade Rocket one version eg 0.66.x -> 0.67.x -* Check for errors - if you discover any, stop and fix them or go back to the previous version and start again -* Repeat - -\(this is a very good reason to keep reasonably up to date with Rocket.Chat versions\) - -Please check the [Tags](https://github.com/RocketChat/Rocket.Chat/tags) or Releases as above for the required version infomation. - diff --git a/installation/manual-installation/updating/from-0-x-x-to-0-40-0.md b/installation/manual-installation/updating/from-0-x-x-to-0-40-0.md deleted file mode 100644 index d8c91c2f28..0000000000 --- a/installation/manual-installation/updating/from-0-x-x-to-0-40-0.md +++ /dev/null @@ -1,16 +0,0 @@ -# Updating from 0.x.x to 0.40.0 - -With the release of Rocket.Chat 0.40.0 we are moving from requiring Node.js v0.10.44 to Node.js v4.8.4 LTS - -If you used docker or one of our cloud installation methods: nothing to do, carry on! - -## Update procedure - -First stop Rocket.Chat - -The guides suggest the usage of `n` to manage Node.js version. Assuming that is what you used run: - -```text -sudo n 4.8.4 -``` - diff --git a/installation/manual-installation/updating/to-1-0.md b/installation/manual-installation/updating/to-1-0.md deleted file mode 100644 index 629118e8f4..0000000000 --- a/installation/manual-installation/updating/to-1-0.md +++ /dev/null @@ -1,32 +0,0 @@ -# Updating to 1.0 - -With the release of Rocket.Chat 1.0 a few things have changed to prevent the need for breaking changes down the road. - -## Oplog Required - -With 1.0 we now require oplog be enabled. Attempting to start Rocket.Chat without oplog will result in an error. - -To enable you will need to connect to mongo and type `rs.initiate()` - -Then for Rocket.Chat you will need to provide the MONGO\_OPLOG\_URL environment url. If mongo is on the same host the environment variable will look something like this: - -```text -MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 -``` - -For more information [see here](https://docs.rocket.chat/installation/manual-installation/mongo-replicas/) - -## Mongo Authentication - -If you are using mongo authentication you might also need to add the clustermonitor role to your user. - -You can execute something like: - -```text -admin = db.getSiblingDB("admin"); -admin.grantRolesToUser('OPLOGUSER',[{ role: "clusterMonitor", db: "admin" }]) -admin.grantRolesToUser('ROCKETUSER',[{ role: "clusterMonitor", db: "admin" }]) -``` - -Replace the users with the names you have chosen for your users. - diff --git a/installation/micro-services-setup-beta.md b/installation/micro-services-setup-beta.md deleted file mode 100644 index 0ec863f885..0000000000 --- a/installation/micro-services-setup-beta.md +++ /dev/null @@ -1,156 +0,0 @@ -# Microservices Setup \[beta\] - -{% hint style="info" %} -This feature is currently in the beta stage and can change without prior notice. -{% endhint %} - -{% hint style="info" %} -The feature will be released for **General Availability** on the **Enterprise Edition v4.0.** -{% endhint %} - -{% hint style="info" %} -New in version 3.8. -{% endhint %} - -## Pre-requisites - -* NATS - * Please refer to [NATS Docker installation](https://docs.nats.io/nats-server/nats_docker) on how to deploy NATS -* MongoDB - * Storage Engine needs to be [WiredTiger](https://docs.mongodb.com/manual/core/wiredtiger/): - * [Change Standalone to WiredTiger](https://docs.mongodb.com/manual/tutorial/change-standalone-wiredtiger/) -* Rocket.Chat - * The setting **Use REST instead of WebSocket for Meteor calls** under _Admin > General > REST API_, _must_ be **enabled**. - -The following environment variables should be set for Rocket.Chat services as well: - -| Variable | Value | Description | -| :--- | :--- | :--- | -| `TRANSPORTER` | `nats://nats:4222` | NATS address | -| `DISABLE_DB_WATCH` | `true` | Disables internal DB watcher and rely on `mongodb-stream-hub` | -| `DISABLE_PRESENCE_MONITOR` | `true` | Disables presence monitoring and rely on the `presence-service` | -| `INTERNAL_SERVICES_ONLY` | `true` | Do not run external services on rocket.chat process | - -## Micro Services - -Rocket.Chat microservices are composed of a few Docker containers: - -![](../.gitbook/assets/micro-services-deployment-v0.1-2x-1-.png) - -### Accounts - -Responsible for user authentications - -```text -docker run \ ---name accounts-service \ --e MONGO_URL=mongodb://mongo/rocketchat?replicaSet=rs01 \ --e TRANSPORTER=nats://nats:4222 \ -rocketchat/account-service:latest -``` - -### Authorization - -Responsible for the validation of access to features - -```text -docker run \ ---name authorization-service \ --e MONGO_URL=mongodb://mongo/rocketchat?replicaSet=rs01 \ --e TRANSPORTER=nats://nats:4222 \ -rocketchat/authorization-service:latest -``` - -### DDP Streamer - -Web socket interface between server and clients - -```text -docker run \ ---name ddp-streamer \ --e MONGO_URL=mongodb://mongo/rocketchat?replicaSet=rs01 \ --e TRANSPORTER=nats://nats:4222 \ -rocketchat/ddp-streamer-service:latest -``` - -{% hint style="info" %} -DDP Streamer should be scaled from the beginning. \(One per 500 concurrent users should be good enough\) -{% endhint %} - -### MongoDB Stream Hub - -{% hint style="danger" %} -Can not be scaled to multiple containers -{% endhint %} - -Receives real-time data from MongoDB and emits that data to the system. - -```text -docker run \ ---name mongodb-stream-hub \ --e MONGO_URL=mongodb://mongo/rocketchat?replicaSet=rs01 \ --e TRANSPORTER=nats://nats:4222 \ -rocketchat/stream-hub-service:latest -``` - -### Presence \(Optional\) - -Controls and update users' presence status. - -{% hint style="success" %} -In a situation where you have a huge amount of data/users, you can get away with not running it to reduce the traffic of presence processing. If you are not running it, the user's online/offline status and notification will not work properly. -{% endhint %} - - - -```text -docker run \ ---name presence-service \ --e MONGO_URL=mongodb://mongo/rocketchat?replicaSet=rs01 \ --e TRANSPORTER=nats://nats:4222 \ -rocketchat/presence-service:latest -``` - -### Environment variables common to all services - -Set the following environment variables to enable Prometheus metrics: - -| Variable | Default | Description | -| :--- | :--- | :--- | -| `MS_METRICS` | `false` | Enable Prometheus metrics endpoint | -| `MS_METRICS_PORT` | `9458` | Port of Prometheus metrics endpoint | - -## Reverse proxy - -Once all services are up and running the web socket connections should be targeted to `ddp-streamer` containers, the configuration depends on the reverse proxy you have set up, but you need to change the following routes: - -* `/sockjs` -* `/websocket` - -If using Kubernetes, an Ingress like the following can be used: - -```text -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: ddp-streamer -spec: - rules: - - host: your-hostname.rocket.chat - http: - paths: - - backend: - serviceName: ddp-streamer - servicePort: 3000 - path: /(sockjs|websocket) -``` - -## Summary: - -To summarize it: - -1. You just need to deploy the reverse proxy to split the communication. -2. Run all the above services pointing to the NATS and the MongoDB. -3. Deploy NATS. -4. Run Rocket.Chat according to the above-mentioned variables. - diff --git a/installation/minimum-requirements-for-using-rocket.chat.md b/installation/minimum-requirements-for-using-rocket.chat.md deleted file mode 100644 index b2c270e431..0000000000 --- a/installation/minimum-requirements-for-using-rocket.chat.md +++ /dev/null @@ -1,66 +0,0 @@ -# Minimum Requirements for using Rocket.Chat - -If you’re curious about the technical requirements needed to run Rocket.Chat, read on to learn which operating systems \(OS\) and browsers we support. -**** - -## **Desktop apps** - - - - - - - - - - - - - - - - - - - - - - -
Operating System - Requirements -
macOS - OS X 10.11 or above -
Windows - Windows 8 or above -
Linux - -

Fedora 28 or above -

-

Ubuntu LTS releases 16.04 or above -

-

Red Hat Enterprise Linux 7.0 or above -

-
- -## **Mobile apps** - -| **Operating System** | **Requirements** | -| :--- | :--- | -| **iOS** | **iOS 11** **or above** | -| **Android** | **Android 6.0 or above** | - -## **Web browsers** - -| **Browser** | **Requirements** | -| :--- | :--- | -| **Google Chrome** | **Latest 3 versions** | -| **Mozilla** **Firefox** | **Latest 3 versions** | -| **Safari** | **Latest 2 versions** | -| **Microsoft Edge** | **Latest 2 versions** | -| **Microsoft Internet Explorer** | **Latest version only** | - -### **Unsupported browsers and operating systems** - -To deliver the best possible Rocket.Chat experience, and we keep our list of supported browsers and operating systems short. We don’t fix bugs or issues for unsupported browsers, so we do our best to block them from accessing Rocket.Chat. - - diff --git a/installation/mobile-and-desktop-apps.md b/installation/mobile-and-desktop-apps.md deleted file mode 100644 index a344f8c436..0000000000 --- a/installation/mobile-and-desktop-apps.md +++ /dev/null @@ -1,74 +0,0 @@ -# Mobile and Desktop Apps - -You can find a variety of client apps to use with a Rocket.Chat server, apart from using a browser. - -## Desktop Apps - -Here you can find the Electron based Desktop Apps: - -### Windows - -Can be found [here](https://rocket.chat/install) - -### macOS - -Can be found in the App Store [here](https://itunes.apple.com/app/rocket.chat/id1086818840) - -It can also be downloaded [here](https://github.com/RocketChat/Rocket.Chat.Electron) - -### Linux - -If you are on Ubuntu we recommend you install our snap via: - -```text -sudo snap install rocketchat-desktop -``` - -Snaps auto update so you no longer need to worry about manually keeping the client up to date. - -Snaps are also available on other platforms. More information available [here](https://snapcraft.io/docs/core/install) - -There is also a Flatpak [package available on Flathub](https://flathub.org/apps/details/chat.rocket.RocketChat). - -Alternatively you can download and manually install: - -You can find the download for the latest releases [here](https://github.com/RocketChat/Rocket.Chat.Electron/releases) - -## Mobile Apps - -![](../.gitbook/assets/ic_launcher-web%20%281%29.png) - -### Rocket.Chat - -This is the official version of our mobile apps both on Google Play and App Store. - -[Rocket.Chat on App Store](https://apps.apple.com/us/app/rocket-chat/id1148741252) - -[Rocket.Chat on Google Play](https://play.google.com/store/apps/details?id=chat.rocket.android) - -#### Rocket.Chat Beta - -Beta versions of our apps are available on Google Play beta and TestFlight. Help us testing new features! - -[Rocket.Chat Beta on TestFlight](https://testflight.apple.com/join/3gcYeoMr) - -[Rocket.Chat Beta on Google Play](https://play.google.com/store/apps/details?id=chat.rocket.android) - -![](../.gitbook/assets/ic_launcher-web.png) - -### Rocket.Chat Experimental - -The Experimental version of our mobile apps is developed using the same technologies and code of the official version. We use it to try new features and get feedback from our users. Only stable features land the official version. - -[Rocket.Chat Experimental on Google Play](https://play.google.com/store/apps/details?id=chat.rocket.reactnative) - -_Note: iOS version isn't available on App Store anymore._ - -#### Rocket.Chat Experimental Beta - -Beta versions of our apps are available on Google Play beta and TestFlight. Help us testing new features! - -[Rocket.Chat Experimental Beta on TestFlight](https://testflight.apple.com/join/7I3dLCNT) - -[Rocket.Chat Experimental Beta on Google Play](https://play.google.com/store/apps/details?id=chat.rocket.reactnative) - diff --git a/installation/official-recommendations.md b/installation/official-recommendations.md deleted file mode 100644 index e92cd9def6..0000000000 --- a/installation/official-recommendations.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -description: Official Production Deployment Recommendations ---- - -# Official Recommendations - -## Introduction - -In order to obtain official support from our team, we have a minimum set of requirements. These requirements are necessary for us to access essential system information, to provide an SLA, to answer questions, or to provide a solution for the problem. - -Only installations matching these minimum requirements can be covered by our SLAs and our paid Support Policy, some requirements may vary depending on the installation size as described in the following sections. - -## Environment - -#### Docker Container - -In order to eliminate environment issues of missing, outdated, or mismatching dependencies, specific operating system issues, or problems during manual installations, we strongly recommend using our official Docker images. - -{% hint style="info" %} -Rocket.Chat's own cloud uses our official Docker images, which makes this installation method the most tested. -{% endhint %} - -[Docker](https://www.docker.com/) is widely used to package applications in containers and distribute them as images, providing abstraction and isolation layers from the OS \(operational system\). It allows the application to be shipped with a specific version of the OS compatibility layer and his own dependencies already installed and configured. - -{% page-ref page="docker-containers/" %} - -## Scalability - -### Multiple processes - -We recommend running multiple application processes to maximize the usage of all available cores. Although you can use either Virtual Machines or containers to do so, we recommend and only support the usage of Docker containers. - -Virtual machines and containers differ in several ways, but the primary difference is that containers provide a way to virtualize an OS so that multiple workloads can run on a single OS instance. With VMs, the hardware is being virtualized to run multiple OS instances. Containers’ speed, agility, and portability make them offer definite performance advantages for our use case. - -{% hint style="info" %} -In some cases, it is acceptable to run containers inside a VM, as most PaaS only offer Virtual Private Servers. -{% endhint %} - -#### Performance benefits of containers - -**Faster startup time** - -A containerized application usually starts in a couple of seconds. Virtual machines could take a couple of minutes. - -**Better resource distribution** - -Containers use up only as many system resources as they need at a given time. Virtual machines usually require some resources to be permanently allocated before the virtual machine starts. For this reason, virtual machines tie up resources on the host, even if they are not actually using them. Containers allow host resources to be distributed in an optimal way. - -**Direct hardware access** - -Applications running inside virtual machines generally cannot access hardware like graphics cards on the host in order to speed processing. containerized applications can. - -**Less redundancy** - -With virtual machines, you have to install an entire guest operating system, which duplicates a lot of the components already running on your host server. Containers don't require this. - -{% embed url="https://www.backblaze.com/blog/vm-vs-containers/" %} - -### Containers orchestration - -The usage of Docker-compatible containers orchestration/management systems such as Kubernetes, Rancher, or OpenShift can facilitate the scaling of containerized Rocket.Chat instances making it possible to distribute load among different physical bare-metal servers or virtual machines. - -Rocket.Chat's own cloud uses this approach to manage cloud-hosted instances with a high level of reliability and flexibility, we leverage the same expertise to provide documentation on how to configure and deploy scaled installations. - -We require, for **scaled installations** \(with more than **one instance** or more than **2000 users**\), to be orchestrated and/or managed with one of the following: - -1. SUSE Rancher -2. Red Hat Openshift -3. Kubernetes and Helm _\(Managed by a cloud platform such as AWS, Google Cloud, etc, or self-managed\)_ -4. docker-compose - -At this time, no other containers orchestration/management technologies will be supported by our Support team for any issues related to **scaled installations**. - -## Hardware - -The minimum hardware requirements are described on the page below. - -{% page-ref page="hardware-requirements.md" %} - -## Monitoring - -Production deployments should continually collect metrics regarding the installation's instances and database. Rocket.Chat supports and recommends the industry-standard Prometheus + Grafana monitoring stack. Grafana dashboards are available in the [Metrics](https://github.com/RocketChat/Rocket.Chat.Metrics) repository. - -{% embed url="https://github.com/RocketChat/Rocket.Chat.Metrics" %} - -## Versions - -Rocket.Chat cuts a new release every month, please check the link below for more information about the release cycles and make sure you are running a supported version. - -{% page-ref page="../getting-support.md" %} - - - diff --git a/installation/paas-deployments/README.md b/installation/paas-deployments/README.md deleted file mode 100644 index 56073849e8..0000000000 --- a/installation/paas-deployments/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# PaaS Deployments - -There are multiple deployment options for Rocket.Chat. - -## Quick Deployments - -If you are interested in quickly deploying an instance, you can try one of the options below: - -* [Sandstorm](https://apps.sandstorm.io/app/vfnwptfn02ty21w715snyyczw0nqxkv3jvawcah10c6z7hj1hnu0), you can have a server for your family and friends running in 4 seconds. -* [Cloudron](https://cloudron.io/appstore.html#chat.rocket.cloudronapp), you can install and receive automatic updates on your Cloudron Smartserver. - -## Managed Deployments - -If you need full control of your deployment, here are some guides for specific environments: - -* [Aliyun](aliyun.md) -* [Amazon Web Services](aws.md) -* [Digital Ocean](digitalocean.md) -* [Meteor Galaxy](galaxy.md) -* [Google Compute Engine](google-computer-engine.md) -* [IBM Cloud](ibm-cloud.md) -* [Sloppy.io](sloppy-io.md) -* [D2C.io](d2c-io.md) -* [Syncloud.org](syncloud-org.md) - -## Automation Tools - -* [Ansible](../automation-tools/ansible.md) -* [Vagrant](../automation-tools/vagrant.md) - diff --git a/installation/paas-deployments/aliyun.md b/installation/paas-deployments/aliyun.md deleted file mode 100644 index a208d25bdc..0000000000 --- a/installation/paas-deployments/aliyun.md +++ /dev/null @@ -1,189 +0,0 @@ ---- -description: Deploying Rocket.Chat on Aliyun ---- - -# Aliyun - -You can install Rocket.Chat to Ubuntu VPS on Aliyun. - -The recommended VPS configuration is: - -* 2 GB RAM -* 10 GB disk -* 2 or 4 cores - -However, lower performance configuration has been tested on a VPS with: - -* 1 GB RAM -* 10 GB disk -* 1 core - -Follow these steps to install Rocket.Chat. - -## Update Ubuntu repo lists and Install curl - -After you ssh to the VPS: - -![aliyun shell](https://raw.githubusercontent.com/Sing-Li/bbug/master/images/aliyun1.png) - -Run the command: - -```text -apt-get update -``` - -followed by: - -```text -apt-get install curl -``` - -## Install docker - -Run this command: - -```text -curl -sSL https://get.docker.com/ | sh -``` - -Docker should be installed, verify it: - -```text -docker ps -``` - -![aliyun docker verify](https://raw.githubusercontent.com/Sing-Li/bbug/master/images/aliyun2.png) - -## Install docker-compose - -Install docker-compose, follow the [latest release instructions](https://github.com/docker/compose/releases) - -For release 1.5.0, you can use: - -```text -curl -L https://github.com/docker/compose/releases/download/1.5.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose -``` - -_\(if or when this is blocked, you'll have to obtain Linux-x86\_64 docker-compose binary via other means\)_ - -Next, allow execution of docker-compose: - -```text -chmod +x /usr/local/bin/docker-compose -``` - -## Create directories for Rocket.Chat - -First, - -```text -mkdir /home/rocketchat -``` - -Then, - -```text -cd /home/rocketchat -``` - -Make two more directories for the mongodb database: - -```text -mkdir data -mkdir dump -``` - -## Create customized docker-compose.yml - -Create a `docker-compose.yml` file with the following content: - -```text -version: '2' - -services: - rocketchat: - image: rocket.chat:latest - restart: unless-stopped - volumes: - - ./uploads:/app/uploads - environment: - - PORT=3000 - - ROOT_URL=http://chat.inumio.com - - MONGO_URL=mongodb://mongo:27017/rocketchat - - MONGO_OPLOG_URL=mongodb://mongo:27017/local - - Accounts_UseDNSDomainCheck=True - depends_on: - - mongo - ports: - - 8818:3000 - - mongo: - image: mongo - restart: unless-stopped - volumes: - - $PWD/data:/data/db - - $PWD/dump:/dump - command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1 - - # this container's job is just run the command to initialize the replica set. - # it will run the command and remove himself (it will not stay running) - mongo-init-replica: - image: mongo - command: 'bash -c "for i in `seq 1 30`; do mongo mongo/rocketchat --eval \"rs.initiate({ _id: ''rs0'', members: [ { _id: 0, host: ''localhost:27017'' } ]})\" && s=$$? && break || s=$$?; echo \"Tried $$i times. Waiting 5 secs...\"; sleep 5; done; (exit $$s)"' - depends_on: - - mongo -``` - -Make sure you customize the file with `your-ip-address` in the `MONGO_URL` env variable. - -## Pull the required docker images - -This will download the required docker images, and may take some time. - -This is done only the first time, or when you want to update Rocket.Chat. - -```text -docker pull mongo -docker pull registry.rocket.chat/rocketchat/rocket.chat -``` - -## Start the mongodb database - -Run: - -```text -docker-compose up -d mongo -``` - -Mongo supports 24 x 7 operations and live backup. You should not need to restart it too frequently. See [mongodb documentations](https://docs.mongodb.org/manual/) for proper operation and management of a mongo server. - -Wait a couple of minute for mongo to start properly. - -## Start the mongodb replica - -Run: - -```text -docker-compose up -d mongo-init-replica -``` - -This container's job is just to run the command to initialize the replica set. It will run the command and remove itself \(it will not stay running\) - -## Start your Rocket.Chat server - -Now start the Rocket.Chat server: - -```text -docker-compose up -d rocketchat -``` - -Rocket.Chat should be ready in a minute or two. - -## Access your Rocket.Chat on Aliyun - -Your Rocket.Chat server can now be accessed over the Internet via: - -```text -http://your-ip-address:8818/ -``` - diff --git a/installation/paas-deployments/aws.md b/installation/paas-deployments/aws.md deleted file mode 100644 index e36c2883e3..0000000000 --- a/installation/paas-deployments/aws.md +++ /dev/null @@ -1,265 +0,0 @@ ---- -description: Deploying Rocket.Chat on Amazon Web Services ---- - -# AWS - -This guide covers the following: - -1. Hosting Rocket.Chat on an Amazon EC2 instance -2. Hosting a domain name with Amazon Route 53 -3. Securing your server with a free SSL certificate from Let's Encrypt - -## Launch an EC2 instance - -Log into AWS console, open the ["_EC2_" service](https://console.aws.amazon.com/ec2/), click on "_Instances_" in the left sidebar and click on "_Launch Instance_" to setup a new EC2 instance. Now follow the steps below: - -1. In the first step search for "_Ubuntu Server 18.04 LTS_" with "_64-bit \(x86\)_" architecture and click on "_Select_" -2. Select an instance type of your choice and click "_Next_" -3. Adjust the instance details as needed or keep the defaults. Proceed with "_Next_" -4. Adjust the storage size and configuration as needed and click on "_Next_" -5. Make sure to add a tag called "_Name_" and assign a value -6. Allow "_SSH_", "_HTTP_" and "_HTTPS_" in the security group configuration, proceed with "_Review and Launch_" -7. Review your instance configuration and confirm with "_Launch_" -8. Choose an existing key pair or create a new one and click on "_Launch Instance_" - -## Allocate an Elastic IP - -Back in the ["_EC2_" service](https://console.aws.amazon.com/ec2/) dashboard, click on "_Elastic IPs_" in the left sidebar: - -1. Click on "_Allocate New Address_" -2. Select "_Amazon's pool of IPv4 addresses_" and click on "_Allocate_" -3. Click on the newly created IP address and select "_Associate Elastic IP address_" -4. Select your instance and click "_Associate_" -5. In the details below, copy the "_Public DNS_". You will need it in the DNS step. - - \(It should be in a format like this: `ec2-18-197-161-168.eu-central-1.compute.amazonaws.com`\) - -## Configure DNS w/ AWS Route 53 - -Open the "_Route 53_" service dashboard: - -1. Create a new hosted zone by clicking on "_Create Hosted Zone_": -2. Enter your domain name and select "_Public Hosted Zone_" as type, then click on "_Create"_ -3. Select your newly created zone and click on "_Create Record Set_" -4. Enter "_www_" as subdomain \(if desired\), select Type "_CNAME_", enter the Public DNS name from the above step to the value field and click "_Create_" - -## Get an SSL certificate from Let's Encrypt - -We will use Let's Encrypt to get a free & open-source SSL certificate: - -1. SSH to your instance: - - ```text - ssh -i ubuntu@ - ``` - - Note: You may replace with domain name if your DNS has resolved. - -2. Install `certbot` using `apt`: - - ```text - sudo apt update - sudo apt install certbot - ``` - -3. Obtain certificate from Let's Encrypt: - - ```text - sudo certbot certonly --standalone --email -d -d - ``` - - Note: Second \(or more\) domain is optional. - -4. Optional step: restrict access using security groups - - If you would like to restrict traffic to your instance on AWS, you may now adjust the security groups again. Make sure you allow "_TCP/22_" from your current location for the SSH connection, as well as "_TCP/443_" from the location you wish to use to access from. - -## Configure Nginx web server with TLS/SSL - -1. Install Nginx web server: - - ```text - sudo apt-get install nginx - ``` - -2. Backup the default config file for reference: - - ```text - cd /etc/nginx/sites-available - sudo mv default default.reference - ``` - -3. Create a new site configuration for Rocket.Chat: - - ```text - sudo nano /etc/nginx/sites-available/default - ``` - - ```text - server { - listen 443 ssl; - - server_name ; - - ssl_certificate /etc/letsencrypt/live//fullchain.pem; - ssl_certificate_key /etc/letsencrypt/live//privkey.pem; - ssl_protocols TLSv1 TLSv1.1 TLSv1.2; - ssl_prefer_server_ciphers on; - ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; - - root /usr/share/nginx/html; - index index.html index.htm; - - # Make site accessible from http://localhost/ - server_name localhost; - - location / { - proxy_pass http://localhost:3000/; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_set_header Host $http_host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto http; - proxy_set_header X-Nginx-Proxy true; - proxy_redirect off; - } - } - - server { - listen 80; - - server_name ; - - return 301 https://$host$request_uri; - } - ``` - - Make sure to replace `ABC.DOMAIN.COM` with your domain \(it appears 4 times\). Make sure to update it in the path to your key files as well: - -4. Test the Nginx configuration to make sure there are no syntax errors: - - ```text - sudo nginx -t - ``` - -5. If the syntax test went successful, restart Nginx: - - ```text - sudo systemctl restart nginx - ``` - -Confirm that it is running properly by opening a web browser and going to your domain name. You will get a page stating "_502 Bad Gateway_". This is expected, since the Rocket.Chat backend is not yet running. Make sure the SSL connection is working properly by clicking the lock icon next to the address bar, make sure it's valid and issued by "_Let's Encrypt Authority X3_". - -## Install Docker & Docker Compose - -1. Install Docker \(and any dependencies\) - - ```text - sudo apt-get update - sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - - sudo apt-key fingerprint 0EBFCD88 - # confirm the fingerprint matches "9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88" - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" - sudo apt-get update - sudo apt-get install docker-ce docker-ce-cli containerd.io - ``` - -2. Install `docker-compose`: - - ```text - sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose - sudo chmod +x /usr/local/bin/docker-compose - ``` - -## Set up Docker containers - -1. Create local directories - - ```text - sudo mkdir -p /opt/docker/rocket.chat/data/runtime/db - sudo mkdir -p /opt/docker/rocket.chat/data/dump - ``` - -2. Create the `docker-compose.yml` file, again make sure to replace `ABC.DOMAIN.COM` with your actual domain name: - - ```text - sudo nano /opt/docker/rocket.chat/docker-compose.yml - ``` - - ```text - version: '2' - - services: - rocketchat: - image: rocket.chat:latest - command: > - bash -c - "for i in `seq 1 30`; do - node main.js && - s=$$? && break || s=$$?; - echo \"Tried $$i times. Waiting 5 secs...\"; - sleep 5; - done; (exit $$s)" - restart: unless-stopped - volumes: - - ./uploads:/app/uploads - environment: - - PORT=3000 - - ROOT_URL=https:// - - MONGO_URL=mongodb://mongo:27017/rocketchat - - MONGO_OPLOG_URL=mongodb://mongo:27017/local - depends_on: - - mongo - ports: - - 3000:3000 - - mongo: - image: mongo:4.0 - restart: unless-stopped - command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1 - volumes: - - ./data/runtime/db:/data/db - - ./data/dump:/dump - - # this container's job is just to run the command to initialize the replica set. - # it will run the command and remove himself (it will not stay running) - mongo-init-replica: - image: mongo:4.0 - command: > - bash -c - "for i in `seq 1 30`; do - mongo mongo/rocketchat --eval \" - rs.initiate({ - _id: 'rs0', - members: [ { _id: 0, host: 'localhost:27017' } ]})\" && - s=$$? && break || s=$$?; - echo \"Tried $$i times. Waiting 5 secs...\"; - sleep 5; - done; (exit $$s)" - depends_on: - - mongo - ``` - -3. Start containers: - - ```text - cd /opt/docker/rocket.chat - sudo docker-compose up -d - ``` - -4. Wait a bit for the replica set to be initialized for MongoDB \(about 30-60 seconds\) and confirm Rocket.Chat is running properly: - - ```text - sudo docker-compose logs -f rocketchat - ``` - -## Use it - -1. Login to your site at `https://ABC.DOMAIN.COM` - - Note: the first user to login will be an administrator user. - diff --git a/installation/paas-deployments/cloudron-io.md b/installation/paas-deployments/cloudron-io.md deleted file mode 100644 index 3311ae8de1..0000000000 --- a/installation/paas-deployments/cloudron-io.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -description: Deploying Rocket.Chat on Cloudron.io ---- - -# Cloudron.io - -Cloudron is a complete solution for running apps on your server and keeping them up-to-date and secure. - -Rocket.Chat can be installed on [Cloudron](https://cloudron.io) from the [Cloudron Store](https://cloudron.io/store/chat.rocket.cloudronapp.html). - -[![Install](https://cloudron.io/img/button.svg)](https://cloudron.io/button.html?app=chat.rocket.cloudronapp) - -The source code for the Rocket.Chat package can be found [here](https://git.cloudron.io/cloudron/rocketchat-app). - -There is a demo at [https://my.demo.cloudron.io](https://my.demo.cloudron.io) \(username: cloudron password: cloudron\). - diff --git a/installation/paas-deployments/d2c-io.md b/installation/paas-deployments/d2c-io.md deleted file mode 100644 index d96c28151e..0000000000 --- a/installation/paas-deployments/d2c-io.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -description: Deploying Rocket.Chat on D2C.io ---- - -# D2C.io - -## Supported cloud providers - -* AWS -* GCP -* Digital Ocean -* Vultr -* UpCloud - -## Supported operation systems and other requirements for connecting own servers: - -* OS: Ubuntu server 16.04/18.04; Debian 8/9 -* We strongly recommend to use a kernel with version >= 4.0 for better Docker performance using OverlayFS, otherwise the storage driver - will be "devicemapper" -* Free disk space: 5 Gb -* Opened incoming SSH port -* For the Weave network to work, you must open ports 6783, 6784 \(TCP/UDP\) -* For better performance, we recommend ensuring that VXLAN tunneling is allowed - -## Deploy - -Single click deployment. Version 0: - -[![Deploy](https://raw.githubusercontent.com/mastappl/images/master/deployTo.png)](https://panel.d2c.io/?import=https://github.com/d2cio/rocketchat-stack/archive/master.zip/) - -Single click deployment. Version 1: - -[![Deploy](https://raw.githubusercontent.com/mastappl/images/master/deployTo.png)](https://panel.d2c.io/?import=https://github.com/d2cio/rocketchat-replicaset-stack/archive/master.zip) - -### Demo - -![How to deploy a stack](https://raw.githubusercontent.com/mastappl/images/master/rocketchat.gif) - diff --git a/installation/paas-deployments/digitalocean.md b/installation/paas-deployments/digitalocean.md deleted file mode 100644 index a980239452..0000000000 --- a/installation/paas-deployments/digitalocean.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -description: Deploying Rocket.Chat on DigitalOcean ---- - -# DigitalOcean - -You can now install Rocket.Chat on DigitalOcean using a 1-Click install from the DigitalOcean Marketplace. - -[![do-btn-blue](https://user-images.githubusercontent.com/51996/58146107-50512580-7c1a-11e9-8ec9-e032ba387c2a.png)](https://marketplace.digitalocean.com/apps/rocket-chat?action=deploy&refcode=1940fe28bd31) - -After you create your 1-Click install using the Rocket.Chat app in DigitalOcean Marketplace, you'll likely want a registered domain name to access Rocket.Chat. - -We recommend setting up an A record from your domain to your servers IP address. Ex: chat.mycompany.com - -Rocket.Chat will not work with HTTPS out of the box because certificates are unique for each installation, but with this setup HTTPS will be available using Let's Encrypt certificates. - -After the Rocket.Chat One-Click is finished and your domain is setup. You will need to login to your droplet to finish setup. - -```text -ssh root@your_droplet_ip -``` - -Once you are connected you should see something like: - -```text -Rocket.Chat is the leading open source team chat software solution. Free, unlimited and completely customizable with on-premises and SaaS cloud hosting. -Replace email, HipChat & Slack with the ultimate team chat software solution. - - Out of the box you can access Rocket.Chat server at: http://Droplet-IP:3000 - - You will likely want a registered domain name to access Rocket.Chat. If you would like your server to be accessible over https we provide the option to use letsencrypt by running: - # rocketchatctl configure --lets-encrypt --root-url=https://chat.yourcompany.com --letsencrypt-email=admin@yourcompany.com - - In case you do not own a registered domain, you could use the public IP of your droplet, but traefik will not be able to fetch certificates for you so you will see a privacy alert message when loading https://droplet-IP - # rocketchatctl configure --lets-encrypt --root-url=https://droplet-IP --letsencrypt-email=admin@yourcompany.com - - If you would like https with something other than letsencrypt provided certificates you will have to manually edit the traefik config to add it. - - In case you do own a registered domain, but you do not want to use traefik, you can just configure your site URL running: - # rocketchatctl configure --rocketchat --root-url=http://chat.yourcompany.com:3000 - - Keep your RocketChat server updated using rocketchatctl update. Run rocketchatctl -h to see the full list of available options. - - Looking for how to use Rocket.Chat? Be sure to check our docs: https://docs.rocket.chat - - Checkout our Digital Ocean docs: https://docs.rocket.chat/installation/paas-deployments/digital-ocean/ - - Need some help? Join our community forums https://forums.rocket.chat -``` - -Besides the recommended setup you can out of the box access Rocket.Chat server at: [http://Droplet-IP:3000](http://Droplet-IP:3000) - -## Setting up HTTPS - -We recommend you to finish the Traefik loadbalancer configuration to handle HTTPS. Run this command to fetch Let's Encrypt certificates for your installation: - -```text -rocketchatctl configure --lets-encrypt --root-url=https://chat.yourcompany.com --letsencrypt-email=admin@yourcompany.com -``` - -You can then access at: [https://chat.yourcompany.com](https://chat.yourcompany.com>) replacing chat.yourcompany.com with the address you set in your DNS. - -The Loadbalancer will redirect HTTP to HTTPS - -## Firewall - -This image comes with a ufw firewall enabled and the ports allowed for incomingo traffic are: - -* ssh 22 -* http 80 -* https 443 -* rocketchat 3000 - diff --git a/installation/paas-deployments/eks.md b/installation/paas-deployments/eks.md deleted file mode 100644 index ebc17e3eb4..0000000000 --- a/installation/paas-deployments/eks.md +++ /dev/null @@ -1,170 +0,0 @@ ---- -description: Installing Rocket.Chat from AWS Marketplace ---- - -# AWS Marketplace - -Here we will guide you through installing in AWS in an EKS cluster using our AWS Marketplace container. - -## Recent webinar demoing this process - -## Prerequisites - -* Have AWS Account -* Download [aws cli](https://aws.amazon.com/cli/) -* Run aws configure -* Install [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl) -* Install [eksctl](https://eksctl.io/) -* Install [helm](https://docs.helm.sh/using_helm/#installing-helm) - -## Instructions: - -First we need to bring up a kubernetes cluster. So we will bring it up in AWS kubernetes offering called eks. To do this we will use a tool called eksctl which is recommended by [eksworkshop](https://eksworkshop.com/eksctl/) - -```text -eksctl create cluster --name=your-eks-cluster --region=us-west-2 -``` - -This takes from 15-20 minutes. So go grab a cup of coffee or something. - -Once that's finished we need to get things setup for helm. Starting somewhere around Kubernetes 1.9 RBAC is enabled by default with most kubernetes providers. Its enabled by default in EKS. - -So we need to install service account to allow helm to operate correctly. [More info about that here](https://docs.helm.sh/using_helm/#example-service-account-with-cluster-admin-role) - -Create a file called tiller-rbac.yaml with contents of: - -```text -apiVersion: v1 -kind: ServiceAccount -metadata: - name: tiller - namespace: kube-system ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: tiller -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cluster-admin -subjects: - - kind: ServiceAccount - name: tiller - namespace: kube-system -``` - -Next we we need to insert this into kubernetes with: - -```text -kubectl apply -f tiller-rbac.yaml -``` - -Now that the service role is in place we need to initialize tiller with this service account. - -```text -helm init --service-account tiller -``` - -Now that helm has finished successfully we can install traefik. Traefik is a reverse proxy / load balancer with support for kubernetes ingress. It will automatically discover ingress rules defined inside your cluster and handle routing of traffic in your cluster to those services. Pretty neat! - -```text -helm install stable/traefik --name traefik --namespace kube-system --set rbac.enabled=true -``` - -Like mentioned above RBAC is enabled so in this command we set a flag that caused the helm chart to create rbac rules for traefik automatically. - -Some optional flags you can add to the above command: - -* --set acme.enabled=true - this will enable letsencrypt -* --set acme.email=youremail - this sets the email to use with it - -Give it a few seconds and then run: - -```text -kubectl -n kube-system get svc -``` - -You might have to run it a few times, but after a while you will you will get output that looks something like: - -![image](https://user-images.githubusercontent.com/51996/52383655-f304e000-2a3f-11e9-86bb-392c7074010c.png) - -Take that and create a CNAME for with your desired domain pointing to that address. - -Now finally lets go subscribe to our image from AWS Marketplace. - -* [Rocket.Chat Community](https://aws.amazon.com/marketplace/pp/B07K9BKJHP?qid=1549500780099&sr=0-1&ref_=srh_res_product_title) -* [Rocket.Chat Enterprise](https://aws.amazon.com/marketplace/pp/B07K98179S?qid=1549500780099&sr=0-3&ref_=srh_res_product_title) - -After you pick which one you need to click "Continue to Subscribe" - -It will take a little bit to process. Might have to refresh the page a few times. Alternatively you can wait on an email they send when its finished. - -Once that is finished you can click "Continue to Configuration" - -You can choose the version of Rocket.Chat you wish to use. - -Then click "Continue to Launch" - -Towards the bottom of this page you will see: "View Container Image Details" Click that. - -![image](https://user-images.githubusercontent.com/51996/52382003-3f98ed00-2a39-11e9-9a28-a4a179abd18f.png) - -Copy the image path given at the bottom. - -Now we are ready to plug in a few things and run our helm install: - -* mongodb.mongodbPassword - make sure to set to your own password -* repo - use the repo part of the container image path you copied earlier. - -Example of image path, the path changes based on the AWS region and version installed, so be sure you check the image details of your subscription - -```text -217273820646.dkr.ecr.us-east-1.amazonaws.com/c87d63fd-e44d-4368-82e0-24bd42b21a84/cg-2246218297/rocket.chat:0.71.1-latest -``` - -The repo part of it is everything before `:` - -```text -217273820646.dkr.ecr.us-east-1.amazonaws.com/c87d63fd-e44d-4368-82e0-24bd42b21a84/cg-2246218297/rocket.chat -``` - -* tag - use the part of the image path after the `:` In our case `0.71.1-latest` -* host - set to the hostname you plan to use - -```text -helm install --name=rc \ ---set mongodb.mongodbUsername=rocketchat \ ---set mongodb.mongodbPassword=superSecure \ ---set mongodb.mongodbDatabase=rocketchat \ ---set mongodb.mongodbRootPassword=superSecureToo \ ---set image.repository=217273820646.dkr.ecr.us-east-1.amazonaws.com/046e16ad-a193-4c5b-9f1f-d2619d9c5cd6/cg-1684305143/rocket.chat.enterprise \ ---set image.tag=0.71.1-latest \ ---set ingress.enabled=true \ ---set host=your-hostname.your-domain.com \ ---set ingress.annotations."kubernetes\.io/ingress\.class"=traefik \ -stable/rocketchat -``` - -Now after this runs you can run: - -```text -kubectl get pods -w -``` - -And watch until both rc-mongodb and rc-rocketchat are both running. - -Rocket.Chat should now be externally available! - -## FAQ - -### Rocket.Chat isn't responding - -Try running: - -```text -kubectl logs -f deployment/rc-rocketchat -``` - -You should be able to see the logs and see if something happened to keep it from starting. - diff --git a/installation/paas-deployments/galaxy.md b/installation/paas-deployments/galaxy.md deleted file mode 100644 index 896dc7967d..0000000000 --- a/installation/paas-deployments/galaxy.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -description: Deploying Rocket.Chat on Galaxy ---- - -# Galaxy - -Galaxy is a platform-as-a-service built specifically for Meteor apps. Built using the latest Docker and AWS cloud infrastructure. - -You will need to sign up for [Galaxy](https://www.meteor.com/hosting/). - -## Get Rocket.Chat code - -Download the source code first to be able to deploy to Galaxy - -```text -git clone https://github.com/RocketChat/Rocket.Chat.git -cd Rocket.Chat -``` - -### Set your MongoDB URL - -You will need a Mongo database configured for your Rocket.Chat application, for better performance as meteor hosting uses AWS it is advice you setup your database in the same AWS region. - -Create a settings.json file to set environmental variable as follows: - -```text -{ - "galaxy.meteor.com": { - "env": { - "MONGO_URL": "mongodb://:@:/?replicaSet=rs01", - "MONGO_OPLOG_URL": "mongodb://:@:/?authSource=admin&replicaSet=rs01", - "ROOT_URL": "...", - "MAIL_URL": "...", - - } - } -} -``` - -### Deploy to Galaxy servers - -Execute this from the root of the source code: - -```text -DEPLOY_HOSTNAME=[region] meteor deploy [hostname] --settings [filepath.json] -``` - -* region is ‘galaxy.meteor.com’ for US East, ‘eu-west-1.galaxy.meteor.com’ for EU West, and ‘ap-southeast-2.galaxy.meteor.com’ for Asia-Pacific. -* hostname is the fully qualified domain name where you’re planning to host your application \(using in the .meteorapp.com hostname format, in this example\). -* filepath.json is the path to your settings file \(for example, ‘./settings.json’\). - -For more information on these steps check out [galaxy's doc](https://galaxy-guide.meteor.com/migrate-app.html) - diff --git a/installation/paas-deployments/google-compute-engine.md b/installation/paas-deployments/google-compute-engine.md deleted file mode 100644 index f6e28ed453..0000000000 --- a/installation/paas-deployments/google-compute-engine.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -description: Deploying Rocket.Chat on Google Compute Engine ---- - -# Google Compute Engine - -## 1. Create a compute instance - -1. Click create VM instance in google cloud console -2. Select a preferred Machine Type \(Default : 1cpu, 3.75GB Memory\) -3. Select a linux image \(Default Debian/ ubuntu\) -4. Allow HTTP/S Traffic - -## 2. SSH to the instance - -Connect to the instance by SSH or connect via browser on port other than 80 - -## 3. run the following to install docker - -`sudo wget -qO- https://get.docker.com/ | sh` - -## 4. Create a container network - -`docker network create chatNetwork` - -## 5. install a docker image for mongo db - -```bash -sudo docker run --name mongo --network chatNetwork -d mongo \ ---smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1 -``` - -## 6. Configure a mongo db replica set - -ssh in to the mongodb docker container `sudo docker exec -it mongo mongo` - -Execute this following script to create a replica set `rs.initiate({ _id: 'rs0', members: [ { _id: 0, host: 'localhost:27017' } ]})` - -Exit docker container - -## 7. install a docker image for rocketchat - -`ROOT_URL` should be substituted for your own domain: - -```bash -docker run --name rocketchat -d -p 80:3000 \ ---network chatNetwork --env PORT=3000 \ ---env ROOT_URL=https://www.test.com \ ---env MONGO_URL=mongodb://mongo:27017/rocketchat \ ---env MONGO_OPLOG_URL=mongodb://mongo:27017/local rocket.chat:latest -``` - -You are now running rocket chat on compute engine. You can open a browser with the external IP of the instance. - -If you want the containers to start each time the instance reboots configure the following to the instance. - -* click on the instance in the and hit "edit" -* Under "Custom metadata" add an item with - -```text -key: "startup-script" -value "sudo docker start mongo; -sudo docker start rocketchat" -``` - diff --git a/installation/paas-deployments/google-computer-engine.md b/installation/paas-deployments/google-computer-engine.md deleted file mode 100644 index f976fbb193..0000000000 --- a/installation/paas-deployments/google-computer-engine.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -description: Deploying Rocket.Chat on Google Cloud Platform ---- - -# Google Cloud Platform - -Soon it will be possible to set up Rocket.Chat in 1 click using the Google Cloud Platform Marketplace. - -Check for more instructions later. - diff --git a/installation/paas-deployments/ibm-cloud.md b/installation/paas-deployments/ibm-cloud.md deleted file mode 100644 index ec6b3da74c..0000000000 --- a/installation/paas-deployments/ibm-cloud.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -description: Deploying Rocket.Chat on IBM Cloud ---- - -# IBM Cloud - -IBM Cloud have various options for hosting Rocket.Chat, Docker container on a Kubernetes cluster, VMWare, Bare Metal Server, but the instructions below will focus in creating a Cloud Foundry Rocket.Chat app. - -## Prerequisite - -* An IBM Cloud account -* The IBM Cloud command line client \(ibmcloud\) installed -* git - -## Deploying Rocket.Chat - -First, logon to the [IBM Cloud dashboard](https://cloud.ibm.com/) and then select in the Apps box, `Create an app`. - -Then give the Rocket.Chat server a unique app name, select as `Starting point` Create a new app, and as `Platform` select Node.js. Finish by clicking `Create`. - -After creation is finished, select `Create service` from the App Details tab, select Databases from the list of services, and Databases for MongoDB. - -Configure MongoDB to enable oplog tailing and intiate a replicaset. - -All remaining steps will be preformed at the command line. - -Git clone the latest Rocket.Chat: - -```text -git clone https://github.com/RocketChat/Rocket.Chat.git -``` - -Log in to the IBM Cloud command-line interface: - -```text -ibmcloud cf login -``` - -Push Rocket.Chat to the app you created early in the dashboard using meteor-buildpack-horse: - -```text -cf push -m 512M -b https://github.com/RocketChat/meteor-buildpack-horse.git -``` - -Go to `https://.mybluemix.net/` in your browser to access your instance of Rocket.Chat - -If you encounter any problem check the IBM Cloud Creating Apps instructions [here](https://cloud.ibm.com/docs/apps/tutorials?topic=creating-apps-tutorial-starterkit). - diff --git a/installation/paas-deployments/indiehosters.md b/installation/paas-deployments/indiehosters.md deleted file mode 100644 index 164ad887ba..0000000000 --- a/installation/paas-deployments/indiehosters.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -description: Deploying Rocket.Chat on IndieHosters ---- - -# IndieHosters - -Get your Rocket.Chat instance hosted in a "as a Service" style. You register and we manage it for you! \(updates, backup...\) - -[Rocket.Chat on IndieHosters](https://indie.host/apps/rocketchat/) - diff --git a/installation/paas-deployments/jelastic.md b/installation/paas-deployments/jelastic.md deleted file mode 100644 index a0f288ca6a..0000000000 --- a/installation/paas-deployments/jelastic.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -description: Deploying Rocket.Chat on Jelastic ---- - -# Jelastic - -Rocket.Chat is installed automatically as an application based on prebuilt Docker containers on Jelastic PaaS which supports Java, PHP, Node.js, Ruby, Python, Docker and Kubernetes, available as public, private on-premise, virtual private, hybrid and multi-cloud. - -## Rocket.Chat Deployment to the Cloud - -Get your Jelastic account at any of available [hosting provider](https://jelastic.cloud/). - -Click the **DEPLOY TO JELASTIC** button, specify your email address within the widget and press **Install**. - -[![Deploy to Jelastic](https://github.com/jelastic-jps/git-push-deploy/raw/master/images/deploy-to-jelastic.png)](https://jelastic.com/install-application/?manifest=https://raw.githubusercontent.com/jelastic-jps/rocket-chat/master/manifest.jps) - -> **Note:** If you are already registered at Jelastic, you can deploy this application by [importing](https://docs.jelastic.com/environment-import) the [package manifest raw link](https://raw.githubusercontent.com/jelastic-jps/rocket-chat/master/manifest.jps) or find Rocket.Chat application in the [Marketplace](https://docs.jelastic.com/marketplace) within the [dashboard](https://docs.jelastic.com/dashboard-guide). - -## Installation Process - -In the opened confirmation window at Jelastic dashboard, if required change: - -* **Environment** name -* **Display Name** -* destination [**Region**](https://docs.jelastic.com/environment-regions) if several are available - -and click on **Install**. - -![](https://github.com/jelastic-jps/rocket-chat/raw/master/images/install.png) - -Once the deployment is finished, you’ll see an appropriate success pop-up. - -![](https://github.com/jelastic-jps/rocket-chat/raw/master/images/success.png) - -The application is ready to use just press **Open in Browser** button and proceed to admin account setup and to configuration and customization. - -For production mode, the installation will require a custom domain and traffic encryption with valid SSL certificate wich can be installed with [Let's Encrypt SSL Add-On](https://jelastic.com/blog/free-ssl-certificates-with-lets-encrypt/). Learn more how to [install Rocket.Chat in Jelastic](https://jelastic.com/blog/install-rocketchat-server/). - -The installation process itself looks simple. - -![](https://github.com/jelastic-jps/rocket-chat/raw/master/images/rocketchat.gif) - diff --git a/installation/paas-deployments/koozali.md b/installation/paas-deployments/koozali.md deleted file mode 100644 index 171987b328..0000000000 --- a/installation/paas-deployments/koozali.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -description: Deploying Rocket.Chat on Koozali SME ---- - -# Koozali SME - -![](../../.gitbook/assets/image%20%282%29%20%281%29.png) - -{% hint style="info" %} -**Has not yet been updated to work with 1.0** -{% endhint %} - -Add Rocket.Chat to this world famous time tested small enterprise server today: - -{% embed url="https://wiki.contribs.org/Rocket\_Chat" %} - -{% embed url="https://wiki.contribs.org/Rocket\_Chat:Contrib" %} - - - diff --git a/installation/paas-deployments/openshift.md b/installation/paas-deployments/openshift.md deleted file mode 100644 index bb1579aee3..0000000000 --- a/installation/paas-deployments/openshift.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -description: Deploying Rocket.Chat on OpenShift ---- - -# OpenShift - -This guide covers how to host Rocket.Chat on OpenShift Online Next Gen. - -OpenShift Online Next Gen is a completely rewritten PaaS solution based on Docker and Kubernetes that allows developers to quickly develop, host and scale application in a cloud environment. OpenShift provides a CLI based tool that allows manage your projects and applications. Please refer to [Getting Started with the CLI](https://docs.openshift.com/online/cli_reference/get_started_cli.html#cli-reference-get-started-cli) documentation in OpenShift website. - -## Table of Contents - -1. [Login](openshift.md#1-login) -2. [Create a project](openshift.md#2-create-a-project) -3. [Import the ImageStream and templates](openshift.md#3-import-the-imagestream-and-templates) -4. [Create the app](openshift.md#4-create-the-app) - -## 1. Login - -First of all we need to login to OpenShift API URL to create our project. The command to login to OpenShift Online Next Gen is shown below: - -```bash -# oc login https://api.preview.openshift.com --token= -``` - -You can find the API Token to login to OpenShift Online Next Gen in the about page of the Web console. - -## 2. Create a project - -After login to OpenShift Online Next Gen, we need to create a project to host our Rocket.Chat application: - -```bash -$ oc new-project rocket-chat -``` - -## 3. Import the ImageStream and templates - -Clone the Rocket.Chat GitHub repository and import the templates to your OpenShift project: - -```bash -# git clone https://github.com/RocketChat/Rocket.Chat -# cd Rocket.Chat -# oc create -f .openshift/rocket-chat-ephemeral.json -# oc create -f .openshift/rocket-chat-persistent.json -``` - -## 4. Create the app - -Create the application using the newly created templated and passing the `MONGODB_DATABASE`,`MONGODB_USER` and `MONGODB_PASSWORD` parameters: - -```bash -# oc new-app rocket-chat -p MONGODB_DATABASE=rocketchat -p MONGODB_USER=rocketchat-admin -p MONGODB_PASSWORD=rocketchat -``` - -* Rocket.Chat uses a domain check code to verify the validity of the e-mail address. To disable it, run the following commands: - -```bash -# oc port-forward 27017 -# mongo localhost:27017 - -> use rocketchat -> db.auth('rocketchat-admin','rocketchat') -> db.rocketchat_settings.update({_id:'Accounts_UseDNSDomainCheck'},{$set:{value:false}}) -``` - diff --git a/installation/paas-deployments/oracle.md b/installation/paas-deployments/oracle.md deleted file mode 100644 index 21b549309b..0000000000 --- a/installation/paas-deployments/oracle.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -description: Deploying Rocket.Chat on Oracle Cloud Infrastructure ---- - -# Oracle Cloud - -You can install Rocket.Chat on Oracle infrastructure using the Rocket.Chat application from the Oracle Cloud Marketplace, it is a very easy install. Find our listing in Oracle's marketplace [here](https://cloudmarketplace.oracle.com/marketplace/en_US/listing/72006881). - -The Rocket.Chat App installs a Linux image with everything needed for the Rocket.Chat server to run, repositories, directories and permissions, systemd files, needed libraries, node, mongo database server and traefik to be used as the webserver optionally. - -To be able to install the image from the marketplace you will need to login to your Oracle Cloud Infrastructure account, after that go the main Menu and select Marketplace and Applications: - -![](../../.gitbook/assets/oracledocs1.png) ![](../../.gitbook/assets/oracledocs2.png) - -Select the Rocket.Chat application, you will see lots of information about the image including usage instructions to follow once the instance is already running, choose a compartiment for the installation and launch your instance: - -![](../../.gitbook/assets/oracledocs3%20%281%29.png) ![](../../.gitbook/assets/oracledocs3.png) - -This application will run in a compute instance, you can change the shape of it to fit your usage needs, find more information of our minimum resource recommendations [here](https://docs.rocket.chat/installation/minimum-requirements/#minimum-requirements-for-server-deployment). - -![ComputeInstance](../../.gitbook/assets/oracledocs5.png) - -Wait for the provisioning stage to be finished and you will find information about your instance you will need later, like the public IP and the subnet where it's running, the image running in your instance allows traffic to Rocket.Chat required ports using iptables rules, but you need to edit the security group associted to the subnet where the instance is running for the traffic to actually go through: - -![Ports](../../.gitbook/assets/oracledocs6.png) ![Ports](../../.gitbook/assets/oracledocs7.png) ![Ports](../../.gitbook/assets/oracledocs8.png) - -Finally add the following ports to the security group 3000, 443 and optionally 80 \(you can edit this later and adapt it to your architecture designs\): - -![Ports](../../.gitbook/assets/oracledocs9.png) - -And that should be all you need to do in the Oracle account, now move to the new instance running, you’ll likely want a registered domain name to access Rocket.Chat and secure the access. - -## Configuring your Rocket.Chat server: Setting up HTTPS, Backups and Upgrades - -In the image you will find rocketchatctl, a command line tool written in bash to help you configure Rocket.Chat HTTPS access among other things, you can use this command to easily keep that Rocket.Chat server installation up to date, schedule backups and periodically check for Rocket.Chat updates available and update it to the latest release. - -We recommend setting up an A record for your domain pointing to your instance IP address. Ex: chat.mycompany.com - -Rocket.Chat will not work with HTTPS out of the box because certificates are unique for each installation, but with this setup HTTPS will be available using Let’s Encrypt certificates. - -Be sure your domain is setup correctly, use a DNS query to resolve the name chosen and confirm it returns the public IP of the instance. Then login to your instance to finish setup: - -```bash -ssh ubuntu@your_instance_public_ip -``` - -Once you are connected you should see something like: - -```bash -Rocket.Chat is the leading open source team chat software solution. Free, unlimited and completely customizable with on-premises and SaaS cloud hosting. - -Replace email, HipChat & Slack with the ultimate team chat software solution. - - Out of the box you can access Rocket.Chat server at: http://VM-IP:3000 - - You will likely want a registered domain name to access Rocket.Chat. If you would like your server to be accessible over https we provide the option to use letsencrypt by running: - # rocketchatctl configure --lets-encrypt --root-url=https://chat.yourcompany.com --letsencrypt-email=admin@yourcompany.com - - In case you do not own a registered domain, you could use the public IP of your VM, but traefik will not be able to fetch certificates for you so you will see a privacy alert message when loading https://VM-IP - # rocketchatctl configure --lets-encrypt --root-url=https://VM-IP --letsencrypt-email=admin@yourcompany.com - - If you would like https with something other than letsencrypt provided certificates you will have to manually edit the traefik config to add it. - - In case you do own a registered domain, but you do not want to use traefik, you can just configure your site URL running: - # rocketchatctl configure --rocketchat --root-url=http://chat.yourcompany.com:3000 - - Keep your RocketChat server updated using rocketchatctl update. Run rocketchatctl -h to see the full list of available options. - - Looking for how to use Rocket.Chat? Be sure to check our docs: https://docs.rocket.chat - - Need some help? Join our community forums https://forums.rocket.chat -``` - -### Setting up HTTPS - -Out of the box you can access Rocket.Chat server at: `http://Instance-Public-IP:3000`, but we recommend you to finish the Traefik loadbalancer configuration to handle HTTPS. Run this command to fetch Let's Encrypt certificates for your installation: - -```bash -rocketchatctl configure --lets-encrypt --root-url=https://chat.yourcompany.com --letsencrypt-email=admin@yourcompany.com -``` - -You can then access at: `https://chat.yourcompany.com` replacing `chat.yourcompany.com` with the address you set in your DNS. - -The Loadbalancer will redirect HTTP to HTTPS. - -### Backup and Upgrade Rocket.Chat version - -See available option for rocketchatctl: - -```bash -rocketchatctl -h -``` - -Always be sure you are running the last rocketchatctl version, specially since the image from the Marketplace could have an out of date version: - -```bash -rocketchatctl upgrade-rocketchatctl -``` - -Backup mongodb database with backup option, we recommend this option before upgrades: - -```bash -rocketchatctl backup --dir= -``` - -Check for available updates and optionally update to the latest release: - -```bash -rocketchatctl check-updates -``` - -```bash -rocketchatctl update -``` - diff --git a/installation/paas-deployments/readyspace.md b/installation/paas-deployments/readyspace.md deleted file mode 100644 index 105261140c..0000000000 --- a/installation/paas-deployments/readyspace.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -description: Deploying Rocket.Chat on ReadySpace Cloud ---- - -# ReadySpace - -ReadySpace offers both Linux and Windows VPS backed by SSDs. There needs to be no specialized configuration. - -Please follow the respective guide for the operating system you are using, - -1. centOS : [Click Here](https://docs.rocket.chat/installation/manual-installation/centos/) -2. Ubuntu : [Click Here](https://docs.rocket.chat/installation/manual-installation/ubuntu/) -3. Debian : [Click Here](https://docs.rocket.chat/installation/manual-installation/debian/) -4. Windows : [Click Here](https://docs.rocket.chat/installation/manual-installation/windows-server/) - -If you are using Docker, follow these instructions: [Click Here](https://docs.rocket.chat/installation/docker-containers) - -Please have a look at our website : [https://readyspace.com](https://readyspace.com) - diff --git a/installation/paas-deployments/sandstorm-io.md b/installation/paas-deployments/sandstorm-io.md deleted file mode 100644 index 1eec50d594..0000000000 --- a/installation/paas-deployments/sandstorm-io.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -description: Deploying Rocket.Chat on Sandstorm.io ---- - -# Sandstorm.io - -Host your own Rocket.Chat server in four seconds flat: - -[![Rocket.Chat on Sandstorm.io](https://raw.githubusercontent.com/Sing-Li/bbug/master/images/sandstorm.jpg)](https://apps.sandstorm.io/app/vfnwptfn02ty21w715snyyczw0nqxkv3jvawcah10c6z7hj1hnu0) - diff --git a/installation/paas-deployments/scalingo.md b/installation/paas-deployments/scalingo.md deleted file mode 100644 index 94d2b00755..0000000000 --- a/installation/paas-deployments/scalingo.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -description: Deploying Rocket.Chat on Scalingo ---- - -# Scalingo - -Deploy your own Rocket.Chat server instantly on [Scalingo](https://scalingo.com) - -[![Deploy on Scalingo](https://cdn.scalingo.com/deploy/button.svg)](https://my.scalingo.com/deploy?source=https://github.com/RocketChat/Rocket.Chat#master) - diff --git a/installation/paas-deployments/sloppy-io.md b/installation/paas-deployments/sloppy-io.md deleted file mode 100644 index 27b8b15c16..0000000000 --- a/installation/paas-deployments/sloppy-io.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -description: Deploying Rocket.Chat on Sloppy.io ---- - -# Sloppy.io - -> **NOTE:** Has not yet been updated to work with 1.0+ - -[sloppy.io](http://sloppy.io) is a CaaS \(Container as a Service\) Provider. You can deploy, scale and manage your dockerized applications in seconds. [Try it for free](http://sloppy.io/#signup) - -Host your docker container at [sloppy.io](http://sloppy.io). Get an account and use the [quickstarter](https://github.com/sloppyio/quickstarters/tree/master/rocketchat) - -## Start it - -```text -sloppy start rocketchat.json -var=USERNAME:yourusername,URI:mydomain.sloppy.zone -``` - -Example: - -```text -sloppy start rocketchat.json -var=USERNAME:john,URI:coolchat.sloppy.zone -``` - diff --git a/installation/paas-deployments/sloppy-io/rocketchat.json b/installation/paas-deployments/sloppy-io/rocketchat.json deleted file mode 100644 index e8b12470eb..0000000000 --- a/installation/paas-deployments/sloppy-io/rocketchat.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "project": "rocketchat", - "services": [{ - "id": "frontend", - "apps": [{ - "id": "rocket", - "domain": { - "type": "HTTP", - "uri": "$URI" - }, - "mem": 512, - "image": "rocketchat/rocket.chat", - "instances": 1, - "port_mappings": [{ - "container_port": 80 - }], - "env": { - "MONGO_URL": "mongodb://mongodb.backend.rocketchat.$USERNAME/rocketchat", - "ROOT_URL": "http://$URI" - }, - "dependencies": [ - "../../backend/mongodb" - ] - }] - }, { - "id": "backend", - "apps": [{ - "id": "mongodb", - "mem": 512, - "image": "mongo", - "instances": 1, - "volumes": [{ - "container_path": "/data/db", - "mode": "RW", - "size": "4000MB" - }] - }] - }] -} diff --git a/installation/paas-deployments/syncloud-org.md b/installation/paas-deployments/syncloud-org.md deleted file mode 100644 index c017ffc269..0000000000 --- a/installation/paas-deployments/syncloud-org.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -description: Run Rocket.Chat on your easy to use personal device ---- - -# Syncloud - -* Full control self hosting solution -* 100% [Open source](https://github.com/syncloud/platform) -* One click app installation -* Various [cheap personal server devices](https://syncloud.org/hardware.html) to choose from -* Free https certificate from Let's Encrypt - -Read more at [syncloud.org](https://syncloud.org) - -[![Syncloud](https://syncloud.org/images/logo_min.svg)](https://syncloud.org) - diff --git a/installation/snaps/README.md b/installation/snaps/README.md deleted file mode 100644 index 63715cae5b..0000000000 --- a/installation/snaps/README.md +++ /dev/null @@ -1,286 +0,0 @@ -# Snaps - -## Installation - -Installing a snap on Ubuntu is as easy as - -```text -sudo snap install rocketchat-server -``` - -Then browse to `http://localhost:3000` and setup Rocket.Chat. - -Snaps are secure. Rocket.Chat and all of its dependencies are isolated from the rest of your system. Snaps also auto update when we release a new version. So no need more hassle updating. - -On Ubuntu 16.04LTS, install `snapd` first: - -```text -sudo apt-get install snapd -``` - -To move between different major releases, from 2.x to 3.x or from 3.x to 4.x, take a look at [snap tracks](https://forums.rocket.chat/t/introducing-snap-tracks/5890). - -For major release 3.x and up you might see app armor errors in your logs. To stop that, you can connect network-observe plug for mongo db -```text -sudo snap connect rocketchat-server:network-observe -``` - -## FAQ - -If you have questions about snaps best place to ask them is at the [\#ubuntu-snap](https://open.rocket.chat/channel/ubuntu-snap) channel. - -### When will my snap installation get the latest release? - -Snaps are one of our biggest install base. They are also auto updating. As a result we like to spend more time testing before releasing. Updated Snaps are usually released around the 15th of the month - around 2 weeks after a new release. This gives us time to look for issues so you don't have to. - -If you have special requirements and really need to use the latest release immediately then please consider another installation method e.g docker - -### How do I access my site at a different port? How do I enable TLS/SSL with my snap? - -Check out our guide for enabling caddy [here](autossl.md). - -### Ubuntu 16.04 LTS gives message "snap not found", what's wrong? - -Make sure you're using x64 or amd64 \(or armhf\) images, especially on VPS or VMs. x86 \(32-bit\) is not supported. - -### How do I manually update to a new release? - -While updates happen automatically usually within 6 hours from time of release, you can update manually by issuing this command: - -```text -sudo snap refresh rocketchat-server -``` - -### How do I revert to the previous version of Rocket.Chat? - -```text -sudo snap revert rocketchat-server -``` - -### How do I tell if Rocket.Chat is actually running? - -You can check on the status of Rocket.Chat with: - -```text -sudo service snap.rocketchat-server.rocketchat-server status -``` - -You can also check on the status of Mongo and Caddy: - -```text -sudo service snap.rocketchat-server.rocketchat-mongo status -sudo service snap.rocketchat-server.rocketchat-caddy status -``` - -### How can I view the logs? - -To see the logs from Rocket.Chat: - -```text -sudo journalctl -f -u snap.rocketchat-server.rocketchat-server -``` - -To see the logs from Mongo or Caddy: - -```text -sudo journalctl -f -u snap.rocketchat-server.rocketchat-mongo -sudo journalctl -f -u snap.rocketchat-server.rocketchat-caddy -``` - -### How do I schedule updates? - -If you don't want snaps just updating when available you can set when your snaps will update. - -The following example asks the system to only update snaps between 4.00am and 7.00am, and 7.00pm and 10:10pm: - -```text -sudo snap set system refresh.timer=4:00-7:00,19:00-22:10 -``` - -You can find more about your options in the [snapcraft documentation](https://snapcraft.io/docs/keeping-snaps-up-to-date#heading--controlling-updates). - -### I need to restart Rocket.Chat, how do I do this? - -To restart Rocket.Chat: - -```text -sudo service snap.rocketchat-server.rocketchat-server restart -``` - -Mongo and Caddy can similarly be restarted: - -```text -sudo service snap.rocketchat-server.rocketchat-mongo restart -sudo service snap.rocketchat-server.rocketchat-caddy restart -``` - -### What is the restart policy? - -The snap's policy is to restart on failure. - -### How do I backup my snap data? - -#### 1. Stop your rocketchat-server: - -```text -sudo service snap.rocketchat-server.rocketchat-server stop -``` - -_Please note: while the rocketchat-server service should be stopped, the rocketchat-mongo service should be kept running!_ - -```text -sudo service snap.rocketchat-server.rocketchat-mongo status | grep Active - Active: active (running) (...) -``` - -#### 2. Issue this backup command: - -```text -sudo snap run rocketchat-server.backupdb -``` - -#### 3. If all goes well, you will see some output similar to: - -```text -[+] A backup of your data can be found at /var/snap/rocketchat-server/common/backup/rocketchat_backup_.tar.gz -``` - -#### 4. Start your rocketchat-server: - -```text -sudo service snap.rocketchat-server.rocketchat-server start -``` - -#### 4. Copy your backup file to a different system for safekeeping! - -### How do I restore backup data to my snap? - -#### 1. Stop your rocketchat-server: - -```text -sudo service snap.rocketchat-server.rocketchat-server stop -``` - -_Please note: while the rocketchat-server service should be stopped, the rocketchat-mongo service should be kept running!_ - -```text -sudo service snap.rocketchat-server.rocketchat-mongo status | grep Active - Active: active (running) (...) -``` - -#### 2. Copy your backup file to the snap's common folder: - -```text -sudo cp rocketchat_backup.tgz /var/snap/rocketchat-server/common/ -``` - -#### 3. Issue this restore command: - -```text -sudo snap run rocketchat-server.restoredb /var/snap/rocketchat-server/common/rocketchat_backup.tgz -``` - -#### 4. If you are replacing an existing database, you will be warned: - -```text -*** ATTENTION *** -* Your current database WILL BE DROPPED prior to the restore! -* Would you like to make a backup of the current database before proceeding? -* (y/n/Q)> -``` - -* Press `y` and `Enter` to make a backup of the database in its current state. -* Press `n` and `Enter` to continue _without a backup_ of the database in its current state. -* Press any key and/or `Enter` to quit the restore process without making any changes. - -#### 5. If you choose to proceed and all goes well, you will see some output similar to: - -```text -[*] Extracting backup file... -[*] Restoring data... -[*] Preparing database... -[+] Restore completed! Please restart the snap.rocketchat services to verify. -``` - -_If something goes wrong, you will instead be presented with a path to the relevant log file to help remedy errors. In this case, the database may not be usable until a restore is successfully performed._ - -#### 6. Start your rocketchat-server: - -```text -sudo service snap.rocketchat-server.rocketchat-server start -``` - -## How do I add option to mount media? - -Note that the interface providing the ability to access removable media is not automatically connected upon install, so if you'd like to use external storage \(or otherwise use a device in `/media` for data\), you need to give the snap permission to access removable media by connecting that interface: - -```text -sudo snap connect rocketchat-server:removable-media -``` - -### What folders do snaps use? - -* Your actual snap files for each version of Rocket.Chat are copied to: `/var/lib/snapd/snaps` and they are mounted in read-only mode. -* Your snap common directory is: `/var/snap/rocketchat-server/common/`; file uploads to disk and the database are stored here. -* Your snap data directory is `/var/snap/rocketchat-server/`; this is a versioned folder. -* You can access the current snap data directory at `/var/snap/rocketchat-server/current`. - -### How do I remove a specific previous version of Rocket.Chat? - -You can do this by issuing the following command, where `N` is the desired version: - -```text -snap remove --revision=N rocketchat-server -``` - -### How do I add a tool like strace to debug what's happening in my snap? - -```text -snapcraft prime -snap try prime --devmode -cp /usr/bin/strace prime -snap run --shell -sudo ./strace -``` - -### How do I change rocket.chat PORT, MONGO\_URL and MONGO\_OPLOG\_URL in my snap? - -Starting from release 0.73, it is possible to configure these environmental variables through snap hooks like this: - -```bash -sudo snap set rocketchat-server port= -sudo snap set rocketchat-server mongo-url=mongodb://:/ -sudo snap set rocketchat-server mongo-oplog-url=mongodb://:/local -``` - -Remember to restart rocket.chat service after setting new values: - -```bash -sudo systemctl restart snap.rocketchat-server.rocketchat-server.service -``` - -This is an example to run rocket.chat on port 4000 instead of 3000 and set database name to rocketchat instead of parties: - -```bash -sudo snap set rocketchat-server port=4000 -sudo snap set rocketchat-server mongo-url=mongodb://localhost:27017/rocketchat -sudo systemctl restart snap.rocketchat-server.rocketchat-server.service -``` - -### How do I change other environmental variables in my snap? - -Starting from release 0.73, it is possible to overwrite any rocket.chat environmental variables dropping files ending in `.env` in $SNAP\_COMMON directory \(`/var/snap/rocketchat-server/common/`\), for example, you can create a file to change SMTP settings: - -```bash -cat /var/snap/rocketchat-server/common/overwrite-smtp.env -OVERWRITE_SETTING_SMTP_Host=my.smtp.server.com -``` - -Remember to restart rocket.chat service after creating .env files: - -```bash -sudo systemctl restart snap.rocketchat-server.rocketchat-server.service -``` - -More than one .env file is allowed, and more than one environmental variable defined per file is allowed. - diff --git a/installation/snaps/autossl.md b/installation/snaps/autossl.md deleted file mode 100644 index 0dc3660e98..0000000000 --- a/installation/snaps/autossl.md +++ /dev/null @@ -1,213 +0,0 @@ -# Auto SSL with Snaps - -We now include the option to enable Caddy in your snap. Caddy makes use of [Let's Encrypt](https://letsencrypt.org/) to automatically provide you SSL protection for your communications. - -Starting from release 0.73 you can easily configure everything related to Caddy using snap hooks to ensure your DNS configuration is set up correctly before starting Caddy and Let's Encrypt support. - -## Configure everything using snap - -If you want to enable SSL and Let's Encrypt certificates you should: - -1. input a URL starting with HTTPS -2. own the domain name you would like to use -3. and have the correct DNS record set up to resolve your domain name to your public IP \(remember DNS records could take some time to propagate\). - -These next commands will check that configuration is set up correctly before starting the services: - -```bash -sudo snap set rocketchat-server caddy-url=https:// -sudo snap set rocketchat-server caddy=enable -sudo snap set rocketchat-server https=enable -sudo snap run rocketchat-server.initcaddy -``` - -If no errors were found, it is safe to restart rocket.chat and Caddy: - -```bash -sudo systemctl restart snap.rocketchat-server.rocketchat-server.service -sudo systemctl restart snap.rocketchat-server.rocketchat-caddy.service -``` - -In case you don't want to configure SSL for your site, or want to remove SSL configuration: - -```bash -sudo snap set rocketchat-server https=disable -sudo snap set rocketchat-server caddy-url=http:// -sudo snap set rocketchat-server caddy=enable -sudo snap run rocketchat-server.initcaddy -``` - -If no errors were found, it is safe to restart rocket.chat and Caddy: - -```bash -sudo systemctl restart snap.rocketchat-server.rocketchat-server.service -sudo systemctl restart snap.rocketchat-server.rocketchat-caddy.service -``` - -### Check Caddy's logs - -```bash -journalctl -r | grep caddy | less -``` - -## Configure Caddy yourself or use another http proxy - -In case you plan to use another https proxy or you prefer other options in Caddy configuration, you can disable caddy: - -```bash -sudo snap set rocketchat-server caddy=disable -``` - -Then, edit the Caddyfile found at `/var/snap/rocketchat-server/current/Caddyfile` and write your configuration. - -Replace `_caddy-url_` and `_port_` with your site information. For instance, let's say I have example-domain.com pointing at my server. - -First, be sure that your DNS has finished resolving **before** attempting to enable SSL. If your DNS is not working yet, you could be instantly [throttled by Let's Encrypt](https://caddyserver.com/docs/automatic-https#testing) for _up to a week_. To test your DNS you can use http: - -```bash -http://example-domain.com -proxy / localhost:3000 { - websocket - transparent -} -``` - -and restart caddy: - -```bash -sudo systemctl restart snap.rocketchat-server.rocketchat-caddy -``` - -You can check that the Caddy service started correctly by running: - -```bash -sudo systemctl status snap.rocketchat-server.rocketchat-caddy -``` - -Once that is tested and resolved, to get secured communications, you can remove the `http://`: - -```bash -example-domain.com -proxy / localhost:3000 { - websocket - transparent -} -``` - -**Please note: using an IP address will not work for automatically enabling SSL. You must use a valid hostname \(**[**here's why**](https://caddyserver.com/docs/automatic-https)**\).** - -Now you can restart the Caddy service by running: - -```bash -sudo systemctl restart snap.rocketchat-server.rocketchat-caddy -``` - -You can check that the Caddy service started correctly by running: - -```bash -sudo systemctl status snap.rocketchat-server.rocketchat-caddy -``` - -If everything went well, the site will be accessible at `https://example-domain.com`. - -## Testing with an untrusted self-signed certificate - -Simply add the `tls self_signed` directive to your Caddyfile like so: - -```bash -https://example-domain.com -tls self_signed -proxy / localhost:3000 { - websocket - transparent -} -``` - -Remember to restart the Caddy service: - -```bash -sudo systemctl restart snap.rocketchat-server.rocketchat-caddy -``` - -This will enable SSL with an untrusted, self-signed certificate for testing purposes. - -For details on the Caddy TLS directive, visit [https://caddyserver.com/docs/tls](https://caddyserver.com/docs/tls) - -## Redirecting HTTP to HTTPS - -Redirecting is handled automatically by caddy by omitting the http / https in front. - -```bash -example-domain.com { - proxy / localhost:3000 { - websocket - transparent - } -} -``` - -Remember to restart the Caddy service: - -```bash -sudo systemctl restart snap.rocketchat-server.rocketchat-caddy -``` - -## Disabling SSL or listening on custom ports - -This configuration will listen **without SSL** on the default port 80: - -```bash -http://example-domain.com { - proxy / localhost:3000 { - websocket - transparent - } -} -``` - -This configuration will listen **without SSL** on port 8080: - -```bash -http://example-domain.com:8080 { - proxy / localhost:3000 { - websocket - transparent - } -} -``` - -This configuration will listen **with SSL** on port 8080: - -```bash -https://example-domain.com:8080 { - proxy / localhost:3000 { - websocket - transparent - } -} -``` - -Note that, without SSL, you can use an IP address: - -```bash -http://192.168.1.1:8080 { - proxy / localhost:3000 { - websocket - transparent - } -} -``` - -Remember to restart the Caddy service: - -```bash -sudo systemctl restart snap.rocketchat-server.rocketchat-caddy -``` - -## Opening ports when running Rocket.Chat server from behind router - -For Caddy to be able to work from behind a router, the following ports need to be opened between the internet and the server. This is usually achieved through router software or web-interface. - -* HTTP: port **80** -* HTTPS: port **443** - diff --git a/installing-and-updating/README.md b/installing-and-updating/README.md deleted file mode 100644 index 415cfffdcc..0000000000 --- a/installing-and-updating/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Installing and Updating - -Rocket.Chat can be hosted on our Cloud, installed from a variety of marketplaces, or installed on your own server. Find a guide below that matches your needs. - -{% page-ref page="snaps/" %} - -{% page-ref page="paas-deployments/" %} - -{% page-ref page="automation-tools/" %} - -{% page-ref page="manual-installation/" %} - -{% page-ref page="docker-containers/" %} - diff --git a/installing-and-updating/automation-tools/README.md b/installing-and-updating/automation-tools/README.md deleted file mode 100644 index cde148b29e..0000000000 --- a/installing-and-updating/automation-tools/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Automation Tools - diff --git a/installing-and-updating/automation-tools/ansible.md b/installing-and-updating/automation-tools/ansible.md deleted file mode 100644 index e0e8285c23..0000000000 --- a/installing-and-updating/automation-tools/ansible.md +++ /dev/null @@ -1,164 +0,0 @@ -# Ansible - -## Quick Links - -* [Rocket.Chat official Ansible role](https://galaxy.ansible.com/RocketChat/Server/#readme) -* [Ansible official install guide](http://docs.ansible.com/ansible/intro_installation.html) - -## About - -This document will explain, to those unfamiliar with Ansible, how they can get an Ansible environment set up quickly, with the end goal of deploying Rocket.Chat to a \(or multiple\) server\(s\). - -It is a quick, dirty How To format, not intended to teach you Ansible's full capabilities. Ansible is an incredible tool, with great documentation, a welcoming community, and it's all very easy to pick up - not to mention extremely powerful and suited for just about any situation. - -## Operational Overview - -Ansible works on a "push to clients" basis. You have your control node, which pushes all the configuration/ad-hoc tasks out to your systems via SSH, with no client running on the systems you're deploying to! This model means it's very fast, efficient, secure, scalable, and extremely portable. - -So, to control remote systems, you only need to install Ansible on your control node - your own desktop would make a great control node to deploy from :\) - -## Getting Ansible - -It's recommended that you check out [Ansible's official documentation on installing](http://docs.ansible.com/ansible/intro_installation.html) \(it's really easy!\), but here's a quick rundown of installation methods: - -### Package manager - -If you're running a UNIX-like system, like Linux or BSD, Ansible is likely available in your official package repositories. Use your package manager to see if it's available and if so, install it! [Ansible's installation documentation has a section on this](http://docs.ansible.com/ansible/intro_installation.html#latest-release-via-yum) - just scroll down until you see your OS. - -### Via Pip - -Ansible is written in Python, so, it's only natural that it be available for install via [`pip`](https://pypi.python.org/pypi). If you have `pip` installed it's as easy as: `$ sudo pip install ansible` - -If not, check to see if you can install `pip` via your system's package manager \(you want the Python 2.7 version!\). - -Or, if you're on Mac OS X, and you're not using [Homebrew](http://brew.sh) or [pkgsrc](https://github.com/cmacrae/saveosx), you should be able to install `pip` using `easy_install`, like so: `$ sudo easy_install pip` then - -```text -$ sudo pip install ansible -``` - -For any other systems, please refer to [Ansible's official documentation on installing](http://docs.ansible.com/ansible/intro_installation.html). - -### Simple Deployment Environment for Rocket.Chat - -So, now you've got Ansible installed, you can get ready to deploy Rocket.Chat! - -### Prerequisites - -* You must have SSH access to the system you want to deploy to as the `root` user. -* The system you're deploying to must have Python installed \(pretty much comes with most operating systems nowadays, easy to install if not\). -* The system you're deploying to must run one of the following operating systems: - - * EL 7 \(RHEL/CentOS\) - * Debian 8 \(Jessie\) LTS - * Ubuntu 16.04 LTS - * Ubuntu 19.04 - - Future releases of the [official Rocket.Chat Ansible role](https://galaxy.ansible.com/RocketChat/Server/#readme) will include other Linux distributions/releases and other operating systems. If you'd like to see your OS of choice supported, feel free to [raise an issue](https://github.com/RocketChat/Rocket.Chat.Ansible/issues) to ask if it can be added. - -### Inventory set-up - -Make a directory somewhere, perhaps in your home directory, or somewhere you keep Git repositories or code. It doesn't really matter what it's called, but for example's sake, we'll call ours `ansible`: - -```text -~/ $ mkdir ansible -~/ $ cd ansible -~/ansible $ -``` - -Now we're in our `ansible` directory, we're going to make an inventory file. This is a simple formatted file that contains a list of systems that we want to connect to and control using Ansible. It can contain single hosts, group hosts together, groups of groups, set variables on a host or group basis... there are lots of things you can do with the inventory, but that's outside the scope of this document's intended teachings. - -Make the inventory file `inventory`, for simplicity's sake: `~/ansible $ touch inventory` - -Now, with your favorite editor, open the file and add the hostname or FQDN of the server\(s\) you want to deploy Rocket.Chat to, like so: - -```text -[chat_servers] -chat.my.domain -``` - -Notice the `[chat_servers]` line? This denotes a group, simply called "chat\_servers". Any hostnames/FQDNs/IP addresses under this will be members of the "chat\_servers" group. If you want to add another server, just drop it in like so: - -```text -[chat_servers] -chat.my.domain -talk.my.domain -``` - -We're pretty much done with the inventory, just one last thing whilst we're on the subject: if you are not using SSH key-pairs for authenticating your SSH connections to your server\(s\)... you should be... but if you're not, you can tell Ansible the `root` user's password here in the inventory file. This is, of course, insecure, and is considered bad practice - so should only be temporary. Let's set the `root` user's password for the `chat.my.domain` host: - -```text -[chat_servers] -chat.my.domain ansible_ssh_pass=SuP3rseCre7pA$sw0rd -talk.my.domain -``` - -Simple as that! Alright, we're almost ready to deploy Rocket.Chat, just two more things to sort out. - -### Download the Rocket.Chat Ansible role - -Ansible has a nice and easy way to share and use other people's roles: [Galaxy](http://galaxy.ansible.com). You can download roles you want to use by using a command-line tool that was installed earlier when you installed Ansible, `ansible-galaxy`. - -First off, our roles need somewhere to live, so, let's make a `roles` directory: - -```text -~/ansible $ mkdir roles -``` - -Then, we need to create a `requirements.yml` file that will describe to `ansible-galaxy` how we want to fetch the role. So, create and open the file `roles/requirements.yml` using your favorite editor. The contents of `requirements.yml` will vary based on which version of Ansible you're running. Run `ansible --version` to find out. - -If you're running Ansible 1.9.4, paste the following into your `requirements.yml`: - -```yaml -- src: RocketChat.Server - version: master -``` - -If you're running Ansible 2.0, paste the following into your `requirements.yml`: - -```yaml - - src: RocketChat.Server - version: v2.2.2 -``` - -Next, let's fetch the Rocket.Chat Ansible role using the `ansible-galaxy` command: `~/ansible $ ansible-galaxy install -p roles/ -r roles/requirements.yml`This command says "Hey, I want to install any roles I have defined in `requirements.yml`". Hopefully, after a couple of seconds, you should have the `RocketChat.Server` role in your `roles` directory: - -```text -~/ansible $ ls roles -RocketChat.Server -``` - -Great! One last thing to prepare! - -### Create a Playbook to "play" the Rocket.Chat Ansible Role - -Ansible roles are built out of a collection of "plays" - which are essentially tasks/actions to take. To use a role, we need to create a very simple little playbook that tells Ansible "I want to run this role, on these systems.". - -Let's call the playbook `rocket_chat.yml` \(the `.yml` denotes a YAML document, which is what language you use to express most things in Ansible\): `~/ansible $ touch rocket_chat.yml` - -Now, again, with your favorite editor, add the following to your `rocket_chat.yml` playbook: - -```yaml ---- - - - name: Apply the RocketChat.Server role to all chat_servers - hosts: chat_servers - - roles: - - RocketChat.Server -``` - -That's it! You're ready to go! - -### Deploy Rocket.Chat using Ansible - -To run the playbook, use the `ansible-playbook` command, like so: `~/ansible $ ansible-playbook -i inventory rocket_chat.yml` - -This command could be expressed as "Run the `rocket_chat.yml` playbook with the inventory file `inventory`.". - -Now we just sit back and watch the magic happen! - -When it's all done, provided all went well and no parameters were changed, you should be able to visit `https://chat.my.domain` and be greeted by a wonderful Rocket.Chat logo and login screen! - -There are _lots_ of options you can set with this role, just take a look at the [README](https://github.com/RocketChat/Rocket.Chat.Ansible/blob/master/README.md) to find out more. - diff --git a/installing-and-updating/automation-tools/kubernetes-using-helm.md b/installing-and-updating/automation-tools/kubernetes-using-helm.md deleted file mode 100644 index e09e783f2b..0000000000 --- a/installing-and-updating/automation-tools/kubernetes-using-helm.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -description: Installing Rocket.Chat Chart on Kubernetes using Helm ---- - -# Kubernetes using Helm - -> **WARNING**: Upgrading to chart version 1.1.0 \(Rocket.Chat 1.0.3\) might require extra steps to retain the MongoDB data. See [Upgrading](kubernetes-using-helm.md#upgrading) for more details. - -Helm is a tool that streamlines installing and managing Kubernetes applications. Think of it like apt/yum/homebrew for Kubernetes, helm uses a packaging format called charts. A chart is a collection of files that describe a related set of Kubernetes resources. The Rocket.Chat helm chart packages Rocket.Chat server and mongodb. Options for the Rocket.Chat helm chart can be found [here](https://artifacthub.io/packages/helm/helm-stable/rocketchat). - -Working with Helm and Kubernetes is especially simple if you are using Ubuntu 20.04lts, 18.04lts, or 16.04lts. See [microk8s installation ](https://microk8s.io/docs%20)details. Helm 3 is the latest version, and it is already built into microk8s, you can access it via the command: - -```bash -$ microk8s.helm3 -``` - -> **NOTE:** Helm 3 no long includes a default chart repository. Make sure you [add the stable chart repository ](https://helm.sh/docs/intro/quickstart/#initialize-a-helm-chart-repository)to your Helm 3 instance. - -## Default settings for Rocket.Chat helm chart - -* Rocket.Chat chart installs rocketchat server \(stable/rocketchat\) -* Rocket.Chat chart installs mongodb chart \(stable/mongodb\) -* Authentication for mongodb is enabled by default \(usePassword : true\) -* Two persistent volumes will be created, one for mongodb that will store Rocket.Chat data and one for Rocket.Chat uploads -* If not set, a random password will be generated for the root user in mongodb, and no custom user, password and database will be created for Rocket.Chat so we recommend installing this chart setting those parameters. - -### Install Rocket.Chat chart and configure mongodbUsername, mongodbPassword, mongodbDatabase and mongodbRootPassword: - -```bash -$ helm install --set mongodb.mongodbUsername=rocketchat,mongodb.mongodbPassword=changeme,mongodb.mongodbDatabase=rocketchat,mongodb.mongodbRootPassword=root-changeme my-rocketchat stable/rocketchat -``` - -* mongodbUsername: This user will have access to the rocketchat database \(mongodbDatabase\) and is authenticated using mongodbDatabase -* mongodbPassword: Password for accessing your Rocket.Chat data -* mongodbDatabase: Database used to store Rocket.Chat application and authenticate the mongodbUsername -* mongodbRootPassword: The password for the root user, administrator of the mongodb statefulset and authenticated using the admin database - -Is possible to check both passwords, mongodbPassword and mongodbRootPassword, in mongodb secret, use `kubectl get secrets`. - -#### If you would like to install a different image than the default for this chart, add to the command the image you would like to install: - -```bash -$ helm install --set mongodb.mongodbUsername=rocketchat,mongodb.mongodbPassword=changeme,mongodb.mongodbDatabase=rocketchat,mongodb.mongodbRootPassword=root-changeme,repository= my-rocketchat stable/rocketchat -``` - -#### And if you only would like to install another version of rocket.chat image, add tag value to the command: - -```bash -$ helm install --set mongodb.mongodbUsername=rocketchat,mongodb.mongodbPassword=changeme,mongodb.mongodbDatabase=rocketchat,mongodb.mongodbRootPassword=root-changeme,image.pullPolicy=Always,image.tag=3.7.0 my-rocketchat stable/rocketchat -``` - -#### Check rocketchat values.yaml file for more details and adjust to your needs, after you can install Rocket.Chat chart using this command, remember to set mongodbUsername, mongodbPassword, mongodbDatabase and mongodbRootPassword: - -```bash -$ helm install --name my-rocketchat -f values.yaml stable/rocketchat -``` - -## Typical k8s/Helm Deployment on AWS EKS - -This is an example of how Rocket.Chat instances can be deployed in a very scalable, fault-tolerant and backed up configuration, suitable for critical production services. - -![Multi Instance k8s/Helm Deployment on AWS EKS](../../.gitbook/assets/rocket-chat-aws-eks.svg) - -## Upgrading - -Rocket.Chat version 1.x requires a MongoDB ReplicaSet to be configured. When using the dependent `stable/mongodb` chart \(`mongodb.enabled=true`\), enabling ReplicaSet will drop the PVC and create new ones, therefore loosing the database content, check instructions on how to manually upgrade below. - -Backwards compatibility is not guaranteed unless you modify the labels used on the chart's deployments. Use the workaround below to upgrade from versions previous to 1.0.0. The following example assumes that the release name is my-rocketchat: - -```text -$ kubectl delete deployment my-rocketchat-rocketchat --cascade=false -``` - -### Follow these steps to manually upgrade: - -We recommend setting up another set of k8s resources, test that the upgrade is correct and then remove resources from previous version. - -* Create a backup of the Rocket.Chat database: - -```bash -$ kubectl exec -- sh -c 'mongodump -u -p --archive=/tmp/rocketchat-db-bkup.gz --gzip --db ' -``` - -* Copy the backup file to working directory: - -```bash -$ kubectl cp :/tmp/rocketchat-db-bkup.gz . -``` - -* Install the new helm chart with Rocket.Chat version > 1.0 following instructions below, use a different name but keep your previously configured mongodbUsername, mongodbPassword and mongodbDatabase: - -```bash -$ helm install --set mongodb.mongodbUsername=rocketchat,mongodb.mongodbPassword=changeme,mongodb.mongodbDatabase=rocketchat,mongodb.mongodbRootPassword=root-changeme --name my-rocketchat-1 stable/rocketchat -``` - -* Copy the database backup file from working directory to the new mongodb pod: - -```bash -$ kubectl cp rocketchat-db-bkup.gz my-rocketchat-1-mongodb-primary-0:/tmp -``` - -* Restore the database: - -```bash -$ kubectl exec my-rocketchat-1-mongodb-primary-0 -- sh -c 'mongorestore -u -p --archive=/tmp/rocketchat-db-bkup.gz --gzip --db ' -``` - -* Check that the database was restored successfully: - -```bash -kubectl exec my-rocketchat-1-mongodb-primary-0 -- sh -c 'mongo -u -p --eval="printjson(db.runCommand( { listCollections: 1.0, nameOnly: true } ))"' -``` - diff --git a/installing-and-updating/automation-tools/openshift.md b/installing-and-updating/automation-tools/openshift.md deleted file mode 100644 index 59f355f642..0000000000 --- a/installing-and-updating/automation-tools/openshift.md +++ /dev/null @@ -1,55 +0,0 @@ -# OpenShift - -This repository hosts some templates for provision Rocket.Chat in OpenShift. - -[http://developers.redhat.com/](http://developers.redhat.com/) - -## Installation on Container Development Kit \(CDK\) - -* Download and install CDK -* Download and install the OpenShift Client tool -* Run OpenShift vagrant machine -* Pull the Rocket.Chat Docker image from Docker Hub and tag/push to the internal OpenShift registry: - -```bash -docker pull registry.rocket.chat/rocketchat/rocket.chat -docker tag rocketchat/rocket.chat hub.openshift.rhel-cdk.10.1.2.2.xip.io/openshift/rocket-chat -docker push hub.openshift.rhel-cdk.10.1.2.2.xip.io/openshift/rocket-chat -``` - -* Login in OpenShift and create a new project in OpenShift - -```bash -oc login -u openshift-devel https://10.1.2.2:8443 -oc new-project rocket-chat -``` - -* Clone this repo and add the templates and ImageStream to openshift namespace: - -```bash -git clone https://github.com/rimolive/rocketchat-openshift -oc create -n openshift -f rocket-chat-is.json -oc create -n openshift -f rocket-chat-ephemeral.json -``` - -* Create the rocket-chat app: - -```bash -oc new-app rocket-chat -p MONGODB_DATABASE=rocketchat,MONGODB_USER=rocketchat-admin,MONGODB_PASS=rocketchat -``` - -* Rocket.Chat uses a domain check code to verify the validity of the e-mail address. To disable it, run the following commands: - -```bash -oc port-forward 27017 -mongo localhost:27017 -``` - -Inside the mongo client: - -```javascript -use rocketchat -db.auth('rocketchat-admin','rocketchat') -db.rocketchat_settings.update({_id:'Accounts_UseDNSDomainCheck'},{$set:{value:false}}) -``` - diff --git a/installing-and-updating/automation-tools/vagrant.md b/installing-and-updating/automation-tools/vagrant.md deleted file mode 100644 index 904b5fb7ae..0000000000 --- a/installing-and-updating/automation-tools/vagrant.md +++ /dev/null @@ -1,135 +0,0 @@ ---- -description: Deploying Rocket.Chat on Vagrant with Ubuntu ---- - -# Vagrant - -```bash -# -*- mode: ruby -*- -# vi: set ft=ruby : - -# All Vagrant configuration is done below. The "2" in Vagrant.configure -# configures the configuration version (we support older styles for -# backwards compatibility). Please don't change it unless you know what -# you're doing. -Vagrant.configure(2) do |config| - # The most common configuration options are documented and commented below. - # For a complete reference, please see the online documentation at - # https://docs.vagrantup.com. - - # Every Vagrant development environment requires a box. You can search for - # boxes at https://atlas.hashicorp.com/search. - config.vm.box = "ubuntu/trusty64" - - # Disable automatic box update checking. If you disable this, then - # boxes will only be checked for updates when the user runs - # `vagrant box outdated`. This is not recommended. - # config.vm.box_check_update = false - - # Create a forwarded port mapping which allows access to a specific port - # within the machine from a port on the host machine. In the example below, - # accessing "localhost:8080" will access port 80 on the guest machine. - # config.vm.network "forwarded_port", guest: 80, host: 8080 - - # Create a private network, which allows host-only access to the machine - # using a specific IP. - config.vm.network "private_network", ip: "192.168.33.10" - - # Create a public network, which generally matched to bridged network. - # Bridged networks make the machine appear as another physical device on - # your network. - # config.vm.network "public_network" - - # Share an additional folder to the guest VM. The first argument is - # the path on the host to the actual folder. The second argument is - # the path on the guest to mount the folder. And the optional third - # argument is a set of non-required options. - # config.vm.synced_folder "../data", "/vagrant_data" - - # Provider-specific configuration so you can fine-tune various - # backing providers for Vagrant. These expose provider-specific options. - # Example for VirtualBox: - # - config.vm.provider "virtualbox" do |vb| - # # Display the VirtualBox GUI when booting the machine - # vb.gui = true - # - # # Customize the amount of memory on the VM: - vb.memory = "2048" - end - # - # View the documentation for the provider you are using for more - # information on available options. - - # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies - # such as FTP and Heroku are also available. See the documentation at - # https://docs.vagrantup.com/v2/push/atlas.html for more information. - # config.push.define "atlas" do |push| - # push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME" - # end - - # Enable provisioning with a shell script. Additional provisioners such as - # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the - # documentation for more information about their specific syntax and use. - config.vm.provision "shell", inline: <<-SHELL - # SYSTEM CONFIGURATION - apt-get update - apt-get install -y nodejs npm mongodb unzip - - ln -s /usr/bin/nodejs /usr/bin/node - ln -s /usr/bin/nodejs /usr/sbin/node - - npm install nave -g - npm install pm2 -g - nave usemain 12.14.0 - - curl https://install.meteor.com/ | sh - - pm2 startup - - mkdir -p /var/www/ - mkdir -p /var/log/rocket.chat - - # DEPLOY - HOST=http://your_hostname.com - MONGO_URL=mongodb://localhost:27017/rocketchat - MONGO_OPLOG_URL=mongodb://localhost:27017/local - ROOT_URL=http://localhost:3000 - PORT=3000 - - cd /var/www/ - wget https://github.com/RocketChat/Rocket.Chat/archive/master.zip - unzip master.zip - mv Rocket.Chat-master rocket.chat - - cd ./rocket.chat - meteor build --server "$HOST" --directory . - - cd ./bundle/programs/server - npm install - - cd ../.. - - rm -f pm2-rocket-chat.json - echo '{' > pm2-rocket-chat.json - echo ' "apps": [{' >> pm2-rocket-chat.json - echo ' "name": "rocket.chat",' >> pm2-rocket-chat.json - echo ' "script": "/var/www/rocket.chat/bundle/main.js",' >> pm2-rocket-chat.json - echo ' "out_file": "/var/log/rocket.chat/app.log",' >> pm2-rocket-chat.json - echo ' "error_file": "/var/log/rocket.chat/err.log",' >> pm2-rocket-chat.json - echo " \\"port\\": \\"$PORT\\"," >> pm2-rocket-chat.json - echo ' "env": {' >> pm2-rocket-chat.json - echo " \\"MONGO_URL\\": \\"$MONGO_URL\\"," >> pm2-rocket-chat.json - echo " \\"MONGO_OPLOG_URL\\": \\"$MONGO_OPLOG_URL\\"," >> pm2-rocket-chat.json - echo " \\"ROOT_URL\\": \\"$ROOT_URL\\"," >> pm2-rocket-chat.json - echo " \\"PORT\\": \\"$PORT\\"" >> pm2-rocket-chat.json - echo ' }' >> pm2-rocket-chat.json - echo ' }]' >> pm2-rocket-chat.json - echo '}' >> pm2-rocket-chat.json - - pm2 start pm2-rocket-chat.json - pm2 save - SHELL -end -``` - diff --git a/installing-and-updating/community-supported-installation/README.md b/installing-and-updating/community-supported-installation/README.md deleted file mode 100644 index c87c577c92..0000000000 --- a/installing-and-updating/community-supported-installation/README.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -description: Community Supported Installation Methods ---- - -# Nonofficial Methods - -The installation methods in this folder are not officially supported by Rocket.Chat, so we can't assure that these are working or updated. - -As we know, there are people who use these methods, so we will leave them open for contributions from the community. - -You can also check their respective forum pages under [Community Guides](https://forums.rocket.chat/c/community-guides) category. - -* [FreeBSD](freebsd/) -* [Windows 10 Pro](windows-10-pro.md) -* [Windows Server 2012](windows-server.md) -* [OpenSUSE](opensuse.md) -* [Kali](../manual-installation/kali-linux.md) - - - diff --git a/installing-and-updating/community-supported-installation/freebsd/README.md b/installing-and-updating/community-supported-installation/freebsd/README.md deleted file mode 100644 index 9666d4fdc2..0000000000 --- a/installing-and-updating/community-supported-installation/freebsd/README.md +++ /dev/null @@ -1,242 +0,0 @@ ---- -description: Deploying Rocket.Chat on FreeBSD ---- - -# FreeBSD - -_Note: This is a community supported installation method. You can discuss about this in the_ [_forum thread_](https://forums.rocket.chat/t/freebsd-installation-guide/651)_._ - -## Prerequisites - -Valid for: - -* FreeBSD 10.3-RELEASE - -\(64bit, meteor's development scripts will not compile under 32bit\) - -_Please use a fresh system without traces of node or npm. Most of my initial problems came from old and/or special versions of node/npm/meteor_ - -## Packages - -You need to install the following packages either as root or via sudo: - -```text -$ sudo pkg install git scons python gcc48 gmake npm bash wget -``` - -Also install mongodb if you will be running the database setup on this server as well. - -If you get the following output: - -```text -The package management tool is not yet installed on your system. -Do you want to fetch and install it now? [y/N]: -``` - -It's just because the pkg-ng binary package system have not been setup / bootstraped yet. Simply choose yes \(y\) here. And press enter. - -### Installing pm2 - -We need pm2 later to daemonize or Rocket.Chat build. - -Now, install pm2: - -```text -$ sudo npm install pm2 -g -$ sudo pm2 startup freebsd -``` - -## Add user for Rocket.Chat - -This user will be the one used for running Rocket.Chat server. - -```text -$ adduser -Username: rocketchat -Full name: User used for running rocket chat -Uid (Leave empty for default): *press enter* -Login group [rocketchat]: *press enter* -Login group is rocketchat. Invite rocketchat into other groups? []: *press enter* -Login class [default]: *press enter* -Shell (sh csh tcsh git-shell bash rbash nologin) [sh]: bash -Home directory [/home/rocketchat]: *press enter, or pick where you want your Rocket.Chat installation to be* -Home directory permissions (Leave empty for default): *press enter* -Use password-based authentication? [yes]: *press enter* -Use an empty password? (yes/no) [no]: *press enter* -Use a random password? (yes/no) [no]: yes -Lock out the account after creation? [no]: *press enter* -Username : rocketchat -Password : -Full Name : User used for running Rocket.Chat -Uid : 1001 -Class : -Groups : rocketchat -Home : /home/rocketchat -Home Mode : -Shell : /usr/local/bin/bash -Locked : no -OK? (yes/no): yes -adduser: INFO: Successfully added (rocketchat) to the user database. -adduser: INFO: Password for (rocketchat) is: qGn&j9nXBx&j*C#u -Add another user? (yes/no): no -``` - -Be sure to save the password somewhere safe if you will need to login as the Rocket.Chat user in the future. - -### Switch to the newly created user - -```text -$ su -l rocketchat -``` - -\(Or what ever username you picked\). - -## Building the dev\_bundle - -### Setting up the environment - -Set some environment Variables to make the build work under FreeBSD: - -```text -$ export MAKE_CMD=gmake -$ export CXX=clang++ -$ export CC=clang -``` - -`MAKE_CMD=gmake` is important, because meteor requires GNU make to build. The fork we will be building lets us set `MAKE_CMD` so we don't have to do nasty stuff to our BSD make. - -### Building meteor - -We need a fork of meteor which allows us to set `MAKE_CMD` as mentioned before: - -```text -$ cd $HOME -$ git clone -b freebsd https://github.com/williambr/meteor -``` - -Meteor comes with scripts to build it: - -```text -$ cd meteor -$ ./scripts/build-mongo-for-dev-bundle.sh -$ ./scripts/build-node-for-dev-bundle.sh -$ ./scripts/generate-dev-bundle.sh -``` - -\(These commands might take a long time to run depending on your hardware\) - -After compiling the development bundles above test out the meteor setup - -```text -$ ./meteor --version -``` - -This should give you output: - -```text -It's the first time you've run Meteor from a git checkout. -I will download a kit containing all of Meteor's dependencies. -Skipping download and installing kit from /usr/home/rocketchat/meteor2/dev_bundle_FreeBSD_amd64_0.5.16.tar.gz -*** SNIPPED HERE *** -Unreleased, running from a checkout at 9719021 (HEAD -> freebsd, origin/freebsd) -``` - -This should output no errors \(Also version numbers might change\). - -#### Troubleshooting - -That should run without problems. If you run into issues check the following: - -* is the Environment setup right? -* Are the scripts running in bash? -* do I have `gmake` installed? - -## Running Rocket.Chat - -First, we need the `meteor` binary in our `$PATH` - -```text -$ export PATH=$PATH:$HOME/meteor -``` - -Next, we need to download Rocket.Chat: - -```text -$ cd $HOME -$ git clone https://github.com/RocketChat/Rocket.Chat.git -$ cd Rocket.Chat -``` - -We need to install bcrypt separately. - -```text -$ npm install --clang=1 bcrypt -``` - -After that: Go ahead and start Rocket.Chat! - -```text -$ meteor -``` - -The first launch of Rocket.Chat might take some time as its installing dependencies. If all goes well you would see output like this: - -```text -=> App running at: http://localhost:3000/ -I20160422-21:52:50.733(2)? ➔ System ➔ startup -I20160422-21:52:50.734(2)? ➔ +----------------------------------------+ -I20160422-21:52:50.735(2)? ➔ | SERVER RUNNING | -I20160422-21:52:50.735(2)? ➔ +----------------------------------------+ -I20160422-21:52:50.736(2)? ➔ | | -I20160422-21:52:50.737(2)? ➔ | Version: 0.27.0 | -I20160422-21:52:50.737(2)? ➔ | Process Port: 21690 | -I20160422-21:52:50.738(2)? ➔ | Site URL: http://localhost:3000/ | -I20160422-21:52:50.739(2)? ➔ | | -I20160422-21:52:50.739(2)? ➔ +----------------------------------------+ -``` - -If you would like to have the Rocket.Chat daemon running while signed out. You could use tmux to keep it running. - -### Install tmux \(optional\) - -```text -$ sudo pkg install tmux -``` - -Start a tmux session and run Rocket.Chat - -```text -$ tmux (when tmux is running) -$ meteor -``` - -This will run Rocket.Chat inside a tmux session allowing you to disconnect from the terminal and let the daemon running. - -* Press `ctrl+b d` to exit the tmux session. -* And use `tmux a` to access the session again. - -To read more about using tmux see this page: - -[http://man.openbsd.org/OpenBSD-current/man1/tmux.1](http://man.openbsd.org/OpenBSD-current/man1/tmux.1) - -Or look up one of the many tmux guides online. - -### Troubleshooting tmux - -If you run into any troubles with bcrypt, try this: `cp -R ~/meteor/packages/non-core/npm-bcrypt ~/Rocket.Chat/packages/*` - -If you run into problems with `fibers` check your `node` and `npm` version. Then try to build it again. - -### Notes - -* This guide is tested in a FreeBSD 10.3-RELEASE jail. -* Ensure you don't expose the mongoDB instance to the internet without setting up security for it! - -## Thanks - -* Filias Heidt -* Matt Olander -* William Grzybowski -* Cory Smelosky -* Sing Li - diff --git a/installing-and-updating/community-supported-installation/freebsd/universal.md b/installing-and-updating/community-supported-installation/freebsd/universal.md deleted file mode 100644 index b2ac497651..0000000000 --- a/installing-and-updating/community-supported-installation/freebsd/universal.md +++ /dev/null @@ -1,71 +0,0 @@ -# Deploying Rocket.Chat Server Binaries on a FreeBSD system - -**Note: This deployment method is not officially supported by Rocket.Chat, you might need to build your own or find a community version of the tar file.** - -This is the recommended production deployment method on and is based on the excellent [Meteor Universal fork](http://meteor-universal.tumblr.com/) by Tom Freudenberg. - -As `root`: - -```text -# pkg install bash git GraphicsMagick mongodb python scons gmake -# sysrc mongod_enable=YES -# service mongod start -# pw groupadd rocketchat -# pw useradd rocketchat -g rocketchat -s /usr/local/bin/bash -m -# su -l rocketchat -``` - -As user running Rocket.Chat: - -```text -$ git clone --depth 1 -b release-1.2.1-universal https://github.com/4commerce-technologies-AG/meteor -$ cd meteor -$ ./meteor --version -$ cd $HOME -$ tar xf rocket.chat-freebsd-develop.tgz -$ cd $HOME/bundle/programs/server -$ $HOME/meteor/dev_bundle/bin/npm install -$ cd $HOME/bundle -$ export MONGO_URL=mongodb://localhost:27017/rocketchat -$ export Accounts_UseDNSDomainCheck=false -$ export ROOT_URL=http://your.host:3000 -$ export PORT=3000 -$ export ADMIN_PASS=supersecret -$ export ADMIN_USER=admin -$ $HOME/meteor/dev_bundle/bin/node $HOME/bundle/main.js -``` - -A very crude startup file for the server, \(very ugly, does not fork, don't set rocketchat\_enable=YES\): - -```text -#!/bin/sh - -# PROVIDE: rocketchat -# REQUIRE: LOGIN mongod -# KEYWORD: shutdown -# -# Add the following lines to /etc/rc.conf.local or /etc/rc.conf -# to enable this service: -# -# rocketchat_enable (bool): Set to "NO" by default. -# rocketchat_env (str): List of environment variables passed to rocketchat -# - -. /etc/rc.subr - -name="rocketchat" -rcvar=rocketchat_enable - -load_rc_config $name - -: ${rocketchat_enable="NO"} -: ${rocketchat_env="MONGO_URL=mongodb://localhost:27017/rocketchat PORT=3000"} -: ${rocketchat_user="rocketchat"} -: ${rocketchat_group="rocketchat"} - -command=/home/rocketchat/meteor/dev_bundle/bin/node -command_args="/home/rocketchat/Rocket.Chat/.meteor/local/build/main.js" - -run_rc_command "$1" -``` - diff --git a/installing-and-updating/community-supported-installation/opensuse.md b/installing-and-updating/community-supported-installation/opensuse.md deleted file mode 100644 index 841b986ef8..0000000000 --- a/installing-and-updating/community-supported-installation/opensuse.md +++ /dev/null @@ -1,418 +0,0 @@ ---- -description: Install and Run Rocket.Chat on OpenSUSE Leap 42.2 ---- - -# OpenSUSE Leap 42.2 - -_Note: This is a community supported installation method. You can discuss about this in the_ [_forum thread_](https://forums.rocket.chat/t/opensuse-installation-guide/657)_._ - -_Last updated 2017-08-26_ - -Node.js version: 8.9.3 - -Rocket.Chat version: 0.60.0 - -These are barebones instructions for how to set up a Rocket.Chat server on OpenSUSE Leap 42.2 using nginx as a reverse proxy. These will help you set up a system you can experiment with. **THEY ARE NOT INTENDED FOR SETUP OF A PRODUCTION SYSTEM!** They are oriented on using a VM from AWS, but should work for any Leap 42.2 system. - -## Overview - -You will install and configure: - -1. Node.js -2. MongoDB -3. Let's Encrypt SSL certificates -4. nginx -5. Rocket.Chat and its dependencies - -To do this, you will: - -1. Acquire a VM to install on -2. Install all the packages you'll need -3. Start and configure MongoDB -4. Install Let's Encrypt SSL certificates -5. Configure and start nginx -6. Install and start Rocket.Chat - -Things you'll need to do afterwards on your own, **especially if you want a production-worthy system**: - -* Create a `systemctl` script to restart Rocket.Chat if the server is rebooted -* Configure email on the server \(so Rocket can request account validation\) -* Secure the server \(e.g. get rid of the default user on a VM, etc.\) -* Monitor the server so you can respond if it goes down - * Rocket.Chat availability - * MongoDB availability - * nginx availability -* Configure MongoDB for production use - * Use an XFS volume - * Use persistent \(e.g. non-local\) storage if you're using a VM - * Configure replica sets - * Consider setting /sys/kernel/mm/transparent\_hugepage/enabled to "never" as recommended by Mongo at startup -* Set up periodic updates for the system - -## Acquire a VM with OpenSUSE Leap 42.2 - -I like to use AWS spot instances as a very cheap way to experiment with things. I find I can usually get an m3.medium \(1 vCPU, 3.75GB RAM\) for ~$0.01/hour, or ~$7/month if run continuously. Pick the right region and you'll rarely if ever be shut down. - -There's a `spot_instance.json` below that I generally use to set up an instance. I already have a few security groups to lock down all but the ports I need, an IAMS profile to allow just the privileges I want, and an SSH keypair generated; I'm not going to tackle those here, so if you want to do this, you probably should do some quick research and set those up yourself. - -I also use the AWS CLI, so it's preconfigured for my favorite region, credentials, etc. If you don't have that set up, you'll want to. - -When you've got those set, getting an instance is really straightforward: - -```text -aws ec2 request-spot-instances --cli-input-json file://spot_instance.json -``` - -Note: if you get an error saying that you must subscribe to the AMI before using it, copy the URL in the error message and open it in a browser. The "subscription" costs $0.00/hour, so it's just a formality. - -## Configure the Box - -The default user in the Leap 42.2 image is `ec2-user`. You'll ssh into the box using that user, and immediately become root. - -```text -> ssh ec2-user@IP-OR-HOSTNAME-FOR-YOUR-BOX -> sudo su - -``` - -### Update and Install Packages using zypper - -1. Add the repo for MongoDB -2. Refresh metadata for all repos -3. Update all the packages on the box -4. Install the new packages we need - -```text -zypper addrepo http://download.opensuse.org/repositories/server:database/openSUSE_Leap_42.2/server:database.repo -zypper refresh -zypper -n update -zypper -n install mongodb nodejs4 npm4 nginx GraphicsMagick gcc-c++ -``` - -### Start and Configure MongoDB - -1. Enable and start MongoDB -2. Create the admin user -3. Create the DB and user for Rocket.Chat - -In a shell: - -```text -systemctl enable mongodb -systemctl start mongodb -``` - -Now start a MongoDB shell and add the admin user: - -```text -> mongo -use admin - -db.createUser({ - user: "root", - pwd: "fl!bb3rtyJ!bb3tt", - roles: [ "root" ] -}) - -exit -``` - -Now re-open a MongoDB shell as your admin user and create the Rocket.Chat db and admin user. You'll use these later to tell Rocket how to access its DB. - -Note: Don't use `:` or `@` in this user's password or you'll need to URL escape them later. It's easier to avoid those characters. - -```text -> mongo --authenticationDatabase admin -u root -p - -use rocketchat - -db.createUser({ - user: "rocket", - pwd: "4rgl3b4rgl3", - roles: [ "readWrite", "dbAdmin" ] -}) - -exit -``` - -### Install Let's Encrypt SSL Certificates - -This is so crazy easy. Remember when this was hard, and when it cost $20-$200 per year? Please consider using one of the donation links given afterwards as a way to support continued development of CertBot. - -* [https://letsencrypt.org/donate](https://letsencrypt.org/donate) -* [https://eff.org/donate-le](https://eff.org/donate-le) - -Replace `YOUR.SERVER.NAME` below with the hostname your server will be accessed from, e.g. `chat.example.com`, and replace `YOUR@EMAIL.ADDRESS` with your email address, e.g. `admin@example.com` - -```text -git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt -cd /opt/letsencrypt && ./letsencrypt-auto certonly --standalone --email YOUR@EMAIL.ADDRESS -d YOUR.SERVER.NAME -``` - -### Configure and Start nginx - -1. Set up a more modern site config management scheme -2. Set the base `nginx` config -3. Add the config needed for Rocket.Chat -4. Enable and start nginx - -```text -cd /etc/nginx -mkdir sites-enabled sites-available -``` - -Now do two things: - -1. Replace the contents of `/etc/nginx.conf` with the `nginx.conf` below. -2. Copy the contents of `rocket_chat.conf` below to `/etc/nginx/sites-available/rocket_chat.conf` - -Now you can enable the Rocket.Chat config, then enable and start nginx - -```text -cd /etc/nginx/sites-enabled -ln -s ../sites-available/rocket_chat.conf . - -systemctl enable nginx -systemctl start nginx -``` - -### Install and Configure Rocket.Chat - -1. Add a `rocket` user and group -2. Download the latest Rocket.Chat -3. Install all the node.js dependencies for Rocket.Chat using `npm` -4. Set the required environment variables -5. Start the Rocket.Chat server - -Replace `YOUR.SERVER.NAME` below with the hostname your server will be accessed from, e.g. `chat.example.com` - -```text -groupadd -g 2000 rocket -useradd -g rocket -u 2000 rocket - -cd /opt -curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz -tar zxvf rocket.chat.tgz -mv bundle Rocket.Chat -chown -R rocket:rocket /opt/Rocket.Chat - -su - rocket -cd /opt/Rocket.Chat/programs/server -npm install -cd ../.. - -# TODO: Make a script for this for systemctl -export ROOT_URL=http://YOUR.SERVER.NAME/ -export MONGO_URL=mongodb://rocket:4rgl3b4rgl3@localhost:27017/rocketchat -export PORT=3000 - -node main.js -``` - -If everything is working as planned, you'll see something like: - -```text -Will load cache for users -0 records load from users -Will load cache for rocketchat_room -0 records load from rocketchat_room -Will load cache for rocketchat_subscription -0 records load from rocketchat_subscription -Will load cache for rocketchat_settings -0 records load from rocketchat_settings -Updating process.env.MAIL_URL -Will load cache for rocketchat_permissions -0 records load from rocketchat_permissions -Will load cache for rocketchat_roles -0 records load from rocketchat_roles -LocalStore: store created at -LocalStore: store created at -Setting default file store to GridFS -Updating process.env.MAIL_URL -Using GridFS for custom sounds storage -Using GridFS for custom emoji storage -ufs: temp directory created at "/tmp/ufs" -➔ System ➔ startup -➔ +--------------------------------------------------------+ -➔ | SERVER RUNNING | -➔ +--------------------------------------------------------+ -➔ | | -➔ | Rocket.Chat Version: 0.60.0 | -➔ | NodeJS Version: 8.9.3 - x64 | -➔ | Platform: linux | -➔ | Process Port: 3000 | -➔ | Site URL: http://YOUR.SERVER.NAME:3000/ | -➔ | ReplicaSet OpLog: Disabled | -➔ | Commit Hash: 988103d449 | -➔ | Commit Branch: HEAD | -➔ | | -➔ +--------------------------------------------------------+ -``` - -... and that's Rocket.Chat all set. Direct a browser to `https://YOUR.SERVER.NAME` and register a yourself as new user. The first user you register will be made the server admin. - -## Sources - -These are docs and snippets I used to figure all of this out. - -[https://en.opensuse.org/MongoDB](https://en.opensuse.org/MongoDB) - -[https://docs.rocket.chat/installation/manual-installation/ubuntu/](https://docs.rocket.chat/installation/manual-installation/ubuntu/) - -[https://docs.rocket.chat/installation/paas-deployments/aws/](https://docs.rocket.chat/installation/paas-deployments/aws/) - -[https://www.digitalocean.com/community/tutorials/how-to-install-configure-and-deploy-rocket-chat-on-ubuntu-14-04](https://www.digitalocean.com/community/tutorials/how-to-install-configure-and-deploy-rocket-chat-on-ubuntu-14-04) - -## Config Files - -### `/etc/nginx.conf` - -This config relies on you creating `/etc/nginx/sites-available` and `/etc/nginx/sites-enabled` - -```text -user rocket; -worker_processes auto; -pid /run/nginx.pid; - -events { - worker_connections 768; - # multi_accept on; -} - -http { - - ## - # Basic Settings - ## - - sendfile on; - tcp_nopush on; - tcp_nodelay on; - keepalive_timeout 65; - types_hash_max_size 2048; - # server_tokens off; - - # server_names_hash_bucket_size 64; - # server_name_in_redirect off; - - include /etc/nginx/mime.types; - default_type application/octet-stream; - - ## - # SSL Settings - ## - - ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE - ssl_prefer_server_ciphers on; - - ## - # Logging Settings - ## - - access_log /var/log/nginx/access.log; - error_log /var/log/nginx/error.log; - - ## - # Gzip Settings - ## - - gzip on; - gzip_disable "msie6"; - - # gzip_vary on; - # gzip_proxied any; - # gzip_comp_level 6; - # gzip_buffers 16 8k; - # gzip_http_version 1.1; - # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; - - ## - # Virtual Host Configs - ## - - include /etc/nginx/conf.d/*.conf; - include /etc/nginx/sites-enabled/*; -} - - -#mail { -# # See sample authentication script at: -# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript -# -# # auth_http localhost/auth.php; -# # pop3_capabilities "TOP" "USER"; -# # imap_capabilities "IMAP4rev1" "UIDPLUS"; -# -# server { -# listen localhost:110; -# protocol pop3; -# proxy on; -# } -# -# server { -# listen localhost:143; -# protocol imap; -# proxy on; -# } -#} -``` - -### `/etc/nginx/sites-available/rocket_chat.conf` - -Replace `YOUR.SERVER.NAME` below with the hostname your server will be accessed from, e.g. `chat.example.com` - -```text -server { - listen 443 ssl; - server_name YOUR.SERVER.NAME; - ssl_certificate /etc/letsencrypt/live/YOUR.SERVER.NAME/fullchain.pem; - ssl_certificate_key /etc/letsencrypt/live/YOUR.SERVER.NAME/privkey.pem; - ssl_protocols TLSv1 TLSv1.1 TLSv1.2; - ssl_prefer_server_ciphers on; - ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; - root /usr/share/nginx/html; - index index.html index.htm; - # Make site accessible from http://localhost/ - server_name localhost; - location / { - proxy_pass http://localhost:3000/; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_set_header Host $http_host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto https; - proxy_set_header X-Nginx-Proxy true; - proxy_redirect off; - } -} -server { - listen 80; - server_name YOUR.SERVER.NAME; - return 301 https://$host$request_uri; -} -``` - -### `spot_instance.json` - -Replace `Subnet-Id`, `Arn`, and `SecurityGroupIds` content below with your own. The `ImageId` given is for the OpenSUSE Leap 42.2 AMI. - -```text -{ - "InstanceCount": 1, - "SpotPrice": "0.015", - "LaunchSpecification": - { - "ImageId": "ami-49570529", - "InstanceType": "m3.medium", - "SubnetId": "subnet-########", - "KeyName": "tinyjoy", - "IamInstanceProfile": { - "Arn": "arn:aws:iam::############:instance-profile/IAMS-PROFILE-NAME" - }, - "SecurityGroupIds": ["sg-########"] - }, - "Type": "one-time" -} -``` - diff --git a/installing-and-updating/community-supported-installation/windows-10-pro.md b/installing-and-updating/community-supported-installation/windows-10-pro.md deleted file mode 100644 index 867616836e..0000000000 --- a/installing-and-updating/community-supported-installation/windows-10-pro.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -description: Installing on Windows 10 Pro 64bit with Docker for Windows ---- - -# Windows 10 - -_Note: This is a community supported installation method. You can discuss about this in the_ [_forum thread_](https://forums.rocket.chat/t/windows-10-pro-installation-guide/408)_._ - -Please make sure: - -* you have at least 4 GB of memory on your Windows 10 Pro machine -* you are running 64 bit edition of Windows 10 Pro -* you have the latest updates installed, and no updates pending -* you have enabled Hyper-V \(requires a reboot, go to Control Panel -> Add Windows Components -> Hyper-V\) -* you have at least 20 GB of disk space, preferably SSD - -## Steps: - -* Download and install [Docker for Windows](https://docs.docker.com/docker-for-windows/) -* Create a file named `docker-compose.yml` that contains: - -```text -db: - image: mongo:3.0 - command: mongod --smallfiles --oplogSize 128 - -rocketchat: - image: registry.rocket.chat/rocketchat/rocket.chat:latest - environment: - - PORT=3000 - - ROOT_URL=http://docker:3000 - - MONGO_URL=mongodb://db:27017/rocketchat - links: - - db:db - ports: - - 3000:3000 -``` - -* In the same directory as the above file, enter command `docker-compose up` -* Wait for the server to fully start, takes a couple of minutes -* Access your Rocket.Chat server at `http://docker:3000` - diff --git a/installing-and-updating/community-supported-installation/windows-server.md b/installing-and-updating/community-supported-installation/windows-server.md deleted file mode 100644 index accab00c5c..0000000000 --- a/installing-and-updating/community-supported-installation/windows-server.md +++ /dev/null @@ -1,171 +0,0 @@ ---- -description: Rocket.Chat Windows Installation Guide ---- - -# Windows Server - -_Note: This is a community supported installation method. You can discuss about this in the_ [_forum thread_](https://forums.rocket.chat/t/broken-windows-server-2012-r2-installation-guide/413/2)_._ - -## How to install Rocket.Chat on Windows Server 2012 R2 - -The following guide will step through the various steps for installing Rocket.Chat on Windows Server 2012 R2. - -**Important**: Production deployment using any client versions of Windows, such as Windows 7, 8, or 10 is not supported. However, beta deployment for Windows 10 Pro \(or Enterprise or Education\) version is available via Docker for Windows see [Installing on Windows 10 Pro 64bit with Docker for Windows](windows-10-pro.md). - -Mobile clients \(iOS and Android\) are currently not supported using this method of deployment. However, [Windows 10 Pro 64bits with Docker for Windows](windows-10-pro.md) based deployment should support mobile clients. - -**Note**: The steps will include all dependencies. If a particular dependency has already been installed, please skip to any relevant configuration section. - -### Binary Dependencies - -To start, go to `Control Panel -> Programs and Features` and uninstall each of the following \(if present\): - -* Microsoft Visual C++ 2010 x64 Redistributable -* Microsoft Visual C++ 2010 x86 Redistributable - -Then, download and install each of the following **in order**: - -1. [Python 2.7.3](https://www.python.org/ftp/python/2.7.3/python-2.7.3.msi) \(if you have Python 3.x already installed, just leave it, both can coexist\) -2. [Visual C++ 2010 Express](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) or Visual Studio 2010 -3. [Windows SDK 7.1](http://www.microsoft.com/en-us/download/details.aspx?id=8279) -4. [Visual Studio 2010 SP1](https://www.microsoft.com/en-us/download/details.aspx?id=34677) -5. [Visual C++ 2010 SP1 Compiler Update for the Windows SDK 7.1](http://www.microsoft.com/en-us/download/details.aspx?id=4422) -6. [GraphicsMagick](http://www.graphicsmagick.org/INSTALL-windows.html#prerequisites) -7. [Ghostscript](http://ghostscript.com/download/gsdnld.html) \(Optional for PDF rendering\) - -### MongoDB - -* Download [MongoDB](https://www.mongodb.org/downloads#production). \(Note: This can be done on a separate computer\) -* Run the installer and choose `Custom` -* Click the `Browse` button to select desired install path, such as `C:\MongoDB` -* Continue through the rest of the installer. -* Now open NotePad and enter the following, replacing \[Data Path\] with where the database will be stored, such as `C:\MongoDB\data` - -```text -systemLog: - destination: file - path: [Data Path]\logs\mongod.log -storage: - dbPath: [Data Path]\data -replication: - replSetName: rs1 -``` - -* Save the file as `[Installation Path]\mongod.cfg` where \[Installation Path\] is the location you installed Mongo -* Open the Command Prompt by pressing `Windows Key + R` and then entering `cmd`, right click on Command Prompt and select `Run as administrator` -* Now enter the following: - -```text -> mkdir [Data Path] -> cd [Data Path] -> mkdir [Data Path]\db -> mkdir [Data Path]\logs - -> cd [Installation Path]\bin -> mongod.exe --config "[Installation Path]\mongod.cfg" --install -> net start MongoDB - -> mongo.exe -> rs.initiate() -> exit -``` - -> _Note: Do not include the `>`_ - -### Rocket.Chat files - -1. Download the latest Rocket.Chat **Windows Release** from the Rocket.Chat releases page \(not available anymore\) -2. Using an archive utility such as [7zip](http://www.7-zip.org/) or [tar for Windows](http://gnuwin32.sourceforge.net/packages/gtar.htm), extract the tar.gz file -3. Place the files in the desired install path, such as `C:\RocketChat` - -### Node.js - -Rocket.Chat is built on top of Node.js v8.9.3. So we need to install this first. - -1. Download [Node.js v8.9.3](https://nodejs.org/dist/v8.9.3/node-v8.9.3-x86.msi) -2. Run the installer with all default option. - -### Node Packages - -1. Open the _Windows SDK 7.1 Command Prompt_ by pressing Start, typing its name, and clicking on it in the search results \(Note: It needs to be the SDK Command Prompt\) -2. Now enter the following, replacing: - * \[Installation Path\] with the location you placed the Rocket.Chat files - * \[Port to Use\] with the port for the Rocket.Chat server to use, such as `3000` - * \[Rocket.Chat URL\] with the URL you will use for Rocket.Chat, such as `rocketchat.example.com` - * \[Address to MongoDB\] with the IP Address of your MongoDB. \(NOTE: If you didn't install Mongo on another computer, use `localhost`\) - * \[MongoDB Database\] with the name of the database you would like to use, such as `rocketchat` - -```text -> SetEnv /x86 -> cd [Installation Path] -> npm install nave -g -> npm install node-windows - -> npm config set python /Python27/python.exe --global -> npm config set msvs_version 2010 --global - -> set PORT=[Port to Use] -> set ROOT_URL=[Rocket.Chat URL] -> set MONGO_URL=mongodb://[Address to Mongo]:27017/[MongoDB Database] -> set MONGO_OPLOG_URL=mongodb://[Address to Mongo]:27017/local -> set SCRIPT_PATH=[Installation Path]\main.js - -> cd programs\server -> npm install - -> cd ../.. -> node rocket.service.js install -> net start Rocket.Chat -``` - -> Note: If missing, rocket.service.js can be found [here](https://github.com/Sing-Li/bbug/blob/master/images/rocket.service.js) _Note: Do not include the `>`_ - -### Verifying the Install - -1. View the installed services by pressing `Windows Key + R` and then entering `services.msc` -2. Find `Rocket.Chat` in the list. Its status should be `Running` -3. Open a browser and, in the address bar, enter `http://localhost:[Port Used]` -4. Rocket.Chat should load. - -### Mobile Support - -In order to use Rocket.Chat on mobile devices, you must also configure your installation to support SSL with a valid certificate. - -### IIS Configuration \(Optional\) - -The following steps will detail integrating Rocket.Chat with IIS. - -#### Get UrlRewrite and ARR - -1. Open IIS, click on your server, and then click on `Get New Web Platform Components` in the right hand menu -2. Install the Web Platform Installer if prompted -3. Once open, search for `Routing` in the upper right search box -4. Click on the `Add` button for Application Request Routing 3.0 and then `Install` -5. Once ARR and UrlRewrite are installed, close and reopen IIS - -#### Adding the SSL Certificate - -1. Click on your server in the left menu and then click on `Server Certificates` -2. In the right hand menu, click on `Import...` -3. Find your SSL Certificate and enter your password -4. Click `Ok` - -#### Setting up the Rocket.Chat site - -1. Create a new Web Site and bind it to the \[Rocket.Chat Url\] previously specified. - - **NOTE: If you plan on using the Rocket.Chat mobile apps, you must use HTTPS. HTTP is optional only for PCs** - -2. For the physical path, point it to an empty folder in your webroot. \(Note: There will be no default document here, just the web.config.\) -3. Press `Ok` -4. Select the new Rocket.Chat site and click on `Url Rewrite` -5. In the upper right hand menu, select `Add Rule(s)...` and then `Reverse Proxy` -6. Enter `http://localhost:[Port Used]` in the top box and hit `Ok` \(Note: This must remain HTTP even if you are using HTTPS\) - -#### Troubleshooting - -* If the Rocket.Chat service isn't running, check the Event Viewer under `Windows Logs\Application` for errors from the Rocket.Chat service. -* If the page didn't load, check the log files in \[Data Path\]\logs for clues. -* If that doesn't help, or if you had any other problems during the process, try searching our [GitHub Issues](https://github.com/RocketChat/Rocket.Chat/issues) -* If you are still having problems, visit the [\#support](https://open.rocket.chat/channel/support) channel and we'll be happy to help. - diff --git a/installing-and-updating/docker-containers/README.md b/installing-and-updating/docker-containers/README.md deleted file mode 100644 index 2a521583a8..0000000000 --- a/installing-and-updating/docker-containers/README.md +++ /dev/null @@ -1,503 +0,0 @@ ---- -description: Docker-Ubuntu 16.04 LTS (64 bit) VPS with Nginx SSL and Hubot ---- - -# Docker Containers - -## Introduction - -This guide will walk you through the installation and configuration of a Docker-based Rocket.Chat instance on Ubuntu 16.04 LTS \(64 bit\) VPS, using Nginx as a reverse SSL proxy, Hubot chatbot, and necessary scripts for an automatic restart and crash recovery. - -For people new to docker here's a quick primer: Docker is a program to allow other programs and their dependencies to be run in a type of virtual container. Using this deployment guide, you do not need to download any of the rocket chat program files manually whatsoever. Docker will get everything that is needed for Rocket.Chat to run. If you follow this guide closely, it provides everything from start to finish needed to install, create, and run your own Rocket.Chat web instance with Nginx handling SSL termination, and a Hubot chatbot keeping your general chat channel warm on those cold winter mornings. - -This guide is designed for everyone, however, it is intentionally detailed to help new users who may need a little extra guidance. If you're experienced with things like docker, Nginx, etc. you may prefer one of the other deployment guides found elsewhere on this wiki. - -## What we'll cover in this guide - -1. [Securing the server: Firewall basics \(optional\)](./#1-securing-the-server-firewall-basics-optional-recommended) -2. [Securing the server: Fail2Ban IDS \(optional\)](./#2-securing-the-server-fail2ban-optional-recommended) -3. [Installing Docker and Docker-Compose](./#3-installing-docker-and-docker-compose) -4. [Editing the hosts file](./#4-editing-the-hosts-file) -5. [Installing Nginx SSL Reverse Proxy](./#5-installing-nginx--ssl-certificate) -6. [Creating docker-compose.yml](./#6-create-the-docker-composeyml-file--local-directories) -7. [Automatic start-up, and crash recovery](./#7-automatic-startup--crash-recovery) -8. [Reboot & Status check](./#8-reboot-and-status-check) -9. [Registering & Configuring Hubot, the chat robot](./#9-registering--configuring-hubot-the-chat-robot) -10. [FAQ & Troubleshooting](./#10-troubleshooting--faq) -11. [TODO](./#11-todo) -12. [Known Issues](./#12-known-issues) - -## Prerequisites - -This guide is written assuming that you're starting with: - -* a clean new installation of Ubuntu 16.04 LTS \(64 bit\) -* properly configured DNS that resolves requests to your domain name - -## 1. Securing the server: Firewall basics \(optional, recommended\) - -First, make sure UFW \(Uncomplicated Fire Wall\) is installed. It should be installed by default in Ubuntu, but if it’s not, you can install the package using apt-get. **IMPORTANT:** We're going to add a firewall rule to permit your SSH connection on port 22/tcp. That is the default SSH port. If you have changed it to something else, you must modify the rule below to reflect your required port number. Failure to do so will break your SSH connection and lock you out of the server as soon as you enable the firewall! - -**Confirm UFW is installed:** - -```text -sudo apt-get install ufw -``` - -_Set the default access rules:\*_ - -```text -sudo ufw default deny incoming - -sudo ufw default allow outgoing -``` - -**Set the service rules \(SSH / HTTPS\):** - -```text -sudo ufw allow 22/tcp - -sudo ufw allow 443/tcp -``` - -**Enable the firewall:** - -```text -sudo ufw enable -``` - -**Check the Firewall status:** - -```text -sudo ufw status -``` - -**If you ever add or delete rules you should reload the firewall:** - -```text -sudo ufw reload -``` - -**If you ever need to turn off the firewall:** - -```text -sudo ufw disable -``` - -## 2. Securing the server: Fail2ban \(optional, recommended\) - -Fail2ban is an intrusion prevention software framework which protects computer servers from brute-force attacks. - -**Install:** - -```text -sudo apt-get update - -sudo apt-get install fail2ban -``` - -Press **Y** when prompted to proceed with the install. - -## 3. Installing Docker and Docker-Compose - -**Install Docker** [https://docs.docker.com/linux/step\_one/](https://docs.docker.com/linux/step_one/) - -**Install Docker-Compose version 1.24.0 \(64 bit\) via cURL** - -```text -sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-Linux-x86_64" -o /usr/local/bin/docker-compose -``` - -**Set the executable permissions:** - -```text -sudo chmod +x /usr/local/bin/docker-compose -``` - -**Notes:** We're using version 1.24.0 for this guide. If you wish to try a newer version, you will need to edit the cURL command to reflect the alternate version number. If you get a "Permission denied" error, your `/usr/local/bin` directory probably isn't writable and you'll need to install Compose as the superuser. Run `sudo -i`, then the two commands above, then `exit`. \(credit: docker compose docs\) - -**Confirm docker-compose is properly installed** - -```text -sudo docker-compose --version -``` - -**Notes:** For minimal distributions, or systems where `/usr/local/bin` is not part of the `$PATH` env you might need to symlink the binary into `/usr/bin` as well: - -```text -sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose -``` - -## 4. Editing the hosts file - -If your hostname.domain.tld is mapped to a publicly routable IP, it needs to be set to your local address, for example, 127.0.0.1. Please note that the order in which localhost and your hostname are placed in this file is important; make sure localhost is first. - -**Edit the hosts file:** - -```text -sudo nano /etc/hosts -``` - -```text -127.0.0.1 localhost.localdomain localhost -127.0.0.1 chat.inumio.com chat -``` - -Save and Exit. \(Press **CTRL-X** to save, **Y** for yes, then **ENTER** to save as current filename.\) - -## 5. Installing Nginx & SSL certificate - -**Install Nginx** - -```text -sudo apt-get install nginx -``` - -### 5a. Using a commercial SSL cert \(recommended\) - -If you don't have a certificate already, you can grab one for free at [Let's Encrypt](https://letsencrypt.org/). - -Or, if you want to use a self-signed SSL cert instead, skip ahead to [Self-Signed SSL](./#5b-self-signed-ssl). - -**Install the private key \(created when you generated the CSR\):** - -```text -sudo nano /etc/nginx/certificate.key -``` - -Open the private key and Copy the entire private key text-block from the file that was generated when you created the CSR. Right click on the terminal window and select paste to paste it into nano. Alternatively, if you have a tool such as filezilla, you can use it via SSH over FTP to upload your cert and key files instead of copy / paste. - -Save and Exit. - -**Install the SSL certificate \(note that this goes in certificate.**_**crt**_**, not .**_**key**_**\):** - -```text -sudo nano /etc/nginx/certificate.crt -``` - -Open the SSL Certificate provided by the SSL vendor \(will probably have a .crt or .pem extension\) and copy the entire text-block. Right click on the terminal window and select paste to paste it into nano. - -Save and Exit. - -### 5b. Self-Signed SSL - -If you acquired an SSL cert and installed it via the steps above, skip this step. - -**Create and install a self-signed SSL certificate:** - -```text -sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/certificate.key -out /etc/nginx/certificate.crt -``` - -**Follow the prompts.** - -Tip: It is **IMPORTANT** that the **Common Name** be set properly. Enter your fully qualified domain name \(FQDN\) here or, if you don’t have a FQDN, use your public IP address. For example, my FQDN for the chat server is `chat.inumio.com`. - -Save and Exit. - -### 5c. Set Key Permissions, Dhparams, Configure NGINX - -**Set permissions:** - -```text -sudo chmod 400 /etc/nginx/certificate.key -``` - -**Generate Strong Diffie Helman group** - -```text -sudo openssl dhparam -out /etc/nginx/dhparams.pem 2048 -``` - -**Configure Nginx:** - -```text -sudo nano /etc/nginx/sites-available/default -``` - -Delete the example in this file, and paste in the following: - -```bash -# HTTPS Server - server { - listen 443 ssl; - server_name chat.inumio.com; - - error_log /var/log/nginx/rocketchat_error.log; - - ssl_certificate /etc/nginx/certificate.crt; - ssl_certificate_key /etc/nginx/certificate.key; - ssl_dhparam /etc/nginx/dhparams.pem; - ssl_protocols TLSv1.2; - ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; - ssl_prefer_server_ciphers on; - ssl_session_cache shared:SSL:20m; - ssl_session_timeout 180m; - - location / { - proxy_pass http://chat.inumio.com:3000/; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_set_header Host $http_host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto https; - proxy_set_header X-Nginx-Proxy true; - proxy_redirect off; - } - } -``` - -**Edit the config** Change the server name and proxy\_pass to reflect your own details. - -Save and Exit. - -**Test the config & Restart nginx:** - -```text -sudo service nginx configtest && sudo service nginx restart -``` - -**TIP:** You can pinpoint problems in your nginx config using the following command - -```text -sudo nginx -t -``` - -## 6. Create the docker-compose.yml file & local directories - -#### Create docker-compose.yml file: - -To create a docker-compose file, please follow the instructions [here](https://docs.rocket.chat/installing-and-updating/docker-containers/docker-compose). - -**Create the directories:** - -```text -sudo mkdir -p /var/www/rocket.chat/data/runtime/db -sudo mkdir -p /var/www/rocket.chat/data/dump -``` - -**Create the docker-compose.yml file:** - -* Edit the ROOT\_URL value to be your FQDN. -* Edit the ROCKETCHAT\_URL to be your _public_ IP address. Keep the port \(3000\) the same. -* Edit ROCKETCHAT\_USER, ROCKETCHAT\_PASSWORD, and BOT\_NAME. -* If your Rocket.Chat docker instance is behind a proxy, set the additional env-variable "Accounts\_UseDNSDomainCheck" to "false" \(this only works, if these is a completely new deployment\) - -Save and Exit. - -Start the services by: - -```bash -docker-compose up -d -``` - -## 7. Automatic Startup & Crash Recovery - -**Create the upstart job for MongoDB** - -```text -sudo nano /etc/init/rocketchat_mongo.conf -``` - -```bash -description "MongoDB service manager for rocketchat" - -# Start MongoDB after docker is running -start on (started docker) -stop on runlevel [!2345] - -# Automatically Respawn with finite limits -respawn -respawn limit 99 5 - -# Path to our app -chdir /var/www/rocket.chat - -script - # Showtime - exec /usr/local/bin/docker-compose up mongo -end script -``` - -Save and Exit. - -**Create the upstart job for Rocket.Chat** - -```bash -sudo nano /etc/init/rocketchat_app.conf -``` - -```bash -description "Rocketchat service manager" - -# Start Rocketchat only after mongo job is running -start on (started rocketchat_mongo) -stop on runlevel [!2345] - -# Automatically Respawn with finite limits -respawn -respawn limit 99 5 - -# Path to our app -chdir /var/www/rocket.chat - -script - # Bring up rocketchat app and hubot - exec /usr/local/bin/docker-compose up rocketchat hubot -end script -``` - -Save and Exit. - -## 8. Reboot and Status check - -We're ready to start the show! With luck, you should be able to reboot, and the chat system will come online by itself. The first time the system runs, it will have to download a bunch of docker image files. You won't see this occurring when you log back in. It's important to allow the downloads to complete without interruption. - -After the downloads are extracted, the total combined installation is around 800 MB, so this initial downloading may take it awhile. On a commercial server with a fast connection, this will typically take a few minutes. - -**Restart the server:** - -```text -sudo reboot -``` - -**Reconnect via SSH, and do a systems check by viewing the docker containers:** - -```text -sudo docker ps -a -``` - -```text -[![docker ps -a](https://www.imageforge.us/images/c90bd55a7b357c20b18815a5560f43f3.png)](https://www.imageforge.us/image/60kNT) -``` - -As you can see, our three docker containers are up and running: Rocket.Chat, MongoDB, and Hubot. NOTE: You may see only one, or none at all if the downloads are still in progress. Be patient, and check it periodically. Eventually, it should look similar to our sample screenshot. If it does, congratulations, you did it! GREAT JOB! - -Next, let's try opening the web browser and going to your new chat room. Provided that your DNS is properly configured, you should be able to simply type your chatroom URL into the browser and open it up. - -**First try with HTTPS:** - -```text -https://chat.inumio.com -``` - -**If for some reason that fails, try HTTP:** **Open port 3000/tcp in the firewall, and reload to set the new policy** - -```text -sudo ufw allow 3000/tcp - -sudo ufw reload -``` - -**Try accessing in your web browser via HTTP** - -```text -http://chat.inumio.com:3000 -``` - -**PROBLEM?** See [Section 10: Troubleshooting](./#10-troubleshooting--faq) - -Once you've successfully reached your chat room login page, you need to register your admin account. By default, the first account to register on Rocket.Chat becomes the admin, so if your chat room is public, do this immediately in order to prevent someone else from registering and becoming the administrator. - -_Great! I'm in, but the bot is nowhere to be seen!_ - -No worries! In order to get your bot up and running, we must register it… - -## 9. Registering & Configuring Hubot, the chat robot - -Previously, we created the docker-compose.yml file. It's this file where we defined the basic attributes for Hubot. We set the bot name, password, room to join, and scripts to run. Before the bot can join the chat room, we must manually create the bot using the configuration details we provided in docker-compose.yml. - -[https://github.com/RocketChat/hubot-rocketchat\#creating-a-user-on-the-server](https://github.com/RocketChat/hubot-rocketchat#creating-a-user-on-the-server) - -You can now optionally login and set some of the preferences, such as bot avatar. When finished, log out of the bot account. - -With the bot account created, you can force it to join by simply rebooting the server, upon which the init script should automatically launch your chat room, and the bot should join the “General” room. - -For basic command help, in the chat message box, type BOTNAME help \(where BOTNAME is your bot's name\). - -## 10. Troubleshooting & FAQ - -### FAQ - -Q: _It works! But how do I add more functionality to the bot?_ A: You can add more scripts to the bot by adding them to the EXTERNAL\_SCRIPTS definitions: `nano /var/www/rocket.chat/docker-compose.yml` - -Find out more about Hubot scripts here: [https://github.com/RocketChat/hubot-rocketchat](https://github.com/RocketChat/hubot-rocketchat) and here: [https://github.com/hubot-scripts](https://github.com/hubot-scripts). Some of the available scripts for example: hubot-help, hubot-isup, hubot-4chan, hubot-strawpoll, hubot-seen, hubot-weather, hubot-hackerman, hubot-links, hubot-greetings, hubot-tell, hubot-geo, hubot-decides, hubot-praise, hubot-hello-ninja, hubot-thank-you, hubot-cool-ascii-faces, hubot-insulter, hubot-reddit - -Q: _How do I get email working?_ A: You need to configure SMTP parameters via the Administration UI \(from inside rocketchat\). - -### TROUBLESHOOTING - -**PROBLEM:** _I can't bring up my chat page in the browser using HTTPS!_ - -**POSSIBLE SOLUTIONS:** If you're able to resolve HTTP, but not HTTPS, you need to re-visit sections 4 & 5 of this guide. Make sure you've correctly entered the data in the hosts file, as well as in the /etc/nginx/sites-available/default file. - -**Check the nginx logs for any errors or other clues** - -```text -sudo cat /var/log/nginx/error.log -``` - -**Check the Firewall policy to make sure port 443 is open** - -```text -sudo ufw status -``` - -**Check your SSL installation** [https://www.digicert.com/help/](https://www.digicert.com/help/) - -**PROBLEM:** _I rebooted and waited forever for docker to download everything and start the chat room. NOTHING happened. It's like it didn't even try!_ - -**POSSIBLE SOLUTION:** If there are errors in the docker-compose.yml file, it will fail to bring up the rocketchat app. Improperly formatted yml will cause problems. - -**Check upstart jobs for log errors** - -```text -cd /var/log/upstart - -sudo cat rocketchat_mongo.log - -sudo cat rocketchat_app.log -``` - -Look for any errors in the output of those last two commands, which show the log contents of the upstart jobs we created in step 7. - -**Test your YML** [http://www.yamllint.com/](http://www.yamllint.com/) simply copy the contents of docker-compose.yml and paste into the tool. - -**Try to start it manually** - -```text -cd /var/www/rocket.chat - -/usr/local/bin/docker-compose up -``` - -If docker-compose doesn't throw an error and instead launches the job, then the problem is possibly in the upstart script. - -**PROBLEM:** _When I upload a file the server crashes!_ - -**POSSIBLE SOLUTION:** If you're running low on system resources, such as RAM, this can cause problems with not just performance, but stability. Make sure that you're not running out of memory, or have any other choke points, like not enough CPU, etc. One way to check is to issue the following command via SSH \(or console\) which runs TOP, a utility that will show valuable information about system resources and processes. - -```text -sudo top -``` - -With TOP running, try to replicate the problem while watching TOP for high loads, overloaded CPU, etc. While Rocket.Chat can be run on a single core with 512MB of memory, that's really not enough for stable performance. If you're seeing high values in TOP, consider upgrading your server to at least 1GB or RAM, or more. - -## 11. TODO - -* Add section for updating & backing up - -## 12. KNOWN ISSUES - -* \[FIXED\] Issue \#978: Avatars not saving, or crashing the server. [https://github.com/RocketChat/Rocket.Chat/issues/978](https://github.com/RocketChat/Rocket.Chat/issues/978) -* If you are saving your avatars inside the container, they will be lost after a "docker pull" update job - -## See Also - -You can also deploy using Docker and Docker Compose by following one of these guides: - -* [Docker Compose](docker-compose.md) -* [Available Images](available-images.md) - diff --git a/installing-and-updating/docker-containers/available-images.md b/installing-and-updating/docker-containers/available-images.md deleted file mode 100644 index 7aced83639..0000000000 --- a/installing-and-updating/docker-containers/available-images.md +++ /dev/null @@ -1,42 +0,0 @@ -# Available Images - -Rocket.Chat is a rapidly-moving FOSS project. We maintain 3 Docker images for the diverse needs of our global user community. To use these images you will need to have [Docker](https://docs.docker.com/install/) installed and operational. - -Discovering existing releases: You can select the release you need from our [GitHub Release Page](https://github.com/RocketChat/Rocket.Chat/releases). Here's a description of our [current branching strategy](). - -## Official image \(stable and tested\) - -The [Official Docker Images Repository](https://docs.docker.com/docker-hub/official_images/) is where Rocket.Chat's Official, stable image is maintained and controlled by Docker, and reviewed by the Docker committee. - -```bash -docker pull rocket.chat -``` - -## Latest Release Image - -This is an image that is maintained at Rocket.Chat's own docker repository. The release may be from the develop or master branch. - -```bash -docker pull registry.rocket.chat/rocketchat/rocket.chat:latest -``` - -## Specific Release Image - -This is an image that is maintained at Rocket.Chat's own docker repository. It is associated with a release build. - -```bash -docker pull registry.rocket.chat/rocketchat/rocket.chat:X.X.X -``` - -### Discovering existing releases - -You can select the release you need from our [DockerHub Tags](https://hub.docker.com/r/rocketchat/rocket.chat/tags/). - -#### Bleeding-edge untested develop build image - -This is an image that is maintained at Rocket.Chat's own docker repository. It is updated from our `develop` \(untested\) branch, that is, absolute latest, for those who needs to work with latest code. - -```bash -docker pull registry.rocket.chat/rocketchat/rocket.chat:develop -``` - diff --git a/installing-and-updating/docker-containers/docker-compose.md b/installing-and-updating/docker-containers/docker-compose.md deleted file mode 100644 index 8b3b2e1e4b..0000000000 --- a/installing-and-updating/docker-containers/docker-compose.md +++ /dev/null @@ -1,46 +0,0 @@ -# Docker Compose - -Instead of using the standard Docker commands, you may wish for a bit more automated management of the deployment. This is where the use of Docker-compose may come in handy. - -* Make sure you have [Docker](https://docs.docker.com/install) and [Docker-compose](https://docs.docker.com/compose/install/) installed and operational. -* Create `docker-compose.yml` based on [our example](https://github.com/RocketChat/Rocket.Chat/blob/develop/docker-compose.yml). This is the ONLY file you will need. You can create this file on your own machine by copy and pasting the content. -* Edit `image: registry.rocket.chat/rocketchat/rocket.chat:latest` to specify which image you wish to use \(see section [Docker Images Available](available-images.md) \) -* Edit `ROOT_URL` to match your domain name or IP address - -You can download our docker-compose.yaml: - -```bash -curl -L https://raw.githubusercontent.com/RocketChat/Rocket.Chat/develop/docker-compose.yml -o docker-compose.yml -``` - -Start the stack with: - -```bash -docker-compose up -d -``` - -This will: - -* Start a MongoDB service named `mongo`. -* Start a service named `mongo-init-replica` that will wait for `mongo` to be ready, connect to it, initialize it and terminate itself \(`mongo` will keep running\). -* Start a service `rocketchat`, that will also wait for `mongo` to be ready, the `mongo-init-replica` to initialize, and then run Rocket.Chat. - -Mongo supports 24 x 7 operations and live backup. You should not need to restart it too frequently. See [mongodb documentations](https://docs.mongodb.org/manual/) for proper operation and management of a mongo server. - -Optionally, if you want to manage your messages and configuration information, edit the file again to uncomment the volume mounts. Make sure you have a `data` subdirectory to mount and store the data. - -Optionally, if you want a bot, so you don't have to talk to yourself, after you've created an admin user and also a bot user, edit the file `docker-compose.yml` again to change the variables `ROCKETCHAT_USER` and `ROCKETCHAT_PASSWORD` in the hubot section and then start up hubot: - -```text -docker-compose up -d hubot -``` - -To update the `rocketchat` docker image to the latest version, you can use the following commands. Your data should not be affected by this, since it's located in the `mongo` image. - -```text -docker pull registry.rocket.chat/rocketchat/rocket.chat:latest -docker-compose stop rocketchat -docker-compose rm rocketchat -docker-compose up -d rocketchat -``` - diff --git a/installing-and-updating/docker-containers/high-availability-install.md b/installing-and-updating/docker-containers/high-availability-install.md deleted file mode 100644 index 4d286d58c0..0000000000 --- a/installing-and-updating/docker-containers/high-availability-install.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -description: Install Rocket.Chat as HA with mongodb replicaset as backend ---- - -# High Availability - -## Install MongoDB Replicaset - -* Use [https://medium.com/@gargar454/deploy-a-mongodb-cluster-in-steps-9-using-docker-49205e231319\#.8dfln7n8c](https://medium.com/@gargar454/deploy-a-mongodb-cluster-in-steps-9-using-docker-49205e231319#.8dfln7n8c) to setup the mongodb replicaset -* Create a user called oploguser with rights on local oplog database: - - `db.createUser({user: "oploguser", pwd: "password", roles: [{role: "read", db: "local"}, {role: "clusterMonitor", db: "admin"}]})` - -* Create rocket user to authenticate with rocketchat database: - - `db.createUser({user: "rocket", pwd: "password", roles: [{role: "readWrite", db: "rocketchat"}, {role: "clusterMonitor", db: "admin"}]})` - -## Create rocket.chat docker container - -* Use example docker-compose.yaml in repo -* Fill the INSTANCE\_IP env with the local ip of the docker-host \(in a 3 node setup this is unique on every host\) -* Fill the passwords from rocket and oplogger -* Change the IP of every host in the example docker-compose.yaml -> extra\_hosts inserts host entries so each rocketchat-container could resolve the others by the name -* Be sure that the instances could communicate on port 3000 with each other, this is important to see messages on other hosts directly - -```text -rocketchat: - image: registry.rocket.chat/rocketchat/rocket.chat:latest - environment: - - PORT=3000 - - ROOT_URL=https://chat.domain.de - - MONGO_URL=mongodb://rocket:password@rocket-1:27017,rocket-2:27017,rocket-3:27017/rocketchat?authSource=admin&replicaSet=rs0&w=majority - - MONGO_OPLOG_URL=mongodb://oploguser:password@rocket-1:27017,rocket-2:27017,rocket-3:27017/local?authSource=admin&replicaSet=rs0 - - INSTANCE_IP= - ports: - - 3000:3000 - extra_hosts: - - "rocket-1:10.250.250.13" - - "rocket-2:10.250.250.14" - - "rocket-3:10.250.250.17" -``` - -### Create Loadbalancer - -* Now setup up a [reverse proxy](../manual-installation/configuring-ssl-reverse-proxy.md) on each host to terminate ssl on each rocket.chat node or terminate ssl on the loadbalancer, this is up to you. -* See [Nginx multi instance reverse proxy example](https://docs.rocket.chat/installation/manual-installation/multiple-instances-to-improve-performance#update-your-nginx-proxy-config) -* Setup a loadbalancer to reach each instance on 443 or 3000 \(depends on the choice above\) - diff --git a/installing-and-updating/docker-containers/mongodb-mmap-to-wiredtiger-migration.md b/installing-and-updating/docker-containers/mongodb-mmap-to-wiredtiger-migration.md deleted file mode 100644 index a029bd1ed2..0000000000 --- a/installing-and-updating/docker-containers/mongodb-mmap-to-wiredtiger-migration.md +++ /dev/null @@ -1,144 +0,0 @@ ---- -description: >- - Migrate your existing mmap based MongoDB instance into a wiredTiger one - without with as little downtime as possible. ---- - -# MongoDB mmap to wiredTiger migration - -Starting with the major release 4.X.Y of Rocket.Chat, MongoDB has to be setup with a _WiredTiger_ storage engine rather than the deprecated _mmap_ one. This is mandatory, if you plan to upgrade to one of the future Rocket.Chat versions and has to be prepared before initiating the application upgrade. - -[This project/repository](https://github.com/RocketChat/docker-mmap-to-wiredtiger-migration) aims to help out people migrating their existing dockerized, _mmap_ based MongoDB installation into a _WiredTiger_ one. - -### Requirements - -* Docker-based Rocket.Chat deployment -* MongoDB instance with _mmap_ storage engine - -### Quick usage - -1. Make sure you have met all requirements listed above. -2. Create a database dump to ensure a backup is in place in case anything goes south! -3. Stop running Rocket.Chat system. -4. Update `docker-compose.yml` to include the migration container/logic. -5. Start up containers, wait for the migration to be completed. -6. Once finished, Rocket.Chat should be up again - just running with a WiredTiger MongoDB storage engine now. - -### Detailed usage - -#### Assumptions - -* Your existing `docker-compose.yml` file is located within `/opt/rocketchat` -* Your "mongo" container has a `/data/db` volume mapped, that holds the existing \(mmap\) data files of MongoDB -* Your "mongo" container has a `/dump` volume mapped, that is accessible from the host and can be used to store the backup/dump - -#### Step-by-step guide - -1. Create a database dump of your existing MongoDB, save it on the host to have a backup just in case: - - ```bash - cd /opt/rocketchat - docker-compose exec mongo mongodump --archive=/dump/mmap --gzip - cp /data/dump/mmap ~/mongo-mmap-dump.gzip - ``` - -2. Stop your existing Rocket.Chat system including all its services \(especially MongoDB\). - - ```bash - docker-compose stop - ``` - -3. [Download the repository](https://github.com/RocketChat/docker-mmap-to-wiredtiger-migration/archive/main.zip) or clone it using `git` and extract it to `/opt/rocketchat-migration`: - - ```bash - git clone https://github.com/RocketChat/docker-mmap-to-wiredtiger-migration /opt/rocketchat-migration - ``` - -4. Copy the `docker/` folder that holds the Dockerfile of the custom migrator image into your existing compose folder: - - ```bash - cp -r /opt/rocketchat-migration/docker /opt/rocketchat/docker - ``` - -5. Backup and rename your current `docker-compose.yml` file to `docker-compose.mmap.yml`: - - ```bash - mv /opt/rocketchat/docker-compose.yml /opt/rocketchat/docker-compose.mmap.yml - ``` - -6. Copy the new `docker-compose.yml` file into your compose folder: - - ```bash - cp /opt/rocketchat-migration/docker-compose.yml /opt/rocketchat/docker-compose.yml - ``` - -7. Apply any possible customizations that you had in your old `docker-compose.mmap.yml` file to the new one \(volume, port mappings, service names, etc.\) -8. Run `diff` and make sure it looks \(more or less\) like the output below when you compare your old and new `docker-compose.yml` files: - - ```bash - diff /opt/rocketchat/docker-compose.mmap.yml /opt/rocketchat/docker-compose.yml - ``` - - ```diff - 8c8 - < "for i in `seq 1 30`; do - --- - > "for (( ; ; )); do - 11c11 - < echo \"Tried $$i times. Waiting 5 secs...\"; - --- - > echo \"Could not start Rocket.Chat. Waiting 5 secs...\"; - 37c37,45 - < command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1 - --- - > command: > - > bash -c - > "while [ ! -f /data/db/WiredTiger ]; do - > echo \"wiredTiger migration hasn't started yet. Waiting 30 secs...\"; - > sleep 30; - > done; - > docker-entrypoint.sh mongod --oplogSize 128 --replSet rs0 --storageEngine=wiredTiger;" - > depends_on: - > - migrator - 40a49,53 - > migrator: - > build: ./docker/ - > volumes: - > - ./data/db:/data/db - > - 45c58 - < "for i in `seq 1 30`; do - --- - > "for (( ; ; )); do - 51c64 - < echo \"Tried $$i times. Waiting 5 secs...\"; - --- - > echo \"Could not reach MongoDB. Waiting 5 secs ...\"; - ``` - - All changes above, summarized: - - * `for` loops slightly adjusted for both "rocketchat" and "mongo-init-replica" to run them endlessly - * Adjusted `command` property for "mongo" service: - * `while` loop to check for initiated WiredTiger migration \(in `$MONGO_DATA_DIR/WiredTiger`\) - * Use [custom entrypoint](https://github.com/RocketChat/docker-mmap-to-wiredtiger-migration/blob/main/docker/entrypoint.sh) that applies the migration - * Use `--storageEngine=wiredTiger` switch instead of `--storageEngine=mmapv1` - * Added "migrator" service - -9. Build the "migrator" image and start up the containers again: - - ```bash - docker-compose up --build -d - ``` - -10. Wait for the migration to be completed - optionally check logs of "migrator" and "mongo" containers: - - ```bash - docker-compose logs -f migrator # once that one has completed the migration ... - docker-compose logs -f mongo # ... check if the mongo one already took over - ``` - -### Help and support - -If you encounter any problems during the migration or in case you have general feedback or improvement ideas, feel free to create an issue in [the GitHub repository](https://github.com/RocketChat/docker-mmap-to-wiredtiger-migration). - diff --git a/installing-and-updating/docker-containers/systemd.md b/installing-and-updating/docker-containers/systemd.md deleted file mode 100644 index 2629d90bbb..0000000000 --- a/installing-and-updating/docker-containers/systemd.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -description: Deploy Rocket.Chat to Linux that run on systemd ---- - -# systemd - -## Prerequisite - -You need to have [docker](https://docs.docker.com/linux/started/) installed. - -## How to run Rocket.Chat on systemd - -1. Create a docker network `docker network create rocketchat_default` -2. Create two service files: mongo.service and rocketchat.service -3. Enable the service files -4. Run the mongo.service -5. Create the mongo-init-replica to enable opolog -6. Run the rocketchat.service - -If you reboot the server, the services will start automatically in the right order. - -## Service Files - -mongo.service: - -```text -[Unit] -Description=mongo -Requires=docker.service -After=docker.service - -[Service] -EnvironmentFile=/etc/environment -User=dockeruser -Restart=always -TimeoutStartSec=0 -ExecStartPre=-/usr/bin/docker kill mongo -ExecStartPre=-/usr/bin/docker rm mongo -ExecStartPre=-/usr/bin/docker pull mongo:3.2 - - -ExecStart=/usr/bin/docker run \ - --name mongo \ - -v .../path/to/data/db:/data/db \ - -v .../path/to/data/dump:/data/dump \ <--optional - --net=rocketchat_default \ - mongo:3.2 \ - mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1 - -ExecStop=-/usr/bin/docker kill mongo -ExecStop=-/usr/bin/docker rm mongo -``` - -rocketchat.service: - -```text -[Unit] -Description=rocketchat -Requires=docker.service -Requires=mongo.service -After=docker.service -After=mongo.service - -[Service] -EnvironmentFile=/etc/environment -User=dockeruser -Restart=always -TimeoutStartSec=0 -ExecStartPre=-/usr/bin/docker kill rocketchat -ExecStartPre=-/usr/bin/docker rm rocketchat -ExecStartPre=-/usr/bin/docker pull registry.rocket.chat/rocketchat/rocket.chat:latest - -ExecStart=/usr/bin/docker run \ - --name rocketchat \ - -v .../path/to/uploads:/app/uploads \ - -e MONGO_OPLOG_URL=mongodb://mongo:27017/local \ - -e MONGO_URL=mongodb://mongo:27017/rocketchat \ - -e ROOT_URL=https://sub.domain.xx \ - --link mongo:mongo \ - --net=rocketchat_default \ - --expose 3000 \ - registry.rocket.chat/rocketchat/rocket.chat:latest - -ExecStop=-/usr/bin/docker kill rocketchat -ExecStop=-/usr/bin/docker rm rocketchat -``` - -## Build the mongo-init-replica container \(only run once\) - -Execute: - -```text -docker run \ - --name mongo-init-replica \ - --link mongo:mongo \ - --rm \ - --net=rocketchat_default \ - mongo:3.2 \ - mongo mongo/rocketchat --eval "rs.initiate({ _id: 'rs0', members: [ { _id: 0, host: 'localhost:27017' } ]})" -``` - -## Reverse Proxy - -If you are running a reverse proxy make sure it is joining the rocketchat\_default network. Add `ExecStartPre=-/usr/bin/docker network connect rocketchat_default Nginx` to the rocketchat.service if you Proxy container is named `Nginx` and be sure to configure it correctly. - -If you choose to use a non-dockerized nginx as a reverse proxy, please not that you then have to add `-p your-host-port:3000` to the `ExecStart` command of `rocketchat.service` and then configure your vhost to pass to `your-host-port`. - -## Backup - -All data will be hourly backed up to `/data/domains/example.org/data` folder. We advise to copy this folder to a remote location in case of hardware failure. - -## Questions - -If you have any questions, don't hesitate to open issues. - diff --git a/installing-and-updating/hardware-requirements.md b/installing-and-updating/hardware-requirements.md deleted file mode 100644 index ba45aa717a..0000000000 --- a/installing-and-updating/hardware-requirements.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -description: Minimum Requirements for Server Deployment ---- - -# Hardware Requirements - -The actual requirement varies greatly with: - -* Number of concurrently active users -* Number of actually connected devices per user -* Activities of the users - solely text-based messaging takes minimal resources; while file sharing and jpg uploads will consume more resources -* Bot or integration activity level; different bot and/or integrations have different requirements - -The following are sized for the minimal cost deployment unit available for bare-metal server and cloud VPS. - -## Bare-metal Server - -* Intel Xeon E5-2603 v4 \(or equivalent\) \[1.7 GHz, 6 cores, $213 USD\] -* 4 GB RAM -* 500 GB hard disk or larger -* Ubuntu 18.04 LTS \(with or without docker\) - -The above minimal hardware configuration is ideal for corporate or group with up to 1,000 users, up to 300 concurrently active and moderate levels of mixed uploads, sharing, and bot activities. - -## VPS \(minimal\) - -* Single core \(2 GHz\) -* 1 GB RAM -* 30 GB of SSD - -The above minimal virtual configuration, when not over-provisioned by the provider, is ideal for small deployments of up to 200 users, up to 50 concurrently active and minimal level of mixed uploads, sharing, and bot activities. - -## VPS \(recommended\) - -* Dual-core \(2 GHz\) -* 2 GB RAM -* 40 GB of SSD - -The above virtual configuration, when not over-provisioned by the provider, can accommodate small deployments of up to 500 users, up to 100 concurrently active and moderate levels of mixed uploads, sharing, and bot activities. - -## Really Small office Server - -#### \(Under $100 on-premise server for small group\) - -* Raspberry Pi 3 or Pi 2 \($35 all-in-one system\) -* 4 cores 1 GB memory -* 32 GB SD card \($15\) - -The above minimal configuration can accommodate a small office or group of up to 50 users and up to 25 concurrently active and moderate levels of mixed uploads, sharing, and bot activities. This is based on a managed MongoDB service \(such as [mlab.com](https://mlab.com)\). Running mongo local to a Pi is not recommended at this time. - diff --git a/installing-and-updating/manual-installation/README.md b/installing-and-updating/manual-installation/README.md deleted file mode 100644 index c33f107af0..0000000000 --- a/installing-and-updating/manual-installation/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Manual Installation - -Here you can find guides on how to manually install and manage Rocket.Chat server in different Operational systems: - -* [CentOS](centos.md) -* [Debian](debian.md) -* [Multiple Instances to Improve Performance](multiple-instances-to-improve-performance.md) -* [Migrating Meteor Mongo](migrating-meteor-mongo.md) -* [RedHat](redhat.md) -* [Ubuntu](https://docs.rocket.chat/installation/manual-installation/ubuntu) -* [Configuring Let's Encrypt Reverse Proxy](https://github.com/RocketChat/docs/tree/993b6977b995e9136c1f585e318301099f4e97c1/installation/manual-installation/lets-encrypt-reverse-proxy.md) -* [Configuring SSL Reverse Proxy](configuring-ssl-reverse-proxy.md) -* [PM2, Systemd, Upstart](pm2-systemd-upstart.md) -* [Running in a sub folder](running-in-a-sub-folder.md) - diff --git a/installing-and-updating/manual-installation/centos.md b/installing-and-updating/manual-installation/centos.md deleted file mode 100644 index 5e2fe4ad47..0000000000 --- a/installing-and-updating/manual-installation/centos.md +++ /dev/null @@ -1,164 +0,0 @@ -# Rocket.Chat in CentOS - -This installation guide was tested in the following environment: - -* Rocket.Chat 3.9.0 -* OS: CentOS 7.6 -* Mongodb 4.0.9 -* NodeJS 12.18.4 - -## Install necessary dependency packages - -Update package list and configure yum to install the official MongoDB packages with the following yum repository file: - -```bash -sudo yum -y check-update -``` - -```bash -cat << EOF | sudo tee -a /etc/yum.repos.d/mongodb-org-4.0.repo -[mongodb-org-4.0] -name=MongoDB Repository -baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/ -gpgcheck=1 -enabled=1 -gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc -EOF -``` - -Configure Node.js to be installed via package manager: - -```bash -sudo yum install -y curl && curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash - -``` - -Install build tools, MongoDB, nodejs and graphicsmagick: - -```bash -sudo yum install -y gcc-c++ make mongodb-org nodejs -``` - -```bash -sudo yum install -y epel-release && sudo yum install -y GraphicsMagick -``` - -Using npm install inherits and n, and the node version required by Rocket.Chat: - -```bash -sudo npm install -g inherits n && sudo n 12.18.4 -``` - -## Install Rocket.Chat - -Download the latest Rocket.Chat version: - -```bash -curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz -``` - -```bash -tar -xzf /tmp/rocket.chat.tgz -C /tmp -``` - -Install \(this guide uses /opt but feel free to choose a different directory\): - -```bash -cd /tmp/bundle/programs/server && npm install -``` - -```bash -sudo mv /tmp/bundle /opt/Rocket.Chat -``` - -## Configure the Rocket.Chat service - -Add the rocketchat user, set the right permissions on the Rocket.Chat folder and create the Rocket.Chat service file: - -```bash -sudo useradd -M rocketchat && sudo usermod -L rocketchat -``` - -```bash -sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat -``` - -```bash -cat << EOF |sudo tee -a /lib/systemd/system/rocketchat.service -[Unit] -Description=The Rocket.Chat server -After=network.target remote-fs.target nss-lookup.target nginx.service mongod.service -[Service] -ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js -StandardOutput=syslog -StandardError=syslog -SyslogIdentifier=rocketchat -User=rocketchat -Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 ROOT_URL=http://localhost:3000/ PORT=3000 -[Install] -WantedBy=multi-user.target -EOF -``` - -Open the Rocket.Chat service file just created \(`/usr/lib/systemd/system/rocketchat.service`\) using sudo and your favourite text editor, and change the ROOT\_URL environmental variable to reflect the URL you want to use for accessing the server \(optionally change MONGO\_URL, MONGO\_OPLOG\_URL and PORT\): - -```bash -MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 -MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 -ROOT_URL=http://your-host-name.com-as-accessed-from-internet:3000 -PORT=3000 -``` - -Setup storage engine and replication for MongoDB \(mandatory for versions > 1\), and enable and start MongoDB and Rocket.Chat: - -```bash -sudo sed -i "s/^# engine:/ engine: mmapv1/" /etc/mongod.conf -``` - -```bash -sudo sed -i "s/^#replication:/replication:\n replSetName: rs01/" /etc/mongod.conf -``` - -```bash -sudo systemctl enable mongod && sudo systemctl start mongod -``` - -```bash -mongo --eval "printjson(rs.initiate())" -``` - -```bash -sudo systemctl enable rocketchat && sudo systemctl start rocketchat -``` - -## Optional configurations - -[Configure firewall rule](optional-configurations.md) [Configure a HTTP reverse proxy to access Rocket.Chat server](configuring-ssl-reverse-proxy.md) \[Configure mongo access control\] \[Configure production values for mongodb\] - -## Configure your Rocket.Chat server - -Open a web browser and access the configured ROOT\_URL \(`http://your-host-name.com-as-accessed-from-internet:3000`\), follow the configuration steps to set an admin account and your organization and server info. - -## ZLIB version problem - -Some users had experienced problems starting rocketchat server in CentOS because their zlib version is not compatible with rocket.chat. - -If you find an error message similar to the following in the logs: - -```bash -Exception in callback of async function: Error: /lib64/libz.so.1: version `ZLIB_1.2.9' not found -``` - -Add this environmental variable in the Rocket.Chat service file \(/usr/lib/systemd/system/rocketchat.service\): - -Environment=LD\_PRELOAD=/opt/Rocket.Chat/programs/server/npm/node\_modules/sharp/vendor/lib/libz.so - -## Troubleshooting - -**502 Bad Gateway** - -If your installing Rocket.Chat on CentOS or RHEL you may encounter a 502 Bad Gateway error after setting up setup a reverse proxy with Nginx. To fix this you need to enable loopback for your upstream in SELinux. - -```text -setsebool -P httpd_can_network_connect 1 -``` - diff --git a/installing-and-updating/manual-installation/configuring-ssl-reverse-proxy.md b/installing-and-updating/manual-installation/configuring-ssl-reverse-proxy.md deleted file mode 100644 index 0d88025e76..0000000000 --- a/installing-and-updating/manual-installation/configuring-ssl-reverse-proxy.md +++ /dev/null @@ -1,180 +0,0 @@ -# Configuring SSL Reverse Proxy - -Rocket.Chat is a middle tier application server, by itself it does not handle SSL. However, Rocket.Chat works well with several industrial grade, battle-tested reverse proxy servers \(see nginx below, for example\) that you can configure to handle SSL. - -**Note:** You must use the outside https address for the value at `ROOT_URL` in \[\[Section 3\|Deploy-Rocket.Chat-without-docker\#3-download-rocketchat\]\] above. This includes the `https://` and leave off the port number. So instead of `ROOT_URL=http://localhost:3000` use something like `https://your_hostname.com` - -**Note:** When setting up a reverse proxy in front of your Rocket.Chat server you need to configure Rocket.Chat to use the correct clientAddress. The rate limiter \(and maybe other features\) will not work properly if this is not done. Set `HTTP_FORWARDED_COUNT` Environment variable to the correct number of proxies in front of Rocket.Chat. If you are using snap there's a documentation how to do it [here](https://docs.rocket.chat/installation/manual-installation/ubuntu/snaps/#how-do-i-change-other-environmental-variables-in-my-snap) - -## Running behind a nginx SSL Reverse Proxy - -**Note:** These instructions were written for Ubuntu. For Amazon Linux, the conf file for the proxy goes in `/etc/nginx/conf.d/` and needs to have a discrete name ending in `.conf` and nginx is installed using `yum -y install nginx`. - -Run this as root: - -```text -apt-get install nginx -``` - -Add your private key to `/etc/nginx/certificate.key` - -Lock down permissions: `chmod 400 /etc/nginx/certificate.key` - -Add your certificate to `/etc/nginx/certificate.crt` - -Edit `/etc/nginx/sites-enabled/default` or if you use nginx from docker `/etc/nginx/conf.d/default.conf` and be sure to use your actual hostname in lieu of the sample hostname "your\_hostname.com" below. - -```text -# Upstreams -upstream backend { - server 127.0.0.1:3000; -} - -# HTTPS Server -server { - listen 443; - server_name your_hostname.com; - - # You can increase the limit if your need to. - client_max_body_size 200M; - - error_log /var/log/nginx/rocketchat.access.log; - - ssl on; - ssl_certificate /etc/nginx/certificate.crt; - ssl_certificate_key /etc/nginx/certificate.key; - ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don’t use SSLv3 ref: POODLE - - location / { - proxy_pass http://backend; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_set_header Host $http_host; - - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto https; - proxy_set_header X-Nginx-Proxy true; - - proxy_redirect off; - } -} -``` - -Restart Nginx: `service nginx restart` - -## Running under Plesk Onyx behind Nginx - -Plesk Onyx has now a docker installation and Nginx proxy docker rule generator built in, that doesn't support adding custom directives. Disable it and add the rules manually in the additional Nginx directives space. A scheme follows \(replace 30000 with your external docker mapped port\). - -```text -#manual extension docker with socket upgrade begin -location ~ ^/.* { - proxy_pass http://0.0.0.0:3000; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_set_header X-Forwarded-Proto http; - proxy_set_header X-Nginx-Proxy true; - proxy_http_version 1.1; - - proxy_redirect off; -} - -#extension docker end -``` - -## Running behind an Apache SSL Reverse Proxy - -**Note:** You must use the outside https address for the value at `ROOT_URL` in \[\[Section 3\|Deploy-Rocket.Chat-without-docker\#3-download-rocketchat\]\] above. This includes the `https://` and leave off the port number. So instead of `ROOT_URL=http://localhost:3000` use something like `https://your_hostname.com` - -Run this as root: - -```text -apt-get update -apt-get install apache2 -a2enmod proxy_http -a2enmod proxy -a2enmod ssl -a2enmod proxy_wstunnel -a2enmod rewrite -``` - -Add your private key to `/etc/ssl/private/chat.domain.com.key` - -Lock down permissions: `chmod 400 /etc/ssl/private/chat.domain.com.key` - -Add your certificate to `/etc/ssl/certs/chat.domain.com.crt` - -Add your intermediate to `/etc/ssl/certs/intermediate.ca.pem` - -Edit `/etc/apache2/sites-enabled/rocketchat.conf` and be sure to use your actual hostname in lieu of the sample hostname "your\_hostname.com" below. - -```text - - ServerAdmin it@domain.com - ServerName chat.domain.com - - LogLevel info - ErrorLog /var/log/chat.domain.com_error.log - TransferLog /var/log/chat.domain.com_access.log - - SSLEngine On - SSLCertificateFile /etc/ssl/certs/chat.domain.com.crt - SSLCertificateKeyFile /etc/ssl/private/chat.domain.com.key - SSLCertificateChainFile /etc/ssl/certs/intermediate.ca.pem - - - Require all granted - - - RewriteEngine On - RewriteCond %{HTTP:CONNECTION} Upgrade [NC] - RewriteCond %{HTTP:Upgrade} =websocket [NC] - RewriteRule /(.*) ws://localhost:3000/$1 [P,L] - RewriteCond %{HTTP:Upgrade} !=websocket [NC] - RewriteRule /(.*) http://localhost:3000/$1 [P,L] - - ProxyPassReverse / http://localhost:3000/ - -``` - -Restart Apache: `service apache2 restart` - -## Running behind a Caddy Reverse Proxy with Free SSL - -First, download [Caddy](https://caddyserver.com/) - -`curl https://getcaddy.com | bash` - -Now Caddy is installed, but you still need a service to run Caddy http server on the background. - -You can find services backed by the community [here](https://github.com/mholt/caddy/tree/master/dist/init) - -You must have at least the port **443** opened so the Caddy server will request an SSL certificate from Let's Encrypt - -You can also open the port 80 to redirect http requests to https. - -Open `/etc/caddy/Caddyfile` - -Insert - -```text -your_domain.com { - proxy / 127.0.0.1:3000 { - header_upstream X-Forwarded-Proto {scheme} - header_upstream X-Forwarded-For {host} - header_upstream Host {host} - websocket - } -} -``` - -## Multi Instance Nginx reverse proxy - -Here is a link to a [Nginx multi instance reverse proxy example](multiple-instances-to-improve-performance.md) - diff --git a/installing-and-updating/manual-installation/debian.md b/installing-and-updating/manual-installation/debian.md deleted file mode 100644 index 94b24a4bed..0000000000 --- a/installing-and-updating/manual-installation/debian.md +++ /dev/null @@ -1,133 +0,0 @@ -# Rocket.Chat on Debian - -This installation guide was tested in the following environment: - -* Rocket.Chat 3.9.0 -* OS: Debian 9.7 -* Mongodb 4.0.9 -* NodeJS 12.18.4 - -## Install necessary dependency packages - -Update package list and configure apt to install the official MongoDB packages with the following repository file: - -```bash -sudo apt-get -y update -``` - -```bash -sudo apt-get install -y dirmngr gnupg && sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 -``` - -```bash -echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list -``` - -Configure Node.js to be installed via package manager: - -```bash -sudo apt-get -y update && sudo apt-get install -y curl && curl -sL https://deb.nodesource.com/setup_12.x | sudo bash - -``` - -Install build tools, MongoDB, nodejs, fontconfig and graphicsmagick: - -```bash -sudo apt-get install -y build-essential mongodb-org nodejs fontconfig graphicsmagick -``` - -Using npm install inherits and n, and the node version required by Rocket.Chat: - -```bash -sudo npm install -g inherits n && sudo n 12.18.4 -``` - -## Install Rocket.Chat - -Download the latest Rocket.Chat version: - -```bash -curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz -``` - -```bash -tar -xzf /tmp/rocket.chat.tgz -C /tmp -``` - -Install \(this guide uses /opt but feel free to choose a different directory\): - -```bash -cd /tmp/bundle/programs/server && npm install -``` - -```bash -sudo mv /tmp/bundle /opt/Rocket.Chat -``` - -## Configure the Rocket.Chat service - -Add the rocketchat user, set the right permissions on the Rocket.Chat folder and create the Rocket.Chat service file: - -```bash -sudo useradd -M rocketchat && sudo usermod -L rocketchat -``` - -```bash -sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat -``` - -```bash -cat << EOF |sudo tee -a /lib/systemd/system/rocketchat.service -[Unit] -Description=The Rocket.Chat server -After=network.target remote-fs.target nss-lookup.target nginx.service mongod.service -[Service] -ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js -StandardOutput=syslog -StandardError=syslog -SyslogIdentifier=rocketchat -User=rocketchat -Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 ROOT_URL=http://localhost:3000/ PORT=3000 -[Install] -WantedBy=multi-user.target -EOF -``` - -Open the Rocket.Chat service file just created \(`/lib/systemd/system/rocketchat.service`\) using sudo and your favourite text editor, and change the ROOT\_URL environmental variable to reflect the URL you want to use for accessing the server \(optionally change MONGO\_URL, MONGO\_OPLOG\_URL and PORT\): - -```bash -MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 -MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 -ROOT_URL=http://your-host-name.com-as-accessed-from-internet:3000 -PORT=3000 -``` - -Setup storage engine and replication for MongoDB \(mandatory for versions > 1\), and enable and start MongoDB and Rocket.Chat: - -```bash -sudo sed -i "s/^# engine:/ engine: wiredTiger/" /etc/mongod.conf -``` - -```bash -sudo sed -i "s/^#replication:/replication:\n replSetName: rs01/" /etc/mongod.conf -``` - -```bash -sudo systemctl enable mongod && sudo systemctl start mongod -``` - -```bash -mongo --eval "printjson(rs.initiate())" -``` - -```bash -sudo systemctl enable rocketchat && sudo systemctl start rocketchat -``` - -## Optional configurations - -[Configure firewall rule](optional-configurations.md) [Configure a HTTP reverse proxy to access Rocket.Chat server](configuring-ssl-reverse-proxy.md) \[Configure mongo access control\] \[Configure production values for mongodb\] - -## Configure your Rocket.Chat server - -Open a web browser and access the configured ROOT\_URL \(`http://your-host-name.com-as-accessed-from-internet:3000`\), follow the configuration steps to set an admin account and your organization and server info. - diff --git a/installing-and-updating/manual-installation/kali-linux.md b/installing-and-updating/manual-installation/kali-linux.md deleted file mode 100644 index 34e6be4600..0000000000 --- a/installing-and-updating/manual-installation/kali-linux.md +++ /dev/null @@ -1,135 +0,0 @@ -# Kali Linux - -This installation guide was tested in the following environment: - -* Rocket.Chat 3.9.0 -* OS: Kali Rolling 2020.2 -* Mongodb 4.0.19 -* NodeJS 12.18.4 - -As Kali is a distribution based on Debian the installation process is pretty the same, only adding some MongoDB dependencies installation. - -## Install necessary dependency packages - -Update package list and configure apt to install the official MongoDB packages with the following repository file: - -```bash -sudo apt-get -y update -``` - -```bash -sudo apt-get install -y dirmngr gnupg && sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 -``` - -```bash -echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list -``` - -Configure Node.js to be installed via package manager: - -```bash -sudo apt-get -y update && sudo apt-get install -y curl && curl -sL https://deb.nodesource.com/setup_12.x | sudo bash - -``` - -Install build tools, MongoDB and dependencies \(libcurl3 and mongoDB server\), nodejs and graphicsmagick: - -```bash -sudo apt-get install -y build-essential libcurl3 mongodb-org-server mongodb-org nodejs graphicsmagick -``` - -Using npm install inherits and n, and the node version required by Rocket.Chat: - -```bash -sudo npm install -g inherits n && sudo n 12.18.4 -``` - -## Install Rocket.Chat - -Download the latest Rocket.Chat version: - -```bash -curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz -``` - -```bash -tar -xzf /tmp/rocket.chat.tgz -C /tmp -``` - -Install \(this guide uses /opt but feel free to choose a different directory\): - -```bash -cd /tmp/bundle/programs/server && npm install -``` - -```bash -sudo mv /tmp/bundle /opt/Rocket.Chat -``` - -## Configure the Rocket.Chat service - -Add the rocketchat user, set the right permissions on the Rocket.Chat folder and create the Rocket.Chat service file: - -```bash -sudo useradd -M rocketchat && sudo usermod -L rocketchat -``` - -```bash -sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat -``` - -```bash -cat << EOF |sudo tee -a /lib/systemd/system/rocketchat.service -[Unit] -Description=The Rocket.Chat server -After=network.target remote-fs.target nss-lookup.target nginx.service mongod.service -[Service] -ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js -StandardOutput=syslog -StandardError=syslog -SyslogIdentifier=rocketchat -User=rocketchat -Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 ROOT_URL=http://localhost:3000/ PORT=3000 -[Install] -WantedBy=multi-user.target -EOF -``` - -Open the Rocket.Chat service file just created \(`/lib/systemd/system/rocketchat.service`\) using sudo and your favourite text editor, and change the ROOT\_URL environmental variable to reflect the URL you want to use for accessing the server \(optionally change MONGO\_URL, MONGO\_OPLOG\_URL and PORT\): - -```bash -MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 -MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 -ROOT_URL=http://your-host-name.com-as-accessed-from-internet:3000 -PORT=3000 -``` - -Setup storage engine and replication for MongoDB \(mandatory for versions > 1\), and enable and start MongoDB and Rocket.Chat: - -```bash -sudo sed -i "s/^# engine:/ engine: wiredTiger/" /etc/mongod.conf -``` - -```bash -sudo sed -i "s/^#replication:/replication:\n replSetName: rs01/" /etc/mongod.conf -``` - -```bash -sudo systemctl enable mongod && sudo systemctl start mongod -``` - -```bash -mongo --eval "printjson(rs.initiate())" -``` - -```bash -sudo systemctl enable rocketchat && sudo systemctl start rocketchat -``` - -## Optional configurations - -[Configure firewall rule](optional-configurations.md) [Configure a HTTP reverse proxy to access Rocket.Chat server](configuring-ssl-reverse-proxy.md) \[Configure mongo access control\] \[Configure production values for mongodb\] - -## Configure your Rocket.Chat server - -Open a web browser and access the configured ROOT\_URL \(`http://your-host-name.com-as-accessed-from-internet:3000`\), follow the configuration steps to set an admin account and your organization and server info. - diff --git a/installing-and-updating/manual-installation/migrating-meteor-mongo.md b/installing-and-updating/manual-installation/migrating-meteor-mongo.md deleted file mode 100644 index 0d744bdfcd..0000000000 --- a/installing-and-updating/manual-installation/migrating-meteor-mongo.md +++ /dev/null @@ -1,20 +0,0 @@ -# Migrating database from Meteor built in MongoDB - -This guide will help you migrate from the mongo server built into meteor to an external mongo server - -We advise against running Rocket.Chat in production from source using the meteor command. Instead we recommend using a separate mongo database and using a compiled meteor bundle. Either our official release or your own. - -Before starting make sure meteor is running. - -Then run: `mongodump -h 127.0.0.1 --port 3001 -d meteor` - -It'll dump the database in a folder called dump. - -Then install mongodb on your system. Please see the [mongo section](./) in one of our guides for your current OS - -Once Mongo is installed restore the data using: `mongorestore -d meteor dump/meteor` - -If you want to use a different database, you'd take this as your opportunity to change the database name. Replacing -d meteor with your desired database name. - -Then follow the remainder of the guide on [setting up Rocket.Chat](./) for your current OS. - diff --git a/installing-and-updating/manual-installation/mongo-options.md b/installing-and-updating/manual-installation/mongo-options.md deleted file mode 100644 index fa610cc004..0000000000 --- a/installing-and-updating/manual-installation/mongo-options.md +++ /dev/null @@ -1,27 +0,0 @@ -# Passing extra options to the Mongo driver - -It's possible to provide extra [connection settings](http://mongodb.github.io/node-mongodb-native/3.5/reference/connecting/connection-settings/) to the Mongo driver by setting the `MONGO_OPTIONS` environment variable to a JSON string, e.g.: - -```text -# we need to pass the contents of PEMs, etc in a format compatible with JSON, so add '\n' to the end of each line. -export TLS_CRT=$(cat /pems/tls.crt | awk '{printf "%s\\n",$0} END {print ""}') -export PEM=$(cat /pems/mongo.pem | awk '{printf "%s\\n",$0} END {print ""}') -export KEY=$(cat /pems/mongo.key | awk '{printf "%s\\n",$0} END {print ""}') -# now insert all the credentials into the JSON OPTIONS string -export MONGO_OPTIONS='{"sslCA":["'${TLS_CRT}'"],"sslCert":"'${PEM}'","sslKey":"'${KEY}'"}' -``` - -You might want to do this, for example, if you're backing Rocket.Chat with a TLS-secured Mongo [replica set](https://docs.mongodb.com/manual/replication/) and need to pass certificates/PEM files, etc. to connect to it. - -If you see the following error during startup: - -```text -MongoTimeoutError: Server selection timed out after 10000 ms -``` - -You can try increasing server selection time adding the following property to `MONGO_OPTIONS` to change the default value of `10000` to `20000`: - -```text -MONGO_OPTIONS='{ "serverSelectionTimeoutMS": 20000 }' -``` - diff --git a/installing-and-updating/manual-installation/mongo-replicas.md b/installing-and-updating/manual-installation/mongo-replicas.md deleted file mode 100644 index 3672a4ccdb..0000000000 --- a/installing-and-updating/manual-installation/mongo-replicas.md +++ /dev/null @@ -1,102 +0,0 @@ -# Configure a replica set for MongoDB - -Rocket.Chat uses the [MongoDB replica set](http://docs.mongodb.org/manual/replication/) to improve performance via Meteor Oplog tailing. - -**Note** please check release notes to ensure you are using a compatible version of Mongo - -To configure the replica set add this section into `mongod.conf`: - -```yaml -replication: - replSetName: "rs01" -``` - -for example by running this command: - -```bash -echo -e "replication:\n replSetName: \"rs01\"" | sudo tee -a /etc/mongod.conf -``` - -## Restart MongoDB and initiate the replica set - -Restart MongoDB service: - -```text -sudo systemctl restart mongod -``` - -Start the MongoDB shell and initiate the replica set: - -```text -mongo -> rs.initiate() -``` - -The output of the command should look like this: - -```text -{ - "info2" : "no configuration specified. Using a default configuration for the set", - "me" : "127.0.0.1:27017", - "ok" : 1, - "operationTime" : Timestamp(1538772048, 1), - "$clusterTime" : { - "clusterTime" : Timestamp(1538772048, 1), - "signature" : { - "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), - "keyId" : NumberLong(0) - } - } -} -rs01:SECONDARY> -``` - -Note the "ok" value should be 1. Any other value, i.e. 93, means something is wrong. - -Hit enter, you should see your prompt turn into `rs01:PRIMARY>`, this indicates the replica set is being used. Type exit to get back to your regular shell: - -```text -rs01:PRIMARY> exit -bye -``` - -Depending on your network settings, including /etc/hosts and DNS, if you have configured Rocket.Chat to use localhost:27017 you may see an error similar to this: - -`[conn1] created this configuration for initiation : { _id: "rs0", version: 1, members: [ { _id: 0, host: "test:27017" } ] }` - -rs.initiate\(\) may be defaulting to the host name e.g. 'test' - -You can force a different hostname as follows: - -```text -rs.initiate({ _id: 'rs01', members: [ { _id: 0, host: 'localhost:27017' } ]}) -``` - -You should get a response similar to: - -```text -> rs.initiate({ _id: 'rs01', members: [ { _id: 0, host: 'localhost:27017' } ]}) -{ "ok" : 1 } -rs0:OTHER> -``` - -## Reconfigure and restart Rocket.Chat service - -After you configured replica set, you **MUST** add the `MONGO_OPLOG_URL` environment variable to the service definition and restart Rocket.Chat server. - -In CentOS open file `/usr/lib/systemd/system/rocketchat.service` - -In Ubuntu or Debian open file `/lib/systemd/system/rocketchat.service` - -and add this to the Environment line: - -```text -MONGO_OPLOG_URL=mongodb://localhost:27017/local?replSet=rs01 -``` - -Reload systemd state and restart Rocket.Chat: - -```text -sudo systemctl daemon-reload && sudo systemctl restart rocketchat -``` - diff --git a/installing-and-updating/manual-installation/mongo-versions.md b/installing-and-updating/manual-installation/mongo-versions.md deleted file mode 100644 index 0b61790889..0000000000 --- a/installing-and-updating/manual-installation/mongo-versions.md +++ /dev/null @@ -1,14 +0,0 @@ -# Supported Mongo Versions - -Rocket.Chat currently requires MongoDB version 3.6 or higher. [Support of MongoDB 3.2 will has been removed from Rocket.Chat 2.0.0 and MongoDB 3.4 has been removed from Rocket.Chat 4.x](https://github.com/RocketChat/Rocket.Chat/pull/15199). We recommend using version 4.2. - -**Note** Without mongodb version we can't ensure you are running a compatible version. If you are running your mongodb with auth enabled and an **user different from admin** you may need to grant permissions for this user to check cluster data. You can do it via mongo shell running the following command replacing the string _YOUR\_USER_ by the correct user\'s name: - -```text -db.runCommand({ grantRolesToUser: "YOUR_USER" , roles: [{role: "clusterMonitor", db: "admin"}]}) -``` - -## Supported Storage Engines - -The Storage engine recommended for Rocket.Chat is [WiredTiger](https://docs.mongodb.com/manual/core/wiredtiger/). - diff --git a/installing-and-updating/manual-installation/mongodb-mmap-to-wiredtiger-migration.md b/installing-and-updating/manual-installation/mongodb-mmap-to-wiredtiger-migration.md deleted file mode 100644 index a6de41a8ef..0000000000 --- a/installing-and-updating/manual-installation/mongodb-mmap-to-wiredtiger-migration.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -description: Migrate your existing mmap based MongoDB instance into a wiredTiger manually. ---- - -# MongoDB mmap to wiredTiger migration - -Starting with the major release 4.X.Y of Rocket.Chat, MongoDB has to be setup with a _WiredTiger_ storage engine rather than the deprecated _mmapv1_ one. This is mandatory, if you plan to upgrade to one of the future Rocket.Chat versions and has to be prepared before initiating the application upgrade. - -If you are using a Docker setup, [click here to find an alternative article](https://docs.rocket.chat/installation/docker-containers/mongodb-mmap-to-wiredtiger-migration) in our docs about migration. - -## Requirements - -* MongoDB instance with _mmap_ storage engine - -## Quick usage - -1. Stop running Rocket.Chat -2. Create a database dump from the _mmapv1_ MongoDB \(also to have a backup in place\) -3. Stop _mmapv1_ MongoDB service, drop existing data files, start up with _wiredTiger_ -4. Import the dump into the new _wiredTiger_ MongoDB -5. Start Rocket.Chat - -## Detailed usage - -1. Stop Rocket.Chat service to ensure a consistent database dump: - - ```text - systemctl stop rocketchat - ``` - -2. Create a database dump from the current _mmapv1_ MongoDB: - - ```text - mongodump --archive=~/mmapdump.gz --gzip - ``` - -3. Stop MongoDB service: - - ```text - systemctl stop mongod - ``` - -4. Delete the _mmapv1_ based data files of your existing MongoDB: - - ```text - rm -rf /var/lib/mongodb/* - ``` - -5. Adjust MongoDB configuration to make use of _wiredTiger_ storage engine: - - ```text - vi /etc/mongod.conf - ``` - - ```text - [...] - engine: wiredTiger - [...] - ``` - -6. Start MongoDB service again: - - ```text - systemctl start mongod - ``` - -7. If running with a Replica-Set in your mongo.conf initialize replica set - - ```text - mongo --evel 'rs.initiate()' - ``` - -8. Import dump back into \(_wiredTiger_\) MongoDB: - - ```text - mongorestore --drop --archive=~/mmapdump.gz --gzip --noIndexRestore - ``` - -9. Repair databases and rebuild indices: - - ```text - mongo --eval 'db.repairDatabase()' - ``` - -10. Start Rocket.Chat service: - - ```text - systemctl start rocketchat - ``` - diff --git a/installing-and-updating/manual-installation/multiple-instances-to-improve-performance.md b/installing-and-updating/manual-installation/multiple-instances-to-improve-performance.md deleted file mode 100644 index 00b59c5fc1..0000000000 --- a/installing-and-updating/manual-installation/multiple-instances-to-improve-performance.md +++ /dev/null @@ -1,225 +0,0 @@ -# Running Multiple Instances Per Host To Improve Performance - -You may find that Rocket.Chat slows down once you have a lot of concurrent users. When this sluggishness begins, you will likely see Rocket.Chat node process approaching 100% CPU \(even if the host CPU load is low\). This is due to the single-threaded nature of Node.js applications; they can't take advantage of multiple cores natively. - -While it's possible to scale out by adding more servers \(and this is recommended for HA purposes\), you can achieve better utilization of your existing hardware by running multiple instances of the Rocket.Chat application \(Node.js/Meteor app\) on your current host\(s\). Of course, you only want to do this if you're already running on a multi-core machine. A reasonable rule-of-thumb may be to run `N-1` Rocket.Chat instances, where `N=num_cores`. - -Running multiple instances of Rocket.Chat on a single host requires a reverse proxy in front of your application. This tutorial assumes that you've already followed the tutorial for [Running behind a Nginx SSL Reverse Proxy](https://docs.rocket.chat/installation/manual-installation/configuring-ssl-reverse-proxy). - -There's essentially just three steps: - -1. Enable ReplicaSet on your MongoDB installation \([https://docs.mongodb.com/manual/tutorial/deploy-replica-set/](https://docs.mongodb.com/manual/tutorial/deploy-replica-set/)\) -2. Start multiple instances of Rocket.Chat bound to different ports -3. Update your proxy to point at all local Rocket.Chat instances - -We'll be working with Nginx in our examples, but it should be possible with other reverse proxies as well. - -## Run multiple instances of Rocket.Chat - -We'll assume that you've configured Rocket.Chat to run as a systemd service. Since we want to run multiple instances simultaneously, we need to run at least two services. The only difference is the service name and port. If you don't have a service yet, the easiest way to do this for Rocket.Chat is to create a file in /usr/lib/systemd/system/ and call it rocketchat.service - -```text -[Unit] -Description=Rocket.Chat Server -After=syslog.target -After=network.target - -[Service] -Type=simple -Restart=always -StandardOutput=syslog -SyslogIdentifier=RocketChat -User=rocketchat -Group=rocketchat -Environment=MONGO_URL=mongodb://your_mongodb:27017/your_database?replicaSet=your_replica_set_name -Environment=MONGO_OPLOG_URL=mongodb://your_mongodb1:27017/local?replicaSet=your_replica_set_name -Environment=ROOT_URL=https://your_rocketchat_domain.com -Environment=PORT=3000 -WorkingDirectory=/path.to.rocketchat/rocket.chat -ExecStart=/usr/local/bin/node /path.to.rocketchat/rocket.chat/bundle/main.js - -[Install] -WantedBy=multi-user.target -``` - -Make sure the User and Group exist and both have read/write/execute Permissions for the rocketchat. Now you can run start, stop, restart, and status your rocketchat service. - -If you want multiple Services create another file in /usr/lib/systemd/system and call it rocketchat@.service with the following content: - -```text -[Unit] -Description=Rocket.Chat Server -After=syslog.target -After=network.target - -[Service] -Type=simple -Restart=always -StandardOutput=syslog -SyslogIdentifier=RocketChat -User=rocketchat -Group=rocketchat -Environment=MONGO_URL=mongodb://your_mongodb:27017/your_database?replicaSet=your_replica_set_name -Environment=MONGO_OPLOG_URL=mongodb://your_mongodb1:27017/local?replicaSet=your_replica_set_name -Environment=ROOT_URL=https://your_rocketchat_domain.com -Environment=PORT=%I -WorkingDirectory=/path.to.rocketchat/rocket.chat -ExecStart=/usr/local/bin/node /path.to.rocketchat/rocket.chat/bundle/main.js - -[Install] - WantedBy=rocketchat.service -``` - -Start the other Rocket.Chat Services with - -`systemctl start rocketchat@3001 (or any other desired port after the @)` - -If you want to run rocketchat at boot just enable the services with - -`systemctl enable rocketchat` - -The other Services will be enable since they are "WantedBy"=RocketChat.service - -### Ensure nodes can communicate - -If you run Rocket.Chat instances on multiple physical nodes. Or even in multiple containers make sure they can communicate with each other. - -Rocket.Chat makes use of a peer to peer connection to inform each other of events. Let's say you type a message and tag a friend or coworker that is connected to another instance. - -Two different events are fired: 1. The user \(you\) is typing 2. Notify user \(friend\) - -Each Rocket.Chat instance registers in your database the ip address it detected for its self. Other instances then use this list to discover and establish connections with each other. - -If you find instances unable to talk to each other you can try setting the `INSTANCE_IP` environment variable to the ip the other instances can use to talk to it. - -## Update your Nginx proxy config - -Edit `/etc/nginx/sites-enabled/default` or if you use nginx from docker `/etc/nginx/conf.d/default.conf` and be sure to use your actual hostname in lieu of the sample hostname "your\_hostname.com" below. - -You just need to setup a backend if one doesn't already exist. Add all local Rocket.Chat instances to it. Then swap out the host listed in the proxy section for the backend you defined with no port. - -Continuing the example, we'll update our Nginx config to point to the two Rocket.Chat instances that we started running on ports 3001 and 3002. - -```text -# Upstreams -upstream backend { - server 127.0.0.1:3000; - server 127.0.0.1:3001; - #server 127.0.0.1:3002; - #server 127.0.0.1:3003; - . - . - . -} -``` - -Now just replace `proxy_pass http://IP:3000/;` with `proxy_pass http://backend;`. Updating the [sample Nginx configuration](https://docs.rocket.chat/installation/manual-installation/configuring-ssl-reverse-proxy#running-behind-a-nginx-ssl-reverse-proxy) would result in a config like this: - -```text - # HTTPS Server -server { - listen 443; - server_name your_hostname.com; - - error_log /var/log/nginx/rocketchat.access.log; - - ssl on; - ssl_certificate /etc/nginx/certificate.crt; - ssl_certificate_key /etc/nginx/certificate.key; - ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don’t use SSLv3 ref: POODLE - - location / { - proxy_pass http://backend; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_set_header Host $http_host; - - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto https; - proxy_set_header X-Nginx-Proxy true; - - proxy_redirect off; - } -} -``` - -Now restart Nginx: `service nginx restart` - -## Update your Apache proxy config - -Run this as root \(to enable the necessary modules to use proxy balancer\): - -```text -a2enmod proxy_html -a2enmod proxy_balancer -a2enmod headers -a2enmod session -a2enmod session_cookie -``` - -Edit `/etc/apache2/sites-enabled/rocketchat.conf` and be sure to use your actual hostname in lieu of the sample hostname "your\_hostname.com" below. - -```text - - ServerAdmin it@domain.com - ServerName chat.domain.com - - LogLevel info - ErrorLog /var/log/chat.domain.com_error.log - TransferLog /var/log/chat.domain.com_access.log - - SSLEngine On - SSLCertificateFile /etc/ssl/certs/chat.domain.com.crt - SSLCertificateKeyFile /etc/ssl/private/chat.domain.com.key - - Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED - ProxyPreserveHost On - - - BalancerMember http://localhost:3000 route=1 - BalancerMember http://localhost:3001 route=2 - ... - ProxySet stickysession=ROUTEID - - - - BalancerMember ws://localhost:3000 route=1 - BalancerMember ws://localhost:3001 route=2 - ... - ProxySet stickysession=ROUTEID - - - - Require all granted - - - RewriteEngine On - RewriteCond %{HTTP:Upgrade} =websocket [NC] - RewriteRule /(.*) balancer://ws/$1 [P,L] - RewriteCond %{HTTP:Upgrade} !=websocket [NC] - RewriteRule /(.*) balancer://http/$1 [P,L] - - ProxyPassReverse / http://localhost/ - -``` - -Now restart Apache: `systemctl restart apache2.service` - -Visit `https://your_hostname.com` just as before the update. **Ooh, so fast!** - -To confirm you're actually using both services like you'd expect, you can stop one rocketchat service at a time and confirm that chat still works. Restart that service and stop the other. Still work? Yep, you're using both services! - -## Check your database - -Another very important part is your database. As mentioned above, you will need to make sure you are running a replicaset. - -This is important for a couple of reasons: 1. Database reliability. You will want to make sure that your data is replicated, and you have another node if something happens to your primary. 2. Rocket.Chat does what's called oplog tailing. The oplog is turned on when you setup a replicaset. Mongo makes use of this to publish events so the other nodes in the replicaset can make sure its data is up to date. Rocket.Chat makes use of this to watch for database events. If someone sends a message on Instance 1 and you are connected to Instance 2. Instance 2 watches for message insert events and then is able to show you a new message has arrived. - -### Database engine - -Another thing to keep in mind is the storage engine you are using. By default mongo uses Wiredtiger. Wiredtiger under some loads can be very CPU and Memory intensive. Under small single instance setups we don't typically see issues. But when you run multiple instances of Rocket.Chat it can sometimes get a bit unruly. - -It's because of this we recommend in multiple instance situations that you switch the mongo storage engine to mmapv1. - diff --git a/installing-and-updating/manual-installation/optional-configurations.md b/installing-and-updating/manual-installation/optional-configurations.md deleted file mode 100644 index 4b872f2c40..0000000000 --- a/installing-and-updating/manual-installation/optional-configurations.md +++ /dev/null @@ -1,12 +0,0 @@ -# Firewall configuration - -If you are using firewalld and not using a reverse proxy, you may have to allow traffic to port 3000: - -```bash -sudo firewall-cmd --permanent --add-port=3000/tcp -``` - -```bash -sudo systemctl reload firewalld -``` - diff --git a/installing-and-updating/manual-installation/pm2-systemd-upstart.md b/installing-and-updating/manual-installation/pm2-systemd-upstart.md deleted file mode 100644 index b64b7ad3e9..0000000000 --- a/installing-and-updating/manual-installation/pm2-systemd-upstart.md +++ /dev/null @@ -1,158 +0,0 @@ -# Setting up Process Managers and Init Systems - -## PM2 - -## Systemd - -Deploy [Rocket.Chat](https://github.com/RocketChat/Rocket.Chat) to Linux that run on systemd \(RedHat, Centos, Ubuntu, CoreOS and so on\). - -### How to run Rocket.Chat on systemd. - -First we need to create the unit file. - -`vi /etc/systemd/system/rocketchat.service` - -With the contents: - -```text -[Unit] -Description=RocketChat Server -After=network.target remote-fs.target nss-lookup.target mongod.target nginx.target # Remove or Replace nginx with your proxy - -[Service] -ExecStart=/usr/local/bin/node /var/www/rocketchat/main.js # Specify the location of node and location of main.js -Restart=always # If set to always, the service will be restarted regardless of whether it exited cleanly or not, got terminated abnormally by a signal, or hit a timeout. -RestartSec=10 # Restart service after 10 seconds if node service crashes -StandardOutput=syslog # Output to syslog -StandardError=syslog # Output to syslog -SyslogIdentifier=nodejs-example -#User= -#Group= -Environment=NODE_ENV=production PORT=3000 ROOT_URL=https://rocketchat.domain.com MONGO_URL=mongodb://localhost:27017/rocketchat - -[Install] -WantedBy=multi-user.target -``` - -Then you need to enable the service `systemctl enable rocketchat.service` - -To start the service `systemctl start rocketchat.service` - -To verify it is running `systemctl status rocketchat.service` - -### Backup - -All data will be hourly backed up to `/data/domains/example.org/data` folder. We advise to copy this folder to a remote location in case of hardware failure. - -## Upstart - Ubuntu - -**Note: Upstart is no longer supported. We no longer support Ubuntu 14.04. If upgrading please see systemd or Ubuntu 16.04** - -The following examples are upstart jobs which control automatic start-up and, if necessary, respawning of your Rocket.Chat app, as well as management of an optional hubot chat-bot. - -In order to use the examples, simply copy each example and save into a file, paying attention to the fact that the filenames should be preserved unless you edit the examples to reflect any filename changes you make. Be sure to edit the environment variables, and possibly paths, according to your particular installation. Once you've saved the files to the proper directory \(/etc/init\) usage is as simple as rebooting. - -Which upstart management jobs that you use depend on what type of Rocket.Chat deployment you are using \(Docker-compose, non-docker, etc\). A race-condition exists with docker-compose which requires that mongo and the Rocket.Chat application be started independently, thus a slightly modified upstart job is required compared to non-docker instances. - -### Non-Docker-Compose - -Save as: `/etc/init/rocketchat.conf` - -```text -description "rocketchat application server" - -# Wait for mongod before starting rocketchat app -start on (started mongod) -stop on runlevel [!2345] - -# Automatically attempt to restart with finite limits -respawn -respawn limit 99 5 - -# Export necessary variables and start the Applications / Services -script - export MONGO_URL=mongodb://localhost:27017/rocketchat - export ROOT_URL=https://host.yourdomain.tld - export PORT=3000 - exec /usr/local/bin/node /home/administrator/Rocket.Chat/main.js -end script -``` - -Save as: `/etc/init/rocketchat_hubot.conf` - -```text -description "hubot launcher" - -# Wait for the rocketchat upstart job before starting hubot -start on started rocketchat -stop on runlevel [!2345] - -# Automatically Respawn with finite limits -respawn -respawn limit 99 5 - -script - # Wait until Rocket.Chat is up and listening to port tcp 3000 - until nc -z localhost 3000; do - sleep 1 - done - - # Export necessary variables - export ROCKETCHAT_ROOM=GENERAL - export ROCKETCHAT_USER=bot_username - export ROCKETCHAT_PASSWORD=bot_password - - # Change to the hubot directory - cd /home/administrator/myhubot - - # Launch Hubot - exec bin/hubot -a rocketchat -end script -``` - -### Docker-Compose - -Save as: `/etc/init/rocketchat_mongo.conf` - -```text -description "MongoDB service manager for rocketchat" - -# Start MongoDB after docker is running -start on (started docker) -stop on runlevel [!2345] - -# Automatically Respawn with finite limits -respawn -respawn limit 99 5 - -# Path to our app -chdir /var/www/rocket.chat - -script - # start mongoDB - exec /usr/local/bin/docker-compose up db -end script -``` - -Save as: `/etc/init/rocketchat_app.conf` - -```text -description "Rocketchat service manager" - -# Start Rocketchat after mongo upstart job is running -start on (started rocketchat_mongo) -stop on runlevel [!2345] - -# Automatically Respawn with finite limits -respawn -respawn limit 99 5 - -# Path to our app -chdir /var/www/rocket.chat - -script - # Bring up rocketchat app and hubot - exec /usr/local/bin/docker-compose up rocketchat hubot -end script -``` - diff --git a/installing-and-updating/manual-installation/redhat.md b/installing-and-updating/manual-installation/redhat.md deleted file mode 100644 index 8006832ba0..0000000000 --- a/installing-and-updating/manual-installation/redhat.md +++ /dev/null @@ -1,10 +0,0 @@ -# Installing Rocket.Chat on Redhat - -Rocket.Chat has published a Certified Container Image with Redhat's Certified Container Registry. - -You can get started by reading Rocket.Chat Technical Implementation Guide for our Certified Container: - -{% file src="../../.gitbook/assets/rocket.chat-technical-implementation-guide-v.20180316.pdf" caption="Rocket.Chat Technical Implementation Guide v.20180316" %} - -Or you can follow [CentOS doc](centos.md) to install manually. - diff --git a/installing-and-updating/manual-installation/rocketchatctl.md b/installing-and-updating/manual-installation/rocketchatctl.md deleted file mode 100644 index 2f83d234d0..0000000000 --- a/installing-and-updating/manual-installation/rocketchatctl.md +++ /dev/null @@ -1,115 +0,0 @@ -# RocketChatCTL - -rocketchatctl is a command line tool written in bash to help you install and configure a RocketChat server in a Linux host, it will take care of everything needed for the server to run, configure extra repositories and install needed libraries to install the correct node version and mongo server, and it will also set up directories and permissions, and configure the systemd files for these new services. - -Once you have your rocketchat server installed and running, you can use the same command to easily keep that Rocketchat server installation up to date, rocketchatctl can check for Rocketchat updates available and update it to the latest release. - -Furthermore, rocketchatctl optionally installs a loadbalancer/proxy with auto SSL provided by Let's Encrypt. - -Check it out here: [https://github.com/RocketChat/install.sh](https://github.com/RocketChat/install.sh) - -## Environment - -Currently rocketchatctl is supported in these Linux distributions: - -* Supported OS: - - Ubuntu 18.04, 19.04, 20.04 CentOS 7 Debian 9 - -And installs these software versions, but this can change for future rocketchatctl versions: - -* Node version: 12.18.4 -* Mongo version: 4.0.10 -* Web Proxy/Loadbalancer optional: - - Traefik 1.7.12 Caddy 1.0.0 - -We understand that some users could already have node, mongo, or even a webserver already installed in their servers, `rocketchatctl install` will check for previously installed versions of node and mongo in your system. - -## Options and flags - -Run `rocketchatctl help` and check options and flags: - -```text -rocketchatctl command line tool to install and update RocketChat server - -Usage: rocketchatctl [options] [--root-url=ROOT_URL --port=PORT --letsencrypt-email=EMAIL --webserver=WEBSERVER --version=VERSION --install-node --use-mongo] -Installs node, mongo, RocketChat server and optionally a webserver (Caddy or Traefik), sets up directories and permissions to use Let's Encrypt certificates. -In case node or mongo already installed, it uses already installed versions though confirmation is required. -For node it set v8.11.4 as default in your system, for mongo mmapv1 storage engine and no authentication enabled is required during installation. -If you wish this script to run unattended, provide extra flags to the install option, server URL is required (--root-url). - -OPTIONS - -h help Display this message - install Install latest RocketChat server version - update Update RocketChat server from current version to latest version - check-updates Check for updates of RocketChat server - upgrade-rocketchatctl Upgrade the rocketchatctl command line tool. - -FOR UNATTENDED INSTALLATION - --root-url=ROOT_URL the public URL where RocketChat server will be accessible on the Internet (REQUIRED) - --port=PORT port for the RocketChat server, default value 3000 - --webserver=WEBSERVER webserver to install as reverse proxy for RocketChat server, options are caddy/traefik/none (REQUIRED) - --letsencrypt-email=EMAIL e-mail address to use for SSL certificates (REQUIRED if webserver is not none) - --version=VERSION RocketChat server version to install, default latest - --install-node in case node installed, sets node to RocketChat server recommended version, default behavoir cancel RocketChat server installation - --use-mongo in case mongo installed, and storage engine configured is mmapv1, skip mongo installation but uses systems mongo for RocketChat server database, default database name rocketchat -``` - -## How to use it - -### Install Rocket.Chat - -You can run `rocketchatctl install` directly curling the install.sh script from our website, install.sh will download rocketchatctl save it in /usr/local/bin and call rocketchatctl with the install option, this installation will be interactive: - -```bash -bash -c "$(curl https://install.rocket.chat)" -``` - -In case you want to have an unattended install, use unattended install flags with install.sh script like this: - -```bash -bash -c "$(curl https://install.rocket.chat)" -s --root-url=https://www.example.com --webserver=traefik --letsencrypt-email=myemail@mydomain.com -``` - -If you already have rocketchatctl installed just run: - -```bash -rocketchatctl install -``` - -Or if you want to use your mongo server, change node to the current needed version for Rocket.Chat, listen in a different port, and install another release, you can for example use these command: - -```bash -rocketchatctl install --root-url=https://www.example.com --webserver=none --use-mongo --install-node --port=4000 --version=3.9.0 -``` - -### Update Rocket.Chat - -Check for release updates: - -```bash -rocketchatctl check-updates -Current update available for RocketChat server: from 3.8.0 to 3.9.0 -``` - -And update to the latest release: - -```bash -rocketchatctl update -``` - -The update option creates a temporary backup directory, download the latest rocketchat release, starts it and checks that is healthy querying the info api. In case something goes wrong in the startup process, the previous installed version from backup is resotored and a error message is displayed. - -### Upgrade rockectchatctl - -This option will download the latest version available for rocketchatctl in the install repo, compare it to your current rocketchatctl and upgrade to the latest version if needed, be sure to check that you are running the latest rocketchactl. - -```bash -rocketchatctl upgrade-rockectchatctl -``` - -#### **Use rocketchatctl to automate your previously Rocket.Chat manual installation deployments !** - -Check out our webinar about it here: - diff --git a/installing-and-updating/manual-installation/running-in-a-sub-folder.md b/installing-and-updating/manual-installation/running-in-a-sub-folder.md deleted file mode 100644 index b773bd7298..0000000000 --- a/installing-and-updating/manual-installation/running-in-a-sub-folder.md +++ /dev/null @@ -1,47 +0,0 @@ -# Running in a sub folder with Apache - -> NOTE: Running in a sub folder has been officially deprecated. It will no longer be supported in upcoming 4.0 release. See our [April 2020 announcement](https://forums.rocket.chat/t/support-for-installation-in-subdirectory-will-be-discontinued/6371). - -If you want to run your server in a subfolder like `https://your.domain.com/chat/` you have to setup a reverse proxy. See [Run Rocket.Chat behind a SSL Reverse Proxy](configuring-ssl-reverse-proxy.md) - -If you are using apache you have to tweak the configuration. First you have to put the Rewrite/Proxy into a Location-tag. For example, if you want to provide the service under the "chat" subfolder, your config should look like this: - -```text - - Order allow,deny - Allow from all - - RewriteEngine On - RewriteCond %{HTTP:Upgrade} =websocket [NC] - RewriteRule /var/www/(.*) ws://localhost:3000/$1 [P,L] - RewriteCond %{HTTP:Upgrade} !=websocket [NC] - RewriteRule /var/www/(.*) http://localhost:3000/$1 [P,L] - - ProxyPassReverse http://localhost:3000 - -``` - -The main difference to the standard reverse proxy configuration is an additional RewriteRule, `/var/www` in the example, which must be changed to your DocumentRoot \(if it's not already your DocumentRoot\). - -If you pass the whole path, including the DocumentRoot to the Rocket.Chat server, you'll get a 404 response and an `Unknown path` server error. - -In our example we used the `/chat` as subfolder \(it's parsed out of the ROOT\_URL provided\) but the Rocket.Chat server gets a request for `/var/www/chat`, detects a mismatch and returns the above mentioned error. - -**Additional notes:** - -* Using the RewriteBase Directive won't work. -* The ProxyPassReverse can be used inside a Location-tag and the first parameter must be omitted in this case. -* You don't need to configure a Location for the root folder `/` when using Rocket.Chat in a subfolder \(it's likely configured for other stuff already in this case\). -* For the those curious about the details: the mentioned path-handling is in `webapp.js`, search for `Unknown path`. -* Please make sure that the modules `rewrite`, `proxy_http` and `proxy_wstunnel` are enabled in the apache configuration. Otherwise the websocket calls will return a 500 http response. - -## Running the application - -To run in a subfolder you should pass the environment variable `ROOT_URL` to the process. For example: - -```text -ROOT_URL=https://your.domain.com/chat/ node main.js -``` - -If you followed the manual installation guide, you may already have configured \(and persisted\) this environment variable - in this case you can ignore this advice. - diff --git a/installing-and-updating/manual-installation/ubuntu.md b/installing-and-updating/manual-installation/ubuntu.md deleted file mode 100644 index 0bdc4e9ccb..0000000000 --- a/installing-and-updating/manual-installation/ubuntu.md +++ /dev/null @@ -1,149 +0,0 @@ -# Rocket.Chat in Ubuntu - -## Recommended Fastest Server Install via Snaps - -Snaps are the easiest way for you to get your server up and running on all supported Linux distributions \(Ubuntu, etc\). - -Find out more information about installing using snaps [here](../snaps/) - -If you would like to enable TLS on your site like this `https://yoursite.com` when using the snap, please see [here](../snaps/auto-ssl-with-snaps.md) - -## Manual install - -This installation guide was tested in the following environment: - -* Rocket.Chat 3.9.0 -* OS: Ubuntu 18.04 LTS, Ubuntu 19.04 and Ubuntu 20.04\(Latest\) -* Mongodb 4.0.9 -* NodeJS 12.18.4 - -## Install necessary dependency packages - -Update package list and configure apt to install the official MongoDB packages with the following repository file: - -```bash -sudo apt-get -y update -``` - -```bash -sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 -``` - -```bash -echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list -``` - -Configure Node.js to be installed via package manager: - -```bash -sudo apt-get -y update && sudo apt-get install -y curl && curl -sL https://deb.nodesource.com/setup_12.x | sudo bash - -``` - -Install build tools, MongoDB, nodejs and graphicsmagick: - -```bash -sudo apt-get install -y build-essential mongodb-org nodejs graphicsmagick -``` - -Only for Ubuntu 19.04 install npm: - -```bash -sudo apt-get install -y npm -``` - -Using npm install inherits and n, and the node version required by Rocket.Chat: - -```bash -sudo npm install -g inherits n && sudo n 12.18.4 -``` - -## Install Rocket.Chat - -Download the latest Rocket.Chat version: - -```bash -curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz -``` - -```bash -tar -xzf /tmp/rocket.chat.tgz -C /tmp -``` - -Install \(this guide uses /opt but feel free to choose a different directory\): - -```bash -cd /tmp/bundle/programs/server && npm install -``` - -```bash -sudo mv /tmp/bundle /opt/Rocket.Chat -``` - -## Configure the Rocket.Chat service - -Add the rocketchat user, set the right permissions on the Rocket.Chat folder and create the Rocket.Chat service file: - -```bash -sudo useradd -M rocketchat && sudo usermod -L rocketchat -``` - -```bash -sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat -``` - -```bash -cat << EOF |sudo tee -a /lib/systemd/system/rocketchat.service -[Unit] -Description=The Rocket.Chat server -After=network.target remote-fs.target nss-lookup.target nginx.service mongod.service -[Service] -ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js -StandardOutput=syslog -StandardError=syslog -SyslogIdentifier=rocketchat -User=rocketchat -Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 ROOT_URL=http://localhost:3000/ PORT=3000 -[Install] -WantedBy=multi-user.target -EOF -``` - -Open the Rocket.Chat service file just created \(`/lib/systemd/system/rocketchat.service`\) using sudo and your favourite text editor, and change the ROOT\_URL environmental variable to reflect the URL you want to use for accessing the server \(optionally change MONGO\_URL, MONGO\_OPLOG\_URL and PORT\): - -```bash -MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 -MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 -ROOT_URL=http://your-host-name.com-as-accessed-from-internet:3000 -PORT=3000 -``` - -Setup storage engine and replication for MongoDB \(mandatory for versions > 1\), and enable and start MongoDB and Rocket.Chat: - -```bash -sudo sed -i "s/^# engine:/ engine: mmapv1/" /etc/mongod.conf -``` - -```bash -sudo sed -i "s/^#replication:/replication:\n replSetName: rs01/" /etc/mongod.conf -``` - -```bash -sudo systemctl enable mongod && sudo systemctl start mongod -``` - -```bash -mongo --eval "printjson(rs.initiate())" -``` - -```bash -sudo systemctl enable rocketchat && sudo systemctl start rocketchat -``` - -## Optional configurations - -[Configure firewall rule](optional-configurations.md) [Configure a HTTP reverse proxy to access Rocket.Chat server](configuring-ssl-reverse-proxy.md) \[Configure mongo access control\] \[Configure production values for mongodb\] - -## Configure your Rocket.Chat server - -Open a web browser and access the configured ROOT\_URL \(`http://your-host-name.com-as-accessed-from-internet:3000`\), follow the configuration steps to set an admin account and your organization and server info. - diff --git a/installing-and-updating/manual-installation/univention-corporate-server-ucs.md b/installing-and-updating/manual-installation/univention-corporate-server-ucs.md deleted file mode 100644 index e06180dd96..0000000000 --- a/installing-and-updating/manual-installation/univention-corporate-server-ucs.md +++ /dev/null @@ -1,25 +0,0 @@ -# Univention Corporate Server \(UCS\) - -[Univention Corporate Server \(UCS\)](https://www.univention.com/products/ucs/) is an enterprise Linux distribution derived from Debian GNU/Linux with a strong focus on identity and infrastructure management. It provides an Active Directory compatible domain and allows deployment in Microsoft Active Directory based infrastructure. Furthermore, it supports authentication protocols LDAP, SAML and OpenID Connect. - -Rocket.Chat is available as app in Univention App Center. - -## Deployment via Univention App Appliance - -The fastest and easiest way to run a deployment of Rocket.Chat on UCS is to download and run a virtual machine with Rocket.Chat and UCS pre-installed, called app appliance. The app appliance is available for VMware, VirtualBox and KVM. - -1. Download the app appliance from the [Univention App Catalog](https://www.univention.com/products/univention-app-center/app-catalog/rocketchat/) or with the direct links below: - * [VirtualBox image](https://appcenter.software-univention.de/univention-apps/current/rocketchat/Univention-App-rocketchat-virtualbox.ova) - * [VMware ESXi image](https://appcenter.software-univention.de/univention-apps/current/rocketchat/Univention-App-rocketchat-ESX.ova) - * [VMware Workstation image](https://appcenter.software-univention.de/univention-apps/current/rocketchat/Univention-App-rocketchat-vmware.zip) - * [KVM image](https://appcenter.software-univention.de/univention-apps/current/rocketchat/Univention-App-rocketchat-KVM.qcow2) -2. [Import the app appliance](https://www.univention.com/downloads/ucs-download/guide-for-virtual-appliance-import/) to the desired hypervisor. -3. Follow the instructions in the setup wizard. -4. [Register](https://help.univention.com/t/how-to-register-a-univention-app-appliance/11294) your app appliance. - -## Installation via Univention App Center - -If there is already a deployment of UCS running, Rocket.Chat can easily be installed directly via the App Center. - -Alternatively, the above mentioned app appliance can be setup and joined into an existing UCS deployment, called domain. - diff --git a/installing-and-updating/manual-installation/updating/README.md b/installing-and-updating/manual-installation/updating/README.md deleted file mode 100644 index a17b4523eb..0000000000 --- a/installing-and-updating/manual-installation/updating/README.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -description: Updating Manual Installation ---- - -# Updating - -Usually you can update Rocket.Chat server pretty easily. - -Stop Rocket.Chat service: - -```text -sudo systemctl stop rocketchat -``` - -Remove the installation folder, usually in /opt: - -```text -sudo rm -rf /opt/Rocket.Chat -``` - -Make sure you have the needed build packages Debian - -```text -sudo apt-get install -y build-essential graphicsmagic -``` - -Centos - -```text -sudo yum install -y gcc-c++ make -``` - -Update the node version required by Rocket.Chat: - -```text -sudo n install 12.22.1 -``` - -Download Rocket.Chat latest version: - -```text -curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz -``` - -```text -tar -xzf /tmp/rocket.chat.tgz -C /tmp -``` - -Install it and set right permissions to Rocket.Chat folder: - -```text -cd /tmp/bundle/programs/server && npm install -``` - -```text -sudo mv /tmp/bundle /opt/Rocket.Chat -``` - -```text -sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat -``` - -Start the service: - -```text -sudo systemctl start rocketchat -``` - -Please also have a look at the installation documentation for your method of deployment to check for paragraphs that refer to the process of updating. - -There might be some major changes when we introduce big new features or modifications, you can always take a look on the [releases page](https://github.com/RocketChat/Rocket.Chat/releases) to see what has been changed, broken or added to Rocket.Chat. - -You can see older major changes here: - -* [0.x.x to 0.40.0](from-0-x-x-to-0-40-0.md) - -## Caveats on upgrading your standalone Rocket.Chat database - -### Replicasets - -Any version after v1.0.x requires replicasets/oplogging enabled on Mongo. - -eg. [https://rocket.chat/docs/installation/manual-installation/mongo-replicas](https://rocket.chat/docs/installation/manual-installation/mongo-replicas) - -### Upgrading the database - -Due to Mongo DB schema changes between versions it is recommended to upgrade your database one Rocket.Chat version at a time to avoid database issues. - -Do _not_ backup from one version and try to restore to another eg: - -You have Rocket.Chat 0.65.x - -Do not try to backup the database and restore to direct to another version e.g. Rocket.Chat 1.2.x - -Follow this procedure: - -* Backup DB -> ~/Rocket/Backup/v0.65 -* Upgrade Rocket one version eg 0.65.x -> 0.66.x -* Check for errors -* Backup DB -> ~/Rocket/Backup/v0.66 -* Upgrade Rocket one version eg 0.66.x -> 0.67.x -* Check for errors - if you discover any, stop and fix them or go back to the previous version and start again -* Repeat - -\(this is a very good reason to keep reasonably up to date with Rocket.Chat versions\) - -Please check the [Tags](https://github.com/RocketChat/Rocket.Chat/tags) or Releases as above for the required version infomation. - diff --git a/installing-and-updating/manual-installation/updating/from-0-x-x-to-0-40-0.md b/installing-and-updating/manual-installation/updating/from-0-x-x-to-0-40-0.md deleted file mode 100644 index d8c91c2f28..0000000000 --- a/installing-and-updating/manual-installation/updating/from-0-x-x-to-0-40-0.md +++ /dev/null @@ -1,16 +0,0 @@ -# Updating from 0.x.x to 0.40.0 - -With the release of Rocket.Chat 0.40.0 we are moving from requiring Node.js v0.10.44 to Node.js v4.8.4 LTS - -If you used docker or one of our cloud installation methods: nothing to do, carry on! - -## Update procedure - -First stop Rocket.Chat - -The guides suggest the usage of `n` to manage Node.js version. Assuming that is what you used run: - -```text -sudo n 4.8.4 -``` - diff --git a/installing-and-updating/manual-installation/updating/to-1-0.md b/installing-and-updating/manual-installation/updating/to-1-0.md deleted file mode 100644 index 629118e8f4..0000000000 --- a/installing-and-updating/manual-installation/updating/to-1-0.md +++ /dev/null @@ -1,32 +0,0 @@ -# Updating to 1.0 - -With the release of Rocket.Chat 1.0 a few things have changed to prevent the need for breaking changes down the road. - -## Oplog Required - -With 1.0 we now require oplog be enabled. Attempting to start Rocket.Chat without oplog will result in an error. - -To enable you will need to connect to mongo and type `rs.initiate()` - -Then for Rocket.Chat you will need to provide the MONGO\_OPLOG\_URL environment url. If mongo is on the same host the environment variable will look something like this: - -```text -MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 -``` - -For more information [see here](https://docs.rocket.chat/installation/manual-installation/mongo-replicas/) - -## Mongo Authentication - -If you are using mongo authentication you might also need to add the clustermonitor role to your user. - -You can execute something like: - -```text -admin = db.getSiblingDB("admin"); -admin.grantRolesToUser('OPLOGUSER',[{ role: "clusterMonitor", db: "admin" }]) -admin.grantRolesToUser('ROCKETUSER',[{ role: "clusterMonitor", db: "admin" }]) -``` - -Replace the users with the names you have chosen for your users. - diff --git a/installing-and-updating/micro-services-setup-beta.md b/installing-and-updating/micro-services-setup-beta.md deleted file mode 100644 index 0ec863f885..0000000000 --- a/installing-and-updating/micro-services-setup-beta.md +++ /dev/null @@ -1,156 +0,0 @@ -# Microservices Setup \[beta\] - -{% hint style="info" %} -This feature is currently in the beta stage and can change without prior notice. -{% endhint %} - -{% hint style="info" %} -The feature will be released for **General Availability** on the **Enterprise Edition v4.0.** -{% endhint %} - -{% hint style="info" %} -New in version 3.8. -{% endhint %} - -## Pre-requisites - -* NATS - * Please refer to [NATS Docker installation](https://docs.nats.io/nats-server/nats_docker) on how to deploy NATS -* MongoDB - * Storage Engine needs to be [WiredTiger](https://docs.mongodb.com/manual/core/wiredtiger/): - * [Change Standalone to WiredTiger](https://docs.mongodb.com/manual/tutorial/change-standalone-wiredtiger/) -* Rocket.Chat - * The setting **Use REST instead of WebSocket for Meteor calls** under _Admin > General > REST API_, _must_ be **enabled**. - -The following environment variables should be set for Rocket.Chat services as well: - -| Variable | Value | Description | -| :--- | :--- | :--- | -| `TRANSPORTER` | `nats://nats:4222` | NATS address | -| `DISABLE_DB_WATCH` | `true` | Disables internal DB watcher and rely on `mongodb-stream-hub` | -| `DISABLE_PRESENCE_MONITOR` | `true` | Disables presence monitoring and rely on the `presence-service` | -| `INTERNAL_SERVICES_ONLY` | `true` | Do not run external services on rocket.chat process | - -## Micro Services - -Rocket.Chat microservices are composed of a few Docker containers: - -![](../.gitbook/assets/micro-services-deployment-v0.1-2x-1-.png) - -### Accounts - -Responsible for user authentications - -```text -docker run \ ---name accounts-service \ --e MONGO_URL=mongodb://mongo/rocketchat?replicaSet=rs01 \ --e TRANSPORTER=nats://nats:4222 \ -rocketchat/account-service:latest -``` - -### Authorization - -Responsible for the validation of access to features - -```text -docker run \ ---name authorization-service \ --e MONGO_URL=mongodb://mongo/rocketchat?replicaSet=rs01 \ --e TRANSPORTER=nats://nats:4222 \ -rocketchat/authorization-service:latest -``` - -### DDP Streamer - -Web socket interface between server and clients - -```text -docker run \ ---name ddp-streamer \ --e MONGO_URL=mongodb://mongo/rocketchat?replicaSet=rs01 \ --e TRANSPORTER=nats://nats:4222 \ -rocketchat/ddp-streamer-service:latest -``` - -{% hint style="info" %} -DDP Streamer should be scaled from the beginning. \(One per 500 concurrent users should be good enough\) -{% endhint %} - -### MongoDB Stream Hub - -{% hint style="danger" %} -Can not be scaled to multiple containers -{% endhint %} - -Receives real-time data from MongoDB and emits that data to the system. - -```text -docker run \ ---name mongodb-stream-hub \ --e MONGO_URL=mongodb://mongo/rocketchat?replicaSet=rs01 \ --e TRANSPORTER=nats://nats:4222 \ -rocketchat/stream-hub-service:latest -``` - -### Presence \(Optional\) - -Controls and update users' presence status. - -{% hint style="success" %} -In a situation where you have a huge amount of data/users, you can get away with not running it to reduce the traffic of presence processing. If you are not running it, the user's online/offline status and notification will not work properly. -{% endhint %} - - - -```text -docker run \ ---name presence-service \ --e MONGO_URL=mongodb://mongo/rocketchat?replicaSet=rs01 \ --e TRANSPORTER=nats://nats:4222 \ -rocketchat/presence-service:latest -``` - -### Environment variables common to all services - -Set the following environment variables to enable Prometheus metrics: - -| Variable | Default | Description | -| :--- | :--- | :--- | -| `MS_METRICS` | `false` | Enable Prometheus metrics endpoint | -| `MS_METRICS_PORT` | `9458` | Port of Prometheus metrics endpoint | - -## Reverse proxy - -Once all services are up and running the web socket connections should be targeted to `ddp-streamer` containers, the configuration depends on the reverse proxy you have set up, but you need to change the following routes: - -* `/sockjs` -* `/websocket` - -If using Kubernetes, an Ingress like the following can be used: - -```text -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: ddp-streamer -spec: - rules: - - host: your-hostname.rocket.chat - http: - paths: - - backend: - serviceName: ddp-streamer - servicePort: 3000 - path: /(sockjs|websocket) -``` - -## Summary: - -To summarize it: - -1. You just need to deploy the reverse proxy to split the communication. -2. Run all the above services pointing to the NATS and the MongoDB. -3. Deploy NATS. -4. Run Rocket.Chat according to the above-mentioned variables. - diff --git a/installing-and-updating/minimum-requirements-for-using-rocket.chat.md b/installing-and-updating/minimum-requirements-for-using-rocket.chat.md deleted file mode 100644 index b2c270e431..0000000000 --- a/installing-and-updating/minimum-requirements-for-using-rocket.chat.md +++ /dev/null @@ -1,66 +0,0 @@ -# Minimum Requirements for using Rocket.Chat - -If you’re curious about the technical requirements needed to run Rocket.Chat, read on to learn which operating systems \(OS\) and browsers we support. -**** - -## **Desktop apps** - - - - - - - - - - - - - - - - - - - - - - -
Operating System - Requirements -
macOS - OS X 10.11 or above -
Windows - Windows 8 or above -
Linux - -

Fedora 28 or above -

-

Ubuntu LTS releases 16.04 or above -

-

Red Hat Enterprise Linux 7.0 or above -

-
- -## **Mobile apps** - -| **Operating System** | **Requirements** | -| :--- | :--- | -| **iOS** | **iOS 11** **or above** | -| **Android** | **Android 6.0 or above** | - -## **Web browsers** - -| **Browser** | **Requirements** | -| :--- | :--- | -| **Google Chrome** | **Latest 3 versions** | -| **Mozilla** **Firefox** | **Latest 3 versions** | -| **Safari** | **Latest 2 versions** | -| **Microsoft Edge** | **Latest 2 versions** | -| **Microsoft Internet Explorer** | **Latest version only** | - -### **Unsupported browsers and operating systems** - -To deliver the best possible Rocket.Chat experience, and we keep our list of supported browsers and operating systems short. We don’t fix bugs or issues for unsupported browsers, so we do our best to block them from accessing Rocket.Chat. - - diff --git a/installing-and-updating/mobile-and-desktop-apps.md b/installing-and-updating/mobile-and-desktop-apps.md deleted file mode 100644 index a344f8c436..0000000000 --- a/installing-and-updating/mobile-and-desktop-apps.md +++ /dev/null @@ -1,74 +0,0 @@ -# Mobile and Desktop Apps - -You can find a variety of client apps to use with a Rocket.Chat server, apart from using a browser. - -## Desktop Apps - -Here you can find the Electron based Desktop Apps: - -### Windows - -Can be found [here](https://rocket.chat/install) - -### macOS - -Can be found in the App Store [here](https://itunes.apple.com/app/rocket.chat/id1086818840) - -It can also be downloaded [here](https://github.com/RocketChat/Rocket.Chat.Electron) - -### Linux - -If you are on Ubuntu we recommend you install our snap via: - -```text -sudo snap install rocketchat-desktop -``` - -Snaps auto update so you no longer need to worry about manually keeping the client up to date. - -Snaps are also available on other platforms. More information available [here](https://snapcraft.io/docs/core/install) - -There is also a Flatpak [package available on Flathub](https://flathub.org/apps/details/chat.rocket.RocketChat). - -Alternatively you can download and manually install: - -You can find the download for the latest releases [here](https://github.com/RocketChat/Rocket.Chat.Electron/releases) - -## Mobile Apps - -![](../.gitbook/assets/ic_launcher-web%20%281%29.png) - -### Rocket.Chat - -This is the official version of our mobile apps both on Google Play and App Store. - -[Rocket.Chat on App Store](https://apps.apple.com/us/app/rocket-chat/id1148741252) - -[Rocket.Chat on Google Play](https://play.google.com/store/apps/details?id=chat.rocket.android) - -#### Rocket.Chat Beta - -Beta versions of our apps are available on Google Play beta and TestFlight. Help us testing new features! - -[Rocket.Chat Beta on TestFlight](https://testflight.apple.com/join/3gcYeoMr) - -[Rocket.Chat Beta on Google Play](https://play.google.com/store/apps/details?id=chat.rocket.android) - -![](../.gitbook/assets/ic_launcher-web.png) - -### Rocket.Chat Experimental - -The Experimental version of our mobile apps is developed using the same technologies and code of the official version. We use it to try new features and get feedback from our users. Only stable features land the official version. - -[Rocket.Chat Experimental on Google Play](https://play.google.com/store/apps/details?id=chat.rocket.reactnative) - -_Note: iOS version isn't available on App Store anymore._ - -#### Rocket.Chat Experimental Beta - -Beta versions of our apps are available on Google Play beta and TestFlight. Help us testing new features! - -[Rocket.Chat Experimental Beta on TestFlight](https://testflight.apple.com/join/7I3dLCNT) - -[Rocket.Chat Experimental Beta on Google Play](https://play.google.com/store/apps/details?id=chat.rocket.reactnative) - diff --git a/installing-and-updating/official-recommendations.md b/installing-and-updating/official-recommendations.md deleted file mode 100644 index e92cd9def6..0000000000 --- a/installing-and-updating/official-recommendations.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -description: Official Production Deployment Recommendations ---- - -# Official Recommendations - -## Introduction - -In order to obtain official support from our team, we have a minimum set of requirements. These requirements are necessary for us to access essential system information, to provide an SLA, to answer questions, or to provide a solution for the problem. - -Only installations matching these minimum requirements can be covered by our SLAs and our paid Support Policy, some requirements may vary depending on the installation size as described in the following sections. - -## Environment - -#### Docker Container - -In order to eliminate environment issues of missing, outdated, or mismatching dependencies, specific operating system issues, or problems during manual installations, we strongly recommend using our official Docker images. - -{% hint style="info" %} -Rocket.Chat's own cloud uses our official Docker images, which makes this installation method the most tested. -{% endhint %} - -[Docker](https://www.docker.com/) is widely used to package applications in containers and distribute them as images, providing abstraction and isolation layers from the OS \(operational system\). It allows the application to be shipped with a specific version of the OS compatibility layer and his own dependencies already installed and configured. - -{% page-ref page="docker-containers/" %} - -## Scalability - -### Multiple processes - -We recommend running multiple application processes to maximize the usage of all available cores. Although you can use either Virtual Machines or containers to do so, we recommend and only support the usage of Docker containers. - -Virtual machines and containers differ in several ways, but the primary difference is that containers provide a way to virtualize an OS so that multiple workloads can run on a single OS instance. With VMs, the hardware is being virtualized to run multiple OS instances. Containers’ speed, agility, and portability make them offer definite performance advantages for our use case. - -{% hint style="info" %} -In some cases, it is acceptable to run containers inside a VM, as most PaaS only offer Virtual Private Servers. -{% endhint %} - -#### Performance benefits of containers - -**Faster startup time** - -A containerized application usually starts in a couple of seconds. Virtual machines could take a couple of minutes. - -**Better resource distribution** - -Containers use up only as many system resources as they need at a given time. Virtual machines usually require some resources to be permanently allocated before the virtual machine starts. For this reason, virtual machines tie up resources on the host, even if they are not actually using them. Containers allow host resources to be distributed in an optimal way. - -**Direct hardware access** - -Applications running inside virtual machines generally cannot access hardware like graphics cards on the host in order to speed processing. containerized applications can. - -**Less redundancy** - -With virtual machines, you have to install an entire guest operating system, which duplicates a lot of the components already running on your host server. Containers don't require this. - -{% embed url="https://www.backblaze.com/blog/vm-vs-containers/" %} - -### Containers orchestration - -The usage of Docker-compatible containers orchestration/management systems such as Kubernetes, Rancher, or OpenShift can facilitate the scaling of containerized Rocket.Chat instances making it possible to distribute load among different physical bare-metal servers or virtual machines. - -Rocket.Chat's own cloud uses this approach to manage cloud-hosted instances with a high level of reliability and flexibility, we leverage the same expertise to provide documentation on how to configure and deploy scaled installations. - -We require, for **scaled installations** \(with more than **one instance** or more than **2000 users**\), to be orchestrated and/or managed with one of the following: - -1. SUSE Rancher -2. Red Hat Openshift -3. Kubernetes and Helm _\(Managed by a cloud platform such as AWS, Google Cloud, etc, or self-managed\)_ -4. docker-compose - -At this time, no other containers orchestration/management technologies will be supported by our Support team for any issues related to **scaled installations**. - -## Hardware - -The minimum hardware requirements are described on the page below. - -{% page-ref page="hardware-requirements.md" %} - -## Monitoring - -Production deployments should continually collect metrics regarding the installation's instances and database. Rocket.Chat supports and recommends the industry-standard Prometheus + Grafana monitoring stack. Grafana dashboards are available in the [Metrics](https://github.com/RocketChat/Rocket.Chat.Metrics) repository. - -{% embed url="https://github.com/RocketChat/Rocket.Chat.Metrics" %} - -## Versions - -Rocket.Chat cuts a new release every month, please check the link below for more information about the release cycles and make sure you are running a supported version. - -{% page-ref page="../getting-support.md" %} - - - diff --git a/installing-and-updating/paas-deployments/README.md b/installing-and-updating/paas-deployments/README.md deleted file mode 100644 index 7838a38630..0000000000 --- a/installing-and-updating/paas-deployments/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# PaaS Deployments - -There are multiple deployment options for Rocket.Chat. - -## Quick Deployments - -If you are interested in quickly deploying an instance, you can try one of the options below: - -* [Sandstorm](https://apps.sandstorm.io/app/vfnwptfn02ty21w715snyyczw0nqxkv3jvawcah10c6z7hj1hnu0), you can have a server for your family and friends running in 4 seconds. -* [Cloudron](https://cloudron.io/appstore.html#chat.rocket.cloudronapp), you can install and receive automatic updates on your Cloudron Smartserver. - -## Managed Deployments - -If you need full control of your deployment, here are some guides for specific environments: - -* [Aliyun](aliyun.md) -* [Amazon Web Services](aws.md) -* [Digital Ocean](digitalocean.md) -* [Meteor Galaxy](galaxy.md) -* [Google Compute Engine](google-computer-engine.md) -* [IBM Cloud](ibm-cloud.md) -* [Sloppy.io](sloppy-io.md) -* [D2C.io](d2c-io.md) -* [Syncloud.org](syncloud.md) - -## Automation Tools - -* [Ansible](../automation-tools/ansible.md) -* [Vagrant](../automation-tools/vagrant.md) - diff --git a/installing-and-updating/paas-deployments/aliyun.md b/installing-and-updating/paas-deployments/aliyun.md deleted file mode 100644 index a208d25bdc..0000000000 --- a/installing-and-updating/paas-deployments/aliyun.md +++ /dev/null @@ -1,189 +0,0 @@ ---- -description: Deploying Rocket.Chat on Aliyun ---- - -# Aliyun - -You can install Rocket.Chat to Ubuntu VPS on Aliyun. - -The recommended VPS configuration is: - -* 2 GB RAM -* 10 GB disk -* 2 or 4 cores - -However, lower performance configuration has been tested on a VPS with: - -* 1 GB RAM -* 10 GB disk -* 1 core - -Follow these steps to install Rocket.Chat. - -## Update Ubuntu repo lists and Install curl - -After you ssh to the VPS: - -![aliyun shell](https://raw.githubusercontent.com/Sing-Li/bbug/master/images/aliyun1.png) - -Run the command: - -```text -apt-get update -``` - -followed by: - -```text -apt-get install curl -``` - -## Install docker - -Run this command: - -```text -curl -sSL https://get.docker.com/ | sh -``` - -Docker should be installed, verify it: - -```text -docker ps -``` - -![aliyun docker verify](https://raw.githubusercontent.com/Sing-Li/bbug/master/images/aliyun2.png) - -## Install docker-compose - -Install docker-compose, follow the [latest release instructions](https://github.com/docker/compose/releases) - -For release 1.5.0, you can use: - -```text -curl -L https://github.com/docker/compose/releases/download/1.5.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose -``` - -_\(if or when this is blocked, you'll have to obtain Linux-x86\_64 docker-compose binary via other means\)_ - -Next, allow execution of docker-compose: - -```text -chmod +x /usr/local/bin/docker-compose -``` - -## Create directories for Rocket.Chat - -First, - -```text -mkdir /home/rocketchat -``` - -Then, - -```text -cd /home/rocketchat -``` - -Make two more directories for the mongodb database: - -```text -mkdir data -mkdir dump -``` - -## Create customized docker-compose.yml - -Create a `docker-compose.yml` file with the following content: - -```text -version: '2' - -services: - rocketchat: - image: rocket.chat:latest - restart: unless-stopped - volumes: - - ./uploads:/app/uploads - environment: - - PORT=3000 - - ROOT_URL=http://chat.inumio.com - - MONGO_URL=mongodb://mongo:27017/rocketchat - - MONGO_OPLOG_URL=mongodb://mongo:27017/local - - Accounts_UseDNSDomainCheck=True - depends_on: - - mongo - ports: - - 8818:3000 - - mongo: - image: mongo - restart: unless-stopped - volumes: - - $PWD/data:/data/db - - $PWD/dump:/dump - command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1 - - # this container's job is just run the command to initialize the replica set. - # it will run the command and remove himself (it will not stay running) - mongo-init-replica: - image: mongo - command: 'bash -c "for i in `seq 1 30`; do mongo mongo/rocketchat --eval \"rs.initiate({ _id: ''rs0'', members: [ { _id: 0, host: ''localhost:27017'' } ]})\" && s=$$? && break || s=$$?; echo \"Tried $$i times. Waiting 5 secs...\"; sleep 5; done; (exit $$s)"' - depends_on: - - mongo -``` - -Make sure you customize the file with `your-ip-address` in the `MONGO_URL` env variable. - -## Pull the required docker images - -This will download the required docker images, and may take some time. - -This is done only the first time, or when you want to update Rocket.Chat. - -```text -docker pull mongo -docker pull registry.rocket.chat/rocketchat/rocket.chat -``` - -## Start the mongodb database - -Run: - -```text -docker-compose up -d mongo -``` - -Mongo supports 24 x 7 operations and live backup. You should not need to restart it too frequently. See [mongodb documentations](https://docs.mongodb.org/manual/) for proper operation and management of a mongo server. - -Wait a couple of minute for mongo to start properly. - -## Start the mongodb replica - -Run: - -```text -docker-compose up -d mongo-init-replica -``` - -This container's job is just to run the command to initialize the replica set. It will run the command and remove itself \(it will not stay running\) - -## Start your Rocket.Chat server - -Now start the Rocket.Chat server: - -```text -docker-compose up -d rocketchat -``` - -Rocket.Chat should be ready in a minute or two. - -## Access your Rocket.Chat on Aliyun - -Your Rocket.Chat server can now be accessed over the Internet via: - -```text -http://your-ip-address:8818/ -``` - diff --git a/installing-and-updating/paas-deployments/aws-marketplace.md b/installing-and-updating/paas-deployments/aws-marketplace.md deleted file mode 100644 index ebc17e3eb4..0000000000 --- a/installing-and-updating/paas-deployments/aws-marketplace.md +++ /dev/null @@ -1,170 +0,0 @@ ---- -description: Installing Rocket.Chat from AWS Marketplace ---- - -# AWS Marketplace - -Here we will guide you through installing in AWS in an EKS cluster using our AWS Marketplace container. - -## Recent webinar demoing this process - -## Prerequisites - -* Have AWS Account -* Download [aws cli](https://aws.amazon.com/cli/) -* Run aws configure -* Install [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl) -* Install [eksctl](https://eksctl.io/) -* Install [helm](https://docs.helm.sh/using_helm/#installing-helm) - -## Instructions: - -First we need to bring up a kubernetes cluster. So we will bring it up in AWS kubernetes offering called eks. To do this we will use a tool called eksctl which is recommended by [eksworkshop](https://eksworkshop.com/eksctl/) - -```text -eksctl create cluster --name=your-eks-cluster --region=us-west-2 -``` - -This takes from 15-20 minutes. So go grab a cup of coffee or something. - -Once that's finished we need to get things setup for helm. Starting somewhere around Kubernetes 1.9 RBAC is enabled by default with most kubernetes providers. Its enabled by default in EKS. - -So we need to install service account to allow helm to operate correctly. [More info about that here](https://docs.helm.sh/using_helm/#example-service-account-with-cluster-admin-role) - -Create a file called tiller-rbac.yaml with contents of: - -```text -apiVersion: v1 -kind: ServiceAccount -metadata: - name: tiller - namespace: kube-system ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: tiller -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cluster-admin -subjects: - - kind: ServiceAccount - name: tiller - namespace: kube-system -``` - -Next we we need to insert this into kubernetes with: - -```text -kubectl apply -f tiller-rbac.yaml -``` - -Now that the service role is in place we need to initialize tiller with this service account. - -```text -helm init --service-account tiller -``` - -Now that helm has finished successfully we can install traefik. Traefik is a reverse proxy / load balancer with support for kubernetes ingress. It will automatically discover ingress rules defined inside your cluster and handle routing of traffic in your cluster to those services. Pretty neat! - -```text -helm install stable/traefik --name traefik --namespace kube-system --set rbac.enabled=true -``` - -Like mentioned above RBAC is enabled so in this command we set a flag that caused the helm chart to create rbac rules for traefik automatically. - -Some optional flags you can add to the above command: - -* --set acme.enabled=true - this will enable letsencrypt -* --set acme.email=youremail - this sets the email to use with it - -Give it a few seconds and then run: - -```text -kubectl -n kube-system get svc -``` - -You might have to run it a few times, but after a while you will you will get output that looks something like: - -![image](https://user-images.githubusercontent.com/51996/52383655-f304e000-2a3f-11e9-86bb-392c7074010c.png) - -Take that and create a CNAME for with your desired domain pointing to that address. - -Now finally lets go subscribe to our image from AWS Marketplace. - -* [Rocket.Chat Community](https://aws.amazon.com/marketplace/pp/B07K9BKJHP?qid=1549500780099&sr=0-1&ref_=srh_res_product_title) -* [Rocket.Chat Enterprise](https://aws.amazon.com/marketplace/pp/B07K98179S?qid=1549500780099&sr=0-3&ref_=srh_res_product_title) - -After you pick which one you need to click "Continue to Subscribe" - -It will take a little bit to process. Might have to refresh the page a few times. Alternatively you can wait on an email they send when its finished. - -Once that is finished you can click "Continue to Configuration" - -You can choose the version of Rocket.Chat you wish to use. - -Then click "Continue to Launch" - -Towards the bottom of this page you will see: "View Container Image Details" Click that. - -![image](https://user-images.githubusercontent.com/51996/52382003-3f98ed00-2a39-11e9-9a28-a4a179abd18f.png) - -Copy the image path given at the bottom. - -Now we are ready to plug in a few things and run our helm install: - -* mongodb.mongodbPassword - make sure to set to your own password -* repo - use the repo part of the container image path you copied earlier. - -Example of image path, the path changes based on the AWS region and version installed, so be sure you check the image details of your subscription - -```text -217273820646.dkr.ecr.us-east-1.amazonaws.com/c87d63fd-e44d-4368-82e0-24bd42b21a84/cg-2246218297/rocket.chat:0.71.1-latest -``` - -The repo part of it is everything before `:` - -```text -217273820646.dkr.ecr.us-east-1.amazonaws.com/c87d63fd-e44d-4368-82e0-24bd42b21a84/cg-2246218297/rocket.chat -``` - -* tag - use the part of the image path after the `:` In our case `0.71.1-latest` -* host - set to the hostname you plan to use - -```text -helm install --name=rc \ ---set mongodb.mongodbUsername=rocketchat \ ---set mongodb.mongodbPassword=superSecure \ ---set mongodb.mongodbDatabase=rocketchat \ ---set mongodb.mongodbRootPassword=superSecureToo \ ---set image.repository=217273820646.dkr.ecr.us-east-1.amazonaws.com/046e16ad-a193-4c5b-9f1f-d2619d9c5cd6/cg-1684305143/rocket.chat.enterprise \ ---set image.tag=0.71.1-latest \ ---set ingress.enabled=true \ ---set host=your-hostname.your-domain.com \ ---set ingress.annotations."kubernetes\.io/ingress\.class"=traefik \ -stable/rocketchat -``` - -Now after this runs you can run: - -```text -kubectl get pods -w -``` - -And watch until both rc-mongodb and rc-rocketchat are both running. - -Rocket.Chat should now be externally available! - -## FAQ - -### Rocket.Chat isn't responding - -Try running: - -```text -kubectl logs -f deployment/rc-rocketchat -``` - -You should be able to see the logs and see if something happened to keep it from starting. - diff --git a/installing-and-updating/paas-deployments/aws.md b/installing-and-updating/paas-deployments/aws.md deleted file mode 100644 index e36c2883e3..0000000000 --- a/installing-and-updating/paas-deployments/aws.md +++ /dev/null @@ -1,265 +0,0 @@ ---- -description: Deploying Rocket.Chat on Amazon Web Services ---- - -# AWS - -This guide covers the following: - -1. Hosting Rocket.Chat on an Amazon EC2 instance -2. Hosting a domain name with Amazon Route 53 -3. Securing your server with a free SSL certificate from Let's Encrypt - -## Launch an EC2 instance - -Log into AWS console, open the ["_EC2_" service](https://console.aws.amazon.com/ec2/), click on "_Instances_" in the left sidebar and click on "_Launch Instance_" to setup a new EC2 instance. Now follow the steps below: - -1. In the first step search for "_Ubuntu Server 18.04 LTS_" with "_64-bit \(x86\)_" architecture and click on "_Select_" -2. Select an instance type of your choice and click "_Next_" -3. Adjust the instance details as needed or keep the defaults. Proceed with "_Next_" -4. Adjust the storage size and configuration as needed and click on "_Next_" -5. Make sure to add a tag called "_Name_" and assign a value -6. Allow "_SSH_", "_HTTP_" and "_HTTPS_" in the security group configuration, proceed with "_Review and Launch_" -7. Review your instance configuration and confirm with "_Launch_" -8. Choose an existing key pair or create a new one and click on "_Launch Instance_" - -## Allocate an Elastic IP - -Back in the ["_EC2_" service](https://console.aws.amazon.com/ec2/) dashboard, click on "_Elastic IPs_" in the left sidebar: - -1. Click on "_Allocate New Address_" -2. Select "_Amazon's pool of IPv4 addresses_" and click on "_Allocate_" -3. Click on the newly created IP address and select "_Associate Elastic IP address_" -4. Select your instance and click "_Associate_" -5. In the details below, copy the "_Public DNS_". You will need it in the DNS step. - - \(It should be in a format like this: `ec2-18-197-161-168.eu-central-1.compute.amazonaws.com`\) - -## Configure DNS w/ AWS Route 53 - -Open the "_Route 53_" service dashboard: - -1. Create a new hosted zone by clicking on "_Create Hosted Zone_": -2. Enter your domain name and select "_Public Hosted Zone_" as type, then click on "_Create"_ -3. Select your newly created zone and click on "_Create Record Set_" -4. Enter "_www_" as subdomain \(if desired\), select Type "_CNAME_", enter the Public DNS name from the above step to the value field and click "_Create_" - -## Get an SSL certificate from Let's Encrypt - -We will use Let's Encrypt to get a free & open-source SSL certificate: - -1. SSH to your instance: - - ```text - ssh -i ubuntu@ - ``` - - Note: You may replace with domain name if your DNS has resolved. - -2. Install `certbot` using `apt`: - - ```text - sudo apt update - sudo apt install certbot - ``` - -3. Obtain certificate from Let's Encrypt: - - ```text - sudo certbot certonly --standalone --email -d -d - ``` - - Note: Second \(or more\) domain is optional. - -4. Optional step: restrict access using security groups - - If you would like to restrict traffic to your instance on AWS, you may now adjust the security groups again. Make sure you allow "_TCP/22_" from your current location for the SSH connection, as well as "_TCP/443_" from the location you wish to use to access from. - -## Configure Nginx web server with TLS/SSL - -1. Install Nginx web server: - - ```text - sudo apt-get install nginx - ``` - -2. Backup the default config file for reference: - - ```text - cd /etc/nginx/sites-available - sudo mv default default.reference - ``` - -3. Create a new site configuration for Rocket.Chat: - - ```text - sudo nano /etc/nginx/sites-available/default - ``` - - ```text - server { - listen 443 ssl; - - server_name ; - - ssl_certificate /etc/letsencrypt/live//fullchain.pem; - ssl_certificate_key /etc/letsencrypt/live//privkey.pem; - ssl_protocols TLSv1 TLSv1.1 TLSv1.2; - ssl_prefer_server_ciphers on; - ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; - - root /usr/share/nginx/html; - index index.html index.htm; - - # Make site accessible from http://localhost/ - server_name localhost; - - location / { - proxy_pass http://localhost:3000/; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_set_header Host $http_host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto http; - proxy_set_header X-Nginx-Proxy true; - proxy_redirect off; - } - } - - server { - listen 80; - - server_name ; - - return 301 https://$host$request_uri; - } - ``` - - Make sure to replace `ABC.DOMAIN.COM` with your domain \(it appears 4 times\). Make sure to update it in the path to your key files as well: - -4. Test the Nginx configuration to make sure there are no syntax errors: - - ```text - sudo nginx -t - ``` - -5. If the syntax test went successful, restart Nginx: - - ```text - sudo systemctl restart nginx - ``` - -Confirm that it is running properly by opening a web browser and going to your domain name. You will get a page stating "_502 Bad Gateway_". This is expected, since the Rocket.Chat backend is not yet running. Make sure the SSL connection is working properly by clicking the lock icon next to the address bar, make sure it's valid and issued by "_Let's Encrypt Authority X3_". - -## Install Docker & Docker Compose - -1. Install Docker \(and any dependencies\) - - ```text - sudo apt-get update - sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - - sudo apt-key fingerprint 0EBFCD88 - # confirm the fingerprint matches "9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88" - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" - sudo apt-get update - sudo apt-get install docker-ce docker-ce-cli containerd.io - ``` - -2. Install `docker-compose`: - - ```text - sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose - sudo chmod +x /usr/local/bin/docker-compose - ``` - -## Set up Docker containers - -1. Create local directories - - ```text - sudo mkdir -p /opt/docker/rocket.chat/data/runtime/db - sudo mkdir -p /opt/docker/rocket.chat/data/dump - ``` - -2. Create the `docker-compose.yml` file, again make sure to replace `ABC.DOMAIN.COM` with your actual domain name: - - ```text - sudo nano /opt/docker/rocket.chat/docker-compose.yml - ``` - - ```text - version: '2' - - services: - rocketchat: - image: rocket.chat:latest - command: > - bash -c - "for i in `seq 1 30`; do - node main.js && - s=$$? && break || s=$$?; - echo \"Tried $$i times. Waiting 5 secs...\"; - sleep 5; - done; (exit $$s)" - restart: unless-stopped - volumes: - - ./uploads:/app/uploads - environment: - - PORT=3000 - - ROOT_URL=https:// - - MONGO_URL=mongodb://mongo:27017/rocketchat - - MONGO_OPLOG_URL=mongodb://mongo:27017/local - depends_on: - - mongo - ports: - - 3000:3000 - - mongo: - image: mongo:4.0 - restart: unless-stopped - command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1 - volumes: - - ./data/runtime/db:/data/db - - ./data/dump:/dump - - # this container's job is just to run the command to initialize the replica set. - # it will run the command and remove himself (it will not stay running) - mongo-init-replica: - image: mongo:4.0 - command: > - bash -c - "for i in `seq 1 30`; do - mongo mongo/rocketchat --eval \" - rs.initiate({ - _id: 'rs0', - members: [ { _id: 0, host: 'localhost:27017' } ]})\" && - s=$$? && break || s=$$?; - echo \"Tried $$i times. Waiting 5 secs...\"; - sleep 5; - done; (exit $$s)" - depends_on: - - mongo - ``` - -3. Start containers: - - ```text - cd /opt/docker/rocket.chat - sudo docker-compose up -d - ``` - -4. Wait a bit for the replica set to be initialized for MongoDB \(about 30-60 seconds\) and confirm Rocket.Chat is running properly: - - ```text - sudo docker-compose logs -f rocketchat - ``` - -## Use it - -1. Login to your site at `https://ABC.DOMAIN.COM` - - Note: the first user to login will be an administrator user. - diff --git a/installing-and-updating/paas-deployments/cloudron-io.md b/installing-and-updating/paas-deployments/cloudron-io.md deleted file mode 100644 index 3311ae8de1..0000000000 --- a/installing-and-updating/paas-deployments/cloudron-io.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -description: Deploying Rocket.Chat on Cloudron.io ---- - -# Cloudron.io - -Cloudron is a complete solution for running apps on your server and keeping them up-to-date and secure. - -Rocket.Chat can be installed on [Cloudron](https://cloudron.io) from the [Cloudron Store](https://cloudron.io/store/chat.rocket.cloudronapp.html). - -[![Install](https://cloudron.io/img/button.svg)](https://cloudron.io/button.html?app=chat.rocket.cloudronapp) - -The source code for the Rocket.Chat package can be found [here](https://git.cloudron.io/cloudron/rocketchat-app). - -There is a demo at [https://my.demo.cloudron.io](https://my.demo.cloudron.io) \(username: cloudron password: cloudron\). - diff --git a/installing-and-updating/paas-deployments/d2c-io.md b/installing-and-updating/paas-deployments/d2c-io.md deleted file mode 100644 index d96c28151e..0000000000 --- a/installing-and-updating/paas-deployments/d2c-io.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -description: Deploying Rocket.Chat on D2C.io ---- - -# D2C.io - -## Supported cloud providers - -* AWS -* GCP -* Digital Ocean -* Vultr -* UpCloud - -## Supported operation systems and other requirements for connecting own servers: - -* OS: Ubuntu server 16.04/18.04; Debian 8/9 -* We strongly recommend to use a kernel with version >= 4.0 for better Docker performance using OverlayFS, otherwise the storage driver - will be "devicemapper" -* Free disk space: 5 Gb -* Opened incoming SSH port -* For the Weave network to work, you must open ports 6783, 6784 \(TCP/UDP\) -* For better performance, we recommend ensuring that VXLAN tunneling is allowed - -## Deploy - -Single click deployment. Version 0: - -[![Deploy](https://raw.githubusercontent.com/mastappl/images/master/deployTo.png)](https://panel.d2c.io/?import=https://github.com/d2cio/rocketchat-stack/archive/master.zip/) - -Single click deployment. Version 1: - -[![Deploy](https://raw.githubusercontent.com/mastappl/images/master/deployTo.png)](https://panel.d2c.io/?import=https://github.com/d2cio/rocketchat-replicaset-stack/archive/master.zip) - -### Demo - -![How to deploy a stack](https://raw.githubusercontent.com/mastappl/images/master/rocketchat.gif) - diff --git a/installing-and-updating/paas-deployments/digitalocean.md b/installing-and-updating/paas-deployments/digitalocean.md deleted file mode 100644 index a980239452..0000000000 --- a/installing-and-updating/paas-deployments/digitalocean.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -description: Deploying Rocket.Chat on DigitalOcean ---- - -# DigitalOcean - -You can now install Rocket.Chat on DigitalOcean using a 1-Click install from the DigitalOcean Marketplace. - -[![do-btn-blue](https://user-images.githubusercontent.com/51996/58146107-50512580-7c1a-11e9-8ec9-e032ba387c2a.png)](https://marketplace.digitalocean.com/apps/rocket-chat?action=deploy&refcode=1940fe28bd31) - -After you create your 1-Click install using the Rocket.Chat app in DigitalOcean Marketplace, you'll likely want a registered domain name to access Rocket.Chat. - -We recommend setting up an A record from your domain to your servers IP address. Ex: chat.mycompany.com - -Rocket.Chat will not work with HTTPS out of the box because certificates are unique for each installation, but with this setup HTTPS will be available using Let's Encrypt certificates. - -After the Rocket.Chat One-Click is finished and your domain is setup. You will need to login to your droplet to finish setup. - -```text -ssh root@your_droplet_ip -``` - -Once you are connected you should see something like: - -```text -Rocket.Chat is the leading open source team chat software solution. Free, unlimited and completely customizable with on-premises and SaaS cloud hosting. -Replace email, HipChat & Slack with the ultimate team chat software solution. - - Out of the box you can access Rocket.Chat server at: http://Droplet-IP:3000 - - You will likely want a registered domain name to access Rocket.Chat. If you would like your server to be accessible over https we provide the option to use letsencrypt by running: - # rocketchatctl configure --lets-encrypt --root-url=https://chat.yourcompany.com --letsencrypt-email=admin@yourcompany.com - - In case you do not own a registered domain, you could use the public IP of your droplet, but traefik will not be able to fetch certificates for you so you will see a privacy alert message when loading https://droplet-IP - # rocketchatctl configure --lets-encrypt --root-url=https://droplet-IP --letsencrypt-email=admin@yourcompany.com - - If you would like https with something other than letsencrypt provided certificates you will have to manually edit the traefik config to add it. - - In case you do own a registered domain, but you do not want to use traefik, you can just configure your site URL running: - # rocketchatctl configure --rocketchat --root-url=http://chat.yourcompany.com:3000 - - Keep your RocketChat server updated using rocketchatctl update. Run rocketchatctl -h to see the full list of available options. - - Looking for how to use Rocket.Chat? Be sure to check our docs: https://docs.rocket.chat - - Checkout our Digital Ocean docs: https://docs.rocket.chat/installation/paas-deployments/digital-ocean/ - - Need some help? Join our community forums https://forums.rocket.chat -``` - -Besides the recommended setup you can out of the box access Rocket.Chat server at: [http://Droplet-IP:3000](http://Droplet-IP:3000) - -## Setting up HTTPS - -We recommend you to finish the Traefik loadbalancer configuration to handle HTTPS. Run this command to fetch Let's Encrypt certificates for your installation: - -```text -rocketchatctl configure --lets-encrypt --root-url=https://chat.yourcompany.com --letsencrypt-email=admin@yourcompany.com -``` - -You can then access at: [https://chat.yourcompany.com](https://chat.yourcompany.com>) replacing chat.yourcompany.com with the address you set in your DNS. - -The Loadbalancer will redirect HTTP to HTTPS - -## Firewall - -This image comes with a ufw firewall enabled and the ports allowed for incomingo traffic are: - -* ssh 22 -* http 80 -* https 443 -* rocketchat 3000 - diff --git a/installing-and-updating/paas-deployments/galaxy.md b/installing-and-updating/paas-deployments/galaxy.md deleted file mode 100644 index 896dc7967d..0000000000 --- a/installing-and-updating/paas-deployments/galaxy.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -description: Deploying Rocket.Chat on Galaxy ---- - -# Galaxy - -Galaxy is a platform-as-a-service built specifically for Meteor apps. Built using the latest Docker and AWS cloud infrastructure. - -You will need to sign up for [Galaxy](https://www.meteor.com/hosting/). - -## Get Rocket.Chat code - -Download the source code first to be able to deploy to Galaxy - -```text -git clone https://github.com/RocketChat/Rocket.Chat.git -cd Rocket.Chat -``` - -### Set your MongoDB URL - -You will need a Mongo database configured for your Rocket.Chat application, for better performance as meteor hosting uses AWS it is advice you setup your database in the same AWS region. - -Create a settings.json file to set environmental variable as follows: - -```text -{ - "galaxy.meteor.com": { - "env": { - "MONGO_URL": "mongodb://:@:/?replicaSet=rs01", - "MONGO_OPLOG_URL": "mongodb://:@:/?authSource=admin&replicaSet=rs01", - "ROOT_URL": "...", - "MAIL_URL": "...", - - } - } -} -``` - -### Deploy to Galaxy servers - -Execute this from the root of the source code: - -```text -DEPLOY_HOSTNAME=[region] meteor deploy [hostname] --settings [filepath.json] -``` - -* region is ‘galaxy.meteor.com’ for US East, ‘eu-west-1.galaxy.meteor.com’ for EU West, and ‘ap-southeast-2.galaxy.meteor.com’ for Asia-Pacific. -* hostname is the fully qualified domain name where you’re planning to host your application \(using in the .meteorapp.com hostname format, in this example\). -* filepath.json is the path to your settings file \(for example, ‘./settings.json’\). - -For more information on these steps check out [galaxy's doc](https://galaxy-guide.meteor.com/migrate-app.html) - diff --git a/installing-and-updating/paas-deployments/google-compute-engine.md b/installing-and-updating/paas-deployments/google-compute-engine.md deleted file mode 100644 index f6e28ed453..0000000000 --- a/installing-and-updating/paas-deployments/google-compute-engine.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -description: Deploying Rocket.Chat on Google Compute Engine ---- - -# Google Compute Engine - -## 1. Create a compute instance - -1. Click create VM instance in google cloud console -2. Select a preferred Machine Type \(Default : 1cpu, 3.75GB Memory\) -3. Select a linux image \(Default Debian/ ubuntu\) -4. Allow HTTP/S Traffic - -## 2. SSH to the instance - -Connect to the instance by SSH or connect via browser on port other than 80 - -## 3. run the following to install docker - -`sudo wget -qO- https://get.docker.com/ | sh` - -## 4. Create a container network - -`docker network create chatNetwork` - -## 5. install a docker image for mongo db - -```bash -sudo docker run --name mongo --network chatNetwork -d mongo \ ---smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1 -``` - -## 6. Configure a mongo db replica set - -ssh in to the mongodb docker container `sudo docker exec -it mongo mongo` - -Execute this following script to create a replica set `rs.initiate({ _id: 'rs0', members: [ { _id: 0, host: 'localhost:27017' } ]})` - -Exit docker container - -## 7. install a docker image for rocketchat - -`ROOT_URL` should be substituted for your own domain: - -```bash -docker run --name rocketchat -d -p 80:3000 \ ---network chatNetwork --env PORT=3000 \ ---env ROOT_URL=https://www.test.com \ ---env MONGO_URL=mongodb://mongo:27017/rocketchat \ ---env MONGO_OPLOG_URL=mongodb://mongo:27017/local rocket.chat:latest -``` - -You are now running rocket chat on compute engine. You can open a browser with the external IP of the instance. - -If you want the containers to start each time the instance reboots configure the following to the instance. - -* click on the instance in the and hit "edit" -* Under "Custom metadata" add an item with - -```text -key: "startup-script" -value "sudo docker start mongo; -sudo docker start rocketchat" -``` - diff --git a/installing-and-updating/paas-deployments/google-computer-engine.md b/installing-and-updating/paas-deployments/google-computer-engine.md deleted file mode 100644 index f976fbb193..0000000000 --- a/installing-and-updating/paas-deployments/google-computer-engine.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -description: Deploying Rocket.Chat on Google Cloud Platform ---- - -# Google Cloud Platform - -Soon it will be possible to set up Rocket.Chat in 1 click using the Google Cloud Platform Marketplace. - -Check for more instructions later. - diff --git a/installing-and-updating/paas-deployments/ibm-cloud.md b/installing-and-updating/paas-deployments/ibm-cloud.md deleted file mode 100644 index ec6b3da74c..0000000000 --- a/installing-and-updating/paas-deployments/ibm-cloud.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -description: Deploying Rocket.Chat on IBM Cloud ---- - -# IBM Cloud - -IBM Cloud have various options for hosting Rocket.Chat, Docker container on a Kubernetes cluster, VMWare, Bare Metal Server, but the instructions below will focus in creating a Cloud Foundry Rocket.Chat app. - -## Prerequisite - -* An IBM Cloud account -* The IBM Cloud command line client \(ibmcloud\) installed -* git - -## Deploying Rocket.Chat - -First, logon to the [IBM Cloud dashboard](https://cloud.ibm.com/) and then select in the Apps box, `Create an app`. - -Then give the Rocket.Chat server a unique app name, select as `Starting point` Create a new app, and as `Platform` select Node.js. Finish by clicking `Create`. - -After creation is finished, select `Create service` from the App Details tab, select Databases from the list of services, and Databases for MongoDB. - -Configure MongoDB to enable oplog tailing and intiate a replicaset. - -All remaining steps will be preformed at the command line. - -Git clone the latest Rocket.Chat: - -```text -git clone https://github.com/RocketChat/Rocket.Chat.git -``` - -Log in to the IBM Cloud command-line interface: - -```text -ibmcloud cf login -``` - -Push Rocket.Chat to the app you created early in the dashboard using meteor-buildpack-horse: - -```text -cf push -m 512M -b https://github.com/RocketChat/meteor-buildpack-horse.git -``` - -Go to `https://.mybluemix.net/` in your browser to access your instance of Rocket.Chat - -If you encounter any problem check the IBM Cloud Creating Apps instructions [here](https://cloud.ibm.com/docs/apps/tutorials?topic=creating-apps-tutorial-starterkit). - diff --git a/installing-and-updating/paas-deployments/indiehosters.md b/installing-and-updating/paas-deployments/indiehosters.md deleted file mode 100644 index 164ad887ba..0000000000 --- a/installing-and-updating/paas-deployments/indiehosters.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -description: Deploying Rocket.Chat on IndieHosters ---- - -# IndieHosters - -Get your Rocket.Chat instance hosted in a "as a Service" style. You register and we manage it for you! \(updates, backup...\) - -[Rocket.Chat on IndieHosters](https://indie.host/apps/rocketchat/) - diff --git a/installing-and-updating/paas-deployments/jelastic.md b/installing-and-updating/paas-deployments/jelastic.md deleted file mode 100644 index a0f288ca6a..0000000000 --- a/installing-and-updating/paas-deployments/jelastic.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -description: Deploying Rocket.Chat on Jelastic ---- - -# Jelastic - -Rocket.Chat is installed automatically as an application based on prebuilt Docker containers on Jelastic PaaS which supports Java, PHP, Node.js, Ruby, Python, Docker and Kubernetes, available as public, private on-premise, virtual private, hybrid and multi-cloud. - -## Rocket.Chat Deployment to the Cloud - -Get your Jelastic account at any of available [hosting provider](https://jelastic.cloud/). - -Click the **DEPLOY TO JELASTIC** button, specify your email address within the widget and press **Install**. - -[![Deploy to Jelastic](https://github.com/jelastic-jps/git-push-deploy/raw/master/images/deploy-to-jelastic.png)](https://jelastic.com/install-application/?manifest=https://raw.githubusercontent.com/jelastic-jps/rocket-chat/master/manifest.jps) - -> **Note:** If you are already registered at Jelastic, you can deploy this application by [importing](https://docs.jelastic.com/environment-import) the [package manifest raw link](https://raw.githubusercontent.com/jelastic-jps/rocket-chat/master/manifest.jps) or find Rocket.Chat application in the [Marketplace](https://docs.jelastic.com/marketplace) within the [dashboard](https://docs.jelastic.com/dashboard-guide). - -## Installation Process - -In the opened confirmation window at Jelastic dashboard, if required change: - -* **Environment** name -* **Display Name** -* destination [**Region**](https://docs.jelastic.com/environment-regions) if several are available - -and click on **Install**. - -![](https://github.com/jelastic-jps/rocket-chat/raw/master/images/install.png) - -Once the deployment is finished, you’ll see an appropriate success pop-up. - -![](https://github.com/jelastic-jps/rocket-chat/raw/master/images/success.png) - -The application is ready to use just press **Open in Browser** button and proceed to admin account setup and to configuration and customization. - -For production mode, the installation will require a custom domain and traffic encryption with valid SSL certificate wich can be installed with [Let's Encrypt SSL Add-On](https://jelastic.com/blog/free-ssl-certificates-with-lets-encrypt/). Learn more how to [install Rocket.Chat in Jelastic](https://jelastic.com/blog/install-rocketchat-server/). - -The installation process itself looks simple. - -![](https://github.com/jelastic-jps/rocket-chat/raw/master/images/rocketchat.gif) - diff --git a/installing-and-updating/paas-deployments/koozali.md b/installing-and-updating/paas-deployments/koozali.md deleted file mode 100644 index 171987b328..0000000000 --- a/installing-and-updating/paas-deployments/koozali.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -description: Deploying Rocket.Chat on Koozali SME ---- - -# Koozali SME - -![](../../.gitbook/assets/image%20%282%29%20%281%29.png) - -{% hint style="info" %} -**Has not yet been updated to work with 1.0** -{% endhint %} - -Add Rocket.Chat to this world famous time tested small enterprise server today: - -{% embed url="https://wiki.contribs.org/Rocket\_Chat" %} - -{% embed url="https://wiki.contribs.org/Rocket\_Chat:Contrib" %} - - - diff --git a/installing-and-updating/paas-deployments/openshift.md b/installing-and-updating/paas-deployments/openshift.md deleted file mode 100644 index bb1579aee3..0000000000 --- a/installing-and-updating/paas-deployments/openshift.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -description: Deploying Rocket.Chat on OpenShift ---- - -# OpenShift - -This guide covers how to host Rocket.Chat on OpenShift Online Next Gen. - -OpenShift Online Next Gen is a completely rewritten PaaS solution based on Docker and Kubernetes that allows developers to quickly develop, host and scale application in a cloud environment. OpenShift provides a CLI based tool that allows manage your projects and applications. Please refer to [Getting Started with the CLI](https://docs.openshift.com/online/cli_reference/get_started_cli.html#cli-reference-get-started-cli) documentation in OpenShift website. - -## Table of Contents - -1. [Login](openshift.md#1-login) -2. [Create a project](openshift.md#2-create-a-project) -3. [Import the ImageStream and templates](openshift.md#3-import-the-imagestream-and-templates) -4. [Create the app](openshift.md#4-create-the-app) - -## 1. Login - -First of all we need to login to OpenShift API URL to create our project. The command to login to OpenShift Online Next Gen is shown below: - -```bash -# oc login https://api.preview.openshift.com --token= -``` - -You can find the API Token to login to OpenShift Online Next Gen in the about page of the Web console. - -## 2. Create a project - -After login to OpenShift Online Next Gen, we need to create a project to host our Rocket.Chat application: - -```bash -$ oc new-project rocket-chat -``` - -## 3. Import the ImageStream and templates - -Clone the Rocket.Chat GitHub repository and import the templates to your OpenShift project: - -```bash -# git clone https://github.com/RocketChat/Rocket.Chat -# cd Rocket.Chat -# oc create -f .openshift/rocket-chat-ephemeral.json -# oc create -f .openshift/rocket-chat-persistent.json -``` - -## 4. Create the app - -Create the application using the newly created templated and passing the `MONGODB_DATABASE`,`MONGODB_USER` and `MONGODB_PASSWORD` parameters: - -```bash -# oc new-app rocket-chat -p MONGODB_DATABASE=rocketchat -p MONGODB_USER=rocketchat-admin -p MONGODB_PASSWORD=rocketchat -``` - -* Rocket.Chat uses a domain check code to verify the validity of the e-mail address. To disable it, run the following commands: - -```bash -# oc port-forward 27017 -# mongo localhost:27017 - -> use rocketchat -> db.auth('rocketchat-admin','rocketchat') -> db.rocketchat_settings.update({_id:'Accounts_UseDNSDomainCheck'},{$set:{value:false}}) -``` - diff --git a/installing-and-updating/paas-deployments/oracle-cloud.md b/installing-and-updating/paas-deployments/oracle-cloud.md deleted file mode 100644 index 21b549309b..0000000000 --- a/installing-and-updating/paas-deployments/oracle-cloud.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -description: Deploying Rocket.Chat on Oracle Cloud Infrastructure ---- - -# Oracle Cloud - -You can install Rocket.Chat on Oracle infrastructure using the Rocket.Chat application from the Oracle Cloud Marketplace, it is a very easy install. Find our listing in Oracle's marketplace [here](https://cloudmarketplace.oracle.com/marketplace/en_US/listing/72006881). - -The Rocket.Chat App installs a Linux image with everything needed for the Rocket.Chat server to run, repositories, directories and permissions, systemd files, needed libraries, node, mongo database server and traefik to be used as the webserver optionally. - -To be able to install the image from the marketplace you will need to login to your Oracle Cloud Infrastructure account, after that go the main Menu and select Marketplace and Applications: - -![](../../.gitbook/assets/oracledocs1.png) ![](../../.gitbook/assets/oracledocs2.png) - -Select the Rocket.Chat application, you will see lots of information about the image including usage instructions to follow once the instance is already running, choose a compartiment for the installation and launch your instance: - -![](../../.gitbook/assets/oracledocs3%20%281%29.png) ![](../../.gitbook/assets/oracledocs3.png) - -This application will run in a compute instance, you can change the shape of it to fit your usage needs, find more information of our minimum resource recommendations [here](https://docs.rocket.chat/installation/minimum-requirements/#minimum-requirements-for-server-deployment). - -![ComputeInstance](../../.gitbook/assets/oracledocs5.png) - -Wait for the provisioning stage to be finished and you will find information about your instance you will need later, like the public IP and the subnet where it's running, the image running in your instance allows traffic to Rocket.Chat required ports using iptables rules, but you need to edit the security group associted to the subnet where the instance is running for the traffic to actually go through: - -![Ports](../../.gitbook/assets/oracledocs6.png) ![Ports](../../.gitbook/assets/oracledocs7.png) ![Ports](../../.gitbook/assets/oracledocs8.png) - -Finally add the following ports to the security group 3000, 443 and optionally 80 \(you can edit this later and adapt it to your architecture designs\): - -![Ports](../../.gitbook/assets/oracledocs9.png) - -And that should be all you need to do in the Oracle account, now move to the new instance running, you’ll likely want a registered domain name to access Rocket.Chat and secure the access. - -## Configuring your Rocket.Chat server: Setting up HTTPS, Backups and Upgrades - -In the image you will find rocketchatctl, a command line tool written in bash to help you configure Rocket.Chat HTTPS access among other things, you can use this command to easily keep that Rocket.Chat server installation up to date, schedule backups and periodically check for Rocket.Chat updates available and update it to the latest release. - -We recommend setting up an A record for your domain pointing to your instance IP address. Ex: chat.mycompany.com - -Rocket.Chat will not work with HTTPS out of the box because certificates are unique for each installation, but with this setup HTTPS will be available using Let’s Encrypt certificates. - -Be sure your domain is setup correctly, use a DNS query to resolve the name chosen and confirm it returns the public IP of the instance. Then login to your instance to finish setup: - -```bash -ssh ubuntu@your_instance_public_ip -``` - -Once you are connected you should see something like: - -```bash -Rocket.Chat is the leading open source team chat software solution. Free, unlimited and completely customizable with on-premises and SaaS cloud hosting. - -Replace email, HipChat & Slack with the ultimate team chat software solution. - - Out of the box you can access Rocket.Chat server at: http://VM-IP:3000 - - You will likely want a registered domain name to access Rocket.Chat. If you would like your server to be accessible over https we provide the option to use letsencrypt by running: - # rocketchatctl configure --lets-encrypt --root-url=https://chat.yourcompany.com --letsencrypt-email=admin@yourcompany.com - - In case you do not own a registered domain, you could use the public IP of your VM, but traefik will not be able to fetch certificates for you so you will see a privacy alert message when loading https://VM-IP - # rocketchatctl configure --lets-encrypt --root-url=https://VM-IP --letsencrypt-email=admin@yourcompany.com - - If you would like https with something other than letsencrypt provided certificates you will have to manually edit the traefik config to add it. - - In case you do own a registered domain, but you do not want to use traefik, you can just configure your site URL running: - # rocketchatctl configure --rocketchat --root-url=http://chat.yourcompany.com:3000 - - Keep your RocketChat server updated using rocketchatctl update. Run rocketchatctl -h to see the full list of available options. - - Looking for how to use Rocket.Chat? Be sure to check our docs: https://docs.rocket.chat - - Need some help? Join our community forums https://forums.rocket.chat -``` - -### Setting up HTTPS - -Out of the box you can access Rocket.Chat server at: `http://Instance-Public-IP:3000`, but we recommend you to finish the Traefik loadbalancer configuration to handle HTTPS. Run this command to fetch Let's Encrypt certificates for your installation: - -```bash -rocketchatctl configure --lets-encrypt --root-url=https://chat.yourcompany.com --letsencrypt-email=admin@yourcompany.com -``` - -You can then access at: `https://chat.yourcompany.com` replacing `chat.yourcompany.com` with the address you set in your DNS. - -The Loadbalancer will redirect HTTP to HTTPS. - -### Backup and Upgrade Rocket.Chat version - -See available option for rocketchatctl: - -```bash -rocketchatctl -h -``` - -Always be sure you are running the last rocketchatctl version, specially since the image from the Marketplace could have an out of date version: - -```bash -rocketchatctl upgrade-rocketchatctl -``` - -Backup mongodb database with backup option, we recommend this option before upgrades: - -```bash -rocketchatctl backup --dir= -``` - -Check for available updates and optionally update to the latest release: - -```bash -rocketchatctl check-updates -``` - -```bash -rocketchatctl update -``` - diff --git a/installing-and-updating/paas-deployments/readyspace.md b/installing-and-updating/paas-deployments/readyspace.md deleted file mode 100644 index 105261140c..0000000000 --- a/installing-and-updating/paas-deployments/readyspace.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -description: Deploying Rocket.Chat on ReadySpace Cloud ---- - -# ReadySpace - -ReadySpace offers both Linux and Windows VPS backed by SSDs. There needs to be no specialized configuration. - -Please follow the respective guide for the operating system you are using, - -1. centOS : [Click Here](https://docs.rocket.chat/installation/manual-installation/centos/) -2. Ubuntu : [Click Here](https://docs.rocket.chat/installation/manual-installation/ubuntu/) -3. Debian : [Click Here](https://docs.rocket.chat/installation/manual-installation/debian/) -4. Windows : [Click Here](https://docs.rocket.chat/installation/manual-installation/windows-server/) - -If you are using Docker, follow these instructions: [Click Here](https://docs.rocket.chat/installation/docker-containers) - -Please have a look at our website : [https://readyspace.com](https://readyspace.com) - diff --git a/installing-and-updating/paas-deployments/sandstorm-io.md b/installing-and-updating/paas-deployments/sandstorm-io.md deleted file mode 100644 index 1eec50d594..0000000000 --- a/installing-and-updating/paas-deployments/sandstorm-io.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -description: Deploying Rocket.Chat on Sandstorm.io ---- - -# Sandstorm.io - -Host your own Rocket.Chat server in four seconds flat: - -[![Rocket.Chat on Sandstorm.io](https://raw.githubusercontent.com/Sing-Li/bbug/master/images/sandstorm.jpg)](https://apps.sandstorm.io/app/vfnwptfn02ty21w715snyyczw0nqxkv3jvawcah10c6z7hj1hnu0) - diff --git a/installing-and-updating/paas-deployments/scalingo.md b/installing-and-updating/paas-deployments/scalingo.md deleted file mode 100644 index 94d2b00755..0000000000 --- a/installing-and-updating/paas-deployments/scalingo.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -description: Deploying Rocket.Chat on Scalingo ---- - -# Scalingo - -Deploy your own Rocket.Chat server instantly on [Scalingo](https://scalingo.com) - -[![Deploy on Scalingo](https://cdn.scalingo.com/deploy/button.svg)](https://my.scalingo.com/deploy?source=https://github.com/RocketChat/Rocket.Chat#master) - diff --git a/installing-and-updating/paas-deployments/sloppy-io.md b/installing-and-updating/paas-deployments/sloppy-io.md deleted file mode 100644 index 27b8b15c16..0000000000 --- a/installing-and-updating/paas-deployments/sloppy-io.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -description: Deploying Rocket.Chat on Sloppy.io ---- - -# Sloppy.io - -> **NOTE:** Has not yet been updated to work with 1.0+ - -[sloppy.io](http://sloppy.io) is a CaaS \(Container as a Service\) Provider. You can deploy, scale and manage your dockerized applications in seconds. [Try it for free](http://sloppy.io/#signup) - -Host your docker container at [sloppy.io](http://sloppy.io). Get an account and use the [quickstarter](https://github.com/sloppyio/quickstarters/tree/master/rocketchat) - -## Start it - -```text -sloppy start rocketchat.json -var=USERNAME:yourusername,URI:mydomain.sloppy.zone -``` - -Example: - -```text -sloppy start rocketchat.json -var=USERNAME:john,URI:coolchat.sloppy.zone -``` - diff --git a/installing-and-updating/snaps/README.md b/installing-and-updating/snaps/README.md deleted file mode 100644 index a0a4fef575..0000000000 --- a/installing-and-updating/snaps/README.md +++ /dev/null @@ -1,354 +0,0 @@ -# Snaps - -## Installation - -Installing a snap on Ubuntu is as easy as - -```text -sudo snap install rocketchat-server -``` - -Then browse to `http://localhost:3000` and setup Rocket.Chat. - -Snaps are secure. Rocket.Chat and all of its dependencies are isolated from the rest of your system. Snaps also auto update when we release a new version. So no need more hassle updating. - -On Ubuntu 16.04LTS, install `snapd` first: - -```text -sudo apt-get install snapd -``` - -To move between different major releases, from 2.x to 3.x or from 3.x to 4.x, take a look at [snap tracks](https://forums.rocket.chat/t/introducing-snap-tracks/5890). - -## FAQ - -If you have questions about snaps best place to ask them is at the [\#ubuntu-snap](https://open.rocket.chat/channel/ubuntu-snap) channel. - -### When will my snap installation get the latest release? - -Snaps are one of our biggest install base. They are also auto updating. As a result we like to spend more time testing before releasing. Updated Snaps are usually released around the 15th of the month - around 2 weeks after a new release. This gives us time to look for issues so you don't have to. - -If you have special requirements and really need to use the latest release immediately then please consider another installation method e.g docker - -### How do I access my site at a different port? How do I enable TLS/SSL with my snap? - -You can change the default port \(port 3000\) to something else by changing the `port` configuration option. For example if you wanted to change the HTTP port to 8080 instead of 3000: - -```text -sudo snap set rocketchat-server port=8080 -``` - -Make sure you restart the `rocketchat-service` service afterwards for the change to take effect. Read [here](https://docs.rocket.chat/installing-and-updating/snaps#i-need-to-restart-rocket-chat-how-do-i-do-this) for more information on that. **Your only need to restart the RocketChat application itself, not the database or Caddy**. - -For enabling TLS/SSL, check out our guide for enabling caddy [here](auto-ssl-with-snaps.md). - -### Ubuntu 16.04 LTS gives message "snap not found", what's wrong? - -Make sure you're using x64 or amd64 \(or armhf\) images, especially on VPS or VMs. x86 \(32-bit\) is not supported. - -### How do I manually update to a new release? - -While updates happen automatically usually within 6 hours from time of release, you can update manually by issuing this command: - -```text -sudo snap refresh rocketchat-server -``` - -### How do I revert to the previous version of Rocket.Chat? - -```text -sudo snap revert rocketchat-server -``` - -### How do I list the services shipped with Rocket.Chat snap? - -The Rocket.Chat snap provides three services. Outside of the snap context, globally, each service is named like `snap..`. Look at the table down below to have a better understanding. - -| Service | Snap Service Name | Systemd Service Name | -| :--- | :--- | :--- | -| MongoDB | rocketchat-mongo | snap.rocketchat-server.rocketchat-mongo | -| Caddy | rocketchat-caddy | snap.rocketchat-server.rocketchat-caddy | -| RocketChat | rocketchat-server | snap.rocketchat-server.rocketchat-server | - -You can check the list of services yourself with: - -```text -snap info rocketchat-server -``` - -Look for the `services` section. - -### How do I tell if Rocket.Chat is actually running? - -You can check whether either or all of them are running or not with the following command: - -```bash -snap services rocketchat-server -``` - -Look into the third column \(`Current`\) that logs the current state of the services. - -Another option is to use the `systemctl` command. To quickly check if a service is active or not, use the `is-active` subcommand or the more well-known `status` subcommand. See the above table to know the name of the service you want to inspect. - -```text -systemctl is-active snap.rocketchat-server.rocketchat-mongo -systemctl is-active snap.rocketchat-server.rocketchat-caddy -systemctl is-active snap.rocketchat-server.rocketchat-server -``` - -Or use the `status` subcommand: - -```text -systemctl status snap.rocketchat-server.rocketchat-mongo -systemctl status snap.rocketchat-server.rocketchat-caddy -systemctl status snap.rocketchat-server.rocketchat-server -``` - -### How can I view the logs? - -You can either use the `snap logs` command, or the systemd alternative, `journalctl`. Always refer to [this table](https://docs.rocket.chat/installing-and-updating/snaps#how-do-i-list-the-services-shipped-with-rocket-chat-snap) to know which service name to use where. - -Using `snap logs`: - -```text -sudo snap logs -f rocketchat-server.rocketchat-server -sudo snap logs -f rocketchat-server.rocketchat-mongo -sudo snap logs -f rocketchat-server.rocketchat-caddy -``` - -To see the logs from Rocket.Chat using `journalctl`: - -```text -sudo journalctl -fu snap.rocketchat-server.rocketchat-server -``` - -To see the logs from Mongo or Caddy: - -```text -sudo journalctl -fu snap.rocketchat-server.rocketchat-mongo -sudo journalctl -fu snap.rocketchat-server.rocketchat-caddy -``` - -### How do I schedule updates? - -If you don't want snaps just updating when available you can set when your snaps will update. - -The following example asks the system to only update snaps between 4.00am and 7.00am, and 7.00pm and 10:10pm: - -```text -sudo snap set system refresh.timer=4:00-7:00,19:00-22:10 -``` - -You can find more about your options in the [snapcraft documentation](https://snapcraft.io/docs/keeping-snaps-up-to-date#heading--controlling-updates). - -### I need to restart Rocket.Chat, how do I do this? - -This follows the similar structure as many of the previous questions. You can use both the `snap` command or `systemctl` to restart RocketChat. - -With `snap` you get the additional benefit of restarting all of the services with a single command: - -```text -sudo snap restart rocketchat-server -``` - -You can also restart each service individually: - -```text -sudo snap restart rocketchat-server.rocketchat-server -sudo snap restart rocketchat-server.rocketchat-mongo -sudo snap restart rocketchat-server.rocketchat-caddy -``` - -To restart Rocket.Chat using `systemctl`: - -```text -sudo systemctl restart snap.rocketchat-server.rocketchat-server -``` - -Mongo and Caddy can similarly be restarted: - -```text -sudo systemctl restart snap.rocketchat-server.rocketchat-mongo -sudo systemctl restart snap.rocketchat-server.rocketchat-caddy -``` - -### What is the restart policy? - -The snap's policy is to restart on failure. - -### How do I backup my snap data? - -#### 1. Stop your rocketchat-server: - -```text -sudo snap stop rocketchat-server.rocketchat-server -``` - -_Please note: while the rocketchat-server service should be stopped, the rocketchat-mongo service should be kept running!_ - -```text -systemctl is-active snap.rocketchat-server.rocketchat-mongo -``` - -You should get `active` as a response. - -#### 2. Issue this backup command: - -```text -sudo snap run rocketchat-server.backupdb -``` - -If all goes well, you will see some output similar to: - -```text -[+] A backup of your data can be found at /var/snap/rocketchat-server/common/backup/rocketchat_backup_.tar.gz -``` - -#### 3. Start your rocketchat-server: - -```text -sudo snap start rocketchat-server.rocketchat-server -``` - -#### 4. Copy your backup file to a different location or system for safekeeping! - -### How do I restore backup data to my snap? - -#### 1. Stop your rocketchat-server: - -```text -sudo snap stop snap.rocketchat-server.rocketchat-server -``` - -_Please note: while the rocketchat-server service should be stopped, the rocketchat-mongo service should be kept running!_ - -```text -systemctl is-active snap.rocketchat-server.rocketchat-mongo -``` - -You should get `active` as a response. - -#### 2. Copy your backup file to the snap's common folder: - -```text -sudo cp rocketchat_backup.tar.gz /var/snap/rocketchat-server/common/ -``` - -#### 3. Issue this restore command: - -```text -sudo snap run rocketchat-server.restoredb /var/snap/rocketchat-server/common/rocketchat_backup.tgz -``` - -#### 4. If you are replacing an existing database, you will be warned: - -```text -*** ATTENTION *** -* Your current database WILL BE DROPPED prior to the restore! -* Do you want to continue? -1) Yes -2) No -#? -``` - -Select 1 or 2 according to your need. - -#### 5. If you choose to proceed and all goes well, you will see some output similar to: - -```text -[*] Extracting backup file... -[*] Restoring data... -[*] Preparing database... -[+] Restore completed! Please restart the snap.rocketchat services to verify. -``` - -_If something goes wrong, you will instead be presented with a path to the relevant log file to help remedy errors. In this case, the database may not be usable until a restore is successfully performed._ - -#### 6. Start your rocketchat-server: - -```text -sudo snap start rocketchat-server.rocketchat-server -``` - -### How do I access the MongoDB shell? - -You might want to access the mongo shell shipped with our RocketChat snap. To do so, run: - -```text -rocketchat-server.mongo -``` - -## How do I add option to mount media? - -Note that the interface providing the ability to access removable media is not automatically connected upon install, so if you'd like to use external storage \(or otherwise use a device in `/media` for data\), you need to give the snap permission to access removable media by connecting that interface: - -```text -sudo snap connect rocketchat-server:removable-media -``` - -### What folders do snaps use? - -* Your actual snap files for each version of Rocket.Chat are copied to: `/var/lib/snapd/snaps` and they are mounted in read-only mode. -* Your snap common directory is: `/var/snap/rocketchat-server/common/`; file uploads to disk and the database are stored here. -* Your snap data directory is `/var/snap/rocketchat-server/`; this is a versioned folder. -* You can access the current snap data directory at `/var/snap/rocketchat-server/current`. - -### How do I remove a specific previous version of Rocket.Chat? - -You can do this by issuing the following command, where `N` is the desired version: - -```text -snap remove --revision=N rocketchat-server -``` - -### How do I add a tool like strace to debug what's happening in my snap? - -```text -snapcraft prime -snap try prime --devmode -cp /usr/bin/strace prime -snap run --shell -sudo ./strace -``` - -### How do I change rocket.chat PORT, MONGO\_URL and MONGO\_OPLOG\_URL in my snap? - -Starting from release 0.73, it is possible to configure these environmental variables through snap hooks like this: - -```bash -sudo snap set rocketchat-server port= -sudo snap set rocketchat-server mongo-url=mongodb://:/ -sudo snap set rocketchat-server mongo-oplog-url=mongodb://:/local -``` - -Remember to restart rocket.chat service after setting new values: - -```bash -sudo systemctl restart snap.rocketchat-server.rocketchat-server.service -``` - -This is an example to run rocket.chat on port 4000 instead of 3000 and set database name to rocketchat instead of parties: - -```bash -sudo snap set rocketchat-server port=4000 -sudo snap set rocketchat-server mongo-url=mongodb://localhost:27017/rocketchat -sudo systemctl restart snap.rocketchat-server.rocketchat-server.service -``` - -### How do I change other environmental variables in my snap? - -Starting from release 0.73, it is possible to overwrite any rocket.chat environmental variables dropping files ending in `.env` in $SNAP\_COMMON directory \(`/var/snap/rocketchat-server/common/`\), for example, you can create a file to change SMTP settings: - -```bash -cat /var/snap/rocketchat-server/common/overwrite-smtp.env -OVERWRITE_SETTING_SMTP_Host=my.smtp.server.com -``` - -Remember to restart rocket.chat service after creating .env files: - -```bash -sudo systemctl restart snap.rocketchat-server.rocketchat-server.service -``` - -More than one .env file is allowed, and more than one environmental variable defined per file is allowed. - diff --git a/installing-and-updating/snaps/auto-ssl-with-snaps.md b/installing-and-updating/snaps/auto-ssl-with-snaps.md deleted file mode 100644 index 0dc3660e98..0000000000 --- a/installing-and-updating/snaps/auto-ssl-with-snaps.md +++ /dev/null @@ -1,213 +0,0 @@ -# Auto SSL with Snaps - -We now include the option to enable Caddy in your snap. Caddy makes use of [Let's Encrypt](https://letsencrypt.org/) to automatically provide you SSL protection for your communications. - -Starting from release 0.73 you can easily configure everything related to Caddy using snap hooks to ensure your DNS configuration is set up correctly before starting Caddy and Let's Encrypt support. - -## Configure everything using snap - -If you want to enable SSL and Let's Encrypt certificates you should: - -1. input a URL starting with HTTPS -2. own the domain name you would like to use -3. and have the correct DNS record set up to resolve your domain name to your public IP \(remember DNS records could take some time to propagate\). - -These next commands will check that configuration is set up correctly before starting the services: - -```bash -sudo snap set rocketchat-server caddy-url=https:// -sudo snap set rocketchat-server caddy=enable -sudo snap set rocketchat-server https=enable -sudo snap run rocketchat-server.initcaddy -``` - -If no errors were found, it is safe to restart rocket.chat and Caddy: - -```bash -sudo systemctl restart snap.rocketchat-server.rocketchat-server.service -sudo systemctl restart snap.rocketchat-server.rocketchat-caddy.service -``` - -In case you don't want to configure SSL for your site, or want to remove SSL configuration: - -```bash -sudo snap set rocketchat-server https=disable -sudo snap set rocketchat-server caddy-url=http:// -sudo snap set rocketchat-server caddy=enable -sudo snap run rocketchat-server.initcaddy -``` - -If no errors were found, it is safe to restart rocket.chat and Caddy: - -```bash -sudo systemctl restart snap.rocketchat-server.rocketchat-server.service -sudo systemctl restart snap.rocketchat-server.rocketchat-caddy.service -``` - -### Check Caddy's logs - -```bash -journalctl -r | grep caddy | less -``` - -## Configure Caddy yourself or use another http proxy - -In case you plan to use another https proxy or you prefer other options in Caddy configuration, you can disable caddy: - -```bash -sudo snap set rocketchat-server caddy=disable -``` - -Then, edit the Caddyfile found at `/var/snap/rocketchat-server/current/Caddyfile` and write your configuration. - -Replace `_caddy-url_` and `_port_` with your site information. For instance, let's say I have example-domain.com pointing at my server. - -First, be sure that your DNS has finished resolving **before** attempting to enable SSL. If your DNS is not working yet, you could be instantly [throttled by Let's Encrypt](https://caddyserver.com/docs/automatic-https#testing) for _up to a week_. To test your DNS you can use http: - -```bash -http://example-domain.com -proxy / localhost:3000 { - websocket - transparent -} -``` - -and restart caddy: - -```bash -sudo systemctl restart snap.rocketchat-server.rocketchat-caddy -``` - -You can check that the Caddy service started correctly by running: - -```bash -sudo systemctl status snap.rocketchat-server.rocketchat-caddy -``` - -Once that is tested and resolved, to get secured communications, you can remove the `http://`: - -```bash -example-domain.com -proxy / localhost:3000 { - websocket - transparent -} -``` - -**Please note: using an IP address will not work for automatically enabling SSL. You must use a valid hostname \(**[**here's why**](https://caddyserver.com/docs/automatic-https)**\).** - -Now you can restart the Caddy service by running: - -```bash -sudo systemctl restart snap.rocketchat-server.rocketchat-caddy -``` - -You can check that the Caddy service started correctly by running: - -```bash -sudo systemctl status snap.rocketchat-server.rocketchat-caddy -``` - -If everything went well, the site will be accessible at `https://example-domain.com`. - -## Testing with an untrusted self-signed certificate - -Simply add the `tls self_signed` directive to your Caddyfile like so: - -```bash -https://example-domain.com -tls self_signed -proxy / localhost:3000 { - websocket - transparent -} -``` - -Remember to restart the Caddy service: - -```bash -sudo systemctl restart snap.rocketchat-server.rocketchat-caddy -``` - -This will enable SSL with an untrusted, self-signed certificate for testing purposes. - -For details on the Caddy TLS directive, visit [https://caddyserver.com/docs/tls](https://caddyserver.com/docs/tls) - -## Redirecting HTTP to HTTPS - -Redirecting is handled automatically by caddy by omitting the http / https in front. - -```bash -example-domain.com { - proxy / localhost:3000 { - websocket - transparent - } -} -``` - -Remember to restart the Caddy service: - -```bash -sudo systemctl restart snap.rocketchat-server.rocketchat-caddy -``` - -## Disabling SSL or listening on custom ports - -This configuration will listen **without SSL** on the default port 80: - -```bash -http://example-domain.com { - proxy / localhost:3000 { - websocket - transparent - } -} -``` - -This configuration will listen **without SSL** on port 8080: - -```bash -http://example-domain.com:8080 { - proxy / localhost:3000 { - websocket - transparent - } -} -``` - -This configuration will listen **with SSL** on port 8080: - -```bash -https://example-domain.com:8080 { - proxy / localhost:3000 { - websocket - transparent - } -} -``` - -Note that, without SSL, you can use an IP address: - -```bash -http://192.168.1.1:8080 { - proxy / localhost:3000 { - websocket - transparent - } -} -``` - -Remember to restart the Caddy service: - -```bash -sudo systemctl restart snap.rocketchat-server.rocketchat-caddy -``` - -## Opening ports when running Rocket.Chat server from behind router - -For Caddy to be able to work from behind a router, the following ports need to be opened between the internet and the server. This is usually achieved through router software or web-interface. - -* HTTP: port **80** -* HTTPS: port **443** - diff --git a/legal/code-of-conduct-for-our-service.md b/legal/code-of-conduct-for-our-service.md deleted file mode 100644 index 754e29f354..0000000000 --- a/legal/code-of-conduct-for-our-service.md +++ /dev/null @@ -1,62 +0,0 @@ -# Code of Conduct for our services - -_Effective date: September 06, 2019_ - -## Rocket.Chat Code of Conduct - -Dear users, - -Rocket.Chat provides numerous spaces for our community to interact and experience our product. Among these are: [Open.rocket.chat](https://open.rocket.chat/), an open chat community for bringing people together and to showcase Rocket.Chat´s community edition. In addition, new features are tested on the server on a regular basis. [github.com/RocketChat](http://github.com/RocketChat), our source code repositories where we discuss issues and plan new features [Forums.rocket.chat](https://forums.rocket.chat/), our webforum to announce new features and provide ways for direct interaction with our developers - -## Introduction - -The main objective of the rocket.chat community spaces is bringing people together to discuss and experience Rocket.Chat - our awesome communication platform. This Code of Conduct is mainly written in mind for Open.rocket.chat, but in its spirit will be applied to other Rocket.Chat community spaces as well. - -When new visitors enter a channel, you should acknowledge their arrival especially if you're engaged in social chit-chat / passing time. Failure to do so is likely to result in them leaving the channel feeling unwelcome. - -You should try to minimize the chances of conflict by being open-minded and accepting of others. Understand that we each have a unique set of values, and we are all entitled to our own opinions. - -Feel free to share your views on someone else's problem as an outsider, but avoid using excessive force, and don't expect your thoughts and ideas to be accepted all of the time. - -We're mainly an English speaking community but welcome all nationalities. If you find yourself speaking primarily in a different language in an open channel or discussion, please PM that person to continue the conversation in a separate channel. - -### Unwanted behavior - -We do not want the following behavior on open.rocket.chat: - -* Soliciting / advertising -* Offensive, rude, disruptive and unwanted -* Posting of pornographic / gore / nude images -* Harassment, name-calling, racist or sexist remarks, profanity towards others and other forms of bullying -* Insensitive behavior - this will be judged by the reaction of others in the channel -* Flirting or adult content - take these conversations elsewhere -* Posting of links \(URLs\) to offensive material, sites hosting malware, initiating downloads or promoting illegal activities -* Flooding the chat, spamming, multiple repeats of the same or slightly modified messages -* Reregistering under another account after you have been banned and still under a ban period - -## Reporting unwanted behavior - -Users affected by unwanted behavior can mute other users or report them to the administrators of either the group, discussion or the open.rocket.chat server. You can contact the server administrator by posting in the group [report-abuse channel](https://open.rocket.chat/channel/report-abuse) - -## Process in case of unwanted behavior - -If you are asked to modify your behavior or given some other form of instruction but fail to comply, you are likely to be removed from the channel, the discussion or the whole server for a discretionary or unlimited period of time depending on the severity of the matter, depending on the administrator's decision. - -Depending on the severity of the misbehavior, users can get banned without warning or be issued a warning. Should administrators deem a subject matter to be inappropriate for the channel and / or the current audience, they may at their discretion make contact via Private Message, making clear any requirement to cease discussing the topic, or - as per their permission level - ban the user. A ban may be temporary \(in form of a ban period\) or permanent. In addition, the server administrator has the right to remove your user account. - -When being corrected by an administrator, please do not argue with them in the main chat. You should request a PM session to help avoid conflict and keep the involvement of others to a minimum. - -Attacking administrators in a channel will likely result in a ban. Any genuine visitor should respect their decisions - they have nothing to gain from issuing bans / mutes and are doing so to the best of their ability, on behalf of the community. - -Administrators may also choose to request users to leave if they're deemed to be a risk to the safety of the general users / guests within the channel. Not adhering to the request will result in manual removal; - -If you believe that an administrator has misused their authority and you have complied 100% with the rules documented on this page, please forward the following details to support@rocket.chat, including the following information: - -* administrator's open.rocket.chat nickname; -* What you believe they have done that demonstrates an abuse of power; -* Associated dates and times - required to review log files etc. - -Note that it can take some time to review log files and liaise with the administrator team, so please don't expect an immediate response. - -In case of a ban period issued, you are welcome to return to the channel once your ban period expires, but please be mindful of the reason\(s\) you got banned, abide by the rules and take into account any administrator feedback received. - diff --git a/legal/code-of-conduct.md b/legal/code-of-conduct.md deleted file mode 100644 index 754e29f354..0000000000 --- a/legal/code-of-conduct.md +++ /dev/null @@ -1,62 +0,0 @@ -# Code of Conduct for our services - -_Effective date: September 06, 2019_ - -## Rocket.Chat Code of Conduct - -Dear users, - -Rocket.Chat provides numerous spaces for our community to interact and experience our product. Among these are: [Open.rocket.chat](https://open.rocket.chat/), an open chat community for bringing people together and to showcase Rocket.Chat´s community edition. In addition, new features are tested on the server on a regular basis. [github.com/RocketChat](http://github.com/RocketChat), our source code repositories where we discuss issues and plan new features [Forums.rocket.chat](https://forums.rocket.chat/), our webforum to announce new features and provide ways for direct interaction with our developers - -## Introduction - -The main objective of the rocket.chat community spaces is bringing people together to discuss and experience Rocket.Chat - our awesome communication platform. This Code of Conduct is mainly written in mind for Open.rocket.chat, but in its spirit will be applied to other Rocket.Chat community spaces as well. - -When new visitors enter a channel, you should acknowledge their arrival especially if you're engaged in social chit-chat / passing time. Failure to do so is likely to result in them leaving the channel feeling unwelcome. - -You should try to minimize the chances of conflict by being open-minded and accepting of others. Understand that we each have a unique set of values, and we are all entitled to our own opinions. - -Feel free to share your views on someone else's problem as an outsider, but avoid using excessive force, and don't expect your thoughts and ideas to be accepted all of the time. - -We're mainly an English speaking community but welcome all nationalities. If you find yourself speaking primarily in a different language in an open channel or discussion, please PM that person to continue the conversation in a separate channel. - -### Unwanted behavior - -We do not want the following behavior on open.rocket.chat: - -* Soliciting / advertising -* Offensive, rude, disruptive and unwanted -* Posting of pornographic / gore / nude images -* Harassment, name-calling, racist or sexist remarks, profanity towards others and other forms of bullying -* Insensitive behavior - this will be judged by the reaction of others in the channel -* Flirting or adult content - take these conversations elsewhere -* Posting of links \(URLs\) to offensive material, sites hosting malware, initiating downloads or promoting illegal activities -* Flooding the chat, spamming, multiple repeats of the same or slightly modified messages -* Reregistering under another account after you have been banned and still under a ban period - -## Reporting unwanted behavior - -Users affected by unwanted behavior can mute other users or report them to the administrators of either the group, discussion or the open.rocket.chat server. You can contact the server administrator by posting in the group [report-abuse channel](https://open.rocket.chat/channel/report-abuse) - -## Process in case of unwanted behavior - -If you are asked to modify your behavior or given some other form of instruction but fail to comply, you are likely to be removed from the channel, the discussion or the whole server for a discretionary or unlimited period of time depending on the severity of the matter, depending on the administrator's decision. - -Depending on the severity of the misbehavior, users can get banned without warning or be issued a warning. Should administrators deem a subject matter to be inappropriate for the channel and / or the current audience, they may at their discretion make contact via Private Message, making clear any requirement to cease discussing the topic, or - as per their permission level - ban the user. A ban may be temporary \(in form of a ban period\) or permanent. In addition, the server administrator has the right to remove your user account. - -When being corrected by an administrator, please do not argue with them in the main chat. You should request a PM session to help avoid conflict and keep the involvement of others to a minimum. - -Attacking administrators in a channel will likely result in a ban. Any genuine visitor should respect their decisions - they have nothing to gain from issuing bans / mutes and are doing so to the best of their ability, on behalf of the community. - -Administrators may also choose to request users to leave if they're deemed to be a risk to the safety of the general users / guests within the channel. Not adhering to the request will result in manual removal; - -If you believe that an administrator has misused their authority and you have complied 100% with the rules documented on this page, please forward the following details to support@rocket.chat, including the following information: - -* administrator's open.rocket.chat nickname; -* What you believe they have done that demonstrates an abuse of power; -* Associated dates and times - required to review log files etc. - -Note that it can take some time to review log files and liaise with the administrator team, so please don't expect an immediate response. - -In case of a ban period issued, you are welcome to return to the channel once your ban period expires, but please be mindful of the reason\(s\) you got banned, abide by the rules and take into account any administrator feedback received. - diff --git a/legal/dmca-policy.md b/legal/dmca-policy.md deleted file mode 100644 index 2caf8e0976..0000000000 --- a/legal/dmca-policy.md +++ /dev/null @@ -1,46 +0,0 @@ -# DMCA Policy - -_Effective date: December 18, 2017_ - -## Rocket.Chat Copyright Dispute Policy - -In accordance with the DMCA, we’ve adopted the policy below toward copyright infringement. We reserve the right to \(1\) block access to or remove material that we believe in good faith to be copyrighted material that has been illegally copied and distributed by any of our advertisers, affiliates, content providers, members or users and \(2\) remove and discontinue service to repeat offenders. - -**\(1\) Procedure for Reporting Copyright Infringements.** - -If you believe that material or content residing on or accessible through the services infringes your copyright \(or the copyright of someone whom you are authorized to act on behalf of\), please send a notice of copyright infringement containing the following information to Rocket.Chat’s Designated Agent to Receive Notification of Claimed Infringement \(our “Designated Agent,” whose contact details are listed below\): - -\(a\) A physical or electronic signature of a person authorized to act on behalf of the owner of the copyright that has been allegedly infringed; - \(b\) Identification of works or materials being infringed; - \(c\) Identification of the material that is claimed to be infringing including information regarding the location of the infringing materials that the copyright owner seeks to have removed, with sufficient detail so that Rocket.Chat is capable of finding and verifying its existence; - \(d\) Contact information about the notifier including address, telephone number and, if available, email address; - \(e\) A statement that the notifier has a good faith belief that the material identified in \(1\)\(c\) is not authorized by the copyright owner, its agent, or the law; and - \(f\) A statement made under penalty of perjury that the information provided is accurate and the notifying party is authorized to make the complaint on behalf of the copyright owner. - -**\(2\) Once Proper Bona Fide Infringement Notification is Received by the Designated Agent.** - -Upon receipt of a proper notice of copyright infringement, we reserve the right to: - -\(a\) remove or disable access to the infringing material; - \(b\) notify the content provider who is accused of infringement that we have removed or disabled access to the applicable material; and - \(c\) terminate such content provider's access to the services if he or she is a repeat offender. - -**\(3\) Procedure to Supply a Counter-Notice to the Designated Agent.** - -If the content provider believes that the material that was removed \(or to which access was disabled\) is not infringing, or the content provider believes that it has the right to post and use such material from the copyright owner, the copyright owner's agent, or, pursuant to the law, the content provider may send us a counter-notice containing the following information to the Designated Agent: - -\(a\) A physical or electronic signature of the content provider; - \(b\) Identification of the material that has been removed or to which access has been disabled and the location at which the material appeared before it was removed or disabled; - \(c\) A statement that the content provider has a good faith belief that the material was removed or disabled as a result of mistake or misidentification of the material; and - \(d\) Content provider's name, address, telephone number, and, if available, email address, and a statement that such person or entity consents to the jurisdiction of the Federal Court for the judicial district in which the content provider’s address is located, or, if the content provider's address is located outside the United States, for any judicial district in which Rocket.Chat is located, and that such person or entity will accept service of process from the person who provided notification of the alleged infringement. - -If a counter-notice is received by the Designated Agent, Rocket.Chat may, in its discretion, send a copy of the counter-notice to the original complaining party informing that person that Rocket.Chat may replace the removed material or cease disabling it in 10 business days. Unless the copyright owner files an action seeking a court order against the content provider accused of committing infringement, the removed material may be replaced or access to it restored in 10 to 14 business days or more after receipt of the counter-notice, at Rocket.Chat's discretion. - -**Please contact Rocket.Chat's Designated Agent at the following address:** - -**Marcelo Schmidt** - marcelo.schmidt@rocket.chat - Rua Jorge Fayet 757 - Porto Alegre – RS – Brazil - 91330-330 - diff --git a/legal/gdpr.md b/legal/gdpr.md deleted file mode 100644 index ec0bd1b11f..0000000000 --- a/legal/gdpr.md +++ /dev/null @@ -1,54 +0,0 @@ -# GDPR - -_Effective date: May 22, 2018_ - -## Rocket.Chat is GDPR compliant - -Rocket.Chat has implemented various updates and changes to its codebase in preparation for GDPR enforcement on May 25th 2018. - -A summary of Rocket.Chat's overall GDPR readiness strategy for this project can be found below: - -[\#9769](https://github.com/RocketChat/Rocket.Chat/issues/9769) - -Our public statement can also be found on [GitHub](https://github.com/RocketChat/Rocket.Chat/issues/10823). - -The following are some of the more recent GDPR updates that are now part of the core codebase: - -## Right of Access - -[\#9767](https://github.com/RocketChat/Rocket.Chat/issues/9767) \(implemented [\#9906](https://github.com/RocketChat/Rocket.Chat/pull/9906)\) - -## Right to be forgotten/erased - -[\#9766](https://github.com/RocketChat/Rocket.Chat/issues/9766) \(implemented [\#9947](https://github.com/RocketChat/Rocket.Chat/pull/9947)\) - -## Data Portability - -[\#9768](https://github.com/RocketChat/Rocket.Chat/issues/9768) \(implemented in [\#9906](https://github.com/RocketChat/Rocket.Chat/pull/9906)\) - -## Other rights - -Other rights for the data subjects are either covered by features already built into our codebase, or outside the scope of the open source software project, including: - -### Right to Rectification - -The codebase can be configured to support user modification/correction/rectification of any data supplied \(entered\) by the user. - -### Right to restriction of processing - -This is outside the scope of the open source software project, and is up to the controller \( administrator / deployer / operator of the the server system\) to enforce. - -### Right to Object - -This is outside the scope of the open source software project, and is up to the controller \( administrator / deployer / operator of the server system\) to enforce. - -## Community compliance - -The above will allow our community members to build and deploy GDPR compliant systems and services. We know and understand that all of you have custom installation, configuration and deployment environments and that you are working to ensure your own deployment of Rocket.Chat is compliant with GDPR if necessary. - -Meanwhile, we would welcome any advice, input, or questions you may have regarding Rocket.Chat’s GDPR readiness. Please help us by emailing your thoughts to gdpr@rocket.chat. - -Thank you! - -The Rocket.Chat Team - diff --git a/legal/guidelines-for-law-enforcement.md b/legal/guidelines-for-law-enforcement.md deleted file mode 100644 index a68459d964..0000000000 --- a/legal/guidelines-for-law-enforcement.md +++ /dev/null @@ -1,170 +0,0 @@ -# Guidelines for Law Enforcement - -Last updated: February 21st, 2021 - -These guidelines are intended for law enforcement authorities seeking information about Rocket.Chat accounts. More general information is available in our [Privacy Policy](https://rocket.chat/privacy) and [Terms of Service](https://rocket.chat/terms). - -## What is Rocket.Chat? - -Rocket.Chat is a free and open source team chat collaboration platform that allows users to communicate securely in real-time on web, desktop or mobile and to customize their interface with a range of plugins, themes and integrations with other key software. Anyone in the world can download and run a Rocket.Chat server at any time. - -As a platform, Rocket.Chat can be deployed various ways. The interaction on the platform between users happens via user accounts. - -## **Deployment options** - -In short, there are three relevant deployment options of Rocket.Chat, that affect the process for requesting information: - -1. servers hosted by us \(Rocket.Chat Technologies Corp.\) and managed by us directly \(such as our community servers\) -2. servers hosted by us, but managed by a customer \(our hosted offering\) -3. servers hosted by a third party \(private servers\) - -The third option - private server - is the most common one. - -{% hint style="info" %} -For clarification purposes: a **server,** on which Rocket.Chat is running, ****can contain various **instances** of Rocket.Chat, depending on the configuration. An instance of Rocket.Chat is each a unique community of users communicating with each other. In the following, we refer to **servers**, that run whichever number of Rocket.Chat instances \(1 or more\). -{% endhint %} - -How can you find out, which deployment is being used? - -We offer a lookup, which checks if the server is hosted by us \(options 1 and 2\) or not \(option 3\). Please check [here](https://rocket.chat/server-lookup) for the lookup form. - -## **Private servers** - -You need to be aware that any private Rocket.Chat server may be operated by arbitrary businesses, groups or individuals with no relationship to Rocket.Chat Technologies Corp. -**In particular:** - -* **Rocket.Chat Technologies Corp. do not have access to these servers.** -* **Rocket.Chat Technologies Corp. does not and cannot control or regulate how these servers are operated.** -* **Rocket.Chat Technologies Corp. cannot access, determine or regulate any contents or information flow on these servers.** - -Administrators of private servers may opt-in to register their servers for additional connected services by Rocket.Chat \(e.g. push notifications for mobile devices\). - -The registration requires a working email address, a name or pseudonym and the server URL. More information is generally not available. We do not store content that passes through our gateways to provide the connectivity services. - -## **Servers under control of Rocket.Chat** - -For total transparency, Rocket.Chat Technologies Corp. owns and operates only one publicly available Rocket.Chat server in the world. The server that Rocket.Chat Technologies Corp. operates can only be accessed at: - -**​**[**https://open.rocket.chat**](https://open.rocket.chat/)**​** - -That server is subject to our [Code of Conduct](https://rocket.chat/code-of-conduct). - -Any other Rocket.Chat server you access is not operated by Rocket.Chat Technologies Corp. and is subjected to the usage warning above. - -That said, Rocket.Chat Technologies Corp. provides a cloud service for hosting Rocket.Chat servers. The user data, messages and files on those servers are subject to our [Terms of Use](https://rocket.chat/terms). - -To know if a server belongs to Rocket.Chat cloud, please contact us, use the aforementioned server lookup or use domain information systems. - -What account information does Rocket.Chat have? - -Rocket.Chat does not keep a log of IPs used to access either Community Server or Rocket.Chat Cloud servers. - -**Community Server** - -When someone registers an account at our community server, hosted at [https://open.rocket.chat](https://open.rocket.chat/), we ask for a name, an e-mail and a password, and they have to verify their e-mail address. Rocket.Chat does not monitor any public or private channels activities other than for the company's own use, such as the \#general, \#support and \#dev public channels. - -We do not keep a log of IPs. - -**Rocket.Chat Cloud** - -When someone signs up for a Rocket.Chat Cloud server, we ask for a name, e-mail, workspace name and domain they'd like to use. The e-mail is then verified before the server is deployed. Every message and file sent is stored within Rocket.Chat cloud servers and databases hosted with a third party hosting provider. Rocket.Chat does not actively scan the content activity in Cloud servers. - -## **Individual user account information** - -Rocket.Chat is a platform and the interaction between individuals on the platform happens based on user accounts, e.g. in the format of: - -_firstname.lastname_ - -These accounts are unique to the deployed server of the Rocket.Chat platform. So if information is requested for an individual user account of the platform, this information goes only as far as the scope of that specific, individual server of Rocket.Chat. - -**To identify the proper user account, the specific server therefore must be named as well \(generally in form of the URL\).** - -The aforementioned restrictions with regards to the deployment options apply to users as well. User information cannot be produced by us for user accounts of private Rocket.Chat servers. Requests for such information should be targeted at the administrator of the private server. If the administrator is unknown, the request should be targeted at the owner of the DNS record of the private server domain. - -## Data retention information - -Rocket.Chat retains data and backups of data for an undisclosed amount of time. Rocket.Chat makes backups of Cloud servers according to each customer's choice of plan \(daily, twice daily or hourly\). Some information we store is automatically collected, while other information is provided at the user’s discretion. Though we do store this information, we cannot guarantee its accuracy. For example, the server in use may not require real name use, email verification or identity authentication, hence the user may have created a fake or anonymous profile. - -## Preservation requests - -We accept requests from law enforcement to preserve records, which constitute potentially relevant evidence in legal proceedings. We will preserve, but not disclose, a temporary snapshot of the relevant account records for 90 days pending service of valid legal process. - -Preservation requests, in accordance with applicable law, should: - -* be signed by the requesting official; -* have a valid return official email address; and be sent on law enforcement letterhead; -* include the server URL of the subject offense and any other information that may help us identify the offending server and/or user. - -We may honor requests for extensions of preservation requests, but encourage law enforcement agencies to seek records through the appropriate channels in a timely manner, as we cannot guarantee that requested information will be available. - -Law enforcement and government preservation requests for user information may be submitted to our legal team at [legal@rocket.chat](mailto:legal@rocket.chat). You can find further instructions below. - -## Requests for Rocket.Chat Cloud or Community Server account information - -Requests for user account information from law enforcement should be directed to Rocket.Chat Technologies Corp. in Wilmington, Delaware. Rocket.Chat responds to valid legal process issued in compliance with applicable law. - -### Private information requires a subpoena or court order - -Non-public information about Rocket.Chat users will not be released to law enforcement except in response to appropriate legal process such as a subpoena, court order, or other valid legal process – or in response to a valid emergency request, as described below. - -### Contents of communications requires a search warrant - -Requests for the contents of communications \(e.g., messages, files\) require a valid search warrant or equivalent from an agency with proper jurisdiction over Rocket.Chat. - -### Will Rocket.Chat notify users of requests for account information? - -Yes. Rocket.Chat's policy is to notify users of requests for their Rocket.Chat account information, which includes a copy of the request, as soon as we are able \(e.g., prior to or after disclosure of account information\) unless we are prohibited from doing so \(e.g., an order under [18 U.S.C. § 2705\(b\)](https://www.law.cornell.edu/uscode/text/18/2705)\). We ask that any non-disclosure provisions include a specified duration \(e.g., 90 days\) during which Rocket.Chat is prohibited from notifying the user. Exceptions to user notice may include exigent or counterproductive circumstances, such as emergencies regarding imminent threat to life, child sexual exploitation, or terrorism. - -### What details must be included in account information requests? - -Requests for user account information in accordance with applicable law, are required to include the following information: - -* **Include the Rocket.Chat server URL \(!\)** and @username of the subject Rocket.Chat account in question; -* Provide details about what specific information is requested \(e.g., messages, files, account information\) and its relationship to your investigation; -* Include a valid official email address \(e.g., name@agency.gov\) so we may get back in touch with you upon receipt of your legal process; -* Be issued on law enforcement letterhead. -* Law enforcement and government requests for user information should be submitted through [legal@rocket.chat](mailto:legal@rocket.chat). You can find further instructions below. - -### Production of records - -Unless otherwise agreed upon, we currently provide responsive records in electronic format \(i.e., text files that can be opened with any word processing software such as Word or TextEdit\). - -### Records authentication - -The records that we produce are self-authenticating. Additionally, the records are electronically signed to ensure their integrity at the time of production. If you require a declaration, please indicate it in your submission. - -### Cost reimbursement - -Rocket.Chat may seek reimbursement for costs associated with information produced pursuant to legal process and as permitted by law \(e.g. under [18 U.S.C. §2706](https://www.law.cornell.edu/uscode/text/18/2706)\). - -## Emergency disclosure requests - -In line with our [Privacy Policy](https://rocket.chat/privacy), we may disclose account information to law enforcement in response to a valid emergency disclosure request. - -Rocket.Chat evaluates emergency disclosure requests on a case-by-case basis in compliance with relevant law \(e.g., [18 U.S.C. § 2702\(b\)\(8\)](https://www.law.cornell.edu/uscode/text/18/2702)\). If we receive information that provides us with a good faith belief that there is an exigent emergency involving the danger of death or serious physical injury to a person, we may provide information necessary to prevent that harm, if we have it. - -### How to make an emergency disclosure request - -If there is an exigent emergency that involves the danger of death or serious physical injury to a person that Rocket.Chat may have information necessary to prevent, law enforcement officers can submit an emergency disclosure request through [legal@rocket.chat](mailto:legal@rocket.chat). - -Please include all of the following information: - -* Indication on your cover sheet, which must be on law enforcement letterhead, that you're submitting an Emergency Disclosure Request; -* Identity of the person who is in danger of death or serious physical injury; -* The nature of the emergency \(e.g., report of suicide, bomb threat\); -* Rocket.Chat server URL and/or @username of the subject account\(s\) whose information is necessary to prevent the emergency; -* Any specific Rocket.Chat messages you would like us to review; -* The specific information requested and why that information is necessary to prevent the emergency; -* The signature of the submitting law enforcement officer; and -* All other available details or context regarding the particular circumstances \(e.g. names of channels, timeframe for which information is requested, etc.\) - -## Contact information - -Our address details are: - -Rocket.Chat Technologies Corp. 251 Little Falls Drive, Wilmington, DE, 19808 - -Receipt of correspondence is for convenience only and does not waive any objections, including the lack of jurisdiction or proper service. - -Electronic communication should go to: [legal@rocket.chat](mailto:legal@rocket.chat) - diff --git a/legal/master-services-agreement-for-self-managed-workspaces.md b/legal/master-services-agreement-for-self-managed-workspaces.md deleted file mode 100644 index a8cafb515e..0000000000 --- a/legal/master-services-agreement-for-self-managed-workspaces.md +++ /dev/null @@ -1,146 +0,0 @@ -# Master Services Agreement for Self Managed Workspaces - -## Master Services Agreement for Self Managed Workspaces - -_Effective date: February 27th, 2021_ - -## **ROCKET.CHAT MASTER SERVICES AGREEMENT FOR SELF-MANAGED DEPLOYMENTS** - -This Master Services Agreement \(the "**Agreement**"\), is entered as of -**\_\_\_** \(the “**Effective Date**”\), -by and between **\_\_\_\_**, -whose address is _\*\*\_**\_**_\*\*\_; -an entity \(“**You,**” “**Your**,” or “**Customer**”\) and Rocket.Chat Technologies Corp. \(“**Rocket.Chat**”\). In this Agreement, Customer and Rocket.Chat may be individually referred to as “**party**” and collectively referred to as “_\*parties\_\*.” - -The Agreement covers the provision of services by Rocket.Chat to You for self-managed \(otherwise known as "on-premise"\) deployment of Rocket.Chat and generally comes with an Order Form that specifies services and product editions for a particular initial term or period \(the “Initial Order Term”\) and any renewal terms or periods indicated therein \(collectively, the “Order Term”\); unless expressly provided otherwise, the Initial Order Term is 12 months from the effective date of the Order and renewals are for successive 12 months periods. It does explicitly not cover the mere provision of the Community Edition of our product or any other edition of our product which does not come with a reference to this Agreement. - -**1. DEFINITIONS.** - -**1.1 Affiliates** means an entity controlled by, under common control with, or controlling such party, where control is denoted by having fifty percent \(50%\) or more of the voting power \(or equivalent\) of the applicable entity. Subject to the terms and conditions of this Agreement, Your Affiliates may use the license granted hereunder. All references to Rocket.Chat shall be deemed to be references to Rocket.Chat and its Affiliates. - -**1.2 Agreement** means this Master Services Agreement, and any applicable Order Form attached hereto. - -**1.3 Devices** means \(whether physical or virtual\) a server, system, workstation, computer, mobile device, or endpoint upon which or through which the Services are used and/or on which the Software is installed. - -**1.4 Documentation** means the official user documentation prepared and provided by Rocket.Chat to You on the use of the Services or Software \(as updated from time to time\). For the avoidance of doubt, any online community site, unofficial documentation, videos, white papers, or related media, or feedback do not constitute Documentation. - -**1.5 Order Form** means the Rocket.Chat ordering document that specifies Your purchase of the Services, pricing, and other related information. All Order Form\(s\) will be attached to and made a part of this Agreement. - -**1.6 Personal Data** means any information that can be used to identify an individual as that term is defined under applicable law, which may include EU’s "General Data Protection Regulation" \(“GDPR”\) as and if applicable. - -**1.7 Services** means the products and Software services, including any support and application programming interface that accesses functionality, that is provided to the Customer by Rocket.Chat. - -**1.8 Software** means the object code version of any software to which Customer is provided access as part of the Service, including any updates or new versions. - -**1.9 Support** means the standard maintenance or support provided by Rocket.Chat or its designated agents as set forth in this Agreement. - -**1.10 User** means an individual authorized by You to use the Services, Software, and Documentation. - -**1.11 Your Data** or **Data** means data, files, or information, including data, files, or information that include Personal Data, accessed, used, communicated, stored, or submitted by You or Your Users related to Your or Your User’s use of the Services or Software. - -**2. PROVISION OF SERVICES.** - -**2.1 Services License.** Upon payment of fees and subject to continuous compliance with this Agreement, Rocket.Chat hereby grants Customer a limited, non-exclusive, non-transferable license to access, use, and install \(if applicable\) the Services, Software, and Documentation during the Term \(defined below\). You may provide, make available to, or permit Your Users to use or access the Services, the Software, or Documentation, in whole or in part. You agree that Rocket.Chat may deliver the Services or Software to You with the assistance of its Affiliates, licensors, and service providers. During the Term \(as defined herein\), Rocket.Chat may update or modify the Services or Software to reflect changes in, among other things, laws, regulations, rules, technology, industry practices, patterns of system use, and availability of a third-party program. Rocket.Chat’s updates or modifications to the Services or Software will not materially reduce the level of performance, functionality, security, or availability of the Services or Software during the Term. - -**2.2 Customization and Implementation.** Subject to the terms and conditions of this Agreement and applicable Order Form, Rocket.Chat will customize the Software for the Customer in accordance with the functional requirements specification which will be mutually developed during the customization effort. - -**2.3 Hosting is Not Covered**. Our hosted offerings are not covered by this Agreement. - -**2.4 Support**. Subject to the terms and conditions of this Agreement and applicable Order Form, as part of the Services, Rocket.Chat will provide Customer the support and maintenance services as described in the applicable Order Form during the Term. Rocket.Chat will provide the Customer with the Support subject to payment of the applicable fees as defined in the applicable Order Form. By the open source nature of Rocket.Chat and according to its License found at [https://github.com/RocketChat/Rocket.Chat/blob/master/LICENSE](https://github.com/RocketChat/Rocket.Chat/blob/master/LICENSE), the Customer may make modifications to the software, but Rocket.Chat's support will only cover original code, published by Rocket.Chat in its own repositories. - -**3. LICENSE RESTRICTIONS; OBLIGATIONS.** - -**3.1 License Restrictions.** You may not \(i\) provide, make available to, or permit individuals other than Your Users to use or access the Services, the Software, or Documentation, in whole or in part; \(ii\) use the Services or Software to store or transmit infringing, libelous, unlawful, or tortious material or to store or transmit material in violation of third party rights, including privacy rights; \(iii\) use the Services or Software to violate any rights of others; \(iv\) use the Services or Software to store or transmit malicious code, Trojan horses, malware, spam, viruses, or other destructive technology \("**Viruses**"\); \(v\) interfere with, impair, or disrupt the integrity or performance of the Services or any other third party’s use of the Services or \(vi\) alter, circumvent, or provide the means to alter or circumvent the Services or Software, including technical limitations, recurring fees, or usage limits. - -**3.2 Your Obligations.** You acknowledge, agree, and warrant that: \(i\) You will be responsible for Your and Your Users’ activity and compliance with this Agreement, and if You become aware of any violation, You will immediately terminate the offending party’s access to the Services, Software, and Documentation and notify Rocket.Chat; \(ii\) You and Your Users will comply with all applicable local, state, federal, and international laws; \(iii\) You are legally able to process Your Data and are able to legally provide Your Data to Rocket.Chat and its Affiliates, including obtaining appropriate consents or rights for such processing, as outlined further herein, and have the right to access and use Your infrastructure if requested by You, including any system or network, to obtain the Services and Software and will be solely responsible for the accuracy, security, quality, integrity, and legality of the same; and \(iv\) You will keep your registration information, billing information, passwords and technical data accurate, complete, secure and current for the Term of this Agreement. - -**3.3 Representations and Warranties**. Each party represents and warrants that: \(i\) such party has the full power and authority to enter into this Agreement; \(ii\) this Agreement is duly authorized by all necessary action and has been duly executed and delivered; \(iii\) such party is in compliance with all applicable requirements of law, other than where the failure to be in compliance would not have a material adverse effect upon such party’s execution, delivery or performance of this Agreement or consummation of the transactions contemplated hereby; and \(iv\) such party has not entered into any agreement with any other entity that contains restrictive provisions that may impair its ability to perform its obligations under this Agreement. - -**3.4 API Fair Use** Many of our services work via API calls managed under a central infrastructure of us. You may not place excessive API calls or otherwise deliberately try to overburden this API system. We may throttle your use of the APIs in case we deem it necessary to facilitate an overall acceptable service level across our infrastructure \(e.g. such as in the case of continued, excessive API usage\). We may monitor use of the APIs for compliance with these rules, and we may deny you access to the API or shut down your Integration if you try to go around or break the policies we set. If your Order Form includes a defined API limit or minimum, then the Order Form controls. - -**4. PROPRIETARY RIGHTS.** - -**4.1 Ownership of Rocket.Chat Intellectual Property.** The Services, Software, and Documentation are licensed, not sold. Use of the term "purchase" in conjunction with licenses of the Services, Software, and Documentation shall not imply a transfer of ownership. Except for the limited rights expressly granted by Rocket.Chat to Customer in this Agreement, Customer acknowledges and agrees that all right, title and interest in and to all copyright, trademark, patent, trade secret, intellectual property \(including without limitation algorithms, business processes, improvements, enhancements, modifications, derivative works, information collected and analyzed in connection with the Services\) and other proprietary rights, arising out of or relating to the Services, the Software, the provision of the Services or Software, and the Documentation, belong exclusively to Rocket.Chat or its suppliers or licensors. All rights, title, and interest in and to content, which may be accessed through the Services or the Software, is the property of the respective owner and may be protected by applicable intellectual property laws and treaties. This Agreement gives Customer no rights to such content, including the use of the same. Rocket.Chat is hereby granted a royalty-free, fully-paid, worldwide, transferable, sub-licensable, irrevocable and perpetual license to use or incorporate into its products and services suggestions, enhancement requests, recommendations or other feedback provided by You or Your Users relating to the Services or Software. To clarify: this mentioned license does not extend to any data of You or Your users, but is aimed to allow us to incorporate Your feedback et al. into our products and services. All rights not expressly granted under this Agreement are reserved by Rocket.Chat. - -**4.2 Ownership of Data.** Rocket.Chat does not obtain ownership in data that is submitted into our Services or Software. Unless agreed otherwise between Customer and User, Customer acknowledges and agrees that when a User submits content or information to the Services, such as messages or files, all such content and information, is generally owned by the User and that User grants Customer a license to operate the Services, Software and Support in accordance with the agreement between Customer and User \(e.g. a customer contract\). - -Customer in turn grants Rocket.Chat a sublicense of said license for the purposes of operating the Services, Software and Support as described in this Agreement, where this sublicense is needed \(e.g. to analyze bugs by being granted access to user data by Customer\). Other than as specifically provided in this Agreement and the [Rocket.Chat Privacy Policy](https://rocket.chat/privacy), Rocket.Chat will not release, transmit, or utilize Customer Data, in particular not store or repurpose it. - -**5. TERM; TERMINATION.** - -**5.1 Term.** This Agreement will begin on the Effective Date and will continue so long as any Order Term remains in effect or until terminated by either party as outlined in this Section \(the "**Term**"\). - -**5.2 Termination Rights.** - -**a. For Convenience.** You may terminate this Agreement or any Order Form for your convenience at any time upon 30 days' written notice to Rocket.Chat, provided that You have paid all fees up to and including the last day of the then current applicable Order Term\(s\) in effect prior to termination and regardless of the date of your notice of termination or use of the Services or Software. Your pricing is based on the Order Term, and early termination does not relieve you of your obligations to pay for the full Order Term even if you terminate or do not use the Services or Software for the entire Order Term, unless expressly agreed otherwise in an Order Form or this Agreement. - -**b. For Cause.** Either party may terminate this Agreement and any Order Forms immediately upon 30 days’ written notice to the other party in the event of any material breach of this Agreement \(including without limitation, any failure to pay any amounts when due hereunder, your failure to comply with restrictions under this Agreement, including those set out in Section 3\) by such party where such material breach is not cured during such notice period. Either party may also terminate this Agreement and all Order Forms, without notice, \(i\) upon the institution by or against the other party of insolvency, receivership or bankruptcy proceedings \(provided such proceedings are not dismissed within one hundred twenty \(120\) days of such institution\), \(ii\) upon the other party's making an assignment for the benefit of creditors, or \(iii\) upon the other party's dissolution or ceasing to do business without a successor. - -**5.3 Effect of Termination or Expiration.** Unless You are expressly entitled for a refund under Section 5.4, termination or expiration shall not relieve You of the obligation to pay any fees or other amounts accrued or payable to Rocket.Chat, including fees for the remainder of the Order Term\(s\) after an earlier termination. If Rocket.Chat terminates for cause or Customer terminates for convenience, Customer will immediately pay all amounts due and payable for the remainder of the Order Term without limiting Rocket.Chat’s other rights and remedies. Without prejudice to any other rights, upon termination or expiration, You must cease all use of the Services, Software, and Documentation and destroy or return \(upon request by Rocket.Chat\) all copies of the Services, Software, and Documentation. You further acknowledge and agree that You will retrieve Your Data or copies of Your Data from Rocket.Chat within thirty \(30\) business days of the termination or expiration. Unless in accordance with our internal policies, contractual, legal, or other obligation, You acknowledge and agree that Rocket.Chat has the right to delete Your Data, including any and all copies thereof. Your Data, once deleted, will not be able to be recovered. Sections 1, 3, 4, 5.3, 6, 8, 9, 10, 11, and 12, shall survive any termination or expiration of this Agreement. - -**5.4 Refund Policy.** You are entitled to a full refund of pre-paid fees if you terminate your initial Order Form for any reason within 30 days of the initial Order Form’s date. You are also entitled to a refund in the event that You terminate pursuant to a material uncured breach by Rocket.Chat. In the foregoing cases, Rocket.Chat will refund You a pro-rated portion of pre-paid Fees for Services not actually made available or received by You as of the date of such termination as your sole and exclusive remedy for such termination. Except as expressly provided otherwise, all fees and amounts are non-refundable and non-cancellable. - -**6. FEES AND PAYMENT; TAXES.** - -**6.1 Fees and Payment.** All Order Forms placed will be considered final upon acceptance by Rocket.Chat. Fees will be due and payable as set forth on the Order Form which are attached to and made part of this Agreement. Unless otherwise set forth herein, fees shall be at Rocket.Chat’s then-standard rates at the time of invoice or, if applicable, as set forth in the Order Form. If You fail to pay, Rocket.Chat shall be entitled, at its sole discretion, to \(i\) suspend the provision of the Services until You fulfill Your pending payment obligations; \(ii\) charge You an interest rate designated by Rocket.Chat at the time of invoice; and/or \(iii\) terminate this Agreement and all Order Forms. Unless otherwise stated, all payments made under this Agreement shall be in United States dollars. Fees and payments are non-refundable except to the extent expressly described otherwise. - -**6.2 Taxes.** All fees are exclusive of taxes and You shall pay or reimburse Rocket.Chat for all taxes arising out of transactions contemplated by this Agreement. As reasonably requested, You will provide documentation to Rocket.Chat showing that taxes have been paid to the relevant taxing authority. "Taxes" means any sales, VAT, use, and other taxes \(other than taxes on Rocket.Chat’s income\), export and import fees, customs duties and similar charges imposed by any government or other authority. You hereby confirm that Rocket.Chat can rely on the name and address that You provide to Rocket.Chat when You agree to the fees or in connection with Your payment method as being the place of supply for sales tax and income tax purposes or as being the place of supply for VAT purposes where You have established Your business. - -**7. DATA; PROTECTION OF YOUR DATA.** - -**7.1 Your Data.** You agree that You and Your Users are responsible for maintaining and protecting backups of Your Data directly or indirectly processed using the Services and Software and that Rocket.Chat is not responsible for exportation of, the failure to store, the loss, or the corruption of Your Data. - -You agree that Rocket.Chat and its Affiliates will process configuration, performance, usage, and consumption data about You and Your Users use of the Services and Software to assist with the necessary operation and function of the Services and Software and to improve Rocket.Chat products and Services and Your and Your Users’ experience with Rocket.Chat and its Affiliates pursuant to the Rocket.Chat Privacy Notice, available at[ https://rocket.chat/privacy](https://rocket.chat/privacy). - -**7.2 Protection of Your Data.** Each party shall comply with its respective obligations under applicable data protection laws. Each party shall maintain appropriate administrative, physical, technical and organizational measures that ensure an appropriate level of security for Confidential Information and Personal Data. You are responsible for ensuring that the security of the Services is appropriate for Your intended use and the storage, hosting, or processing of Personal Data. Information on how Rocket.Chat protects personal data is in Rocket.Chat´s [Privacy Policy](https://rocket.chat/privacy). - -**8. CONFIDENTIAL INFORMATION.** - -As used in this Agreement, **"Confidential Information"** means any nonpublic information or materials disclosed by either party to the other party, either directly or indirectly, in writing, orally, or by inspection of tangible objects that the disclosing party clearly identifies as confidential or proprietary. For clarity, Confidential Information includes Personal Data and Rocket.Chat Confidential Information includes the Services, Software, Documentation, and any information or materials relating to the Services, Software \(including pricing\), or otherwise. Confidential Information may also include confidential or proprietary information disclosed to a disclosing party by a third party. - -The receiving party will: \(i\) hold the disclosing party’s Confidential Information in confidence and use reasonable care to protect the same; \(ii\) restrict disclosure of such Confidential Information to those employees or agents with a need to know such information and who are under a duty of confidentiality respecting the protection of Confidential Information substantially similar to those of this Agreement; and \(iii\) use Confidential Information only for the purposes for which it was disclosed, unless otherwise set forth herein. The restrictions will not apply to Confidential Information, excluding Personal Data, to the extent it \(i\) is \(or through no fault of the recipient, has become\) generally available to the public; \(ii\) was lawfully received by the receiving party from a third party without such restrictions; \(iii\) was known to the receiving party without such restrictions prior to receipt from the disclosing party; or \(iv\) was independently developed by the receiving party without breach of this Agreement or access to or use of the Confidential Information. - -The receiving party will return to the disclosing party or destroy all Confidential Information of the disclosing party in the receiving party’s possession or control and permanently erase all electronic copies of such Confidential Information promptly upon the written request of the disclosing party upon the termination of this Agreement. The receiving party will certify in writing signed by an officer of the receiving party that it has fully complied with its obligations under this Section 8. - -The receiving party may disclose Confidential Information to the extent the disclosure is required by law, regulation, or judicial order, provided that the receiving party will provide to the disclosing party prompt notice, where permitted, of such order and will take reasonable steps to contest or limit the steps of any required disclosure. The parties agree that any material breach of Section 3 or this Section 8 will cause irreparable injury and that injunctive relief in a court of competent jurisdiction will be appropriate to prevent an initial or continuing breach of these Sections in addition to any other relief to the applicable party may be entitled. - -**9. DISCLAIMER.** - -THE SERVICES, SOFTWARE, DOCUMENTATION, AND ALL OTHER PRODUCTS AND SERVICES PROVIDED UNDER THE TERMS OF THIS AGREEMENT AND/OR APPLICABLE ORDER FORM, INCLUDING HOSTED SERVICES, ARE PROVIDED ON "AS IS" AND “AS AVAILABLE” BASIS. ROCKET.CHAT DISCLAIMS ALL REPRESENTATIONS AND WARRANTIES OF ANY KIND, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, ACCURACY, RELIABILITY, SECURITY, LOSS OR CORRUPTION OF YOUR DATA, CONTINUITY, OR ABSENCE OF DEFECT RELATING TO THE SERVICES, SOFTWARE, DOCUMENTATION, ANY OTHER PRODUCT OR SERVICES, OR RESULTS OF THE SAME PROVIDED TO YOU UNDER THIS AGREEMENT. ROCKET.CHAT DOES NOT WARRANT THAT THE SPECIFICATIONS OR FUNCTIONS CONTAINED IN THE SERVICES OR SOFTWARE WILL MEET YOUR REQUIREMENTS OR THAT DEFECTS IN THE SERVICES OR SOFTWARE WILL BE CORRECTED. - -EACH PARTY SPECIFICALLY DISCLAIMS RESPONSIBILITY OF THIRD-PARTY PRODUCTS AND SERVICES WITH WHICH YOU MAY UTILIZE THE SERVICES AND SOFTWARE, AND EACH PARTY SPECIFICALLY DISCLAIMS AND WAIVES ANY RIGHTS AND CLAIMS AGAINST THE OTHER PARTY WITH RESPECT TO SUCH THIRD PARTY PRODUCTS AND SERVICES. - -**10. INDEMNIFICATION.** - -**10.1 Rocket.Chat Indemnification.** Rocket.Chat will indemnify, defend, and hold You harmless from any third party claim brought against You that the Services, as provided by Rocket.Chat, infringe or misappropriate any U.S. patent, copyright, trademark, trade secret, or other intellectual property rights of a third party, provided \(i\) use of the Services by You is in conformity with the Agreement and Documentation; \(ii\) the infringement is not caused by modification or alteration of the Services; and/or \(iii\) the infringement was not caused by a combination or use of the Services with products not supplied by Rocket.Chat. Rocket.Chat’s indemnification obligations are contingent upon You: \(i\) promptly notifying Rocket.Chat in writing of the claim; \(ii\) granting Rocket.Chat sole control of the selection of counsel, defense, and settlement of the claim; and \(iii\) providing Rocket.Chat with reasonable assistance, information, and authority required for the defense and settlement of the claim. This Section states Rocket.Chat’s entire liability \(and shall be Your sole and exclusive remedy\) with respect to indemnification to You. - -**10.2 Your Indemnification.** You agree to indemnify, defend, and hold harmless Rocket.Chat and its Affiliates, and its directors, employees, and agents from and against any claims arising out of or due to: \(i\) Your Data; \(ii\) Your \(or Your User’s\) breach of this Agreement; \(iii\) Your \(or Your User’s\) use of the Services, Software, or Documentation in violation of third party rights, including any intellectual property or privacy rights, or any applicable laws; or \(iv\) Your \(or Your User’s\) misuse of the Services, Software, or Documentation. - -**11. LIMITATION OF LIABILITY.** - -TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, \(I\) IN NO EVENT WILL ROCKET.CHAT AND ITS AFFILIATES, DIRECTORS, EMPLOYEES, OR AGENTS HAVE ANY LIABILITY, CONTINGENT OR OTHERWISE, FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE, STATUTORY OR EXEMPLARY DAMAGES ARISING OUT OF OR RELATING TO THIS AGREEMENT, THE SERVICES, SOFTWARE, DOCUMENTATION, OR ANY OTHER PRODUCTS OR SERVICES PROVIDED HEREUNDER, INCLUDING, BUT NOT LIMITED TO LOST PROFITS, LOST OR CORRUPTED DATA, LOSS OF GOODWILL, WORK STOPPAGE, EQUIPMENT FAILURE OR MALFUNCTION, PROPERTY DAMAGE OR ANY OTHER DAMAGES OR LOSSES, EVEN IF A PARTY HAS BEEN ADVISED OF THE POSSIBILITY THEREOF, AND REGARDLESS OF THE LEGAL OR EQUITABLE THEORY \(CONTRACT, TORT, STATUTE, INDEMNITY OR OTHERWISE\) UPON WHICH ANY SUCH LIABILITY IS BASED; AND \(II\) THE AGGREGATE LIABILITY OF ROCKET.CHAT AND ITS AFFILIATES, DIRECTORS, EMPLOYEES, AND AGENTS, AND THE SOLE REMEDY AVAILABLE TO YOU ARISING OUT OF OR RELATING TO THIS AGREEMENT, THE SERVICES, SOFTWARE, OR ANY PRODUCTS OR SERVICES PROVIDED HEREUNDER SHALL BE LIMITED TO TERMINATION OF THIS AGREEMENT AND DAMAGES NOT TO EXCEED THE TOTAL AMOUNT PAYABLE OR PAID TO ROCKET.CHAT BY YOU UNDER THIS AGREEMENT DURING THE TWELVE \(12\) MONTHS PRIOR TO TERMINATION. - -**12. GENERAL.** - -**12.1 Notices.** All notices must be in writing and shall be mailed by registered or certified mail to Rocket.Chat Technologies Corp., 251 Little Falls Drive, Wilmington, DE, 19808, or sent via email to legal@rocket.chat \(with evidence of the effective transmission\). - -**12.2 Entire Agreement.** This Agreement and the exhibits and attachments hereto constitute the entire agreement between the parties relating to the Services, Software, and Documentation provided hereunder and supersedes all prior or contemporaneous communications, agreements, and understandings, written or oral, with respect to the subject matter hereof. If other Rocket.Chat terms or conditions conflict with this Agreement, this Agreement shall prevail and control with respect to the Services, Software, and Documentation provided hereunder. In addition, any and all additional or conflicting terms provided by You, whether in a purchase order, an alternative license, or otherwise, shall be void and shall have no effect. - -**12.3 Export Control Laws.** The Services, Software, and Documentation delivered to You under this Agreement are subject to export control laws and regulations and may also be subject to import and export laws of the jurisdiction in which it was accessed, used, or obtained, if outside those jurisdictions. You shall abide by all applicable export control laws, rules, and regulations applicable to the Services, Software, and Documentation. You agree that You are not located in or are not under the control of or a resident of any country, person, or entity prohibited to receive the Services, Software, or Documentation due to export restrictions and that You will not export, re-export, transfer, or permit the use of the Services, Software, or Documentation, in whole or in part, to or in any of such countries or to any of such persons or entities. - -**12.4 Modifications.** Unless as otherwise set forth herein, this Agreement shall not be amended or modified by You except in writing signed by authorized representatives of each party. - -**12.5 Severability.** If any provision of this Agreement is held to be unenforceable, illegal, or void, that shall not affect the enforceability of the remaining provisions. The parties further agree that the unenforceable provision\(s\) shall be deemed replaced by a provision\(s\) that is binding and enforceable and that differs as little as possible from the unenforceable provision\(s\), with considerations of the object and purpose of this Agreement. - -**12.6 Waiver.** The delay or failure of either party to exercise any right provided in this Agreement shall not be deemed a waiver of that right. - -**12.7 Force Majeure.** Rocket.Chat will not be liable for any delay or failure to perform obligations under this Agreement due to any cause beyond its reasonable control, including acts of God; labor disputes; industrial disturbances; systematic electrical, telecommunications or other utility failures; earthquakes, storms, or other elements of nature; blockages; embargoes; riots; acts or orders of government; acts of terrorism; pandemics, public health crisis and war. - -**12.8 Construction.** Paragraph headings are for convenience and shall have no effect on interpretation. - -**12.9 Governing Law.** This Agreement shall be governed by the laws of the State of Delaware and of the United States, without regard to any conflict of law provisions, except that the United Nations Convention on the International Sale of Goods and the provisions of the Uniform Computer Information Transactions Act shall not apply to this Agreement. You hereby consent to the jurisdiction of the state and federal courts of Delaware. If this Agreement is translated into a language other than English and there are conflicts between the translations of this Agreement, you agree that the English version of this Agreement shall prevail and control. - -**12.10 Third Party Rights.** Other than as expressly provided herein, this Agreement does not create any rights for any person who is not a party to it, and no person not a party to this Agreement may enforce any of its terms or rely on an exclusion or limitation contained in it. - -**12.11 Relationship of the Parties.** The parties are independent contractors. This Agreement does not create a partnership, franchise, joint venture, agency, fiduciary, or employment relationship between the parties. - diff --git a/legal/privacy-policy/README.md b/legal/privacy-policy/README.md deleted file mode 100644 index 7072bfb9e5..0000000000 --- a/legal/privacy-policy/README.md +++ /dev/null @@ -1,300 +0,0 @@ -# Privacy Policy - -_Effective date: October 23rd, 2020_ - -Rocket.Chat Technologies Corp. \("us", "we", or "our"\) operates the [https://rocket.chat](https://rocket.chat) website, the [https://open.rocket.chat](https://open.rocket.chat) community server, the Marketplace, incl. associated Rocket.Chat Apps, Rocket.Chat´s Cloud Offering and the Rocket.Chat mobile applications \(the "Service"\). - -This page informs you of our policies regarding the collection, use, and disclosure of personal data when you use our Service and the choices you have associated with that data. - -We use your data to provide and improve the Service. By using the Service, you agree to the collection and use of information in accordance with this policy. Unless otherwise defined in this Privacy Policy, terms used in this Privacy Policy have the same meanings as in our Terms and Conditions. - -## Summary - -* **Administrators are responsible for user privacy, we help administrators** - - There are basically two ways of using Rocket.Chat: self-managed \(also known as on-premises deployment\) on your own or someone else´s infrastructure or via our hosted offering. In both cases, the administrator of that instance - or the organization behind the administrator - is the person responsible to ensure privacy of Rocket.Chat users. We aim to help by providing features in our products and services to make that job easier. We also provide this policy to explain what we do as a "helping hand"/data processor for administrators in case we process personal data of users. - -* **You remain in control of your personal data** - - We cannot access your personal data in a self-managed instance of Rocket.Chat. Our code is open source, there are no back doors whatsoever. You are however free to connect a self-managed instance to other services, e.g. our marketplace or push notification gateway, where this privacy policy applies. When you do not register your instance, these settings are turned off by default. You can also connect it to third party services, such as external authentication services, in which case their privacy policy applies. It is your choice and you are not forced to do so. In our hosted offering, we only process your data for the purposes of providing you the service in the name of the administrator. Administrators are still in full control over the configuration of their instance. - -* **We don´t sell your data** - - We do not sell your personal data. Our business model is to provide you with a free edition and we charge you for extra services or features, according to the plan you choose. What you process within Rocket.Chat is yours and stays yours. - -* **Our community server is for testing purposes** - - Our community server [https://open.rocket.chat](https://open.rocket.chat) is a testing ground for our users and we use it to test and analyze new features. We track user activity in there with the trackers described below - including google analytics - to learn how our service is used and to improve our product. - -## Definitions - -* **Service** - - Service means the [https://rocket.chat](https://rocket.chat) website, the [https://open.rocket.chat](https://open.rocket.chat) community server, the Rocket.Chat Marketplace, incl. associated Rocket.Chat Apps, the [https://cloud.rocket.chat](https://cloud.rocket.chat) service offering, push notification gateways and the Rocket.Chat mobile applications operated by Rocket.Chat Technologies Corp. - -* **Personal Data** - - Personal Data means data about a living individual who can be identified from those data \(or from those and other information either in our possession or likely to come into our possession\). - -* **Usage Data** - - Usage Data is data collected automatically either generated by the use of the Service or from the Service infrastructure itself \(for example, the duration of a page visit\). - -* **Cookies** - - Cookies are small pieces of data stored on your device \(computer or mobile device\). - -* **Data Controller** - - Data Controller means the natural or legal person who \(either alone or jointly or in common with other persons\) determines the purposes for which and the manner in which any personal information are, or are to be, processed. - - For the purpose of this Privacy Policy, we are a Data Controller of your Personal Data. - -* **Data Processors \(or Service Providers\)** - - Data Processor \(or Service Provider\) means any natural or legal person who processes the data on behalf of the Data Controller. - - We may use the services of various Service Providers in order to process your data more effectively. - -* **Data Subject \(or User\)** - - Data Subject is any living individual who is using our Service and is the subject of Personal Data. - -## Information Collection and Use - -We collect several different types of information for various purposes to provide and improve our Service to you. - -### Types of Data Collected - -#### Personal Data - -While using our Service, we may ask you to provide us with certain personally identifiable information that can be used to contact or identify you \("Personal Data"\). Personally identifiable information may include, but is not limited to: - -* Email address -* First name and last name -* Cookies and Usage Data - -We may use your Personal Data to contact you with newsletters, marketing or promotional materials and other information that may be of interest to you, if you have provided consent to this processing or if we can base this processing on a legitimate interest that is not overridden by your fundamental rights. You may in the future withdraw that consent or object to receiving any, or all, of these communications from us by following the unsubscribe link or instructions provided in any email we send or by contacting us. - -#### Account Data - -Some Services may allow or require that you register for a personalized account. Account data may include in addition your account name, authentication information, registration date, contact information, payment information and any other information associated with your account. - -#### Usage Data - -We may also collect information that your browser sends whenever you visit our Service or when you access the Service, incl. by or through a mobile device \("Usage Data"\). - -This Usage Data may include information such as your computer's Internet Protocol address \(e.g. IP address\), browser type, browser version, the pages of our Service that you visit, the time and date of your visit, the time spent on those pages, unique device identifiers and other diagnostic data. - -When you access the Service by or through a mobile device, this Usage Data may include information such as the type of mobile device you use, the IP address of your mobile device, your mobile operating system, the app version, the type of mobile Internet browser you use, unique device identifiers and other diagnostic data. - -As a byproduct of the usage data within a Rocket.Chat instance, Administrators may chose to share aggregated and therefore anonymous, non-personal data with us to help us learn more about how our product is being used. This setting is described [here](https://docs.rocket.chat/guides/administrator-guides/general#reporting). The information shared is the same information as is shown on the "info"-page of the administration panel of an instance. E.g. this statistics sharing would transmit the total \# of channels, but it would not transmit the actual channel names, and so on, preserving privacy of your workspace. This is completely optional to use and can be activated and deactivated any time. - -#### Location Data - -We may use and store information about your location if you give us permission to do so \(“Location Data”\). We use this data to provide features of our Service \(only to allow you to share your location to another user via Rocket.Chat, if it was enabled by the administrator\). - -You can enable or disable location services when you use our Service at any time, through your device settings. - -#### App Data - -When you use the Marketplace, you may choose to install Apps provided by Rocket.Chat. These Apps process data from your instance of Rocket.Chat and therefore nonpersonal data, such as software version, amount of users, and similar. Depending on the purpose and your actual usage of the App \(e.g. enabling certain features\), Personal Data may however be processed. E.g. you enable an integration, which processes your users´information. The description of the App will make the types of personal data sufficiently clear as well as any potential deviations from this policy. - -For Third Party Apps on the Marketplace, the Vendor will provide you with a specific privacy policy that governs his Third Party App. - -#### Content you provide - -When you use our Services you may provide content into that service \(e.g. upload file, send a message\). - -#### Tracking & Cookies Data - -We use cookies and similar tracking technologies to track the activity on our Service and hold certain information. We DO NOT track activity in your self-managed instances. We regularly do monitor aggregated activity data on our infrastructure, but it is not tracking of individual users in the sense of this paragraph, which only occurs when we have a legitimate interest to do so \(e.g. for security and compliance purposes\). We do perform regular tracking on our community server. - -Cookies are files with small amount of data which may include an anonymous unique identifier. Cookies are sent to your browser from a website and stored on your device. Tracking technologies also used are beacons, tags, and scripts to collect and track information and to improve and analyze our Service. - -You can instruct your browser to refuse all cookies or to indicate when a cookie is being sent. However, if you do not accept cookies, you may not be able to use some portions of our Service. - -Examples of Cookies we use: - -* Session Cookies. We use Session Cookies to operate our Service. -* Preference Cookies. We use Preference Cookies to remember your preferences and various settings. -* Security Cookies. We use Security Cookies for security purposes. - -### Distinction of data collection between Self Managed Workspaces and Hosted Workspaces - -The following paragraph applies to data processing in Rocket.Chat workspaces and is for clarification purposes only. Self Managed workspaces and workspaces hosted by us differ in the kind of data we are processing from you, because in case of our hosted offering, all data put into the workspaces is technically processed on our infrastructure. - - There is also a difference between **registered**, self managed workspaces \(which consume services from us\) and **unregistered**, self managed workspaces. - -See the following table for a general distinction between the data that is processed in each case. Keep in mind that this can differ in individual circumstances, such as cases where apps are installed on unregistered workspaces via workarounds. - -| Data type | Self Managed \(not registered\) | Self Managed \(registered\) | Hosted | -| :---: | :---: | :---: | :---: | -| **Account Data** | no | yes - to register your workspace via an account \(optional\) | yes - to register your workspace via an account | -| **Usage Data** | no | yes - as per the service you are consuming via your registration, e.g. push notifications via our gateway | yes - as part of using the hosted workspace on our infrastructure | -| **App Data** | no | yes - if you install apps from the marketplace and based on the use case of the app. Third party apps have their own privacy policy. | yes - if you install apps from the marketplace and based on the use case of the app. Third party apps have their own privacy policy. | -| **User content** | no | no - content is not processed, unless it falls under the aforementioned \(e.g. the content of a push notification sent via our gateway\) | yes - as part of using the hosted workspace on our infrastructure. End-to-end encrypted content is only stored in encrypted form. | -| **Tracking and Cookies** | no | yes - tracking occurs on our end to monitor the consumption of the services you use \(Usage Data\). We do not track inside the workspace. | yes - tracking occurs to monitor the consumption of the services used. | - -## Use of Personal Data - -Rocket.Chat Technologies Corp. uses the collected data for various purposes: - -* To provide and maintain our Service -* To notify you about changes to our Service -* To allow you to participate in interactive features of our Service when you choose to do so -* To provide customer support -* To gather analysis or valuable information so that we can improve our Service -* To monitor the usage of our Service -* To detect, prevent and address technical issues -* To provide you with news, special offers and general information about other goods, services and events which we offer that are similar to those that you have already purchased or enquired about if you have provided consent to receive this information or the processing is in our legitimate interests and it's not overridden by your rights. - -We do not process content data beyond the purpose of providing you the service. - -## Legal Basis for Processing Personal Data Under General Data Protection Regulation \(GDPR\) - -If you are from the European Economic Area \(EEA\), Rocket.Chat Technologies Corp. legal basis for collecting and using the personal information described in this Privacy Policy depends on the Personal Data we collect and the specific context in which we collect it. - -Rocket.Chat Technologies Corp. may process your Personal Data because: - -* We need to perform a contract with you -* You have given us permission to do so -* The processing is in our legitimate interests and it's not overridden by your rights -* For payment processing purposes -* To comply with the law - -## Retention of Data - -Rocket.Chat Technologies Corp. will retain your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use your Personal Data to the extent necessary to comply with our legal obligations \(for example, if we are required to retain your data to comply with applicable laws\), resolve disputes, and enforce our legal agreements and policies. - -Rocket.Chat Technologies Corp. will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of our Service, or we are legally obligated to retain this data for longer time periods. - -## Transfer of Data - -Your information, including Personal Data, may be transferred to — and maintained on — computers located outside of your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from your jurisdiction. - -If you are located outside United States and choose to provide information to us, please note that we transfer the data, including Personal Data, to the United States or other jurisdictions deemed not not have an adequate level of data protection deemed by the competent authorities of your residence. Rocket.Chat Technologies Corp. will take all steps reasonably necessary to ensure that your data is treated securely and in accordance with this Privacy Policy and no transfer of your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of your data and other personal information. - -## Disclosure of Data - -### Business Transaction - -If Rocket.Chat Technologies Corp. is involved in a merger, acquisition or asset sale, your Personal Data may be transferred. We will provide notice before your Personal Data is transferred and becomes subject to a different Privacy Policy. - -### Disclosure for Law Enforcement - -Under certain circumstances, Rocket.Chat Technologies Corp. may be required to disclose your Personal Data if required to do so by law or in response to valid requests by public authorities \(e.g. a court or a government agency\). - -### Legal Requirements - -Rocket.Chat Technologies Corp. may disclose your Personal Data in the good faith belief that such action is necessary to: - -* To comply with a legal obligation -* To protect and defend the rights or property of Rocket.Chat Technologies Corp. -* To prevent or investigate possible wrongdoing in connection with the Service -* To protect the personal safety of users of the Service or the public -* To protect against legal liability - -## Security of Data - -The security of your data is important to us, but remember that no method of transmission over the Internet, or method of electronic storage is 100% secure. While we strive to use commercially acceptable means to protect your Personal Data, we cannot guarantee its absolute security. - -## "Do Not Track" Signals Under California Online Privacy Protection Act \(CalOPPA\) - -We do not support Do Not Track \("DNT"\). Do Not Track is a preference you can set in your web browser to inform websites that you do not want to be tracked. - -You can enable or disable Do Not Track by visiting the Preferences or Settings page of your web browser. - -## Your Data Protection Rights Under General Data Protection Regulation \(GDPR\) - -If you are a resident of the European Economic Area \(EEA\), you have certain data protection rights. Rocket.Chat Technologies Corp. aims to take reasonable steps to allow you to correct, amend, delete, or limit the use of your Personal Data. - -If you wish to be informed what Personal Data we hold about you and if you want it to be removed from our systems, please contact us. - -In certain circumstances, you have the following data protection rights: - -* The right to access, update or to delete the information we have on you. Whenever made possible, you can access, update or request deletion of your Personal Data directly within your account settings section. If you are unable to perform these actions yourself, please contact us to assist you. -* The right of rectification. You have the right to have your information rectified if that information is inaccurate or incomplete. -* The right to object. You have the right to object to our processing of your Personal Data. -* The right of restriction. You have the right to request that we restrict the processing of your personal information. -* The right to data portability. You have the right to be provided with a copy of the information we have on you in a structured, machine-readable and commonly used format. -* The right to withdraw consent. You also have the right to withdraw your consent at any time where Rocket.Chat Technologies Corp. relied on your consent to process your personal information. - -Please note that we may ask you to verify your identity before responding to such requests. - -You have the right to complain to a Data Protection Authority about our collection and use of your Personal Data. For more information, please contact your local data protection authority in the European Economic Area \(EEA\). - -## Service Providers and Subprocessors - -We may employ third party companies and individuals to facilitate our Service \("Service Providers"\), to provide the Service on our behalf, to perform Service-related services or to assist us in analyzing how our Service is used. - -These third parties have access to your Personal Data only to perform these tasks on our behalf and are obligated not to disclose or use it for any other purpose. - -### Subprocessors - -We employ the subprocessors to process personal data. The current list of subprocessors can be found [here](https://docs.rocket.chat/legal/privacy/subprocessors). - -### Analytics - -We may use third-party Service Providers to monitor and analyze the use of our Service. - -* Google Analytics - - Google Analytics is a web analytics service offered by Google that tracks and reports website traffic. Google uses the data collected to track and monitor the use of our Service. This data is shared with other Google services. Google may use the collected data to contextualize and personalize the ads of its own advertising network. - - For more information on the privacy practices of Google, please visit the Google Privacy & Terms web page: [https://policies.google.com/privacy?hl=en](https://policies.google.com/privacy?hl=en) - -* Firebase - - Firebase is analytics service provided by Google Inc. - - You may opt-out of certain Firebase features through your mobile device settings, such as your device advertising settings or by following the instructions provided by Google in their Privacy Policy: [https://policies.google.com/privacy?hl=en](https://policies.google.com/privacy?hl=en) - - We also encourage you to review the Google's policy for safeguarding your data: [https://support.google.com/analytics/answer/6004245](https://support.google.com/analytics/answer/6004245). For more information on what type of information Firebase collects, please visit please visit the Google Privacy & Terms web page: [https://policies.google.com/privacy?hl=en](https://policies.google.com/privacy?hl=en) - -## Links to Other Sites - -Our Service may contain links to other sites that are not operated by us. If you click on a third party link, you will be directed to that third party's site. We strongly advise you to review the Privacy Policy of every site you visit. - -We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services. - -## Children's Privacy - -Our Service does not address anyone under the age of 18 \("Children"\). - -We do not knowingly collect personally identifiable information from anyone under the age of 18. If you are a parent or guardian and you are aware that your child has provided us with Personal Data, please contact us. If we become aware that we have collected Personal Data from children without verification of parental consent, we take steps to remove that information from our servers. - -## Specific Provisions to our Cloud Offerings - -For our Cloud Offerings, we act as a Data Processor for our Customers, who are the Data Controllers of the instances they have licensed and administer. You as a user generally will be bound by the Data Controller´s policies. For theses instances, please direct your data privacy questions to the Data Controller. - -With regards to some of our Cloud Products, Customers have certain options to select the processing location of data and to configure the privacy-relevant settings of the instance. If you are the customer of one of these instances, you can contact us and get more information on where your instance is running. - -We generally offer two regions: - -* hosting in the United States -* hosting in the European Union - -Other regions may be added over time. - -Where required, we also offer to sign Standard Contractual Clauses approved by the European Commission to guarantee an adequate level of data protection or other mechanisms relevant for the Customer. - -The amount of Personal Data we process with our Cloud Offerings is limited to what the Customer and his users enter into the Service. In the cloud offering, we will not process the personalized cookie or analytics data described above. The purposes of processing the data are strictly limited to providing and improving the Service and in accordance with the Data Controller´s instructions. We never access workspace data \(i.e. the actual content the customer is entering in his instance\), unless the customer asks us to in form of a support request, we are bound by a valid law enforcement request or to protect our own interests, such as investigating potential abuse of the service. - -Once your usage of our cloud offering ceases, we will remove all your data, including backups, after a short grace period - or immediately, if you tell us to. - -## Changes to This Privacy Policy - -We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page. - -We will let you know via email and/or a prominent notice on our Service, prior to the change becoming effective and update the "effective date" at the top of this Privacy Policy. - -You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page. - -## Contact Us - -If you have any questions about this Privacy Policy, please contact us: - -* Rocket.Chat´s Data Protection Officer by email: [privacy@rocket.chat](mailto:privacy@rocket.chat) -* By visiting this page on our website: [https://rocket.chat/contact](https://rocket.chat/contact) - diff --git a/legal/privacy-policy/data-processing-agreement.md b/legal/privacy-policy/data-processing-agreement.md deleted file mode 100644 index e0e86efcb8..0000000000 --- a/legal/privacy-policy/data-processing-agreement.md +++ /dev/null @@ -1,26 +0,0 @@ -# Data Processing Agreement - - - -Are you a Rocket.Chat customer and looking for a GDPR-compliant **data processing agreement \(DPA\)**? - -You can find one here: - -[Link to Data Processing Agreement Signature Form](https://sign.zoho.com/signform?form_link=234b4d535f495623d70dd82f224c3e5934721c48021f650513e1c4b57fe79e962ee536c2f6aad51c7368f76df5cf60d50d6f45c9f7bd43ad1092195a08b56917819b6128a6e5c1bd#) - -It is **pre-signed** and only needs to be signed from your end for your compliance purposes. It contains EU standard contract clauses as a data transfer mechanism for data controllers subject to EU law. Keep in mind that our privacy policy is already part of any customer agreement and therefore already is deemed sufficient by most jurisdictions as a "contractual agreement" to prescribe our processing of personal data. - -The DPA covers our hosted offering. The DPA can also cover cases of customers, that run a **self-managed instance** of Rocket.Chat, but **connect to Rocket.Chat services** such as the push notification gateway or the marketplace. For this, you generally need to **register your server.** In these cases, personal data is processed by us to provide you these services and you might be required by the applicable laws to have a DPA in place. Our DPA is flexible enough to cover for these cases as well. - -_Info: The DPA is not valid for individual Rocket.Chat users \(individual persons\). For them, only the privacy policy of their Rocket.Chat workspace \(provided by the data controller\) applies. This DPA also does not cover processing of third-party apps from our marketplace \(beyond us providing the capability to consume such apps\) and in case of multiple DPAs being submitted, only the most recent version applies._ - -**How does it work?** - -1. Click the link to request your copy. Enter your email-address and you will receive an authentication code to your email. -2. Enter your authentication code and accept the ZOHO Sign Terms and Conditions for Electronic Signature. -3. Fill out the remaining fields, such as company name and address. Check optional fields and enter additional information into the text boxes. Keep in mind that excluding certain types of personal data but effectively entering them into our services does not preclude us from processing such data. You can forward the document to be signed by someone else, by using the function within ZOHO Sign. -4. Once all mandatory fields are filled out, click "finish". -5. Choose your delivery method \(download a copy or send via email\). A copy of the DPA with your signature will be mailed to us automatically. - -For questions, contact [privacy@rocket.chat](mailto:privacy@rocket.chat) - diff --git a/legal/privacy-policy/subprocessors.md b/legal/privacy-policy/subprocessors.md deleted file mode 100644 index 19dd8415fe..0000000000 --- a/legal/privacy-policy/subprocessors.md +++ /dev/null @@ -1,58 +0,0 @@ -# Subprocessors - -This page lists Rocket.Chat's current subprocessors for personal data and is updated on a regular basis. - -Last update: 23rd October,2020 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SubprocessorPurpose
-

Amazon Web Services,

-

-

OVH

-
-

underlying infrastructure of our hosted offering, marketplace and open - community server, as well as other services such as push notifications. - We use a mixed deployment. Generally speaking, after June 2020 all workspaces - run on OVH.

-

The location of from where an instance of our hosted offering is deployed - is determined by the customer during onboarding.

-

Please reach out to support if you want to know the concrete subprocessor - for your case.

-
Stripepayment processor, billing
ZOHOemail marketing, newsletter, CRM, customer support
Apple Push Notification Service, Firebasepush notification gateways
Mailchimpemail marketing
PRVoltemail marketing
Yeswareemail marketing
- diff --git a/legal/privacy.md b/legal/privacy.md deleted file mode 100644 index 9108c8dfc6..0000000000 --- a/legal/privacy.md +++ /dev/null @@ -1,293 +0,0 @@ -# Privacy Policy - -_Effective date: August 12th, 2020_ - -Rocket.Chat Technologies Corp. \("us", "we", or "our"\) operates the [https://rocket.chat](https://rocket.chat) website, the [https://open.rocket.chat](https://open.rocket.chat) community server, the Marketplace, incl. associated Rocket.Chat Apps, Rocket.Chat´s Cloud Offering and the Rocket.Chat mobile applications \(the "Service"\). - -This page informs you of our policies regarding the collection, use, and disclosure of personal data when you use our Service and the choices you have associated with that data. - -We use your data to provide and improve the Service. By using the Service, you agree to the collection and use of information in accordance with this policy. Unless otherwise defined in this Privacy Policy, terms used in this Privacy Policy have the same meanings as in our Terms and Conditions. - -## Summary - -* Administrators are responsible for user privacy, we help administrators - - There are basically two ways of using Rocket.Chat: self-managed \(also known as on-premises deployment\) on your own or someone else´s infrastructure or via our hosted offering. In both cases, the administrator of that instance - or the organization behind the administrator - is the person responsible to ensure privacy of Rocket.Chat users. We aim to help by providing features in our products and services to make that job easier. We also provide this policy to explain what we do as a "helping hand"/data processor for administrators in case we process personal data of users. - -* You remain in control of your personal data - - We cannot access your personal data in a self-managed instance of Rocket.Chat. Our code is open source, there are no back doors whatsoever. You are however free to connect a self-managed instance to other services, e.g. our marketplace or push notification gateway, where this privacy policy applies. When you do not register your instance, these settings are turned off by default. You can also connect it to third party services, such as external authentication services, in which case their privacy policy applies. It is your choice and you are not forced to do so. In our hosted offering, we only process your data for the purposes of providing you the service in the name of the administrator. Administrators are still in full control over the configuration of their instance. - -* We don´t sell your data - - We do not sell your personal data. Our business model is to provide you with a free edition and we charge you for extra services or features, according to the plan you choose. What you process within Rocket.Chat is yours and stays yours. - -* Our community server is for testing purposes - - Our community server [https://open.rocket.chat](https://open.rocket.chat) is a testing ground for our users and we use it to test and analyze new features. We track user activity in there with the trackers described below - including google analytics - to learn how our service is used and to improve our product. - -## Definitions - -* Service - - Service means the [https://rocket.chat](https://rocket.chat) website, the [https://open.rocket.chat](https://open.rocket.chat) community server, the Rocket.Chat Marketplace, incl. associated Rocket.Chat Apps, the [https://cloud.rocket.chat](https://cloud.rocket.chat) service offering, push notification gateways and the Rocket.Chat mobile applications operated by Rocket.Chat Technologies Corp. - -* Personal Data - - Personal Data means data about a living individual who can be identified from those data \(or from those and other information either in our possession or likely to come into our possession\). - -* Usage Data - - Usage Data is data collected automatically either generated by the use of the Service or from the Service infrastructure itself \(for example, the duration of a page visit\). - -* Cookies - - Cookies are small pieces of data stored on your device \(computer or mobile device\). - -* Data Controller - - Data Controller means the natural or legal person who \(either alone or jointly or in common with other persons\) determines the purposes for which and the manner in which any personal information are, or are to be, processed. - - For the purpose of this Privacy Policy, we are a Data Controller of your Personal Data. - -* Data Processors \(or Service Providers\) - - Data Processor \(or Service Provider\) means any natural or legal person who processes the data on behalf of the Data Controller. - - We may use the services of various Service Providers in order to process your data more effectively. - -* Data Subject \(or User\) - - Data Subject is any living individual who is using our Service and is the subject of Personal Data. - -## Information Collection and Use - -We collect several different types of information for various purposes to provide and improve our Service to you. - -### Types of Data Collected - -#### Personal Data - -While using our Service, we may ask you to provide us with certain personally identifiable information that can be used to contact or identify you \("Personal Data"\). Personally identifiable information may include, but is not limited to: - -* Email address -* First name and last name -* Cookies and Usage Data - -We may use your Personal Data to contact you with newsletters, marketing or promotional materials and other information that may be of interest to you, if you have provided consent to this processing or if we can base this processing on a legitimate interest that is not overridden by your fundamental rights. You may in the future withdraw that consent or object to receiving any, or all, of these communications from us by following the unsubscribe link or instructions provided in any email we send or by contacting us. - -#### Account Data - -Some Services may allow or require that you register for a personalized account. Account data may include in addition your account name, authentication information, registration date, contact information, payment information and any other information associated with your account. - -#### Usage Data - -We may also collect information that your browser sends whenever you visit our Service or when you access the Service, incl. by or through a mobile device \("Usage Data"\). - -This Usage Data may include information such as your computer's Internet Protocol address \(e.g. IP address\), browser type, browser version, the pages of our Service that you visit, the time and date of your visit, the time spent on those pages, unique device identifiers and other diagnostic data. - -When you access the Service by or through a mobile device, this Usage Data may include information such as the type of mobile device you use, the IP address of your mobile device, your mobile operating system, the app version, the type of mobile Internet browser you use, unique device identifiers and other diagnostic data. - -As a byproduct of the usage data within a Rocket.Chat instance, Administrators may chose to share aggregated and therefore anonymous, non-personal data with us to help us learn more about how our product is being used. The information shared is the same information as is shown on the "info"-page of the administration panel of an instance. E.g. this statistics sharing would transmit the total \# of channels, but it would not transmit the actual channel names, and so on, preserving privacy of your workspace. This is completely optional to use and can be activated and deactivated any time. - -#### Location Data - -We may use and store information about your location if you give us permission to do so \(“Location Data”\). We use this data to provide features of our Service \(only to allow you to share your location to another user via Rocket.Chat, if it was enabled by the administrator\). - -You can enable or disable location services when you use our Service at any time, through your device settings. - -#### App Data - -When you use the Marketplace, you may choose to install Apps provided by Rocket.Chat. These Apps process data from your instance of Rocket.Chat and therefore nonpersonal data, such as software version, amount of users, and similar. Depending on the purpose and your actual usage of the App \(e.g. enabling certain features\), Personal Data may however be processed. E.g. you enable an integration, which processes your users´information. The description of the App will make the types of personal data sufficiently clear as well as any potential deviations from this policy. - -For Third Party Apps on the Marketplace, the Vendor will provide you with a specific privacy policy that governs his Third Party App. - -#### Content you provide - -When you use our Services you may provide content into that service \(e.g. upload file, send a message\). - -#### Tracking & Cookies Data - -We use cookies and similar tracking technologies to track the activity on our Service and hold certain information. We DO NOT track activity in your self-managed instances. We regularly do monitor aggregated activity data on our infrastructure, but it is not tracking of individual users in the sense of this paragraph, which only occurs when we have a legitimate interest to do so \(e.g. for security and compliance purposes\). We do perform regular tracking on our community server. - -Cookies are files with small amount of data which may include an anonymous unique identifier. Cookies are sent to your browser from a website and stored on your device. Tracking technologies also used are beacons, tags, and scripts to collect and track information and to improve and analyze our Service. - -You can instruct your browser to refuse all cookies or to indicate when a cookie is being sent. However, if you do not accept cookies, you may not be able to use some portions of our Service. - -Examples of Cookies we use: - -* Session Cookies. We use Session Cookies to operate our Service. -* Preference Cookies. We use Preference Cookies to remember your preferences and various settings. -* Security Cookies. We use Security Cookies for security purposes. - -## Use of Data - -Rocket.Chat Technologies Corp. uses the collected data for various purposes: - -* To provide and maintain our Service -* To notify you about changes to our Service -* To allow you to participate in interactive features of our Service when you choose to do so -* To provide customer support -* To gather analysis or valuable information so that we can improve our Service -* To monitor the usage of our Service -* To detect, prevent and address technical issues -* To provide you with news, special offers and general information about other goods, services and events which we offer that are similar to those that you have already purchased or enquired about if you have provided consent to receive this information or the processing is in our legitimate interests and it's not overridden by your rights. - -We do not process content data beyond the purpose of providing you the service. - -## Legal Basis for Processing Personal Data Under General Data Protection Regulation \(GDPR\) - -If you are from the European Economic Area \(EEA\), Rocket.Chat Technologies Corp. legal basis for collecting and using the personal information described in this Privacy Policy depends on the Personal Data we collect and the specific context in which we collect it. - -Rocket.Chat Technologies Corp. may process your Personal Data because: - -* We need to perform a contract with you -* You have given us permission to do so -* The processing is in our legitimate interests and it's not overridden by your rights -* For payment processing purposes -* To comply with the law - -## Retention of Data - -Rocket.Chat Technologies Corp. will retain your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use your Personal Data to the extent necessary to comply with our legal obligations \(for example, if we are required to retain your data to comply with applicable laws\), resolve disputes, and enforce our legal agreements and policies. - -Rocket.Chat Technologies Corp. will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of our Service, or we are legally obligated to retain this data for longer time periods. - -## Transfer of Data - -Your information, including Personal Data, may be transferred to — and maintained on — computers located outside of your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from your jurisdiction. - -If you are located outside United States and choose to provide information to us, please note that we transfer the data, including Personal Data, to the United States or other jurisdictions deemed not not have an adequate level of data protection deemed by the competent authorities of your residence. Rocket.Chat Technologies Corp. will take all steps reasonably necessary to ensure that your data is treated securely and in accordance with this Privacy Policy and no transfer of your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of your data and other personal information. - -## Disclosure of Data - -### Business Transaction - -If Rocket.Chat Technologies Corp. is involved in a merger, acquisition or asset sale, your Personal Data may be transferred. We will provide notice before your Personal Data is transferred and becomes subject to a different Privacy Policy. - -### Disclosure for Law Enforcement - -Under certain circumstances, Rocket.Chat Technologies Corp. may be required to disclose your Personal Data if required to do so by law or in response to valid requests by public authorities \(e.g. a court or a government agency\). - -### Legal Requirements - -Rocket.Chat Technologies Corp. may disclose your Personal Data in the good faith belief that such action is necessary to: - -* To comply with a legal obligation -* To protect and defend the rights or property of Rocket.Chat Technologies Corp. -* To prevent or investigate possible wrongdoing in connection with the Service -* To protect the personal safety of users of the Service or the public -* To protect against legal liability - -## Security of Data - -The security of your data is important to us, but remember that no method of transmission over the Internet, or method of electronic storage is 100% secure. While we strive to use commercially acceptable means to protect your Personal Data, we cannot guarantee its absolute security. - -## "Do Not Track" Signals Under California Online Privacy Protection Act \(CalOPPA\) - -We do not support Do Not Track \("DNT"\). Do Not Track is a preference you can set in your web browser to inform websites that you do not want to be tracked. - -You can enable or disable Do Not Track by visiting the Preferences or Settings page of your web browser. - -## Your Data Protection Rights Under General Data Protection Regulation \(GDPR\) - -If you are a resident of the European Economic Area \(EEA\), you have certain data protection rights. Rocket.Chat Technologies Corp. aims to take reasonable steps to allow you to correct, amend, delete, or limit the use of your Personal Data. - -If you wish to be informed what Personal Data we hold about you and if you want it to be removed from our systems, please contact us. - -In certain circumstances, you have the following data protection rights: - -* The right to access, update or to delete the information we have on you. Whenever made possible, you can access, update or request deletion of your Personal Data directly within your account settings section. If you are unable to perform these actions yourself, please contact us to assist you. -* The right of rectification. You have the right to have your information rectified if that information is inaccurate or incomplete. -* The right to object. You have the right to object to our processing of your Personal Data. -* The right of restriction. You have the right to request that we restrict the processing of your personal information. -* The right to data portability. You have the right to be provided with a copy of the information we have on you in a structured, machine-readable and commonly used format. -* The right to withdraw consent. You also have the right to withdraw your consent at any time where Rocket.Chat Technologies Corp. relied on your consent to process your personal information. - -Please note that we may ask you to verify your identity before responding to such requests. - -You have the right to complain to a Data Protection Authority about our collection and use of your Personal Data. For more information, please contact your local data protection authority in the European Economic Area \(EEA\). - -## Service Providers and Subprocessors - -We may employ third party companies and individuals to facilitate our Service \("Service Providers"\), to provide the Service on our behalf, to perform Service-related services or to assist us in analyzing how our Service is used. - -These third parties have access to your Personal Data only to perform these tasks on our behalf and are obligated not to disclose or use it for any other purpose. - -### Subprocessors - -We employ the following subprocessors to process personal data - -| Subprocessor | Purpose | -| :--- | :--- | -| Amazon Web Services, OVH | underlying infrastructure of our hosted offering, marketplace and open community server, as well as other services such as push notifications. We use a mixed deployment. Generally speaking, after June 2020 all workspaces run on OVH. Reach out to support if you want to know the concrete subprocessor for your case. | -| Stripe | payment processor | -| ZOHO | email marketing, newsletter, CRM, customer support | -| Apple Push Notification Service, Firebase | push notification gateways | -| Mailchimp | email marketing | -| PRVolt | email marketing | - -### Analytics - -We may use third-party Service Providers to monitor and analyze the use of our Service. - -* Google Analytics - - Google Analytics is a web analytics service offered by Google that tracks and reports website traffic. Google uses the data collected to track and monitor the use of our Service. This data is shared with other Google services. Google may use the collected data to contextualize and personalize the ads of its own advertising network. - - For more information on the privacy practices of Google, please visit the Google Privacy & Terms web page: [https://policies.google.com/privacy?hl=en](https://policies.google.com/privacy?hl=en) - -* Firebase - - Firebase is analytics service provided by Google Inc. - - You may opt-out of certain Firebase features through your mobile device settings, such as your device advertising settings or by following the instructions provided by Google in their Privacy Policy: [https://policies.google.com/privacy?hl=en](https://policies.google.com/privacy?hl=en) - - We also encourage you to review the Google's policy for safeguarding your data: [https://support.google.com/analytics/answer/6004245](https://support.google.com/analytics/answer/6004245). For more information on what type of information Firebase collects, please visit please visit the Google Privacy & Terms web page: [https://policies.google.com/privacy?hl=en](https://policies.google.com/privacy?hl=en) - -## Links to Other Sites - -Our Service may contain links to other sites that are not operated by us. If you click on a third party link, you will be directed to that third party's site. We strongly advise you to review the Privacy Policy of every site you visit. - -We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services. - -## Children's Privacy - -Our Service does not address anyone under the age of 18 \("Children"\). - -We do not knowingly collect personally identifiable information from anyone under the age of 18. If you are a parent or guardian and you are aware that your child has provided us with Personal Data, please contact us. If we become aware that we have collected Personal Data from children without verification of parental consent, we take steps to remove that information from our servers. - -## Specific Provisions to our Cloud Offerings - -For our Cloud Offerings, we act as a Data Processor for our Customers, who are the Data Controllers of the instances they have licensed and administer. You as a user generally will be bound by the Data Controller´s policies. For theses instances, please direct your data privacy questions to the Data Controller. - -With regards to some of our Cloud Products, Customers have certain options to select the processing location of data and to configure the privacy-relevant settings of the instance. If you are the customer of one of these instances, you can contact us and get more information on where your instance is running. - -We generally offer two regions: - -* hosting in the United States -* hosting in the European Union - -Other regions may be added over time. - -Where required, we also offer to sign Standard Contractual Clauses approved by the European Commission to guarantee an adequate level of data protection or other mechanisms relevant for the Customer. - -The amount of Personal Data we process with our Cloud Offerings is limited to what the Customer and his users enter into the Service. In the cloud offering, we will not process the personalized cookie or analytics data described above. The purposes of processing the data are strictly limited to providing and improving the Service and in accordance with the Data Controller´s instructions. We never access workspace data \(i.e. the actual content the customer is entering in his instance\), unless the customer asks us to in form of a support request, we are bound by a valid law enforcement request or to protect our own interests, such as investigating potential abuse of the service. - -Once your usage of our cloud offering ceases, we will remove all your data, including backups, after a short grace period - or immediately, if you tell us to. - -## Changes to This Privacy Policy - -We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page. - -We will let you know via email and/or a prominent notice on our Service, prior to the change becoming effective and update the "effective date" at the top of this Privacy Policy. - -You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page. - -## Contact Us - -If you have any questions about this Privacy Policy, please contact us: - -* Rocket.Chat´s Data Protection Officer by email: [privacy@rocket.chat](mailto:privacy@rocket.chat) -* By visiting this page on our website: [https://rocket.chat/contact](https://rocket.chat/contact) - diff --git a/legal/privacy/README.md b/legal/privacy/README.md deleted file mode 100644 index 7072bfb9e5..0000000000 --- a/legal/privacy/README.md +++ /dev/null @@ -1,300 +0,0 @@ -# Privacy Policy - -_Effective date: October 23rd, 2020_ - -Rocket.Chat Technologies Corp. \("us", "we", or "our"\) operates the [https://rocket.chat](https://rocket.chat) website, the [https://open.rocket.chat](https://open.rocket.chat) community server, the Marketplace, incl. associated Rocket.Chat Apps, Rocket.Chat´s Cloud Offering and the Rocket.Chat mobile applications \(the "Service"\). - -This page informs you of our policies regarding the collection, use, and disclosure of personal data when you use our Service and the choices you have associated with that data. - -We use your data to provide and improve the Service. By using the Service, you agree to the collection and use of information in accordance with this policy. Unless otherwise defined in this Privacy Policy, terms used in this Privacy Policy have the same meanings as in our Terms and Conditions. - -## Summary - -* **Administrators are responsible for user privacy, we help administrators** - - There are basically two ways of using Rocket.Chat: self-managed \(also known as on-premises deployment\) on your own or someone else´s infrastructure or via our hosted offering. In both cases, the administrator of that instance - or the organization behind the administrator - is the person responsible to ensure privacy of Rocket.Chat users. We aim to help by providing features in our products and services to make that job easier. We also provide this policy to explain what we do as a "helping hand"/data processor for administrators in case we process personal data of users. - -* **You remain in control of your personal data** - - We cannot access your personal data in a self-managed instance of Rocket.Chat. Our code is open source, there are no back doors whatsoever. You are however free to connect a self-managed instance to other services, e.g. our marketplace or push notification gateway, where this privacy policy applies. When you do not register your instance, these settings are turned off by default. You can also connect it to third party services, such as external authentication services, in which case their privacy policy applies. It is your choice and you are not forced to do so. In our hosted offering, we only process your data for the purposes of providing you the service in the name of the administrator. Administrators are still in full control over the configuration of their instance. - -* **We don´t sell your data** - - We do not sell your personal data. Our business model is to provide you with a free edition and we charge you for extra services or features, according to the plan you choose. What you process within Rocket.Chat is yours and stays yours. - -* **Our community server is for testing purposes** - - Our community server [https://open.rocket.chat](https://open.rocket.chat) is a testing ground for our users and we use it to test and analyze new features. We track user activity in there with the trackers described below - including google analytics - to learn how our service is used and to improve our product. - -## Definitions - -* **Service** - - Service means the [https://rocket.chat](https://rocket.chat) website, the [https://open.rocket.chat](https://open.rocket.chat) community server, the Rocket.Chat Marketplace, incl. associated Rocket.Chat Apps, the [https://cloud.rocket.chat](https://cloud.rocket.chat) service offering, push notification gateways and the Rocket.Chat mobile applications operated by Rocket.Chat Technologies Corp. - -* **Personal Data** - - Personal Data means data about a living individual who can be identified from those data \(or from those and other information either in our possession or likely to come into our possession\). - -* **Usage Data** - - Usage Data is data collected automatically either generated by the use of the Service or from the Service infrastructure itself \(for example, the duration of a page visit\). - -* **Cookies** - - Cookies are small pieces of data stored on your device \(computer or mobile device\). - -* **Data Controller** - - Data Controller means the natural or legal person who \(either alone or jointly or in common with other persons\) determines the purposes for which and the manner in which any personal information are, or are to be, processed. - - For the purpose of this Privacy Policy, we are a Data Controller of your Personal Data. - -* **Data Processors \(or Service Providers\)** - - Data Processor \(or Service Provider\) means any natural or legal person who processes the data on behalf of the Data Controller. - - We may use the services of various Service Providers in order to process your data more effectively. - -* **Data Subject \(or User\)** - - Data Subject is any living individual who is using our Service and is the subject of Personal Data. - -## Information Collection and Use - -We collect several different types of information for various purposes to provide and improve our Service to you. - -### Types of Data Collected - -#### Personal Data - -While using our Service, we may ask you to provide us with certain personally identifiable information that can be used to contact or identify you \("Personal Data"\). Personally identifiable information may include, but is not limited to: - -* Email address -* First name and last name -* Cookies and Usage Data - -We may use your Personal Data to contact you with newsletters, marketing or promotional materials and other information that may be of interest to you, if you have provided consent to this processing or if we can base this processing on a legitimate interest that is not overridden by your fundamental rights. You may in the future withdraw that consent or object to receiving any, or all, of these communications from us by following the unsubscribe link or instructions provided in any email we send or by contacting us. - -#### Account Data - -Some Services may allow or require that you register for a personalized account. Account data may include in addition your account name, authentication information, registration date, contact information, payment information and any other information associated with your account. - -#### Usage Data - -We may also collect information that your browser sends whenever you visit our Service or when you access the Service, incl. by or through a mobile device \("Usage Data"\). - -This Usage Data may include information such as your computer's Internet Protocol address \(e.g. IP address\), browser type, browser version, the pages of our Service that you visit, the time and date of your visit, the time spent on those pages, unique device identifiers and other diagnostic data. - -When you access the Service by or through a mobile device, this Usage Data may include information such as the type of mobile device you use, the IP address of your mobile device, your mobile operating system, the app version, the type of mobile Internet browser you use, unique device identifiers and other diagnostic data. - -As a byproduct of the usage data within a Rocket.Chat instance, Administrators may chose to share aggregated and therefore anonymous, non-personal data with us to help us learn more about how our product is being used. This setting is described [here](https://docs.rocket.chat/guides/administrator-guides/general#reporting). The information shared is the same information as is shown on the "info"-page of the administration panel of an instance. E.g. this statistics sharing would transmit the total \# of channels, but it would not transmit the actual channel names, and so on, preserving privacy of your workspace. This is completely optional to use and can be activated and deactivated any time. - -#### Location Data - -We may use and store information about your location if you give us permission to do so \(“Location Data”\). We use this data to provide features of our Service \(only to allow you to share your location to another user via Rocket.Chat, if it was enabled by the administrator\). - -You can enable or disable location services when you use our Service at any time, through your device settings. - -#### App Data - -When you use the Marketplace, you may choose to install Apps provided by Rocket.Chat. These Apps process data from your instance of Rocket.Chat and therefore nonpersonal data, such as software version, amount of users, and similar. Depending on the purpose and your actual usage of the App \(e.g. enabling certain features\), Personal Data may however be processed. E.g. you enable an integration, which processes your users´information. The description of the App will make the types of personal data sufficiently clear as well as any potential deviations from this policy. - -For Third Party Apps on the Marketplace, the Vendor will provide you with a specific privacy policy that governs his Third Party App. - -#### Content you provide - -When you use our Services you may provide content into that service \(e.g. upload file, send a message\). - -#### Tracking & Cookies Data - -We use cookies and similar tracking technologies to track the activity on our Service and hold certain information. We DO NOT track activity in your self-managed instances. We regularly do monitor aggregated activity data on our infrastructure, but it is not tracking of individual users in the sense of this paragraph, which only occurs when we have a legitimate interest to do so \(e.g. for security and compliance purposes\). We do perform regular tracking on our community server. - -Cookies are files with small amount of data which may include an anonymous unique identifier. Cookies are sent to your browser from a website and stored on your device. Tracking technologies also used are beacons, tags, and scripts to collect and track information and to improve and analyze our Service. - -You can instruct your browser to refuse all cookies or to indicate when a cookie is being sent. However, if you do not accept cookies, you may not be able to use some portions of our Service. - -Examples of Cookies we use: - -* Session Cookies. We use Session Cookies to operate our Service. -* Preference Cookies. We use Preference Cookies to remember your preferences and various settings. -* Security Cookies. We use Security Cookies for security purposes. - -### Distinction of data collection between Self Managed Workspaces and Hosted Workspaces - -The following paragraph applies to data processing in Rocket.Chat workspaces and is for clarification purposes only. Self Managed workspaces and workspaces hosted by us differ in the kind of data we are processing from you, because in case of our hosted offering, all data put into the workspaces is technically processed on our infrastructure. - - There is also a difference between **registered**, self managed workspaces \(which consume services from us\) and **unregistered**, self managed workspaces. - -See the following table for a general distinction between the data that is processed in each case. Keep in mind that this can differ in individual circumstances, such as cases where apps are installed on unregistered workspaces via workarounds. - -| Data type | Self Managed \(not registered\) | Self Managed \(registered\) | Hosted | -| :---: | :---: | :---: | :---: | -| **Account Data** | no | yes - to register your workspace via an account \(optional\) | yes - to register your workspace via an account | -| **Usage Data** | no | yes - as per the service you are consuming via your registration, e.g. push notifications via our gateway | yes - as part of using the hosted workspace on our infrastructure | -| **App Data** | no | yes - if you install apps from the marketplace and based on the use case of the app. Third party apps have their own privacy policy. | yes - if you install apps from the marketplace and based on the use case of the app. Third party apps have their own privacy policy. | -| **User content** | no | no - content is not processed, unless it falls under the aforementioned \(e.g. the content of a push notification sent via our gateway\) | yes - as part of using the hosted workspace on our infrastructure. End-to-end encrypted content is only stored in encrypted form. | -| **Tracking and Cookies** | no | yes - tracking occurs on our end to monitor the consumption of the services you use \(Usage Data\). We do not track inside the workspace. | yes - tracking occurs to monitor the consumption of the services used. | - -## Use of Personal Data - -Rocket.Chat Technologies Corp. uses the collected data for various purposes: - -* To provide and maintain our Service -* To notify you about changes to our Service -* To allow you to participate in interactive features of our Service when you choose to do so -* To provide customer support -* To gather analysis or valuable information so that we can improve our Service -* To monitor the usage of our Service -* To detect, prevent and address technical issues -* To provide you with news, special offers and general information about other goods, services and events which we offer that are similar to those that you have already purchased or enquired about if you have provided consent to receive this information or the processing is in our legitimate interests and it's not overridden by your rights. - -We do not process content data beyond the purpose of providing you the service. - -## Legal Basis for Processing Personal Data Under General Data Protection Regulation \(GDPR\) - -If you are from the European Economic Area \(EEA\), Rocket.Chat Technologies Corp. legal basis for collecting and using the personal information described in this Privacy Policy depends on the Personal Data we collect and the specific context in which we collect it. - -Rocket.Chat Technologies Corp. may process your Personal Data because: - -* We need to perform a contract with you -* You have given us permission to do so -* The processing is in our legitimate interests and it's not overridden by your rights -* For payment processing purposes -* To comply with the law - -## Retention of Data - -Rocket.Chat Technologies Corp. will retain your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use your Personal Data to the extent necessary to comply with our legal obligations \(for example, if we are required to retain your data to comply with applicable laws\), resolve disputes, and enforce our legal agreements and policies. - -Rocket.Chat Technologies Corp. will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of our Service, or we are legally obligated to retain this data for longer time periods. - -## Transfer of Data - -Your information, including Personal Data, may be transferred to — and maintained on — computers located outside of your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from your jurisdiction. - -If you are located outside United States and choose to provide information to us, please note that we transfer the data, including Personal Data, to the United States or other jurisdictions deemed not not have an adequate level of data protection deemed by the competent authorities of your residence. Rocket.Chat Technologies Corp. will take all steps reasonably necessary to ensure that your data is treated securely and in accordance with this Privacy Policy and no transfer of your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of your data and other personal information. - -## Disclosure of Data - -### Business Transaction - -If Rocket.Chat Technologies Corp. is involved in a merger, acquisition or asset sale, your Personal Data may be transferred. We will provide notice before your Personal Data is transferred and becomes subject to a different Privacy Policy. - -### Disclosure for Law Enforcement - -Under certain circumstances, Rocket.Chat Technologies Corp. may be required to disclose your Personal Data if required to do so by law or in response to valid requests by public authorities \(e.g. a court or a government agency\). - -### Legal Requirements - -Rocket.Chat Technologies Corp. may disclose your Personal Data in the good faith belief that such action is necessary to: - -* To comply with a legal obligation -* To protect and defend the rights or property of Rocket.Chat Technologies Corp. -* To prevent or investigate possible wrongdoing in connection with the Service -* To protect the personal safety of users of the Service or the public -* To protect against legal liability - -## Security of Data - -The security of your data is important to us, but remember that no method of transmission over the Internet, or method of electronic storage is 100% secure. While we strive to use commercially acceptable means to protect your Personal Data, we cannot guarantee its absolute security. - -## "Do Not Track" Signals Under California Online Privacy Protection Act \(CalOPPA\) - -We do not support Do Not Track \("DNT"\). Do Not Track is a preference you can set in your web browser to inform websites that you do not want to be tracked. - -You can enable or disable Do Not Track by visiting the Preferences or Settings page of your web browser. - -## Your Data Protection Rights Under General Data Protection Regulation \(GDPR\) - -If you are a resident of the European Economic Area \(EEA\), you have certain data protection rights. Rocket.Chat Technologies Corp. aims to take reasonable steps to allow you to correct, amend, delete, or limit the use of your Personal Data. - -If you wish to be informed what Personal Data we hold about you and if you want it to be removed from our systems, please contact us. - -In certain circumstances, you have the following data protection rights: - -* The right to access, update or to delete the information we have on you. Whenever made possible, you can access, update or request deletion of your Personal Data directly within your account settings section. If you are unable to perform these actions yourself, please contact us to assist you. -* The right of rectification. You have the right to have your information rectified if that information is inaccurate or incomplete. -* The right to object. You have the right to object to our processing of your Personal Data. -* The right of restriction. You have the right to request that we restrict the processing of your personal information. -* The right to data portability. You have the right to be provided with a copy of the information we have on you in a structured, machine-readable and commonly used format. -* The right to withdraw consent. You also have the right to withdraw your consent at any time where Rocket.Chat Technologies Corp. relied on your consent to process your personal information. - -Please note that we may ask you to verify your identity before responding to such requests. - -You have the right to complain to a Data Protection Authority about our collection and use of your Personal Data. For more information, please contact your local data protection authority in the European Economic Area \(EEA\). - -## Service Providers and Subprocessors - -We may employ third party companies and individuals to facilitate our Service \("Service Providers"\), to provide the Service on our behalf, to perform Service-related services or to assist us in analyzing how our Service is used. - -These third parties have access to your Personal Data only to perform these tasks on our behalf and are obligated not to disclose or use it for any other purpose. - -### Subprocessors - -We employ the subprocessors to process personal data. The current list of subprocessors can be found [here](https://docs.rocket.chat/legal/privacy/subprocessors). - -### Analytics - -We may use third-party Service Providers to monitor and analyze the use of our Service. - -* Google Analytics - - Google Analytics is a web analytics service offered by Google that tracks and reports website traffic. Google uses the data collected to track and monitor the use of our Service. This data is shared with other Google services. Google may use the collected data to contextualize and personalize the ads of its own advertising network. - - For more information on the privacy practices of Google, please visit the Google Privacy & Terms web page: [https://policies.google.com/privacy?hl=en](https://policies.google.com/privacy?hl=en) - -* Firebase - - Firebase is analytics service provided by Google Inc. - - You may opt-out of certain Firebase features through your mobile device settings, such as your device advertising settings or by following the instructions provided by Google in their Privacy Policy: [https://policies.google.com/privacy?hl=en](https://policies.google.com/privacy?hl=en) - - We also encourage you to review the Google's policy for safeguarding your data: [https://support.google.com/analytics/answer/6004245](https://support.google.com/analytics/answer/6004245). For more information on what type of information Firebase collects, please visit please visit the Google Privacy & Terms web page: [https://policies.google.com/privacy?hl=en](https://policies.google.com/privacy?hl=en) - -## Links to Other Sites - -Our Service may contain links to other sites that are not operated by us. If you click on a third party link, you will be directed to that third party's site. We strongly advise you to review the Privacy Policy of every site you visit. - -We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services. - -## Children's Privacy - -Our Service does not address anyone under the age of 18 \("Children"\). - -We do not knowingly collect personally identifiable information from anyone under the age of 18. If you are a parent or guardian and you are aware that your child has provided us with Personal Data, please contact us. If we become aware that we have collected Personal Data from children without verification of parental consent, we take steps to remove that information from our servers. - -## Specific Provisions to our Cloud Offerings - -For our Cloud Offerings, we act as a Data Processor for our Customers, who are the Data Controllers of the instances they have licensed and administer. You as a user generally will be bound by the Data Controller´s policies. For theses instances, please direct your data privacy questions to the Data Controller. - -With regards to some of our Cloud Products, Customers have certain options to select the processing location of data and to configure the privacy-relevant settings of the instance. If you are the customer of one of these instances, you can contact us and get more information on where your instance is running. - -We generally offer two regions: - -* hosting in the United States -* hosting in the European Union - -Other regions may be added over time. - -Where required, we also offer to sign Standard Contractual Clauses approved by the European Commission to guarantee an adequate level of data protection or other mechanisms relevant for the Customer. - -The amount of Personal Data we process with our Cloud Offerings is limited to what the Customer and his users enter into the Service. In the cloud offering, we will not process the personalized cookie or analytics data described above. The purposes of processing the data are strictly limited to providing and improving the Service and in accordance with the Data Controller´s instructions. We never access workspace data \(i.e. the actual content the customer is entering in his instance\), unless the customer asks us to in form of a support request, we are bound by a valid law enforcement request or to protect our own interests, such as investigating potential abuse of the service. - -Once your usage of our cloud offering ceases, we will remove all your data, including backups, after a short grace period - or immediately, if you tell us to. - -## Changes to This Privacy Policy - -We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page. - -We will let you know via email and/or a prominent notice on our Service, prior to the change becoming effective and update the "effective date" at the top of this Privacy Policy. - -You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page. - -## Contact Us - -If you have any questions about this Privacy Policy, please contact us: - -* Rocket.Chat´s Data Protection Officer by email: [privacy@rocket.chat](mailto:privacy@rocket.chat) -* By visiting this page on our website: [https://rocket.chat/contact](https://rocket.chat/contact) - diff --git a/legal/privacy/data-processing-agreement.md b/legal/privacy/data-processing-agreement.md deleted file mode 100644 index e0e86efcb8..0000000000 --- a/legal/privacy/data-processing-agreement.md +++ /dev/null @@ -1,26 +0,0 @@ -# Data Processing Agreement - - - -Are you a Rocket.Chat customer and looking for a GDPR-compliant **data processing agreement \(DPA\)**? - -You can find one here: - -[Link to Data Processing Agreement Signature Form](https://sign.zoho.com/signform?form_link=234b4d535f495623d70dd82f224c3e5934721c48021f650513e1c4b57fe79e962ee536c2f6aad51c7368f76df5cf60d50d6f45c9f7bd43ad1092195a08b56917819b6128a6e5c1bd#) - -It is **pre-signed** and only needs to be signed from your end for your compliance purposes. It contains EU standard contract clauses as a data transfer mechanism for data controllers subject to EU law. Keep in mind that our privacy policy is already part of any customer agreement and therefore already is deemed sufficient by most jurisdictions as a "contractual agreement" to prescribe our processing of personal data. - -The DPA covers our hosted offering. The DPA can also cover cases of customers, that run a **self-managed instance** of Rocket.Chat, but **connect to Rocket.Chat services** such as the push notification gateway or the marketplace. For this, you generally need to **register your server.** In these cases, personal data is processed by us to provide you these services and you might be required by the applicable laws to have a DPA in place. Our DPA is flexible enough to cover for these cases as well. - -_Info: The DPA is not valid for individual Rocket.Chat users \(individual persons\). For them, only the privacy policy of their Rocket.Chat workspace \(provided by the data controller\) applies. This DPA also does not cover processing of third-party apps from our marketplace \(beyond us providing the capability to consume such apps\) and in case of multiple DPAs being submitted, only the most recent version applies._ - -**How does it work?** - -1. Click the link to request your copy. Enter your email-address and you will receive an authentication code to your email. -2. Enter your authentication code and accept the ZOHO Sign Terms and Conditions for Electronic Signature. -3. Fill out the remaining fields, such as company name and address. Check optional fields and enter additional information into the text boxes. Keep in mind that excluding certain types of personal data but effectively entering them into our services does not preclude us from processing such data. You can forward the document to be signed by someone else, by using the function within ZOHO Sign. -4. Once all mandatory fields are filled out, click "finish". -5. Choose your delivery method \(download a copy or send via email\). A copy of the DPA with your signature will be mailed to us automatically. - -For questions, contact [privacy@rocket.chat](mailto:privacy@rocket.chat) - diff --git a/legal/privacy/external-api-calls.md b/legal/privacy/external-api-calls.md deleted file mode 100644 index 87cb2276e4..0000000000 --- a/legal/privacy/external-api-calls.md +++ /dev/null @@ -1,171 +0,0 @@ -# External API Calls - -Rocket.Chat comes with a range of features that call APIs for different external services. This provides more information about the data sent by Rocket.Chat services in API calls to external services. - -## Any URL - -Rocket.Chat makes API calls to URLs with data for external [Livechat®](https://docs.rocket.chat/administrator-guides/livechat/) queues. - -## Apple® - -Rocket.Chat makes API calls to [Apple](https://developer.apple.com/documentation/) with data such as user ID, user name, and the message for [Push Notifications](https://martinschoeler.github.io/docs/administrator-guides/notifications/push-notifications/). - -## Atlassian CROWD® - -Rocket.Chat makes API calls with user name, email, and password data to authenticate [Crowd](https://www.atlassian.com/software/crowd). Check the [integrations with Atlassian®](https://rocket.chat/atlassian) for more information. - -## AWS S3 Storage - -Rocket.Chat makes API calls with file paths for file uploads from [AWS S3 Storage®](https://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html). Check the [configuration available for Amazon S3®](https://docs.rocket.chat/administrator-guides/file-upload/amazon-s3/) for more information. - -## BBB Web Conferencing - -Since [Rocket.Chat 0.69](https://rocket.chat/2018/09/07/0-69-release/), Rocket.Chat supports [Big Blue Button® Web Conferencing](https://docs.bigbluebutton.org/) and makes API calls to obtain data, such as the meeting ID. - -## Blockstack® - -Rocket.Chat makes API calls to get Auth data from [Blockstack](https://blockstack.org/) for the Custom OAuth service. Check the [Rocket.Chat OAuth Provider configuration](https://docs.rocket.chat/administrator-guides/authentication/oauth/) for more information. - -## Boonex Dolphin® - -Rocket.Chat makes API calls to get Auth data from [Boonex Dolphin](https://www.boonex.com/trac/dolphin/wiki) for the Custom OAuth service. Check the [integration of Boonex Dolphin® OAuth](https://www.boonex.com/n/rocket-chat-adds-boonex-dolphin-oauth-to-core-pack) for more information. - -## Bugsnag® - -Rocket.Chat makes API calls to [Bugsnag](https://www.bugsnag.com/) to send error reports based on data from error stacks. Check [Bugsnag Error Reporting API](https://docs.bugsnag.com/product/integrations/) for more information. - -## CAS - -Rocket.Chat makes API calls to get Auth data from Central Authentication Service (CAS) servers for the Custom OAuth service. Check the [Rocket.Chat CAS configuration](https://docs.rocket.chat/administrator-guides/authentication/cas/) for more information. - -## Chatpal Search® - -Rocket.Chat makes API calls to [Chatpal Search](https://chatpal.io/) with data from messages (id, rid, text, type), rooms (id, name, announcement, description, topic), and users (id, username, name, email). - -## Datadog® - -Rocket.Chat makes API calls to [Datadog](https://www.datadoghq.com/) with metrics, such as the time-to-execute callbacks. Check the [_Datadog Introduction to Integration_](https://docs.datadoghq.com/getting_started/integrations/) for more information. - -## DEEPL® - -Rocket.Chat makes API calls from the autotranslate service to [DEEPL](https://www.deepl.com/en/docs-api.html) with data from message content and attachments descriptions. - -## Dialogflow® - -Rocket.Chat makes API calls to [Dialogflow](https://dialogflow.com/) to obtain data such as visitor, agent, messages, custom fields, and tags for the [Livechat](https://docs.rocket.chat/administrator-guides/livechat/) service. - -## Drupal® - -Rocket.Chat makes API calls to obtain Auth data from [Drupal](https://www.drupal.org/home) for the Custom OAuth service. Check the [Rocket.Chat module for Drupal 8 and 7](https://www.drupal.org/project/rocket_chat) for more information. - -## Facebook® - -Rocket.Chat makes API calls to obtain Auth data from [Facebook](https://developers.facebook.com/docs/apis-and-sdks) for the [Custom OAuth service](https://docs.rocket.chat/administrator-guides/livechat/omnichannel-integration/). The [Livechat Omnichannel service](https://docs.rocket.chat/administrator-guides/livechat/omnichannel-integration/) also sends APIs to obtain data, such as visitor, agent, messages, custom fields, and tags. - -## GitHub® - -Rocket.Chat makes API calls to obtain Auth data from [GitHub](https://github.com/) for the Custom OAuth service. Check the [Rocket.Chat OAuth Provider configuration](https://docs.rocket.chat/administrator-guides/authentication/oauth/#github) for more information. - -## GitLab Inc.® - -Rocket.Chat makes API calls to obtain Auth data from [GitLab](https://about.gitlab.com/stages-devops-lifecycle/) for the Custom OAuth service. Check the [Integration with GitLab®](https://docs.rocket.chat/administrator-guides/integrations/gitlab/) for more information. - -## Google® - -Rocket.Chat makes API calls to obtain Auth data from [Google](https://developers.google.com/docs/api) for the Custom OAuth service. Check the [Rocket.Chat OAuth Provider Configuration](https://docs.rocket.chat/administrator-guides/authentication/oauth/#google) for more information. Rocket.Chat also makes API calls to Google with data like user ID, user name, and the message for [Push Notifications](https://martinschoeler.github.io/docs/administrator-guides/notifications/push-notifications/). - -## Google Cloud™ Storage - -Rocket.Chat makes API calls with paths to obtain files from [Google Cloud](https://cloud.google.com/storage/docs/access-control/iam-reference). Check the [requirements to configure Google Cloud Storage™](https://docs.rocket.chat/administrator-guides/file-upload/google-cloud-storage/) for more information. - -## Google NLP - -Rocket.Chat makes API calls to [Google for Natural Language Processing](https://cloud.google.com/natural-language/) with tbe message content to detect [sentiments](https://cloud.google.com/natural-language/docs/analyzing-sentiment). - -## Google Translate™ - -Rocket.Chat makes API calls to [Google Translate](https://cloud.google.com/translate/docs/) with data from message content and attachments descriptions. Check the [Auto Translate configuration](https://docs.rocket.chat/administrator-guides/google-cloud/auto-translate/) for more information. - -## Google Vision - -Rocket.Chat makes API calls to [Google Vision](https://cloud.google.com/vision/docs/) with image data and file paths to detect images. - -## LDAP® - -Rocket.Chat makes API calls to [LDAP](https://ldap.com/) to obtain data such as user name and password. Read [LDAP configuration in Rocket.Chat](https://docs.rocket.chat/administrator-guides/authentication/ldap/) for more information. - -## LinkedIn® - -Rocket.Chat makes API calls to obtain Auth data from [LinkedIn](https://developer.linkedin.com/docs/rest-api#) for the Custom OAuth service. Read [Rocket.Chat OAuth Provider Configuration](https://docs.rocket.chat/administrator-guides/authentication/oauth/#linkedin) for more information. - -## Meteor® - -Rocket.Chat makes API calls to obtain Auth data from [Meteor](https://docs.meteor.com/) for the Custom OAuth service. - -## Mobex® - -Rocket.Chat makes API calls to [Mobex](https://www.mobex.biz/full-features/) with the message content from the SMS service. - -## Rocket.Chat Avatars - -Rocket.Chat makes API calls to obtain avatars from URLs. Read how to [set an avatar in Rocket.Chat](https://docs.rocket.chat/developer-guides/rest-api/users/setavatar/#providing-a-url) for more information. - -## Rocket.Chat Cloud - -Rocket.Chat makes API calls with data like organization email, site name, redirects URIs, and platform version and deployment to register the workspace into [Rocket.Chat Cloud](https://docs.rocket.chat/installation/rocket-chat-cloud/). - -## Rocket.Chat Collector - -Rocket.Chat makes API calls with Cron statistics for the [Rocket.Chat Statistics Collector](https://docs.rocket.chat/developer-guides/rest-api/miscellaneous/statistics/). - -## Rocket.Chat Federation - -Rocket.Chat makes API calls with data like users, rooms, messages, and subscriptions to any other [Rocket.Chat Federation Server](https://docs.rocket.chat/administrator-guides/federation/). - -## Rocket.Chat Releases - -Rocket.Chat makes API calls with platform data to check the version and obtain [new release updates](https://github.com/RocketChat/Rocket.Chat/releases). - -## Rocket.Chat WebHooks - -Rocket.Chat makes API calls to any URL with data from messages and rooms for the [Rocket.Chat WebHooks](https://docs.rocket.chat/administrator-guides/integrations/). - -## Livechat WebHooks - -Rocket.Chat makes API calls to [Livechat WebHooks](https://docs.rocket.chat/administrator-guides/livechat/) with data like visitor, agent, messages, custom fields, and tags. - -## RD Station® - -Rocket.Chat makes API calls with data such as visitor, agent, messages, custom fields, and tags to send messages to [RD Station](https://developers.rdstation.com/en/overview). - -## Slack® - -Rocket.Chat makes API calls to [Slack](https://api.slack.com/) to [import Slack data into Rocket.Chat](https://docs.rocket.chat/administrator-guides/import/slack/). - -## Tokenpass® - -Rocket.Chat makes API calls to obtain Auth data from [Tokenpass](https://www.programmableweb.com/api/tokenly-tokenpass) for the Custom OAuth service. Rocket.Chat also sends data to obtain [Tokenpass balances](https://rocket.chat/2017/09/22/rocketchat-and-tokenly-partner/). - -## Twilio® - -Rocket.Chat makes API calls to [Twilio](https://www.twilio.com/docs/sms) with message content from the [SMS service](https://docs.rocket.chat/developer-guides/rest-api/livechat/sms-incoming/#twilio-payload). - -## Twitter® - -Rocket.Chat makes API calls to obtain Auth data from [Twitter](https://developer.twitter.com/en/docs/api-reference-index) for the [Custom OAuth service](https://docs.rocket.chat/developer-guides/rest-api/authentication/twitter/). - -## Voxtelesys® - -Rocket.Chat makes API calls to send SMS through [Voxtelesys](https://development.voxtelesys.com). - -## Webdav® - -Rocket.Chat makes API calls with [Webdav](https://docs.nextcloud.com/server/12.0/developer_manual/client_apis/WebDAV/index.html) credentials for the [File Upload service](https://docs.rocket.chat/administrator-guides/file-upload/webdav/). - -## Wordpress® - -Rocket.Chat makes API calls to obtain Auth data from [Wordpress](https://developer.wordpress.org/rest-api/) for the [Custom OAuth service](https://docs.rocket.chat/administrator-guides/authentication/wordpress/). - -## YouTube® - -Rocket.Chat makes API calls to [YouTube](https://developers.google.com/youtube/v3/live/getting-started) to obtain the user ID for the [Livestream service](https://docs.rocket.chat/administrator-guides/youtube-broadcasting/). diff --git a/legal/privacy/subprocessors.md b/legal/privacy/subprocessors.md deleted file mode 100644 index 19dd8415fe..0000000000 --- a/legal/privacy/subprocessors.md +++ /dev/null @@ -1,58 +0,0 @@ -# Subprocessors - -This page lists Rocket.Chat's current subprocessors for personal data and is updated on a regular basis. - -Last update: 23rd October,2020 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SubprocessorPurpose
-

Amazon Web Services,

-

-

OVH

-
-

underlying infrastructure of our hosted offering, marketplace and open - community server, as well as other services such as push notifications. - We use a mixed deployment. Generally speaking, after June 2020 all workspaces - run on OVH.

-

The location of from where an instance of our hosted offering is deployed - is determined by the customer during onboarding.

-

Please reach out to support if you want to know the concrete subprocessor - for your case.

-
Stripepayment processor, billing
ZOHOemail marketing, newsletter, CRM, customer support
Apple Push Notification Service, Firebasepush notification gateways
Mailchimpemail marketing
PRVoltemail marketing
Yeswareemail marketing
- diff --git a/legal/server-lookup.md b/legal/server-lookup.md deleted file mode 100644 index 153468c5f7..0000000000 --- a/legal/server-lookup.md +++ /dev/null @@ -1,8 +0,0 @@ -# Server Lookup - -Rocket.Chat is open source software and can be installed by everyone. - -To find out if a Rocket.Chat server is hosted by us or by a third party \(e.g. if you want to contact the server administrator\), use this lookup form: - -[https://rocket.chat/server-lookup](https://rocket.chat/server-lookup) - diff --git a/legal/terms-of-service.md b/legal/terms-of-service.md deleted file mode 100644 index 0354fb905e..0000000000 --- a/legal/terms-of-service.md +++ /dev/null @@ -1,148 +0,0 @@ -# Terms of Service - -_Effective date: May 4th, 2021_ - -These Customer Terms of Service \(the “Customer Terms”\) describe your rights and responsibilities pertaining to Rocket.Chat Services \(the "Services"\), such as Rocket.Chat Cloud Hosting, Support Plans, Marketplace or any other services we may provide to you, the customer. Some sections of these Customer Terms only apply to specific Services, as indicated by the headings of the respective paragraph. These Customer Terms **do not** apply to on-premises installation of Rocket.Chat. Please read the Customer Terms carefully and **note that these Customer Terms include auto-renewal provisions and may limit your rights and liabilities.** - -“Rocket.Chat,” “we,” “us,” or “our” means Rocket.Chat Technologies Corp. “Customer”, “you” or “your” means the Customer indicated below, including its users, as applicable. - -**Legal Binding** - -These Customer Terms form a part of a binding "Contract" between Customer and Rocket.Chat, and apply to any Services you order, subscribe to, activate, or use. - -"Customer" is the organization that you represent in agreeing to the Contract. If your Instance is being set up by someone who is not formally affiliated with or employed by an organization, Customer is the individual creating the Instance. When you create an Instance, invite users, or use or allow use of that Instance after being notified of a change to these Customer Terms, you acknowledge your understanding of the then-current Contract and agree to the Contract on behalf of Customer. Please make sure you have the necessary authority to enter into the Contract on behalf of Customer before proceeding, and you represent and warrant that you do. - -**Customer Data** - -When a Customer or any of its users submit content or information to the Services, such as messages or files \(“User Data”\), the Customer retains ownership of any intellectual property rights in that content. - -With regards to Services operated directly by Rocket.Chat: - -Customer hereby grants Rocket.Chat a worldwide license to use, host, store, reproduce, modify, create derivative works \(e.g. as translations, adaptations or other changes we make so that the content in question works better with the Services\), communicate, publish, perform, display and distribute User Data. Customer also represents and warrants it has the right to grant this license and has obtained any necessary consent from users and third parties regarding such User Data. The rights granted in this license are for the limited purpose of providing, operating and improving the Services, and to develop new ones. \(For a more thorough description of the limited purposes we use personal data, please refer to our Privacy Policy.\) This license does not expire even if you stop using the Services \(for example, so that Rocket.Chat can deliver a message that you sent to another user before you stopped using our Services\). If a user employs the Services to share content with others, anyone that user has shared content with \(including the general public, in certain circumstances\) may have access to the content, depending on the channels and the way the content was shared. - -Rocket.Chat may provision or deprovision access to the Services, set the version of the Service and update the Service, enable or disable third party integrations, manage permissions, retention and export settings, transfer or assign workspaces, share channels, or consolidate this workspace or channels with other workspaces or channels, and these choices and instructions may result in the access, use, disclosure, modification or deletion of certain or all User Data.You may access, import, and export all your User Data, including private channels and direct messages through your account preferences panel. You may also request that your account is deleted, together with all the messages you have previously sent and your personal information, such as names and email addresses. - -**Legal Age** - -You \(in case of a natural person\) represent that you are over the legal age. You may not sign-up, access or use the Services for any purpose if the preceding sentence is not true. Without limiting the foregoing, you must be of legal working age. - -Your Users may be above or under the legal age, as per Your determination. You are responsible to comply with applicable laws regarding the minimum age for Your Users , depending on the context you allow them to access or use the Services. - -**Duties and Unacceptable Conduct** - -You agree to abide by the following list of duties and unacceptable conduct for our Services. If we believe a violation of the policy is deliberate, repeated or presents a credible risk of harm to other users, our customers, the Services or any third parties, we may suspend or terminate your access. - -You must: - -* comply with all applicable laws and governmental regulations, including, but not limited to, all intellectual property, data, privacy, and export control laws, and regulations promulgated by any government agencies; -* upload and disseminate only Customer Data to which you own or have all required rights under law and under contractual and fiduciary relationships \(such as proprietary and confidential information learned or disclosed as part of employment relationships or under nondisclosure agreements\) and do so only consistent with applicable law; -* keep passwords and all other login information confidential; -* monitor and control all activity conducted through your account in connection with the Services; -* use the proper functions that come with your account to interact with your workspace and subscription \(e.g. renewal and cancellation of workspace\), or - in emergency case these are not available to you - you must properly identify yourself to us before we can make these changes for you. We cannot make these changes just by receiving an email alone. -* promptly notify us if you become aware of or reasonably suspect any illegal or unauthorized activity or a security breach involving your accounts, including any loss, theft, or unauthorized disclosure or use of a username, password, or account; and -* comply in all respects with all applicable terms of the third party applications that you access or subscribe to in connection with the Services. - -You may not: - -* share, transfer or otherwise provide access to an account designated for you to another person; -* use the Services to store or transmit any Customer Data that may infringe upon or misappropriate someone else's trademark, copyright, or other intellectual property, or that may be tortious or unlawful; -* upload to, or transmit from, the Services any data, file, software, or link that contains or redirects to a virus, Trojan horse, worm, or other harmful component or a technology that unlawfully accesses or downloads content or information stored within the Services or on the hardware of Rocket.Chat or any third party; -* attempt to reverse engineer, decompile, hack, disable, interfere with, modify, or disrupt the features, functionality, integrity, or performance of the Services \(including any mechanism used to restrict or control the functionality of the Services\), any third party use of the Services, or any third party data contained therein \(except to the extent such restrictions are prohibited by applicable law\); -* attempt to gain unauthorized access to the Services or related systems or networks or to defeat, avoid, bypass, remove, deactivate, or otherwise circumvent any software protection or monitoring mechanisms of the Services; -* use the Services in any manner that may harm minors or that interacts with or targets people under the age of thirteen; -* impersonate any person or entity, including, but not limited to, an employee of ours, an “Administrator”, an “Owner”, or any other User, or falsely state or otherwise misrepresent your affiliation with a person, organization or entity; -* use the Services to provide material support or resources \(or to conceal or disguise the nature, location, source, or ownership of material support or resources\) to any organization\(s\) designated by the United States government as a foreign terrorist organization pursuant to section 219 of the Immigration and Nationality Act or other laws and regulations concerning national security, defense or terrorism; -* access, search, or create accounts for the Services by any means other than our publicly supported interfaces \(for example, "scraping" or creating accounts in bulk\); -* send unsolicited communications, promotions or advertisements, or spam; -* place any advertisements within a Rocket.Chat client; -* send altered, deceptive or false source-identifying information, including "spoofing" or "phishing"; -* use contact or other user information obtained from the Services \(including email addresses\) to contact Users outside of the Services without their express permission or authority or to create or distribute mailing lists or other collections of contact or user profile information for Users for use outside of the Services; or -* authorize, permit, enable, induce or encourage any third party to do any of the above. - -**API Fair Use** Many of our services work via API calls managed under a central infrastructure of us. You may not place excessive API calls or otherwise deliberately try to overburden this API system. We may throttle your use of the APIs in case we deem it necessary to facilitate an overall acceptable service level across our infrastructure \(e.g. such as in the case of continued, excessive API usage\). We may monitor use of the APIs for compliance with these rules, and we may deny you access to the API or shut down your Integration if you try to go around or break the policies we set. If your Order Form includes a defined API limit or minimum, then the Order Form controls. - -**Supported and running versions** - -To provide you the Services in a consistent and secure manner, we regularly update our Services and only support the Rocket.Chat versions, that are within their support period as stated in our [support policy.](https://docs.rocket.chat/getting-support) Specifically for our Cloud Hosting, we automatically upgrade Rocket.Chat servers to stay within the supported version range and do not provide versions, that are beyond their End of Life term. - -**Limitation of Liability** - -If we believe that there is a violation of the Customer Terms or any of our other policies that can simply be remedied by removal of certain Customer Data or taking other action, we may directly step in and take what we determine to be appropriate action \(including disabling your account\) if we believe there is a credible risk of harm to us, the Services, Users, or any third parties, including Vendors and Third Party Apps. To the maximum extent permitted by law, Rocket.Chat offers the Services and Products “AS IS” and “AS AVAILABLE”, and Rocket.Chat hereby disclaims all warranties, whether express, implied or statutory, including but not limited to any implied warranties of title, non-infringement, merchantability or fitness for a particular purpose. You may have other statutory rights, in which case the duration of any statutory warranties will be limited to the maximum extent permitted by law. IN NO EVENT WILL WE HAVE ANY LIABILITY FOR ANY LOST PROFITS OR REVENUES OR FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, COVER OR PUNITIVE DAMAGES HOWEVER CAUSED, WHETHER IN CONTRACT, TORT OR UNDER ANY OTHER THEORY OF LIABILITY, AND WHETHER OR NOT YOU HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. OUR MAXIMUM AGGREGATE LIABILITY FOR ANY BREACH OR IN CONNECTION WITH THIS AGREEMENT OR ANY SERVICE IS ONE HUNDRED DOLLARS \($100\) IN THE AGGREGATE OR THE AMOUNT YOU PAID US DURING THE PRIOR 12 MONTHS. THE FOREGOING DISCLAIMERS WILL NOT APPLY TO THE EXTENT PROHIBITED BY APPLICABLE LAW AND DO NOT LIMIT EITHER PARTY’S RIGHT TO SEEK AND OBTAIN EQUITABLE RELIEF. - -**General Provisions** - -**Email and Rocket.Chat Messages** - -Except as otherwise set forth herein, all notices under the Customer Terms will be by email, although we may instead choose to provide notice to Customers through the Services \(e.g., a bot notification\). Notices to Rocket.Chat should be sent to contact@rocket.chat. A notice will be deemed to have been duly given \(a\) the day after it is sent, in the case of a notice sent through email; and \(b\) the same day, in the case of a notice sent through the Services. - -**TERM; TERMINATION.** - -**Term.** - -When Customer orders, activates, subscribes to, or uses any Services, such Services will be subject to an initial subscription term or period \(the “Initial Subscription Period”\) and any renewal terms or periods applicable thereto \(collectively, the “Subscription Period” or “Order Term”\); unless expressly provided otherwise, the Initial Subscription Period is 12 months from the initial order, activation, subscription, or use date and automatically renews for successive 12 month periods thereafter, unless terminated or not renewed in accordance with these Customer Terms. **If you do not want to renew, you must following our non-renewal processes and stop using the applicable Services.** - -These Customer Terms will begin on the Effective Date and will continue thereafter so long as one or more Subscription Period\(s\) remain in effect or until terminated by either party as outlined in this Section \(the "**Term**"\). - -**Termination Rights**. - -**a. For Convenience**. You may terminate these Customer Terms for your convenience at any time upon 30 days' written notice to Rocket.Chat, provided that You have paid all fees up to and including the last day of the then current applicable Subscription Period\(s\) in effect prior to termination and regardless of the date of your notice of termination or use of the Services. Your pricing is based on the Subscription Period, and early termination does not relieve you of your obligations to pay for the full Subscription Period even if you terminate or do not use the Services for the entire Subscription Period, unless expressly agreed otherwise. - -**b. For Cause**. Either party may terminate these Customer Terms or any Subscription Period immediately upon 30 days’ written notice to the other party in the event of any material breach of this Agreement \(including without limitation, any failure to pay any amounts when due hereunder, your failure to comply with restrictions under this Agreement\) by such party where such material breach is not cured during such notice period. Either party may also terminate these Customer Terms and all Subscription Periods, without notice, \(i\) upon the institution by or against the other party of insolvency, receivership or bankruptcy proceedings \(provided such proceedings are not dismissed within one hundred twenty \(120\) days of such institution\), \(ii\) upon the other party's making an assignment for the benefit of creditors, or \(iii\) upon the other party's dissolution or ceasing to do business without a successor. - -**c. Vendors and Third Party Apps:** Where Rocket.Chat relies on Vendors or Third Party Apps \(as defined below\) to provide a Service or any function or feature relating to our Services \(e.g. Apple for Apple Business Chat integrations\), Rocket.Chat reserves the right to change, suspend, limit, or discontinue your use of the Services, function, or feature at any time \(i\) if the Vendor revokes the status of Rocket.Chat as an intermediary to provide You such Service, function, or feature; or \(ii\) at the request of the Vendor, such requests being at the discretion of the Vendor, without notice or liability. - -**Refund Policy.** You are entitled to a full refund of pre-paid fees if you terminate your Initial Subscription Period within 30 days of the start of such Subscription Period. You are also entitled to a refund in the event that You terminate pursuant to a material uncured breach by Rocket.Chat. In the foregoing cases, Rocket.Chat will refund You a pro-rated portion of pre-paid Fees for Services not actually made available or received by You as of the date of such termination as your sole and exclusive remedy for such termination. Except as expressly provided otherwise, all fees and amounts are non-refundable and non-cancellable. - -**Effect of Termination or Expiration**. Unless You are entitled for a refund as described above, Termination or expiration shall not relieve You of the obligation to pay any fees or other amounts accrued or payable to Rocket.Chat including fees for the remainder of the Subscription Period\(s\) after an earlier termination. If Rocket.Chat terminates for cause, Customer will immediately pay all amounts due and payable for the remainder of the Subscription Period\(s\) without limiting Rocket.Chat’s other rights and remedies. Without prejudice to any other rights, upon termination, You must cease all use of the Services, Software, and Documentation and destroy or return \(upon request by Rocket.Chat\) all copies of the Services, Software, and Documentation. You further acknowledge and agree that You will retrieve Your User Data or copies of Your User Data from Rocket.Chat within thirty \(30\) business days of the termination or expiration of these Customer Terms. Unless in accordance with our internal policies, contractual, legal, or other obligation, You acknowledge and agree that Rocket.Chat has the right to delete Your User Data, including any and all copies thereof. Your User Data, once deleted, will not be able to be recovered. - -**Privacy Policy** - -Please review our Privacy Policy for more information on how we collect and use data relating to the use and performance of our products and services. - -**Modifications** - -As our business evolves, we may change these Customer Terms. If we make a material change to the Customer Terms, we will provide you with reasonable notice prior to the change taking effect either by emailing the email address associated with your account or by messaging you through the Services. You can review the most current version of the Customer Terms at any time by visiting this page. Any material revisions to these Customer Terms will become effective on the date set forth in our notice, and all other changes will become effective on the date we publish the change. If you use the Services after the effective date of any changes, that use will constitute your acceptance of the revised terms and conditions. - -**Waiver** - -No failure or delay by either party in exercising any right under the Customer Terms will constitute a waiver of that right. No waiver under the Customer Terms will be effective unless made in writing and signed by an authorized representative of the party being deemed to have granted the waiver. - -**Severability** - -The Customer Terms will be enforced to the fullest extent permitted under applicable law. If any provision of the Customer Terms is held by a court of competent jurisdiction to be contrary to law, the provision will be modified by the court and interpreted so as best to accomplish the objectives of the original provision to the fullest extent permitted by law, and the remaining provisions of the Customer Terms will remain in effect. - -**Assignment** - -You may not assign any of your rights or delegate your obligations under these Customer Terms, whether by operation of law or otherwise, without the prior written consent of us \(not to be unreasonably withheld\). We may assign these Customer Terms in their entirety \(including all terms and conditions incorporated herein by reference\), without your consent, to a corporate affiliate or in connection with a merger, acquisition, corporate reorganization, or sale of all or substantially all of our assets. - -**Governing Law; Venue; Waiver of Jury Trial; Fees** - -The Customer Terms, and any disputes arising out of or related hereto, will be governed exclusively by the applicable governing law of California, without regard to conflicts of laws rules or the United Nations Convention on the International Sale of Goods. In any action or proceeding to enforce rights under the Customer Terms, the prevailing party will be entitled to recover its reasonable costs and attorney’s fees. - -**Rocket.Chat Marketplace; Specific Provisions** Rocket.Chat Marketplace is an online marketplace for plugins, addons and extensions \("Apps"\) that work with Rocket.Chat´s products. The following sections govern specific provisions regarding the Marketplace in the context of these Customer Terms. - -_**App Listing**_ The listing for each App will identify the provider of the App \(“Vendor”\), which may be Rocket.Chat or a third party. Apps for which Rocket.Chat is the Vendor are "Rocket.Chat Apps,” and Apps for which the Vendor is a third party are “Third Party Apps”. - -_**Orders**_ You can place Orders on the Marketplace. Your Order will identify the Vendor, your authorized scope of use of the App and license or subscription term, as applicable. For any Third Party App, you agree that Rocket.Chat is the Vendor’s commercial agent and that you are required to make any related payments directly to Rocket.Chat, except where Third Party Apps may be enabled or paid for through a third party Vendor’s own website and this is indicated in the App listing. Once you complete your Order, Rocket.Chat will provide you with access to the applicable Apps. Apps are provided on a license or subscription basis and you do not acquire any ownership rights in the Marketplace or the Apps. You may terminate your Order of an App under these Terms, for no reason or any reason, by providing notice of termination to us no later than fourteen \(14\) days after the Order date for such App. In the event you terminate your initial Order, we will refund you the amount paid under the Order for that App. This termination and refund right applies only to your initial Order of the App and only if you exercise your termination right within the period specified above, and does not apply to Additional Services or anything else. The Marketplace may also offer free trial periods for Apps. After expiration of the trial period, if you do not place an Order for the App, the App will cease to function and you must cease using and delete your copies of the App. - -_**Usage of Apps**_ Without limiting the disclaimers, restrictions or other provisions in these Terms of Use, usage of Apps is subject to license or subscription terms, privacy policies and other applicable terms specified by the Vendor \(“Vendor Terms”\). Vendor Terms are typically included on the App’s listing page or presented through the Order process. You may not use an App if you do not agree to the relevant Vendor Terms. -Third Party Apps are subject to the third party’s Vendor Terms, not Rocket.Chat Terms. By ordering, installing or enabling any Third Party App, you are entering into the Vendor Terms directly with the applicable third party Vendor. Any support and maintenance of Third Party Apps will be provided by the applicable Vendor to the extent described in the applicable Vendor Terms. - -_**Access to Data**_ If you place an Order for Apps, you authorize Vendors to access or use certain data in the applicable Rocket.Chat Products. This may include transmitting, transferring, modifying or deleting such data, or storing such data on Vendor or third party systems. For Rocket.Chat Apps, this access and use is covered by our privacy policy. Any third party Vendor’s use of accessed data \(whether data in the Rocket.Chat Products or separately collected from you or your device\) is subject to the applicable Vendor Terms. You are solely responsible for your decision to permit any third party Vendor or Third Party App to access or use data to which you’ve granted access. It is your responsibility to carefully review the Vendor Terms, as provided by the applicable third party Vendor. - -**Notice Regarding Apple as a Third Party Vendor.** You agree to be bound by the then-current Apple Business Register Terms of Use as found on Apple’s website: [https://register.apple.com/tou/abr/latest/en](https://register.apple.com/tou/abr/latest/en) if you order, access, or use the applicable Apple services, functions, or features described therein in connection with Rocket.Chat Services. In addition, you acknowledge that these Terms are between You and Rocket.Chat only, not with Apple Inc. \(“Apple”\), and Apple is not responsible for the Services or the content thereof. Apple has no obligation to furnish any maintenance and support services with respect to the Services we provide you. To the maximum extent permitted by applicable law, Apple has no warranty obligations with respect to the Services. Apple is not responsible for addressing any claims by You or any third party relating to the Services or your possession and/or use of the Services, including: \(a\) product liability claims; \(b\) any claim that the Services fail to conform to any applicable legal or regulatory requirement; or \(c\) claims arising under consumer protection or similar legislation. Apple is not responsible for the investigation, defense, settlement and discharge of any third party claim that the Services and/or Your possession and use of the Services infringe a third party’s intellectual property rights. Apple and Apple’s subsidiaries are third party beneficiaries of these Terms, and upon Your acceptance of these Terms, Apple will have the right \(and will be deemed to have accepted the right\) to enforce these Terms against You as a third party beneficiary of these Terms. You agree to comply with any applicable third party terms when using the Services. You hereby represent and warrant that: \(i\) You are not located in a country that is subject to a U.S. Government embargo, or that has been designated by the U.S. Government as a “terrorist supporting” country; and \(ii\) You are not listed on any U.S. Government list of prohibited or restricted parties. At all times any personal information collected through use of the Services will be treated in accordance with Apple's Privacy Policy which can be viewed at: [http://www.apple.com/legal/privacy/](http://www.apple.com/legal/privacy/). - -_**Responsibilities**_ You represent and warrant that you have all necessary authority to enter into and be legally bound by these Customer Terms, Vendor Terms, to place any Orders and to authorize Vendors to access and use your data and information. - -_**Marketplace Disclaimers and Liability**_ Third party Vendors are solely responsible for their Apps and any related content or materials included in their Apps. Rocket.Chat has no liability or responsibility whatsoever for any Third Party Apps, even if Rocket.Chat has reviewed, certified, or approved the Third Party App. Any use of Third Party Apps is at your sole discretion and risk. Vendors are solely responsible for the information they provide. At any time, Rocket.Chat may remove an App from the Marketplace in accordance with applicable policies, and Vendors may also update, modify or remove their own Apps at any time. Rocket.Chat makes no guarantee that any Apps will work properly with Rocket.Chat Products as they change over time. - -**Entire Agreement** - -The Customer Terms, including any terms, subscriptions, or order forms incorporated by reference into the Customer Terms, constitute the entire agreement between you and us and supersede all prior and contemporaneous agreements, proposals or representations, written or oral, concerning its subject matter. To the extent of any conflict or inconsistency between the provisions in these Customer Terms and any pages referenced in these Customer Terms, the terms of these Customer Terms will first prevail, followed by the pages referenced in these Customer Terms \(e.g., the Privacy Policy\). - -**Contacting Rocket.Chat** - -Please also feel free to contact us if you have any questions about Rocket.Chat’s Customer Terms. You may contact us at contact@rocket.chat or at our mailing address below: - -Rocket.Chat Technologies Corp. 251 Little Falls Rd Wilmington, DE, 19808 USA - diff --git a/legal/terms.md b/legal/terms.md deleted file mode 100644 index 0354fb905e..0000000000 --- a/legal/terms.md +++ /dev/null @@ -1,148 +0,0 @@ -# Terms of Service - -_Effective date: May 4th, 2021_ - -These Customer Terms of Service \(the “Customer Terms”\) describe your rights and responsibilities pertaining to Rocket.Chat Services \(the "Services"\), such as Rocket.Chat Cloud Hosting, Support Plans, Marketplace or any other services we may provide to you, the customer. Some sections of these Customer Terms only apply to specific Services, as indicated by the headings of the respective paragraph. These Customer Terms **do not** apply to on-premises installation of Rocket.Chat. Please read the Customer Terms carefully and **note that these Customer Terms include auto-renewal provisions and may limit your rights and liabilities.** - -“Rocket.Chat,” “we,” “us,” or “our” means Rocket.Chat Technologies Corp. “Customer”, “you” or “your” means the Customer indicated below, including its users, as applicable. - -**Legal Binding** - -These Customer Terms form a part of a binding "Contract" between Customer and Rocket.Chat, and apply to any Services you order, subscribe to, activate, or use. - -"Customer" is the organization that you represent in agreeing to the Contract. If your Instance is being set up by someone who is not formally affiliated with or employed by an organization, Customer is the individual creating the Instance. When you create an Instance, invite users, or use or allow use of that Instance after being notified of a change to these Customer Terms, you acknowledge your understanding of the then-current Contract and agree to the Contract on behalf of Customer. Please make sure you have the necessary authority to enter into the Contract on behalf of Customer before proceeding, and you represent and warrant that you do. - -**Customer Data** - -When a Customer or any of its users submit content or information to the Services, such as messages or files \(“User Data”\), the Customer retains ownership of any intellectual property rights in that content. - -With regards to Services operated directly by Rocket.Chat: - -Customer hereby grants Rocket.Chat a worldwide license to use, host, store, reproduce, modify, create derivative works \(e.g. as translations, adaptations or other changes we make so that the content in question works better with the Services\), communicate, publish, perform, display and distribute User Data. Customer also represents and warrants it has the right to grant this license and has obtained any necessary consent from users and third parties regarding such User Data. The rights granted in this license are for the limited purpose of providing, operating and improving the Services, and to develop new ones. \(For a more thorough description of the limited purposes we use personal data, please refer to our Privacy Policy.\) This license does not expire even if you stop using the Services \(for example, so that Rocket.Chat can deliver a message that you sent to another user before you stopped using our Services\). If a user employs the Services to share content with others, anyone that user has shared content with \(including the general public, in certain circumstances\) may have access to the content, depending on the channels and the way the content was shared. - -Rocket.Chat may provision or deprovision access to the Services, set the version of the Service and update the Service, enable or disable third party integrations, manage permissions, retention and export settings, transfer or assign workspaces, share channels, or consolidate this workspace or channels with other workspaces or channels, and these choices and instructions may result in the access, use, disclosure, modification or deletion of certain or all User Data.You may access, import, and export all your User Data, including private channels and direct messages through your account preferences panel. You may also request that your account is deleted, together with all the messages you have previously sent and your personal information, such as names and email addresses. - -**Legal Age** - -You \(in case of a natural person\) represent that you are over the legal age. You may not sign-up, access or use the Services for any purpose if the preceding sentence is not true. Without limiting the foregoing, you must be of legal working age. - -Your Users may be above or under the legal age, as per Your determination. You are responsible to comply with applicable laws regarding the minimum age for Your Users , depending on the context you allow them to access or use the Services. - -**Duties and Unacceptable Conduct** - -You agree to abide by the following list of duties and unacceptable conduct for our Services. If we believe a violation of the policy is deliberate, repeated or presents a credible risk of harm to other users, our customers, the Services or any third parties, we may suspend or terminate your access. - -You must: - -* comply with all applicable laws and governmental regulations, including, but not limited to, all intellectual property, data, privacy, and export control laws, and regulations promulgated by any government agencies; -* upload and disseminate only Customer Data to which you own or have all required rights under law and under contractual and fiduciary relationships \(such as proprietary and confidential information learned or disclosed as part of employment relationships or under nondisclosure agreements\) and do so only consistent with applicable law; -* keep passwords and all other login information confidential; -* monitor and control all activity conducted through your account in connection with the Services; -* use the proper functions that come with your account to interact with your workspace and subscription \(e.g. renewal and cancellation of workspace\), or - in emergency case these are not available to you - you must properly identify yourself to us before we can make these changes for you. We cannot make these changes just by receiving an email alone. -* promptly notify us if you become aware of or reasonably suspect any illegal or unauthorized activity or a security breach involving your accounts, including any loss, theft, or unauthorized disclosure or use of a username, password, or account; and -* comply in all respects with all applicable terms of the third party applications that you access or subscribe to in connection with the Services. - -You may not: - -* share, transfer or otherwise provide access to an account designated for you to another person; -* use the Services to store or transmit any Customer Data that may infringe upon or misappropriate someone else's trademark, copyright, or other intellectual property, or that may be tortious or unlawful; -* upload to, or transmit from, the Services any data, file, software, or link that contains or redirects to a virus, Trojan horse, worm, or other harmful component or a technology that unlawfully accesses or downloads content or information stored within the Services or on the hardware of Rocket.Chat or any third party; -* attempt to reverse engineer, decompile, hack, disable, interfere with, modify, or disrupt the features, functionality, integrity, or performance of the Services \(including any mechanism used to restrict or control the functionality of the Services\), any third party use of the Services, or any third party data contained therein \(except to the extent such restrictions are prohibited by applicable law\); -* attempt to gain unauthorized access to the Services or related systems or networks or to defeat, avoid, bypass, remove, deactivate, or otherwise circumvent any software protection or monitoring mechanisms of the Services; -* use the Services in any manner that may harm minors or that interacts with or targets people under the age of thirteen; -* impersonate any person or entity, including, but not limited to, an employee of ours, an “Administrator”, an “Owner”, or any other User, or falsely state or otherwise misrepresent your affiliation with a person, organization or entity; -* use the Services to provide material support or resources \(or to conceal or disguise the nature, location, source, or ownership of material support or resources\) to any organization\(s\) designated by the United States government as a foreign terrorist organization pursuant to section 219 of the Immigration and Nationality Act or other laws and regulations concerning national security, defense or terrorism; -* access, search, or create accounts for the Services by any means other than our publicly supported interfaces \(for example, "scraping" or creating accounts in bulk\); -* send unsolicited communications, promotions or advertisements, or spam; -* place any advertisements within a Rocket.Chat client; -* send altered, deceptive or false source-identifying information, including "spoofing" or "phishing"; -* use contact or other user information obtained from the Services \(including email addresses\) to contact Users outside of the Services without their express permission or authority or to create or distribute mailing lists or other collections of contact or user profile information for Users for use outside of the Services; or -* authorize, permit, enable, induce or encourage any third party to do any of the above. - -**API Fair Use** Many of our services work via API calls managed under a central infrastructure of us. You may not place excessive API calls or otherwise deliberately try to overburden this API system. We may throttle your use of the APIs in case we deem it necessary to facilitate an overall acceptable service level across our infrastructure \(e.g. such as in the case of continued, excessive API usage\). We may monitor use of the APIs for compliance with these rules, and we may deny you access to the API or shut down your Integration if you try to go around or break the policies we set. If your Order Form includes a defined API limit or minimum, then the Order Form controls. - -**Supported and running versions** - -To provide you the Services in a consistent and secure manner, we regularly update our Services and only support the Rocket.Chat versions, that are within their support period as stated in our [support policy.](https://docs.rocket.chat/getting-support) Specifically for our Cloud Hosting, we automatically upgrade Rocket.Chat servers to stay within the supported version range and do not provide versions, that are beyond their End of Life term. - -**Limitation of Liability** - -If we believe that there is a violation of the Customer Terms or any of our other policies that can simply be remedied by removal of certain Customer Data or taking other action, we may directly step in and take what we determine to be appropriate action \(including disabling your account\) if we believe there is a credible risk of harm to us, the Services, Users, or any third parties, including Vendors and Third Party Apps. To the maximum extent permitted by law, Rocket.Chat offers the Services and Products “AS IS” and “AS AVAILABLE”, and Rocket.Chat hereby disclaims all warranties, whether express, implied or statutory, including but not limited to any implied warranties of title, non-infringement, merchantability or fitness for a particular purpose. You may have other statutory rights, in which case the duration of any statutory warranties will be limited to the maximum extent permitted by law. IN NO EVENT WILL WE HAVE ANY LIABILITY FOR ANY LOST PROFITS OR REVENUES OR FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, COVER OR PUNITIVE DAMAGES HOWEVER CAUSED, WHETHER IN CONTRACT, TORT OR UNDER ANY OTHER THEORY OF LIABILITY, AND WHETHER OR NOT YOU HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. OUR MAXIMUM AGGREGATE LIABILITY FOR ANY BREACH OR IN CONNECTION WITH THIS AGREEMENT OR ANY SERVICE IS ONE HUNDRED DOLLARS \($100\) IN THE AGGREGATE OR THE AMOUNT YOU PAID US DURING THE PRIOR 12 MONTHS. THE FOREGOING DISCLAIMERS WILL NOT APPLY TO THE EXTENT PROHIBITED BY APPLICABLE LAW AND DO NOT LIMIT EITHER PARTY’S RIGHT TO SEEK AND OBTAIN EQUITABLE RELIEF. - -**General Provisions** - -**Email and Rocket.Chat Messages** - -Except as otherwise set forth herein, all notices under the Customer Terms will be by email, although we may instead choose to provide notice to Customers through the Services \(e.g., a bot notification\). Notices to Rocket.Chat should be sent to contact@rocket.chat. A notice will be deemed to have been duly given \(a\) the day after it is sent, in the case of a notice sent through email; and \(b\) the same day, in the case of a notice sent through the Services. - -**TERM; TERMINATION.** - -**Term.** - -When Customer orders, activates, subscribes to, or uses any Services, such Services will be subject to an initial subscription term or period \(the “Initial Subscription Period”\) and any renewal terms or periods applicable thereto \(collectively, the “Subscription Period” or “Order Term”\); unless expressly provided otherwise, the Initial Subscription Period is 12 months from the initial order, activation, subscription, or use date and automatically renews for successive 12 month periods thereafter, unless terminated or not renewed in accordance with these Customer Terms. **If you do not want to renew, you must following our non-renewal processes and stop using the applicable Services.** - -These Customer Terms will begin on the Effective Date and will continue thereafter so long as one or more Subscription Period\(s\) remain in effect or until terminated by either party as outlined in this Section \(the "**Term**"\). - -**Termination Rights**. - -**a. For Convenience**. You may terminate these Customer Terms for your convenience at any time upon 30 days' written notice to Rocket.Chat, provided that You have paid all fees up to and including the last day of the then current applicable Subscription Period\(s\) in effect prior to termination and regardless of the date of your notice of termination or use of the Services. Your pricing is based on the Subscription Period, and early termination does not relieve you of your obligations to pay for the full Subscription Period even if you terminate or do not use the Services for the entire Subscription Period, unless expressly agreed otherwise. - -**b. For Cause**. Either party may terminate these Customer Terms or any Subscription Period immediately upon 30 days’ written notice to the other party in the event of any material breach of this Agreement \(including without limitation, any failure to pay any amounts when due hereunder, your failure to comply with restrictions under this Agreement\) by such party where such material breach is not cured during such notice period. Either party may also terminate these Customer Terms and all Subscription Periods, without notice, \(i\) upon the institution by or against the other party of insolvency, receivership or bankruptcy proceedings \(provided such proceedings are not dismissed within one hundred twenty \(120\) days of such institution\), \(ii\) upon the other party's making an assignment for the benefit of creditors, or \(iii\) upon the other party's dissolution or ceasing to do business without a successor. - -**c. Vendors and Third Party Apps:** Where Rocket.Chat relies on Vendors or Third Party Apps \(as defined below\) to provide a Service or any function or feature relating to our Services \(e.g. Apple for Apple Business Chat integrations\), Rocket.Chat reserves the right to change, suspend, limit, or discontinue your use of the Services, function, or feature at any time \(i\) if the Vendor revokes the status of Rocket.Chat as an intermediary to provide You such Service, function, or feature; or \(ii\) at the request of the Vendor, such requests being at the discretion of the Vendor, without notice or liability. - -**Refund Policy.** You are entitled to a full refund of pre-paid fees if you terminate your Initial Subscription Period within 30 days of the start of such Subscription Period. You are also entitled to a refund in the event that You terminate pursuant to a material uncured breach by Rocket.Chat. In the foregoing cases, Rocket.Chat will refund You a pro-rated portion of pre-paid Fees for Services not actually made available or received by You as of the date of such termination as your sole and exclusive remedy for such termination. Except as expressly provided otherwise, all fees and amounts are non-refundable and non-cancellable. - -**Effect of Termination or Expiration**. Unless You are entitled for a refund as described above, Termination or expiration shall not relieve You of the obligation to pay any fees or other amounts accrued or payable to Rocket.Chat including fees for the remainder of the Subscription Period\(s\) after an earlier termination. If Rocket.Chat terminates for cause, Customer will immediately pay all amounts due and payable for the remainder of the Subscription Period\(s\) without limiting Rocket.Chat’s other rights and remedies. Without prejudice to any other rights, upon termination, You must cease all use of the Services, Software, and Documentation and destroy or return \(upon request by Rocket.Chat\) all copies of the Services, Software, and Documentation. You further acknowledge and agree that You will retrieve Your User Data or copies of Your User Data from Rocket.Chat within thirty \(30\) business days of the termination or expiration of these Customer Terms. Unless in accordance with our internal policies, contractual, legal, or other obligation, You acknowledge and agree that Rocket.Chat has the right to delete Your User Data, including any and all copies thereof. Your User Data, once deleted, will not be able to be recovered. - -**Privacy Policy** - -Please review our Privacy Policy for more information on how we collect and use data relating to the use and performance of our products and services. - -**Modifications** - -As our business evolves, we may change these Customer Terms. If we make a material change to the Customer Terms, we will provide you with reasonable notice prior to the change taking effect either by emailing the email address associated with your account or by messaging you through the Services. You can review the most current version of the Customer Terms at any time by visiting this page. Any material revisions to these Customer Terms will become effective on the date set forth in our notice, and all other changes will become effective on the date we publish the change. If you use the Services after the effective date of any changes, that use will constitute your acceptance of the revised terms and conditions. - -**Waiver** - -No failure or delay by either party in exercising any right under the Customer Terms will constitute a waiver of that right. No waiver under the Customer Terms will be effective unless made in writing and signed by an authorized representative of the party being deemed to have granted the waiver. - -**Severability** - -The Customer Terms will be enforced to the fullest extent permitted under applicable law. If any provision of the Customer Terms is held by a court of competent jurisdiction to be contrary to law, the provision will be modified by the court and interpreted so as best to accomplish the objectives of the original provision to the fullest extent permitted by law, and the remaining provisions of the Customer Terms will remain in effect. - -**Assignment** - -You may not assign any of your rights or delegate your obligations under these Customer Terms, whether by operation of law or otherwise, without the prior written consent of us \(not to be unreasonably withheld\). We may assign these Customer Terms in their entirety \(including all terms and conditions incorporated herein by reference\), without your consent, to a corporate affiliate or in connection with a merger, acquisition, corporate reorganization, or sale of all or substantially all of our assets. - -**Governing Law; Venue; Waiver of Jury Trial; Fees** - -The Customer Terms, and any disputes arising out of or related hereto, will be governed exclusively by the applicable governing law of California, without regard to conflicts of laws rules or the United Nations Convention on the International Sale of Goods. In any action or proceeding to enforce rights under the Customer Terms, the prevailing party will be entitled to recover its reasonable costs and attorney’s fees. - -**Rocket.Chat Marketplace; Specific Provisions** Rocket.Chat Marketplace is an online marketplace for plugins, addons and extensions \("Apps"\) that work with Rocket.Chat´s products. The following sections govern specific provisions regarding the Marketplace in the context of these Customer Terms. - -_**App Listing**_ The listing for each App will identify the provider of the App \(“Vendor”\), which may be Rocket.Chat or a third party. Apps for which Rocket.Chat is the Vendor are "Rocket.Chat Apps,” and Apps for which the Vendor is a third party are “Third Party Apps”. - -_**Orders**_ You can place Orders on the Marketplace. Your Order will identify the Vendor, your authorized scope of use of the App and license or subscription term, as applicable. For any Third Party App, you agree that Rocket.Chat is the Vendor’s commercial agent and that you are required to make any related payments directly to Rocket.Chat, except where Third Party Apps may be enabled or paid for through a third party Vendor’s own website and this is indicated in the App listing. Once you complete your Order, Rocket.Chat will provide you with access to the applicable Apps. Apps are provided on a license or subscription basis and you do not acquire any ownership rights in the Marketplace or the Apps. You may terminate your Order of an App under these Terms, for no reason or any reason, by providing notice of termination to us no later than fourteen \(14\) days after the Order date for such App. In the event you terminate your initial Order, we will refund you the amount paid under the Order for that App. This termination and refund right applies only to your initial Order of the App and only if you exercise your termination right within the period specified above, and does not apply to Additional Services or anything else. The Marketplace may also offer free trial periods for Apps. After expiration of the trial period, if you do not place an Order for the App, the App will cease to function and you must cease using and delete your copies of the App. - -_**Usage of Apps**_ Without limiting the disclaimers, restrictions or other provisions in these Terms of Use, usage of Apps is subject to license or subscription terms, privacy policies and other applicable terms specified by the Vendor \(“Vendor Terms”\). Vendor Terms are typically included on the App’s listing page or presented through the Order process. You may not use an App if you do not agree to the relevant Vendor Terms. -Third Party Apps are subject to the third party’s Vendor Terms, not Rocket.Chat Terms. By ordering, installing or enabling any Third Party App, you are entering into the Vendor Terms directly with the applicable third party Vendor. Any support and maintenance of Third Party Apps will be provided by the applicable Vendor to the extent described in the applicable Vendor Terms. - -_**Access to Data**_ If you place an Order for Apps, you authorize Vendors to access or use certain data in the applicable Rocket.Chat Products. This may include transmitting, transferring, modifying or deleting such data, or storing such data on Vendor or third party systems. For Rocket.Chat Apps, this access and use is covered by our privacy policy. Any third party Vendor’s use of accessed data \(whether data in the Rocket.Chat Products or separately collected from you or your device\) is subject to the applicable Vendor Terms. You are solely responsible for your decision to permit any third party Vendor or Third Party App to access or use data to which you’ve granted access. It is your responsibility to carefully review the Vendor Terms, as provided by the applicable third party Vendor. - -**Notice Regarding Apple as a Third Party Vendor.** You agree to be bound by the then-current Apple Business Register Terms of Use as found on Apple’s website: [https://register.apple.com/tou/abr/latest/en](https://register.apple.com/tou/abr/latest/en) if you order, access, or use the applicable Apple services, functions, or features described therein in connection with Rocket.Chat Services. In addition, you acknowledge that these Terms are between You and Rocket.Chat only, not with Apple Inc. \(“Apple”\), and Apple is not responsible for the Services or the content thereof. Apple has no obligation to furnish any maintenance and support services with respect to the Services we provide you. To the maximum extent permitted by applicable law, Apple has no warranty obligations with respect to the Services. Apple is not responsible for addressing any claims by You or any third party relating to the Services or your possession and/or use of the Services, including: \(a\) product liability claims; \(b\) any claim that the Services fail to conform to any applicable legal or regulatory requirement; or \(c\) claims arising under consumer protection or similar legislation. Apple is not responsible for the investigation, defense, settlement and discharge of any third party claim that the Services and/or Your possession and use of the Services infringe a third party’s intellectual property rights. Apple and Apple’s subsidiaries are third party beneficiaries of these Terms, and upon Your acceptance of these Terms, Apple will have the right \(and will be deemed to have accepted the right\) to enforce these Terms against You as a third party beneficiary of these Terms. You agree to comply with any applicable third party terms when using the Services. You hereby represent and warrant that: \(i\) You are not located in a country that is subject to a U.S. Government embargo, or that has been designated by the U.S. Government as a “terrorist supporting” country; and \(ii\) You are not listed on any U.S. Government list of prohibited or restricted parties. At all times any personal information collected through use of the Services will be treated in accordance with Apple's Privacy Policy which can be viewed at: [http://www.apple.com/legal/privacy/](http://www.apple.com/legal/privacy/). - -_**Responsibilities**_ You represent and warrant that you have all necessary authority to enter into and be legally bound by these Customer Terms, Vendor Terms, to place any Orders and to authorize Vendors to access and use your data and information. - -_**Marketplace Disclaimers and Liability**_ Third party Vendors are solely responsible for their Apps and any related content or materials included in their Apps. Rocket.Chat has no liability or responsibility whatsoever for any Third Party Apps, even if Rocket.Chat has reviewed, certified, or approved the Third Party App. Any use of Third Party Apps is at your sole discretion and risk. Vendors are solely responsible for the information they provide. At any time, Rocket.Chat may remove an App from the Marketplace in accordance with applicable policies, and Vendors may also update, modify or remove their own Apps at any time. Rocket.Chat makes no guarantee that any Apps will work properly with Rocket.Chat Products as they change over time. - -**Entire Agreement** - -The Customer Terms, including any terms, subscriptions, or order forms incorporated by reference into the Customer Terms, constitute the entire agreement between you and us and supersede all prior and contemporaneous agreements, proposals or representations, written or oral, concerning its subject matter. To the extent of any conflict or inconsistency between the provisions in these Customer Terms and any pages referenced in these Customer Terms, the terms of these Customer Terms will first prevail, followed by the pages referenced in these Customer Terms \(e.g., the Privacy Policy\). - -**Contacting Rocket.Chat** - -Please also feel free to contact us if you have any questions about Rocket.Chat’s Customer Terms. You may contact us at contact@rocket.chat or at our mailing address below: - -Rocket.Chat Technologies Corp. 251 Little Falls Rd Wilmington, DE, 19808 USA - diff --git a/quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/README.md b/quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/README.md new file mode 100644 index 0000000000..9fc09d2564 --- /dev/null +++ b/quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/README.md @@ -0,0 +1,69 @@ +# Docker & Docker Compose + +Deploying Rocket.Chat with Docker and Docker Compose is as easy as it can get. + +### Installing Docker and Docker Compose + +* If you don't have it already, make sure you have [Docker](https://docs.docker.com/install) and [Docker-compose](https://docs.docker.com/compose/install/) (v2 is required) installed and operational. To quickly do that you can use Docker's official helper script + +```bash +curl -L https://get.docker.com | sh +``` + +* Add the current user to the docker group and reboot in order to run docker without using `sudo` by executing: + +```bash +sudo usermod -aG docker $USER +sudo reboot +``` + +### Fetching Compose file + +* Navigate to any directory of your choice and create a `docker-compose.yml` based on [our example](https://github.com/RocketChat/Docker.Official.Image/blob/master/compose.yml). OR you can download it directly by executing the following command on your terminal. + +```bash +curl -L https://raw.githubusercontent.com/RocketChat/Docker.Official.Image/master/compose.yml -O +``` + +#### **Editing Variables:** + +If you are using MongoDB Atlas as the database provider, edit the value of the `MONGO_URL` variable in your compose file to be your connection string in this format + +`MONGO_URL=mongodb://:@host1:27017,host2:27017,host3:27017/?replicaSet=&ssl=true&authSource=admin` + +Environment variables are set using a `.env` file. See the example [here](https://github.com/RocketChat/Docker.Official.Image/blob/master/env.example). If you cloned the repo initially, you can just rename the example file by + +```bash +cp env.example .env +``` + +* Set the `RELEASE` variable in the `.env`to your desired Rocket.Chat version. See [releases here](https://github.com/RocketChat/Rocket.Chat/releases).\ + Keeping the default `latest` is **not recommended** (More at [Docker Images Available](../../../../deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/available-images.md) ) +* Edit `ROOT_URL` from the default `http://localhost:3000` to match your domain name or IP address as you wish +* If you have a registration token to register the workspace automatically you can provide it with: + + ``` + REG_TOKEN={your token here} docker-compose up -d + ``` +* Next, start up the container by executing: + +```shell +docker compose up -d +``` + +This is going to: + +1. Start a MongoDB service named `mongodb`. +2. Start a service `rocketchat`, that will also wait for `mongodb` to be ready. + +Mongo supports 24 x 7 operations and live backup. You should not need to restart it too frequently. See [MongoDB documentation](https://www.mongodb.com/docs/manual/) for proper operation and management of a Mongo server. + +Optionally, if you want to manage your messages and configuration information, edit the file again to uncomment the volume mounts. Make sure you have a `data` subdirectory to mount and store the data. + +### Updating Rocket.Chat Docker Image + +To update the `rocketchat` docker image to the latest version, update the `RELEASE` value in your `.env` file, then simply run `docker compose up -d`. Your data should not be affected by this, since it's located in the `mongo` image. + +{% content-ref url="../../../../deploy/updating-rocket.chat/" %} +[updating-rocket.chat](../../../../deploy/updating-rocket.chat/) +{% endcontent-ref %} diff --git a/resources/frequently-asked-questions/apps-faqs.md b/resources/frequently-asked-questions/apps-faqs.md new file mode 100644 index 0000000000..6a8538d9f4 --- /dev/null +++ b/resources/frequently-asked-questions/apps-faqs.md @@ -0,0 +1,47 @@ +# Apps FAQs + +
+ +What should I do to extend my workspace’s functionality? Submit a pull request?Use integrations? Build a Rocket.Chat App? + +Each of those options has its strengths and weaknesses. + +**Changing the source** code is the most powerful way of extending Rocket.Chat, but not the simplest - you need to learn the code base, understand the code pattern and rules, submit a PR, and follow up on any changes requested to get it merged. + +[Integrations](../../use-rocket.chat/workspace-administration/integrations/), on the other hand, allow you to write simple scripts that will be executed either when a message is sent or received in a channel. They’re quick to learn and write, but their scope is very limited. + +[Apps](../../extend-rocket.chat-capabilities/rocket.chat-marketplace) are the middle ground. They are much more powerful than integrations, allowing you to interact with the UI and execute custom routines on several triggers. They’re not as complex as learning the whole code base and can be distributed to our whole community via the Marketplace. + +
+ +
+ +Do I need to host my app somewhere to make it available to Rocket.Chat? + +Not at all! [Rocket.Chat](http://rocket.chat/) Apps are packaged and deployed to a workspace, and the system will take care of hooking the App up. Apps can be installed manually or via the Marketplace. + +
+ +
+ +Can I build an app and use it even if it’s not published in the Marketplace? + +Absolutely! It’s recommended you use our [Apps Engine CLI ](https://developer.rocket.chat/apps-engine/getting-started/rocket.chat-app-engine-cli)tool to develop your apps, and it makes it super easy to deploy your apps to your own [Rocket.Chat](http://rocket.chat/) workspace. + +
+ +
+ +Does Rocket.Chat have a plugin framework? + +We don't have a plugin framework. + +
+ +
+ +What language should I use to write Apps? + +Rocket.Chat uses typescript only. + +
diff --git a/resources/get-support/README.md b/resources/get-support/README.md new file mode 100644 index 0000000000..4292386696 --- /dev/null +++ b/resources/get-support/README.md @@ -0,0 +1,19 @@ +# Get Support + +If you are using a Rocket.Chat**'**s Enterprise Edition deployment, then you can contact the Rocket.Chat's Support Team with your questions. + +{% content-ref url="enterprise-support/" %} +[enterprise-support](enterprise-support/) +{% endcontent-ref %} + +If you are using our Community Edition deployment, you can always rely on our community developers or our documentation. + +{% content-ref url="community-resources.md" %} +[community-resources.md](community-resources.md) +{% endcontent-ref %} + +**Further Information:** + +{% content-ref url="legacy-support.md" %} +[legacy-support.md](legacy-support.md) +{% endcontent-ref %} diff --git a/resources/get-support/community-resources.md b/resources/get-support/community-resources.md new file mode 100644 index 0000000000..c68a8de3a0 --- /dev/null +++ b/resources/get-support/community-resources.md @@ -0,0 +1,195 @@ +# Community Resources + +We have a great community that likes to give back. + +**Some great places to ask your questions:** + +* [Rocket.Chat forums](https://forums.rocket.chat) +* Stack Overflow [Rocket.Chat Tag](https://stackoverflow.com/questions/tagged/rocket.chat) +* [Server Fault](https://serverfault.com/search?q=Rocket.Chat) + +Our community also often hangs out on our [community server](https://open.rocket.chat). + +### Some of the channels to get help: + +* [#support](https://open.rocket.chat/channel/support) channel for help with general Rocket.Chat +* [#ubuntu-snap](https://open.rocket.chat/channel/ubuntu-snap) channel for help with snap installs +* [#desktop](https://open.rocket.chat/channel/desktop) channel for help with the desktop client +* [#bots](https://open.rocket.chat/channel/bots) channel for help with chatbot scripting +* [#dev](https://open.rocket.chat/channel/dev) channel for developers needing help developing new features + +While the de facto language amongst the Rocket.Chat community is English it may be easier for some to discuss their issues in their native language. Have a look at the following channels to see whether there is a user group for your language: + +* [#ug\_german](https://open.rocket.chat/channel/ug\_german) German Rocket.Chat User Group + +Remember to have a little patience. Support is provided by other members of the community like you in their free time. + +## Reporting Bugs + +If you think you have found a bug. Please see [Reporting Issues](../../contribute-to-rocket.chat/how-can-i-help/reporting-issues.md) + +If you are facing any issue with Rocket.Chat, please ensure you follow the following steps before asking for support. It will save you a lot of time and hassle. + +First, you must ALWAYS test on the latest version of Rocket.Chat - you can also try [https://open.rocket.chat](https://open.rocket.chat), which always runs development versions. A large number of issues are fixed with an update. + +You will need some basic information to resolve your issue. + +If you haven't got this information at hand, please get it first. + +At a minimum, you will need this: + +* Server Setup Information: +* Server hardware: VPS/hypervisor/bare metal + * Version of Rocket.Chat Server: + * Operating System: Ubuntu/Redhat etc + * Deployment Method: snap/docker/tar/etc + * Number of Running Instances: + * DB Replicaset Oplog: + * NodeJS Version: + * MongoDB Version: +* Client information: + * Client type: Electron app/React-Native app/Browser and version +* A list of the steps requires to replicate the issue. + + * If we can't replicate it we can't debug it. + + *** + +**(i) Server Setup Information** + +* Server hardware: VPS/hypervisor/bare metal +* Version of Rocket.Chat Server: [4.6.4](https://github.com/RocketChat/Rocket.Chat/releases/tag/4.6.4) +* Operating System: Ubuntu/Redhat etc +* Deployment Method: snap/docker/tar/etc +* Number of Running Instances: +* DB Replicaset Oplog: +* NodeJS Version: 14.18.3 +* MongoDB Version: 3.6, 4.0, 4.2, 4.4, 5.0 + +**(ii) Client Information** + +* Client type: Electron app/React-Native app/Browser and version + +### **Search Bug Reports** + +Have you looked through the bug reports? At least 2 different searches? Opened AND Closed bugs? + +A lot of answers can be found there. Please do check the various repos - Rocket.Chat itself, the mobile apps, electron etc. + +[Rocket.Chat server](https://github.com/RocketChat/Rocket.Chat) + +[Rocket.Chat server feature requests](https://github.com/RocketChat/feature-requests) + +[React Native Mobile Client](https://github.com/RocketChat/Rocket.Chat.ReactNative) + +[Electron desktop application](https://github.com/RocketChat/Rocket.Chat.Electron) + +[Rocket.Chat documentation](https://github.com/RocketChat/docs) + +When searching change the filter box to both open and closed issues like this: + +`is:issue is open` + +to + +`is:issue my search word` + +e.g. + +`is: issue theme` + +Try some variations - you won't hit the sweet spot the first time usually. The more often you do this the better you will get at learning what to search for and how. + +### Ask on the Forums + +**Still stuck?** + +**Please don't open an Issue yet.** + +The next step is to ask your **well-documented** question in the [forums](https://forums.rocket.chat) or [Rocket.Chat](https://open.rocket.chat/channel/support) + +### How to report a bug + +It is impossible to diagnose something when you just say 'it's broken'. The helpers are not mind readers. They cannot see your screen or your set-up. They have not watched you set this up, and the mistakes you made along the way. They are effectively blind. So you have got to describe things clearly and concisely. + +Your problem may appear complex but it is often the basics that catch you out. It is extremely common for people to miss steps in their setup. It is hard to tell at first if a problem is simple or complex so please be patient if you get asked 'the stupid questions'. We are just trying to get a baseline and making sure you have done the basics and trying to understand how you got to this position. Remember, if you phoned the garage about your car and said 'it runs funny sometimes' what would they ask you? Make, model, age... etc. + +This is no different.😊 + +Don't hide things away because you are embarrassed. They are most likely going to find out, so you might as well be honest. We have **ALL** made mistakes. + +Tell us about the problem you were originally trying to solve, not the problem that you are experiencing right now. Frequently the one you are experiencing now is the result of not understanding or being able to fix the original issue. + +[How to Report Bugs Effectively](https://www.chiark.greenend.org.uk/\~sgtatham/bugs.html) is a great read on the subject. 😉 + +### Bug template + +Use this as a template to ask your question. Get all the right information. It will help if you then have to submit a real Issue. + +[Complete a bug template](https://github.com/RocketChat/Rocket.Chat/issues/new?template=bug\_report.md) + +Server Set-up Information: + +* Version of Rocket.Chat Server: +* Operating System: +* Deployment Method: +* Number of Running Instances: +* DB Replicaset Oplog: +* NodeJS Version: +* MongoDB Version: + +Some background will help, and will avoid XY issues. Is it a fresh install? Is it an upgraded install? Has it always been broken? When it did the issue start? Did you make any changes that could have caused it? + +Make sure you post some BRIEF log snippets or use [https://pastebin.com/](https://pastebin.com) + +Don't block up the channel with ridiculously long messages. + +If your problem relates to a connection to say a database, or LDAP, that might be on another server then check the logs for those as well. + +Here is a great example of a good bug report: + +[Good bug reporting example](https://github.com/RocketChat/Rocket.Chat/issues/13069) + +Last, be patient. Answer the questions you are asked. They may appear odd, but they are probably for a good reason. Debugging is a logical process and you need to help establish the _facts_ first. + +Remember, **you** are the one with the problem. They can just go back to work or their wife and kids and ignore you. + +## **How to Ask for Help** + +If you think your issue is urgent, then you have two choices: + +### ****[**Enterprise Edition**](https://rocket.chat/enterprise)**** + +Switch to Rocket.Chat's Enterprise Edition - [https://rocket.chat/enterprise](https://rocket.chat/enterprise) + +### **Seek free help** + +Patiently wait for a volunteer to consider helping you. + +If you opt for community's help instead of paid support, please notice that: + +* Most people in the chat are volunteers who will try and help for free +* Volunteers do this in their spare time and are not getting paid for this. Please respect them. +* Just because it is urgent for **you** does mean that it is urgent for **them** +* Please answer their questions patiently and help them try and understand your problem +* Being rude to them will not help you at all +* Please note that posting the same question in several channels will not help you +* Please do **not** DM anyone unless you know them, or they DM you first +* Please do **not** randomly use _@ people_ or _@all_ hoping to get attention +* Abuse of these things will **not** get any help but can get you muted, blocked, or banned. +* Don't open a bug yet. When you ask in the channels or forums then devs or other community helpers will tell you if you really need to open an issue. Frequently if there really is a problem you won't be the first one to experience it, so always check github carefully for duplicates. Use lots of different search terms and make sure you check closed Issues as well (see below). +* Do not ask the same question in multiple channels. Use the channel (from mentioned) that you think is most relevant to your issues. [Support](https://open.rocket.chat/channel/support), [React-Native](https://open.rocket.chat/channel/react-native), [Ubuntu Snap](https://open.roocket.chat/channel/ubuntu-snap),[Raspberry Pi](https://open.rocket.chat/channel/raspberrypi), [Omnichannel](https://open.rocket.chat/channel/omnichannel), [Desktop](https://open.rocket.chat/channel/desktop), [Federation](https://open.rocket.chat/channel/federation) + +## **Is it a feature request?** + +If Rocket.Chat works but doesn't do something the way you want it to then this is a feature request **NOT** a bug. You can open a request in [Feature Requests](https://github.com/RocketChat/feature-requests). + +### **Go through the documentation** + +Please go through the relevant documentation at least twice. A lot of the answers can be found there. It is easy to miss the obvious because you _think_ you know the answer rather than reading to actually understand. 😃 + +### **Open an Issue** + +Got this far with no solution? If you haven't already been told to do so then open an Issue with all the right information in the right repo. + +Please use the templates provided. Add all the relevant information. And please stick to facts, not opinions, assumptions, or guesses. diff --git a/resources/get-support/enterprise-support/README.md b/resources/get-support/enterprise-support/README.md new file mode 100644 index 0000000000..7c96db1863 --- /dev/null +++ b/resources/get-support/enterprise-support/README.md @@ -0,0 +1,182 @@ +--- +description: Requirements for official support from the Rocket.Chat team +--- + +# Enterprise Support + +## Supported Environment + +In order to obtain official support from our team, we have a minimum set of requirements. These requirements are necessary for us to access the essential system information, provide an SLA, answer questions, or provide a solution for the problem. + +Only installations matching these minimum requirements can be covered by our SLAs and our paid Support Policy. Some requirements may vary depending on the installation size as described in the following sections. + +We require the installation to run the Docker image provided by the Rocket.Chat team, this makes it possible to isolate external factors. It ensures that the support request refers to our application and not to the following factors. + +1. Problems during the compilation process +2. Problems during the installation process +3. Missing or outdated dependencies +4. Installation of non-official versions + +This ensures we can provide quick fixes and a more efficient way to reproduce problems leading to the most efficient support flow possible. + +{% content-ref url="../../../deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/" %} +[docker-containers](../../../deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/rapid-deployment-methods/docker-and-docker-compose/docker-containers/) +{% endcontent-ref %} + +## Rocket.Chat versions + +Rocket.Chat provides support for, at least, 3 months for each release. Rocket.Chat provides support for 6 months to the latest releases of each major version, e.g. 1.3 is the latest release of major version 1.x before major version 2.0. Rocket.Chat may provide a longer period of support depending on the necessity, check the table below to verify the final support date of each release version. + +By support, we mean that Rocket.Chat will provide only security fixes and answer support tickets related to configuration and usage for the below-mentioned versions. Bugs not related to security issues will be fixed only in new versions. + +{% hint style="info" %} +In case of security-relevant bugs, we might decide to backport patches to older releases on a case-by-case basis. Please understand though, that those will be rare exceptions. If you want to play it safe, upgrade to the latest stable. +{% endhint %} + +| Rocket.Chat Release | Latest Version | Released At | End of Life | +| ------------------- | ----------------------------------------------------------------------- | -----------: | -----------: | +| 6.0 | 6.0.0 | Mar 2023 | Jun 2023 | +| **5.4 (LTS)** | **5.4.4** | **Mar 2023** | **Jun 2023** | +| 5.3 | 5.3.5 | Nov 2022 | Feb 2023 | +| 5.2 | 5.2.1 | Oct 2022 | Jan 2023 | +| 5.1 | 5.1.4 | Sep 2022 | Dec 2022 | +| 5.0 | 5.0.7 | July 2022 | Oct 2022 | +| **4.8 (LTS)** | **4.8.1** | **May 2022** | **Nov 2022** | +| 4.7 | [4.7.4](https://github.com/RocketChat/Rocket.Chat/releases/tag/4.7.4) | Apr 2022 | July 2022 | +| 4.6 | [4.6.3](https://github.com/RocketChat/Rocket.Chat/releases/tag/4.6.3) | Mar 2022 | Jun 2022 | +| 4.5 | [4.5.6](https://github.com/RocketChat/Rocket.Chat/releases/tag/4.5.6) | Feb 2022 | May 2022 | +| 4.4 | [4.4.5](https://github.com/RocketChat/Rocket.Chat/releases/tag/4.4.5) | Jan 2022 | Apr 2022 | +| 4.3 | [4.3.3](https://github.com/RocketChat/Rocket.Chat/releases/tag/4.3.3) | Dec 2021 | Mar 2022 | +| 4.2 | [4.2.4](https://github.com/RocketChat/Rocket.Chat/releases/tag/4.2.4) | Nov 2021 | Mar 2022 | +| 4.1 | [4.1.4](https://github.com/RocketChat/Rocket.Chat/releases/tag/4.1.4) | Oct 2021 | Jan 2022 | +| 4.0 | [4.0.6](https://github.com/RocketChat/Rocket.Chat/releases/tag/4.0.6) | Sep 2021 | Dec 2021 | +| **3.18 (LTS)** | [3.18.7](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.18.7) | **Aug 2021** | **Mar 2022** | +| 3.17 | [3.17.3](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.17.3) | Jul 2021 | Oct 2021 | +| 3.16 | [3.16.5](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.16.5) | Jun 2021 | Sep 2021 | +| 3.15 | [3.15.4](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.15.4) | May 2021 | Aug 2021 | +| 3.14 | [3.14.6](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.14.6) | Apr 2021 | Jul 2021 | +| 3.13 | [3.13.5](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.13.5) | Mar 2021 | Jun 2021 | +| 3.12 | [3.12.7](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.12.7) | Feb 2021 | May 2021 | +| 3.11 | [3.11.5](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.11.5) | Jan 2021 | May 2021 | +| 3.10 | [3.10.7](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.10.7) | Dec 2020 | Mar 2021 | +| 3.9 | [3.9.7](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.9.7) | Nov 2020 | Feb 2021 | +| 3.8 | [3.8.9](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.8.9) | Oct 2020 | Jan 2021 | +| 3.7 | [3.7.4](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.7.4) | Sep 2020 | Dec 2020 | +| 3.6 | [3.6.3](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.6.3) | Aug 2020 | Nov 2020 | +| 3.5 | [3.5.4](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.5.4) | Jul 2020 | Oct 2020 | +| 3.4 | [3.4.3](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.4.3) | Jun 2020 | Sep 2020 | +| 3.3 | [3.3.3](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.3.3) | May 2020 | Aug 2020 | +| 3.2 | [3.2.2](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.2.2) | Apr 2020 | Jul 2020 | +| 3.1 | [3.1.3](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.1.3) | Mar 2020 | Jun 2020 | +| 3.0 | [3.0.13](https://github.com/RocketChat/Rocket.Chat/releases/tag/3.0.13) | Jan 2020 | Apr 2020 | +| **2.4 (LTS)** | [2.4.14](https://github.com/RocketChat/Rocket.Chat/releases/tag/2.4.14) | **Dec 2019** | **Jun 2020** | +| 2.3 | [2.3.3](https://github.com/RocketChat/Rocket.Chat/releases/tag/2.3.3) | Nov 2019 | Feb 2020 | +| 2.2 | [2.2.1](https://github.com/RocketChat/Rocket.Chat/releases/tag/2.2.1) | Oct 2019 | Jan 2020 | +| 2.1 | [2.1.3](https://github.com/RocketChat/Rocket.Chat/releases/tag/2.1.3) | Sep 2019 | Dec 2019 | +| 2.0 | [2.0.1](https://github.com/RocketChat/Rocket.Chat/releases/tag/2.0.1) | Aug 2019 | Nov 2019 | +| **1.3 (LTS)** | [1.3.5](https://github.com/RocketChat/Rocket.Chat/releases/tag/1.3.5) | **Jul 2019** | **Jan 2020** | +| 1.2 | [1.2.4](https://github.com/RocketChat/Rocket.Chat/releases/tag/1.2.4) | Jun 2019 | Sep 2019 | +| 1.1 | [1.1.5](https://github.com/RocketChat/Rocket.Chat/releases/tag/1.1.5) | May 2019 | Aug 2019 | +| 1.0 | [1.0.5](https://github.com/RocketChat/Rocket.Chat/releases/tag/1.0.5) | Apr 2019 | Jul 2019 | + +{% hint style="warning" %} +Always update to the latest stable version before reporting any bugs or before ask for help from the community. +{% endhint %} + +{% hint style="info" %} +**LTS** means **Long Time Support** and it's used to identify the last **minor** version before a **major** version, e.g. 2.4 is the last minor before 3.x. A new major version means that the version introduced a breaking change and requires attention on the upgrade, so we maintain the support of the previous version for a longer time in order to give you more time to plan and test the upgrade. +{% endhint %} + +### Rocket.Chat Cloud + +Rocket.Chat manages upgrades and provides support to Rocket.Chat Cloud users regardless of the release version. If a Rocket.Chat Cloud user with an outdated server version sends in a support request, his server might be upgraded to the latest stable version without acknowledgment to ensure the best performance. + +### Rocket.Chat Services + +Rocket.Chat Services include services such as our push gateway, the marketplace, and other services managed by Rocket.Chat. + +October 1st our services will no longer continue to guarantee support for Rocket.Chat 0.x. After this date, you may receive errors or warnings about incompatibility. + +3 months after a new major release, e.g. 2.x, the last major release, e.g. 1.x, will have the Services support deprecated and you may receive warnings about the deprecation. 5 months after the deprecation the support will be removed and you may receive errors and warnings about incompatibility. + +#### Cloud Service Support + +| Rocket.Chat Release | Deprecation Date | End of Life Date | +| ------------------- | ---------------: | ---------------: | +| 0.x | Aug 2019 | Jan 2020 | +| 1.x | Nov 2019 | Apr 2020 | +| 2.x | May 2020 | Oct 2020 | +| 3.x | Jan 2022 | Jun 2022 | +| 4.x | TBD | TBD | +| 5.x | TBD | TBD | + +## MongoDB versions + +Each Rocket.Chat release supports different versions of MongoDB, the table below presents the support of MongoDB versions for each major Rocket.Chat release in addition to the deprecated version that will be removed on the next or subsequent versions. + +> Rocket.Chat only adds or removes support of MongoDB versions on major releases so the minor versions are ommited on table below. + +#### MongoDB Support + +| Rocket.Chat Release | Supported Versions | Deprecated Version | +| ------------------- | ----------------------: | -----------------: | +| 1.x | 3.2, 3.4, 3.6, 4.0 | 3.2 | +| 2.x | 3.4, 3.6, 4.0 | 3.4 | +| 3.x | 3.4, 3.6, 4.0 | 3.4 | +| 4.x | 3.6, 4.0, 4.2, 4.4, 5.0 | 3.6, 4.0 | +| 5.x | 4.2, 4.4, 5.0 | 4.2 | + +The upgrade guides available from the official MongoDB documentation are listed below. Bear in mind that it's not possible to skip a version when upgrading, e.g. to upgrade from 3.2 to 3.6 it's necessary to upgrade from 3.2 to 3.4 first and then to 3.6. + +* [Upgrade Replicat Set to 3.4](https://docs.mongodb.com/manual/release-notes/3.4-upgrade-replica-set/) +* [Upgrade Replicat Set to 3.6](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-replica-set/) +* [Upgrade Replicat Set to 4.0](https://docs.mongodb.com/manual/release-notes/4.0-upgrade-replica-set/) +* [Upgrade Replicat Set to 4.2](https://docs.mongodb.com/manual/release-notes/4.2-upgrade-replica-set/) +* [Upgrade Replicat Set to 4.4](https://docs.mongodb.com/manual/release-notes/4.4-upgrade-replica-set/) +* [Upgrade Replicat Set to 5.0](https://docs.mongodb.com/manual/release-notes/5.0-upgrade-replica-set/) + +> It's possible to bypass the MongoDB version check by using the environment variable `BYPASS_MONGO_VALIDATION=true`. Bare in mind that this work around should be used only when extrictly necessary and may prevent some functionalities to work properly or even prevent the server to start. + +## Browser versions + +The ecosystem of browsers has been and still is, an ever-evolving field of change. Since the rate of change is tremendous, we also have to limit the support to recent browsers. We're usually quite good with that but some older browsers just don't support some features that we build upon. That is why we limit or support for browsers in the following way: + +We support the following desktop browsers and versions: + +| Browser | Supported Versions | +| --------------------------- | ------------------- | +| Google Chrome | Latest 3 versions | +| Mozilla Firefox | Latest 3 versions | +| Apple Safari | Latest 2 versions | +| Microsoft Edge | Latest 2 versions | +| Microsoft Internet Explorer | Latest version only | + +> There may be small exceptions in rare cases. + +That being said, here's how you can find out if **your** browser version is still supported (all lists include an indication of a specific browser version is still supported or not): + +* [Version history of Mozilla Firefox](https://en.wikipedia.org/wiki/Firefox\_version\_history) +* [Version history of Google Chrome](https://en.wikipedia.org/wiki/Google\_Chrome\_version\_history) +* [Version history of Apple Safari](https://en.wikipedia.org/wiki/Safari\_version\_history) +* [Version history of Microsoft Edge](https://en.wikipedia.org/wiki/Microsoft\_Edge#Release\_history) +* [Version history of Microsoft Internet Explorer](https://en.wikipedia.org/wiki/Internet\_Explorer\_version\_history) + +## Hardware + +The support is limited to installations matching the requirements described in the [Minimum ](../../../deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/hardware-requirements.md)[Hardware](../../../deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/hardware-requirements.md) [Requirements](../../../deploy-rocket.chat/prepare-for-your-rocket.chat-deployment/hardware-requirements.md) page. + +## Monitoring + +We require monitoring for all supported installations. All installations must continually collect [Metrics](https://github.com/RocketChat/Rocket.Chat.Metrics) regarding the installation's instances and database. Rocket.Chat supports the industry-standard Prometheus + Grafana monitoring stack. Grafana dashboards required for support are available in the [Metrics](https://github.com/RocketChat/Rocket.Chat.Metrics) repository. + +Explanations about each metric/graph which help reading and interpreting the data can be found in this [dedicated document here](https://github.com/RocketChat/Rocket.Chat.Metrics/blob/master/metrics.md). + +## Data access + +We do not require access to the servers, instances, or databases to provide support, but we may require access to the logs if we consider them necessary to identify the problem. + +Types of logs we may require: + +1. Server logs +2. Web browser logs +3. Mobile logs diff --git a/resources/get-support/enterprise-support/enterprise-support-plans.md b/resources/get-support/enterprise-support/enterprise-support-plans.md new file mode 100644 index 0000000000..5df1d75de7 --- /dev/null +++ b/resources/get-support/enterprise-support/enterprise-support-plans.md @@ -0,0 +1,89 @@ +--- +description: Rocket.Chat Enterprise Support Services +--- + +# Enterprise Support Plans + +Rocket.Chat offers a variety of support packages for all customers: + +### **Support Plans** + +In addition to the various support resources, Rocket.Chat offers its customers three different types of support for our products that are tailored to meet the needs of our diversified customer profiles: + +* **Support Standard:** Free for Rocket.Chat customers and Trial users +* **Support Plus:** Only available to customers who have contracted this type of support through our sales channel. Not available in a self-service contract. +* **Mission Critical**: Only available to customers who have contracted this type of support through our sales channel. Not available in a self-service contract. + +_Applied for the products: Self-Managed Enterprise, Self-Managed Omnichannel, Self-Managed Chat Engine, Cloud Enterprise, Cloud Enterprise Omnichannel, and Cloud Enterprise Chat Engine._ + +### What's Included + +![](../../../.gitbook/assets/RC\_SupportPlan\_Matrix\_New.png) + +All support plans offer SLA time frames for first-time response and also include an Account Manager that will be responsible for ensuring paying customers are successful and get the most out of our product and remain happy. + +Mission Critical plan also offers a dedicated Customer Success Manager _(CSM)_ that will be responsible for a detailed onboarding process, strategy roadmap design focused on product adoption in line with desired business outcomes. The dedicated CSM role also includes being a trusted technical advisor and an internal customer advocate. + +### Support Channels + +There are three ways to contact Rocket.Chat for assistance: + +#### **1. Rocket.Chat Desk Portal (all plans, including trial users)** + +[https://desk.rocket.chat](https://desk.rocket.chat) + +_Only customer-assigned points of contact can open a support ticket at the Desk Portal._ + +**2. Email (check supported plans)** + +support@rocket.chat + +_The email verification is done through the domain, i.e. email addresses that have the same domain as the company's domain will be redirected to the customer queue. If the domain is different, or a free domain, for example, they will not be identified as clients attached to that account._ + +#### **3. Hotline**: (check supported plans) + +\+1 (833) 479-0110 + +_For emergency cases only (High Severity), customers may contact Rocket.Chat through our landline._ + +### Ticket Severity + +#### **High** Severity + +(e.g., system down, main functions affected, a large number of users unable to access, severe performance problems) + +Critical Business Impact: A critical issue occurring in Rocket.Chat Services that prevent business operations from occurring or a large number of users are prevented from working with no procedural workaround. + +Example: Data loss or corruption; system crashes; critical functionality is not available; many users cannot work. + +#### **Medium** Severity + +(e.g., essential functions affected, significant impact on system usage, inconsistent performance) + +Normal Business Impact: An issue causing a partial or non-critical loss of functionality on a production system. A small number of users are affected. + +Example: Some systems functions are not available; not many users are impacted; minor performance problems. + +#### **Low** Severity + +(e.g., small impact to functions, low number of users affected, minor bugs, simple questions) + +Minimal Business Impact: Issue occurring on non-production system or question, comment, feature request, documentation issue, or other non-impacting issues. + +Example: Product questions + + + +_Tickets created by email are automatically assigned as "Medium" priority and will have the associated SLA’s according to the account information. Customers entitled to paid support are recommended to raise tickets on the Support Portal._ + +### **Service Level Agreement (SLA)** + +The SLAs are defined by **** taking into account the priority, the paid plan/product, and the customer account status. + +The SLA times listed are the time frames in which customers can expect to receive the first response and are not to be considered as an expected time-to-resolution. Rocket.Chat Support team will make its best effort to address your case as quickly as possible. + +#### Weekday and Weekend Coverage + +12x5 - Support Specialists are actively responding to tickets MON-FRI, 8 AM BRT to 8 PM BRT. + +24x7 - Support Specialist on-call 24 hours a day, 7 days a week. diff --git a/resources/get-support/legacy-support.md b/resources/get-support/legacy-support.md new file mode 100644 index 0000000000..30d21ad782 --- /dev/null +++ b/resources/get-support/legacy-support.md @@ -0,0 +1,83 @@ +--- +description: Support services applied for legacy products +--- + +# Legacy Support + +### **Legacy Support Plans** + +No longer offered for new purchases since 1st July 2022. + +* Silver +* Bronze +* Gold +* Pro +* Enterprise + +_Legacy Support Plans are applied for the legacy products: Silver, Bronze, Gold, Pro, and Enterprise._ + +### Support Channels + +There are three ways to contact Rocket.Chat for assistance: + +#### **1. Rocket.Chat Desk Portal (all plans, including trial users)** + +[https://desk.rocket.chat](https://desk.rocket.chat) + +_Only customer-assigned points of contact can open a support ticket at the Desk Portal._ + +**2. Email (check supported plans)** + +support@rocket.chat + +_The email verification is done through the domain, i.e. email addresses that have the same domain as the company's domain will be redirected to the customer queue. If the domain is different, or a free domain, for example, they will not be identified as clients attached to that account._ + +#### **3. Hotline**: (check supported plans) + +\+1 (833) 479-0110 + +_For emergency cases only (High Severity), customers may contact Rocket.Chat through our landline._ + +### Ticket Severity + +#### **High** Severity + +(e.g., system down, main functions affected, a large number of users unable to access, severe performance problems) + +Critical Business Impact: A critical issue occurring in Rocket.Chat Services that prevent business operations from occurring or a large number of users are prevented from working with no procedural workaround. + +Example: Data loss or corruption; system crashes; critical functionality is not available; many users cannot work. + +#### **Medium** Severity + +(e.g., essential functions affected, significant impact on system usage, inconsistent performance) + +Normal Business Impact: An issue causing a partial or non-critical loss of functionality on a production system. A small number of users are affected. + +Example: Some systems functions are not available; not many users are impacted; minor performance problems. + +#### **Low** Severity + +(e.g., small impact to functions, low number of users affected, minor bugs, simple questions) + +Minimal Business Impact: Issue occurring on non-production system or question, comment, feature request, documentation issue, or other non-impacting issues. + +Example: Product questions + + + +_Tickets created by email are automatically assigned as "Medium" priority and will have the associated SLA’s according to the account information. Customers entitled to paid support are recommended to raise tickets on the Support Portal._ + +### **Service Level Agreement (SLA)** + +The SLAs are defined by **** taking into account the priority, the paid plan/product, and the customer account status. + +The SLA times listed are the time frames in which customers can expect to receive the first response and are not to be considered as an expected time-to-resolution. Rocket.Chat Support team will make its best effort to address your case as quickly as possible. + +#### Weekday and Weekend Coverage + +12x5 - Support Specialists are actively responding to tickets MON-FRI, 8 AM BRT to 8 PM BRT. + +24x7 - Support Specialist on-call 24 hours a day, 7 days a week. + +![](../../.gitbook/assets/RC\_SupportPlan\_Matrix\_Legacy.png) diff --git a/legal/censorship-and-harmful-content.md b/rocket.chat-legal/censorship-and-harmful-content.md similarity index 87% rename from legal/censorship-and-harmful-content.md rename to rocket.chat-legal/censorship-and-harmful-content.md index 50855f7c2c..d9f19f5659 100644 --- a/legal/censorship-and-harmful-content.md +++ b/rocket.chat-legal/censorship-and-harmful-content.md @@ -14,7 +14,7 @@ We also do not want to be the judges on what constitutes the “right” way to Sometimes, our organization receives a request from a law enforcement body with the aim to produce a certain set of user data to aid in a criminal investigation. Or there might be a request to take down content that has been deemed illegal. We treat these requests very carefully and - where we are able and obliged to help - bring this to the attention of the administrator of the instance. Oftentimes, we cannot do anything though. -That is because we have no way to access or control self-managed Rocket.Chat servers. Self-managed means that Rocket.Chat is installed on a server we do not own. Our platform is open source and has no backdoors or whatsoever to allow us to remotely access your installations. +That is because we have no way to access or control self-managed Rocket.Chat servers. Self-managed means that Rocket.Chat is installed on a server we do not own. Our platform is open source and has no backdoors or whatsoever to allow us to remotely access your installations. In case of Rocket.Chat instances hosted by us for others, we forward reports to the respective administrator and if determined an obvious breach of terms of service we can terminate the hosting. Where the request is about content on a server directly under our control, such as our Open Server, you can contact us directly under [legal@rocket.chat](mailto:legal@rocket.chat) and we will take action. @@ -38,11 +38,11 @@ With this being the current situation, we wanted to share our stance on how we a ## What can you do when dealing with harmful content in Rocket.Chat? -**For users:** On our [Open Server](https://open.rocket.chat/), you can report harmful content as per our [code of conduct](https://rocket.chat/code-of-conduct) and we will look into removing it. We want you to be able to use our open.server hassle free. +**For users:** On our [Open Server](https://open.rocket.chat), you can report harmful content as per our [code of conduct](https://rocket.chat/code-of-conduct) and we will look into removing it. We want you to be able to use our open.server hassle free. If you encounter another Rocket.Chat instance that is not hosted by us and which you think contains illegal or otherwise harmful content, we recommend you reach out to the administrator of that instance to moderate the related content. -If you do not know who is your administrator, you can check the DNS records for contact information. For instances that are hosted by us, we can contact the administrator on behalf of you. We have published a tool where you can find out if a Rocket.Chat instance is hosted by us \([server lookup](https://rocket.chat/server-lookup)\). This is not always clear because no one is obliged to use the Rocket.Chat logo or name. +If you do not know who is your administrator, you can check the DNS records for contact information. For instances that are hosted by us, we can contact the administrator on behalf of you. We have published a tool where you can find out if a Rocket.Chat instance is hosted by us ([server lookup](https://rocket.chat/server-lookup)). This is not always clear because no one is obliged to use the Rocket.Chat logo or name. As an ultimate resort, you may want to reach out to the law enforcement body in charge of investigating the potential offense in question. They will tell you the legal remedies available and the potential next steps to take. @@ -60,11 +60,10 @@ All of these features are optional to choose, so you have the total flexibility **For law enforcement:** We sometimes receive requests from law enforcement to remove content from certain Rocket.Chat instances. We have published [guidelines for law enforcement](https://docs.rocket.chat/legal/guidelines-for-law-enforcement), how we deal with requests and what to consider before submitting a request to us as the legal entity behind Rocket.Chat. -**In summary:** In most cases, we cannot remove the majority of content, because it is outside of our control on servers we do not have \(and do not want\) access to. If the content in question is on our Open Server, we remove it if it is a breach of our code of conduct or if we are compelled by a law enforcement request. For servers hosted by us and under control of our customers, we remove content after notifying and in collaboration with the customer or directly as a violation of our terms of service. For questions or contact, please use [legal@rocket.chat](mailto:legal@rocket.chat) +**In summary:** In most cases, we cannot remove the majority of content, because it is outside of our control on servers we do not have (and do not want) access to. If the content in question is on our Open Server, we remove it if it is a breach of our code of conduct or if we are compelled by a law enforcement request. For servers hosted by us and under control of our customers, we remove content after notifying and in collaboration with the customer or directly as a violation of our terms of service. For questions or contact, please use [legal@rocket.chat](mailto:legal@rocket.chat) **For reporters and media requests:** Are you researching for an article about Rocket.Chat or where Rocket.Chat plays a role? We would love to explain to you our stance in detail or get a chance to comment before you publish your article. Please reach out to [contact@rocket.chat](mailto:contact@rocket.chat) to get a comment from us on the topic in question. -\*\*\*\* - +*** diff --git a/rocket.chat-legal/code-of-conduct-for-our-services.md b/rocket.chat-legal/code-of-conduct-for-our-services.md new file mode 100644 index 0000000000..336eb151b5 --- /dev/null +++ b/rocket.chat-legal/code-of-conduct-for-our-services.md @@ -0,0 +1,65 @@ +--- +description: Applicable to the Server hosted by us (​https://open.rocket.chat) +--- + +# Code of Conduct for our services + +_Effective date: September 06, 2019_ + +## Rocket.Chat Code of Conduct + +Dear users, + +Rocket.Chat provides numerous spaces for our community to interact and experience our product. Among these are: [Open.rocket.chat](https://open.rocket.chat/), an open chat community for bringing people together and to showcase Rocket.Chat´s community edition. In addition, new features are tested on the server on a regular basis. [github.com/RocketChat](http://github.com/RocketChat), our source code repositories where we discuss issues and plan new features [Forums.rocket.chat](https://forums.rocket.chat/), our webforum to announce new features and provide ways for direct interaction with our developers + +## Introduction + +The main objective of the rocket.chat community spaces is bringing people together to discuss and experience Rocket.Chat - our awesome communication platform. This Code of Conduct is mainly written in mind for Open.rocket.chat, but in its spirit will be applied to other Rocket.Chat community spaces as well. + +When new visitors enter a channel, you should acknowledge their arrival especially if you're engaged in social chit-chat / passing time. Failure to do so is likely to result in them leaving the channel feeling unwelcome. + +You should try to minimize the chances of conflict by being open-minded and accepting of others. Understand that we each have a unique set of values, and we are all entitled to our own opinions. + +Feel free to share your views on someone else's problem as an outsider, but avoid using excessive force, and don't expect your thoughts and ideas to be accepted all of the time. + +We're mainly an English speaking community but welcome all nationalities. If you find yourself speaking primarily in a different language in an open channel or discussion, please PM that person to continue the conversation in a separate channel. + +### Unwanted behavior + +We do not want the following behavior on open.rocket.chat: + +* Soliciting / advertising +* Offensive, rude, disruptive and unwanted +* Posting of pornographic / gore / nude images +* Harassment, name-calling, racist or sexist remarks, profanity towards others and other forms of bullying +* Insensitive behavior - this will be judged by the reaction of others in the channel +* Flirting or adult content - take these conversations elsewhere +* Posting of links (URLs) to offensive material, sites hosting malware, initiating downloads or promoting illegal activities +* Flooding the chat, spamming, multiple repeats of the same or slightly modified messages +* Reregistering under another account after you have been banned and still under a ban period + +## Reporting unwanted behavior + +Users affected by unwanted behavior can mute other users or report them to the administrators of either the group, discussion or the open.rocket.chat server. You can contact the server administrator by posting in the group [report-abuse channel](https://open.rocket.chat/channel/report-abuse) + +## Process in case of unwanted behavior + +If you are asked to modify your behavior or given some other form of instruction but fail to comply, you are likely to be removed from the channel, the discussion or the whole server for a discretionary or unlimited period of time depending on the severity of the matter, depending on the administrator's decision. + +Depending on the severity of the misbehavior, users can get banned without warning or be issued a warning. Should administrators deem a subject matter to be inappropriate for the channel and / or the current audience, they may at their discretion make contact via Private Message, making clear any requirement to cease discussing the topic, or - as per their permission level - ban the user. A ban may be temporary (in form of a ban period) or permanent. In addition, the server administrator has the right to remove your user account. + +When being corrected by an administrator, please do not argue with them in the main chat. You should request a PM session to help avoid conflict and keep the involvement of others to a minimum. + +Attacking administrators in a channel will likely result in a ban. Any genuine visitor should respect their decisions - they have nothing to gain from issuing bans / mutes and are doing so to the best of their ability, on behalf of the community. + +Administrators may also choose to request users to leave if they're deemed to be a risk to the safety of the general users / guests within the channel. Not adhering to the request will result in manual removal; + +If you believe that an administrator has misused their authority and you have complied 100% with the rules documented on this page, please forward the following details to support@rocket.chat, including the following information: + +* administrator's open.rocket.chat nickname; +* What you believe they have done that demonstrates an abuse of power; +* Associated dates and times - required to review log files etc. + +Note that it can take some time to review log files and liaise with the administrator team, so please don't expect an immediate response. + +In case of a ban period issued, you are welcome to return to the channel once your ban period expires, but please be mindful of the reason(s) you got banned, abide by the rules and take into account any administrator feedback received. diff --git a/rocket.chat-legal/dmca-policy.md b/rocket.chat-legal/dmca-policy.md new file mode 100644 index 0000000000..bd74cb2b1e --- /dev/null +++ b/rocket.chat-legal/dmca-policy.md @@ -0,0 +1,45 @@ +# DMCA Policy + +_Effective date: December 18, 2017_ + +## Rocket.Chat Copyright Dispute Policy + +In accordance with the DMCA, we’ve adopted the policy below toward copyright infringement. We reserve the right to (1) block access to or remove material that we believe in good faith to be copyrighted material that has been illegally copied and distributed by any of our advertisers, affiliates, content providers, members or users and (2) remove and discontinue service to repeat offenders. + +**(1) Procedure for Reporting Copyright Infringements.** + +If you believe that material or content residing on or accessible through the services infringes your copyright (or the copyright of someone whom you are authorized to act on behalf of), please send a notice of copyright infringement containing the following information to Rocket.Chat’s Designated Agent to Receive Notification of Claimed Infringement (our “Designated Agent,” whose contact details are listed below): + +(a) A physical or electronic signature of a person authorized to act on behalf of the owner of the copyright that has been allegedly infringed;\ +(b) Identification of works or materials being infringed;\ +(c) Identification of the material that is claimed to be infringing including information regarding the location of the infringing materials that the copyright owner seeks to have removed, with sufficient detail so that Rocket.Chat is capable of finding and verifying its existence;\ +(d) Contact information about the notifier including address, telephone number and, if available, email address;\ +(e) A statement that the notifier has a good faith belief that the material identified in (1)(c) is not authorized by the copyright owner, its agent, or the law; and\ +(f) A statement made under penalty of perjury that the information provided is accurate and the notifying party is authorized to make the complaint on behalf of the copyright owner. + +**(2) Once Proper Bona Fide Infringement Notification is Received by the Designated Agent.** + +Upon receipt of a proper notice of copyright infringement, we reserve the right to: + +(a) remove or disable access to the infringing material;\ +(b) notify the content provider who is accused of infringement that we have removed or disabled access to the applicable material; and\ +(c) terminate such content provider's access to the services if he or she is a repeat offender. + +**(3) Procedure to Supply a Counter-Notice to the Designated Agent.** + +If the content provider believes that the material that was removed (or to which access was disabled) is not infringing, or the content provider believes that it has the right to post and use such material from the copyright owner, the copyright owner's agent, or, pursuant to the law, the content provider may send us a counter-notice containing the following information to the Designated Agent: + +(a) A physical or electronic signature of the content provider;\ +(b) Identification of the material that has been removed or to which access has been disabled and the location at which the material appeared before it was removed or disabled;\ +(c) A statement that the content provider has a good faith belief that the material was removed or disabled as a result of mistake or misidentification of the material; and\ +(d) Content provider's name, address, telephone number, and, if available, email address, and a statement that such person or entity consents to the jurisdiction of the Federal Court for the judicial district in which the content provider’s address is located, or, if the content provider's address is located outside the United States, for any judicial district in which Rocket.Chat is located, and that such person or entity will accept service of process from the person who provided notification of the alleged infringement. + +If a counter-notice is received by the Designated Agent, Rocket.Chat may, in its discretion, send a copy of the counter-notice to the original complaining party informing that person that Rocket.Chat may replace the removed material or cease disabling it in 10 business days. Unless the copyright owner files an action seeking a court order against the content provider accused of committing infringement, the removed material may be replaced or access to it restored in 10 to 14 business days or more after receipt of the counter-notice, at Rocket.Chat's discretion. + +**Please contact Rocket.Chat's Designated Agent at the following address:** + +**Marcelo Schmidt**\ +marcelo.schmidt@rocket.chat\ +Rua Jorge Fayet 757\ +Porto Alegre – RS – Brazil\ +91330-330 diff --git a/rocket.chat-legal/guidelines-for-law-enforcement.md b/rocket.chat-legal/guidelines-for-law-enforcement.md new file mode 100644 index 0000000000..a4b2483b99 --- /dev/null +++ b/rocket.chat-legal/guidelines-for-law-enforcement.md @@ -0,0 +1,179 @@ +# Guidelines for Law Enforcement + +Last updated: February 24, 2022 + +These guidelines are intended for law enforcement authorities seeking information about Rocket.Chat accounts. More general information is available in our [Privacy Policy](https://rocket.chat/privacy) and [Terms of Service](https://rocket.chat/terms). + +{% hint style="info" %} +**Important Highlight from the page below** + +All requests for user account information must **specify the server URL** (e.g. https://open.rocket.chat) where the user in question is registered. Requests without the server URL will be rejected. +{% endhint %} + +## What is Rocket.Chat? + +Rocket.Chat is a free and open source team chat collaboration platform that allows users to communicate securely in real-time on web, desktop or mobile and to customize their interface with a range of plugins, themes and integrations with other key software. Anyone in the world can download and run a Rocket.Chat server at any time. + +As a platform, Rocket.Chat can be deployed various ways. The interaction on the platform between users happens via user accounts. + +## **Deployment options** + +In short, there are three relevant deployment options of Rocket.Chat, that affect the process for requesting information: + +1. servers hosted by us (Rocket.Chat Technologies Corp.) and managed by us directly (such as our community servers) +2. servers hosted by us, but managed by a customer (our hosted offering) +3. servers hosted by a third party (private servers) + +The third option - private server - is the most common one. + +{% hint style="info" %} +For clarification purposes: a **server,** on which Rocket.Chat is running, \*\*\*\* can contain various **instances** of Rocket.Chat, depending on the configuration. An instance of Rocket.Chat is each a unique community of users communicating with each other. In the following, we refer to **servers**, that run whichever number of Rocket.Chat instances (1 or more). +{% endhint %} + +How can you find out, which deployment is being used? + +* We offer a lookup, which checks if the server is hosted by us (options 1 and 2) or not (option 3). Please check [here](https://rocket.chat/server-lookup) for the lookup form. + +## **Servers under control of Rocket.Chat** + +For total transparency, Rocket.Chat Technologies Corp. owns and operates only one publicly available Rocket.Chat server in the world. The server that Rocket.Chat Technologies Corp. operates can only be accessed at: + +**​**[**https://open.rocket.chat**](https://open.rocket.chat)**​** + +That server is subject to our [Code of Conduct](https://rocket.chat/code-of-conduct). + +Any other Rocket.Chat server you access is not operated by Rocket.Chat Technologies Corp. and is subjected to the usage warning above. + +That said, Rocket.Chat Technologies Corp. provides a cloud service for hosting Rocket.Chat servers. The user data, messages and files on those servers are subject to our [Terms of Use](https://rocket.chat/terms). + +To know if a server belongs to Rocket.Chat cloud, please contact us, use the aforementioned server lookup or use domain information systems. + +
+ +What account information does Rocket.Chat have? + +Rocket.Chat does not keep a log of IPs used to access either Community Server or Rocket.Chat Cloud servers. + +
+ +**Community Server** + +When someone registers an account at our community server, hosted at [https://open.rocket.chat](https://open.rocket.chat), we ask for a name, an e-mail and a password, and they have to verify their e-mail address. Rocket.Chat does not monitor any public or private channels activities other than for the company's own use, such as the #general, #support and #dev public channels. + +We do not keep a log of IPs. + +**Rocket.Chat Cloud** + +When someone signs up for a Rocket.Chat Cloud server, we ask for a name, e-mail, workspace name and domain they'd like to use. The e-mail is then verified before the server is deployed. Every message and file sent is stored within Rocket.Chat cloud servers and databases hosted with a third party hosting provider. Rocket.Chat does not actively scan the content activity in Cloud servers. + +## Private Servers + +You need to be aware that any private Rocket.Chat server may be operated by arbitrary businesses, groups or individuals with no relationship to Rocket.Chat Technologies Corp.\ +**In particular:** + +* **Rocket.Chat Technologies Corp. do not have access to these servers.** +* **Rocket.Chat Technologies Corp. does not and cannot control or regulate how these servers are operated.** +* **Rocket.Chat Technologies Corp. cannot access, determine or regulate any contents or information flow on these servers.** + +Administrators of private servers may opt-in to register their servers for additional connected services by Rocket.Chat (e.g. push notifications for mobile devices). + +The registration requires a working email address, a name or pseudonym and the server URL. More information is generally not available. We do not store content that passes through our gateways to provide the connectivity services. + +## **Individual user account information** + +Rocket.Chat is a platform and the interaction between individuals on the platform happens based on user accounts, e.g. in the format of: + +_firstname.lastname_ + +These accounts are unique to the deployed server of the Rocket.Chat platform. So if information is requested for an individual user account of the platform, this information goes only as far as the scope of that specific, individual server of Rocket.Chat. + +**To identify the proper user account, the specific server therefore must be named as well (generally in form of the URL).** + +The aforementioned restrictions with regards to the deployment options apply to users as well. User information cannot be produced by us for user accounts of private Rocket.Chat servers. Requests for such information should be targeted at the administrator of the private server. If the administrator is unknown, the request should be targeted at the owner of the DNS record of the private server domain. + +## Data retention information + +Rocket.Chat retains data and backups of data for an undisclosed amount of time. Rocket.Chat makes backups of Cloud servers according to each customer's choice of plan (daily, twice daily or hourly). Some information we store is automatically collected, while other information is provided at the user’s discretion. Though we do store this information, we cannot guarantee its accuracy. For example, the server in use may not require real name use, email verification or identity authentication, hence the user may have created a fake or anonymous profile. + +## Preservation requests + +We accept requests from law enforcement to preserve records, which constitute potentially relevant evidence in legal proceedings. We will preserve, but not disclose, a temporary snapshot of the relevant account records for 90 days pending service of valid legal process. + +Preservation requests, in accordance with applicable law, should: + +* be signed by the requesting official; +* have a valid return official email address; and be sent on law enforcement letterhead; +* include the server URL of the subject offense and any other information that may help us identify the offending server and/or user. + +We may honor requests for extensions of preservation requests, but encourage law enforcement agencies to seek records through the appropriate channels in a timely manner, as we cannot guarantee that requested information will be available. + +Law enforcement and government preservation requests for user information must be submitted to our legal team at [legal@rocket.chat](mailto:legal@rocket.chat). You can find further instructions below. + +## Requests for Rocket.Chat Cloud or Community Server account information + +Requests for user account information from law enforcement should be directed to Rocket.Chat Technologies Corp. in Wilmington, Delaware. Rocket.Chat responds to valid legal process issued in compliance with applicable law. + +### Private information requires a subpoena or court order + +Non-public information about Rocket.Chat users will not be released to law enforcement except in response to appropriate legal process such as a subpoena, court order, or other valid legal process – or in response to a valid emergency request, as described below. + +### Contents of communications requires a search warrant + +Requests for the contents of communications (e.g., messages, files) require a valid search warrant or equivalent from an agency with proper jurisdiction over Rocket.Chat. + +### Will Rocket.Chat notify users of requests for account information? + +Yes. Rocket.Chat's policy is to notify users of requests for their Rocket.Chat account information, which includes a copy of the request, as soon as we are able (e.g., prior to or after disclosure of account information) unless we are prohibited from doing so (e.g., an order under [18 U.S.C. § 2705(b)](https://www.law.cornell.edu/uscode/text/18/2705)). We ask that any non-disclosure provisions include a specified duration (e.g., 90 days) during which Rocket.Chat is prohibited from notifying the user. Exceptions to user notice may include exigent or counterproductive circumstances, such as emergencies regarding imminent threat to life, child sexual exploitation, or terrorism. + +### What details must be included in account information requests? + +Requests for user account information in accordance with applicable law, are required to include the following information: + +* **Include the Rocket.Chat server URL (!)** and @username of the subject Rocket.Chat account in question; +* Provide details about what specific information is requested (e.g., messages, files, account information) and its relationship to your investigation; +* Include a valid official email address (e.g., name@agency.gov) so we may get back in touch with you upon receipt of your legal process; +* Be issued on law enforcement letterhead. +* Law enforcement and government requests for user information should be submitted through [legal@rocket.chat](mailto:legal@rocket.chat). You can find further instructions below. + +### Production of records + +Unless otherwise agreed upon, we currently provide responsive records in electronic format (i.e., text files that can be opened with any word processing software such as Word or TextEdit). + +### Records authentication + +The records that we produce are self-authenticating. Additionally, the records are electronically signed to ensure their integrity at the time of production. If you require a declaration, please indicate it in your submission. + +### Cost reimbursement + +Rocket.Chat may seek reimbursement for costs associated with information produced pursuant to legal process and as permitted by law (e.g. under [18 U.S.C. §2706](https://www.law.cornell.edu/uscode/text/18/2706)). + +## Emergency disclosure requests + +In line with our [Privacy Policy](https://rocket.chat/privacy), we may disclose account information to law enforcement in response to a valid emergency disclosure request. + +Rocket.Chat evaluates emergency disclosure requests on a case-by-case basis in compliance with relevant law (e.g., [18 U.S.C. § 2702(b)(8)](https://www.law.cornell.edu/uscode/text/18/2702)). If we receive information that provides us with a good faith belief that there is an exigent emergency involving the danger of death or serious physical injury to a person, we may provide information necessary to prevent that harm, if we have it. + +### How to make an emergency disclosure request + +If there is an exigent emergency that involves the danger of death or serious physical injury to a person that Rocket.Chat may have information necessary to prevent, law enforcement officers must submit an emergency disclosure request through [legal@rocket.chat](mailto:legal@rocket.chat). + +Please include all of the following information: + +* Indication on your cover sheet, which must be on law enforcement letterhead, that you're submitting an Emergency Disclosure Request; +* Identity of the person who is in danger of death or serious physical injury; +* The nature of the emergency (e.g., report of suicide, bomb threat); +* Rocket.Chat server URL and/or @username of the subject account(s) whose information is necessary to prevent the emergency; +* Any specific Rocket.Chat messages you would like us to review; +* The specific information requested and why that information is necessary to prevent the emergency; +* The signature of the submitting law enforcement officer; and +* All other available details or context regarding the particular circumstances (e.g. names of channels, timeframe for which information is requested, etc.) + +## Contact information + +Our address details are: + +Rocket.Chat Technologies Corp. 251 Little Falls Drive, Wilmington, DE, 19808 + +Receipt of correspondence is for convenience only and does not waive any objections, including the lack of jurisdiction or proper service. + +Electronic communication must go to: [legal@rocket.chat](mailto:legal@rocket.chat) diff --git a/rocket.chat-legal/master-service-agreement-for-professional-services.md b/rocket.chat-legal/master-service-agreement-for-professional-services.md new file mode 100644 index 0000000000..37664e67e1 --- /dev/null +++ b/rocket.chat-legal/master-service-agreement-for-professional-services.md @@ -0,0 +1,167 @@ +# Master Service Agreement for Professional Services + +Effective date: September 23, 2022 + +This Professional Services Master Agreement (“Agreement”) describes your (“Customer’s”) rights and responsibilities when using our (“Rocket.Chat’s”) professional services. + +This Agreement applies to all Customers of Rocket.Chat’s Professional Services and governs each Statement of Work (SOW) and Order Form that specifies services for a particular term or period (the “Order/SOW Term”). + +We may update this Agreement and we will let you know when we do through the Services (e.g., a bot notification) or by the Customer email address provided to Rocket.chat. + +​​Please read this document carefully before using this service. + +### 1. Definitions + +**"Affiliate"** of a Person means any other Person that directly or indirectly, through one or more intermediaries, controls, is controlled by, or is under common control with, such Person. The term "control" (including the terms "controlled by" and "under common control with") means the possession, directly or indirectly, of the power to direct or cause the direction of the management and policies of a Person, whether through the ownership of voting securities, by contract, or otherwise. + +**"Authorized Service Recipients"** means the Affiliates of Customer as may be identified by Customer to Rocket.Chat from time to time, or Persons identified as such in a Statement of Work. + +**"Agreement"** has the meaning set forth in the preamble. + +**"Change Order"** has the meaning set forth in Section 5.2 + +**"Confidential Information"** means any information that is treated as confidential by a party, including but not limited to all non-public information about its business affairs, products or services, Intellectual Property Rights, trade secrets, third-party confidential information, and other sensitive or proprietary information, whether disclosed orally or in written, electronic, or other form or media, and whether or not marked, designated, or otherwise identified as "confidential". Confidential Information shall not include information that: (a) is already known to the Receiving Party without restriction on use or disclosure prior to receipt of such information from the Disclosing Party; (b) is or becomes generally known by the public other than by breach of this Agreement by, or other wrongful act of, the Receiving Party; (c) is developed by the Receiving Party independently of, and without reference to, any Confidential Information of the Disclosing Party; or (d) is received by the Receiving Party from a third party who is not under any obligation to the Disclosing Party to maintain the confidentiality of such information. + +**"Customer"** has the meaning set forth in the preamble. + +**"Customer Contract Manager"** has the meaning set forth in Section 4.1(a). + +**"Customer Materials"** means any documents, data, know-how, methodologies, software, and other materials provided to Rocket.Chat by Customer\[, including computer programs, reports, and specifications. + +**"Deliverables"** means all documents, work product, and other materials that are delivered to Customer hereunder or prepared by or on behalf of Rocket.Chat in the course of performing the Services, including any items identified as such in a Statement of Work. + +**"Disclosing Party"** means a party that discloses Confidential Information under this Agreement. + +**“Documentation”** means the official user documentation prepared and provided by Rocket.Chat to Customer on the use of the Services or Rocket.Chat software (as updated from time to time). For the avoidance of doubt, any online community site, unofficial documentation, videos, white papers, or related media, or feedback do not constitute Documentation. + +**"Effective date"** means the signature date of the SOW or Order Form in which the Services provided under this Agreement are foreseen. + +**"Intellectual Property Rights"** means all (a) patents, patent disclosures, and inventions (whether patentable or not), (b) trademarks, service marks, trade dress, trade names, logos, corporate names, and domain names, together with all of the goodwill associated therewith, (c) copyrights and copyrightable works (including computer programs), and rights in data and databases, (d) trade secrets, know-how, and other Confidential Information, and (e) all other intellectual property rights, in each case whether registered or unregistered and including all applications for, and renewals or extensions of, such rights, and all similar or equivalent rights or forms of protection in any part of the world. + +**"Key Personnel"** means any Rocket.Chat personnel identified as being key in a Statement of Work. + +**"Losses"** mean all losses, damages, liabilities, deficiencies, actions, judgments, interest, awards, penalties, fines, costs, or expenses of whatever kind, including reasonable attorneys' fees and the cost of enforcing any right to indemnification hereunder and the cost of pursuing any insurance providers. + +**“Person”** means any individual or business entity that obtains Services as defined below. + +**"Pre-Existing Materials"** means the pre-existing materials specified in a Statement of Work, such as documents, data, know-how, methodologies, software, and other materials. + +**"Project"** means a project as described in a Statement of Work. + +**"Project Milestone"** means an event or task described in a Statement of Work which shall be completed by the relevant date set forth in the Statement of Work. + +**"Receiving Party"** means a party that receives or acquires Confidential Information directly or indirectly under this Agreement. + +**"Rocket.Chat Contract Manager"** means a primary contact with respect to this Agreement who will have the authority to act on behalf of Rocket.Chat in connection with matters pertaining to this Agreement + +**"Rocket.Chat Personnel"** means all employees and Subcontractors, if any, engaged by Rocket.Chat to perform the Services. + +**"Services"** mean the professional and other services to be provided by Rocket.Chat under this Agreement, as described in more detail in a Statement of Work, and Rocket.Chat's obligations under this Agreement. + +**"Statement of Work"** or **"SOW"** means each Statement of Work entered into by the parties. + +### 2. Services + +**2.1 General.** Rocket.Chat shall provide the Services to Customer and the Authorized Service Recipients as described in more detail in each SOW/Order Form in accordance with the terms and conditions of this Agreement. Customer acknowledges that (a) all aspects of the scope of work are described in the applicable SOW and no aspect of the scope of work is implied; (b) the signed SOW and the receipt of a purchase order constitutes authorization for Rocket.Chat to perform the Services under this Agreement and the applicable SOW and issue invoices as set forth in Section 7. + +**2.2 Statement of Work.** Each Statement of Work shall include the following information, if applicable: a detailed description of the Services to be performed pursuant to the SOW; the date upon which the Services will commence and the term of such SOW; the names of Rocket.Chat Contract Manager and any Key Personnel; the fees to be paid to Rocket.Chat under the SOW; Project Milestones and payment schedules; any criteria for completion of the Services; procedures for the testing and acceptance of the Services and Deliverables by Customer; and any other terms and conditions agreed upon by the parties in connection with the Services to be performed pursuant to such SOW. + +**2.3 Documentation.** The content and format of all Documentation produced under this Agreement and its supplements will be created according to Rocket.Chat standard practices. Except if clearly defined as part of the Services to be performed, Services under this Agreement do not include architecture for high availability or failover systems. 2.4 Service Language. All Services will be provided in a single language mutually agreed to by the parties and specified within the SOW. If no other language is specified in the Agreement or its supplements, the default language for Services provided will be English. 2.5 Business Hours. The Services performed under this Agreement will be executed during business hours mutually agreed to by Rocket.Chat and the Customer Contract Manager. Rocket.Chat will not exceed the total estimated number of business days or hours described in the applicable SOW without prior written approval from Customer, as set forth in Section 5. + +### 3. Rocket.Chat's Obligations. + +**3.1 Rocket.Chat shall:** + +(a) before the date on which the Services are to start, obtain, and at all times during the term of this Agreement maintain, all necessary licenses and consents and comply with all relevant Laws applicable to the provision of the Services; + +(b) comply with, and ensure that all Rocket.Chat Personnel comply with, all rules, regulations, and policies of Customer that are communicated to Rocket.Chat in writing, including security procedures concerning systems and data and remote access thereto, building security procedures and general security practices and procedures; and; + +(c) provide (if applicable) the Customer with a project implementation plan including the timeframe within the term established in the applicable SOW. + +**3.2 Rocket.Chat Personnel.** Rocket.Chat is responsible for all Rocket.Chat Personnel and for the payment of their compensation, including, if applicable, withholding of income taxes, and the payment and withholding of social security and other payroll taxes, unemployment insurance, workers' compensation insurance payments, and disability benefits. + +**3.3 Timeframe.** Rocket.Chat shall use reasonable efforts to meet any performance dates specified in a Statement of Work, and any such dates shall be estimates only. + +### 4. Customer's Obligations. + +**4.1 Customer shall:** cooperate with Rocket.Chat in all matters relating to the Services and appoint a Customer employee to serve as the primary contact with respect to this Agreement and who will have the authority to act on behalf of Customer with respect to matters pertaining to this Agreement (the "Customer Contract Manager"); respond promptly to any Rocket.Chat request to provide direction, information, approvals, authorizations, or decisions that are reasonably necessary for Rocket.Chat to perform Services in accordance with the requirements of this Agreement; provide such information as Rocket.Chat may request, in order to carry out the Services, in a timely manner, and ensure that it is complete and accurate in all material respects; provide (if applicable), access to Customer's premises and such office accommodations and other facilities as may reasonably be required by Rocket.Chat, for the purposes of performing the Services; notify Rocket.Chat of any laws, regulations, and/or statutes specific to Customer’s industry that Rocket.Chat will be required to know to fulfill their obligations under this Agreement; provide suitably equipped and knowledgeable resource(s) to work with Rocket.Chat to refine the requirements, design, build and test the solution as per the scope of work section outlined in each SOW; provide the necessary resources to participate in meetings/workshops/communications needed to provide the required data or inputs necessary to deliver the contracted services (within a defined timeframe); take responsibility for the content of any Customer data file, control access to the files, and maintain their backup and recovery; obtain and maintain all necessary licenses and consents and comply with all applicable law in relation to the Services to the extent that such licenses, consents, and law relate to Customer's business, premises, staff, and equipment, in all cases before the date on which the Services are to start; + +**4.2 Customer failure and delay.** Customer acknowledges that any failure or delay in complying with the obligations described in this Section 4 may impact the estimated schedule and produce other effects as set forth in Section 5 ("Change Order"). + +### 5. Change Orders. + +**5.1 Change Orders Procedure.** If either party wishes to change the scope or performance of the Services, it shall submit details of the requested change to the other party in writing in accordance with the notice provisions in Section 13.2. Rocket.Chat shall, within a reasonable time (not to exceed 30 days) after receiving a Customer-initiated request, or at the same time that Rocket.Chat initiates such a request, provide a written estimate to Customer of: (a) the likely time required to implement the change; (b) any necessary variations to the fees and other charges for the Services arising from the change; (c) the likely effect of the change on the Services; (d) any other impact the change might have on the performance under this Agreement; and (e) any other information reasonably requested by the Customer. 5.2 Change Orders Agreement. Promptly after receipt of the written estimate, the parties shall negotiate and agree in writing on the terms of such change (a "Change Order"). Neither party shall be bound by any Change Order unless mutually agreed upon in writing in accordance with Section 13.6. + +### 6. Term and Termination + +**6.1 Term.** This Agreement shall commence as of the Effective Date and shall continue thereafter until the completion of the Services under all SOWs, unless sooner terminated pursuant to this Section 6. + +**6.2 Termination for Cause.** Either party may terminate this Agreement or any SOW, effective upon written notice to the other party (the "Defaulting Party"), if the Defaulting Party: materially breaches this Agreement, and such breach is incapable of cure, or with respect to a material breach capable of cure, the Defaulting Party does not cure such breach within 30 days after receipt of written notice of such breach; or (i) becomes insolvent or admits its inability to pay its debts generally as they become due; (ii) becomes subject, voluntarily or involuntarily, to any proceeding under any domestic or foreign bankruptcy or insolvency law, which is not fully stayed within 30 business days or is not dismissed or vacated within 30 days after filing; (iii) is dissolved or liquidated or takes any corporate action for such purpose; (iv) makes a general assignment for the benefit of creditors; or (v) has a receiver, trustee, custodian, or similar agent appointed by order of any court of competent jurisdiction to take charge of or sell any material portion of its property or business. + +**6.3 Effects of Termination or Expiration.** Upon expiration or termination of this Agreement for any reason: Rocket.Chat shall promptly deliver to Customer all Deliverables (whether complete or incomplete) for which Customer has paid. Each party shall (i) return to the other party all documents and tangible materials (and any copies) containing, reflecting, incorporating, or based on the other party's Confidential Information, (ii) permanently delete all of the other party's Confidential Information from its computer systems, and (iii) certify in writing to the other party that it has complied with the requirements of this clause. + +**6.4 Survival.** The rights and obligations of the parties set forth in this Section 6.5 and Section 1 (Definitions), Section 8 (Intellectual Property Rights; Ownership), Section 9 (Confidential Information), Section 10 Representations and Warranties., Section 12 (Limitation of Liability), Section 6.4 Effects of Termination or Expiration, and Section 13 (Miscellaneous), and any right or obligation of the parties to this Agreement which, by its nature, should survive termination or expiration of this Agreement, will survive any such termination or expiration of this Agreement. + +### 7. Fees and Expenses; Payment Terms. + +**7.1 General.** In consideration of the provision of the Services by the Rocket.Chat and the rights granted to Customer under this Agreement, Customer shall pay the fees as follows: Time and Materials. For Services provided on a time and materials basis, Customer shall pay fees (the "Fees") calculated in accordance with Rocket.Chat's daily/hourly fee rates as set forth in \[the applicable SOW. Fixed Price. Where Services are provided for a fixed price, the total Fees shall be the amount set out in the applicable SOW. 7.2 Expense Reimbursement. Customer agrees to reimburse Rocket.Chat for all actual, documented, and reasonable travel and out-of-pocket expenses incurred by Rocket.Chat in connection with the performance of the Services; 7.3 Invoicing and Payment. All information regarding payment and invoices such as payment terms and fines shall be set forth in the applicable SOW. Unless expressly provided otherwise in the SOW, payments shall be paid prior to the execution of the Services. + +**7.4 Taxes.** Customer shall be responsible for all sales, use, and excise taxes, and any other similar taxes, duties, and charges of any kind imposed by any federal, state, or local governmental entity on any amounts payable by Customer hereunder except for any taxes imposed on, or with respect to, Rocket.Chat's income, revenues, gross receipts, personnel, or real or personal property or other assets. + +### 8. Intellectual Property Rights; Ownership. + +**8.1 Intellectual Property Rights.** As between Customer and Rocket.Chat, all Intellectual Property Rights and all other rights in and to the Deliverables (except for any Confidential Information of Customer or Customer Materials) and the Pre-Existing Materials shall be owned by Rocket.Chat. Rocket.Chat hereby grants Customer and the Authorized Service Recipients a license to use all such rights to the extent necessary to enable the Customer to make reasonable use of the Deliverables and the Services. 8.2 Ownership. Customer and its licensors are, and shall remain, the sole and exclusive owner of all right, title, and interest in and to the Customer Materials, including all Intellectual Property Rights therein. Rocket.Chat shall have no right or license to use any Customer Materials except solely during the term of this Agreement to the extent necessary to provide the Services to Customer. All other rights in and to the Customer Materials are expressly reserved by Customer. + +### 9. Confidential Information. + +**9.1 The Receiving Party agrees:** not to disclose or otherwise make available Confidential Information of the Disclosing Party to any third party without the prior written consent of the Disclosing Party; provided, however, that the Receiving Party may disclose the Confidential Information of the Disclosing Party to its and its Affiliates, and their officers, employees, consultants, and legal advisors who have a "need to know", who have been apprised of this restriction, and who are themselves bound by nondisclosure obligations at least as restrictive as those set forth in this Section 9; to use the Confidential Information of the Disclosing Party only for the purposes of performing its obligations under the Agreement or, in the case of Customer, to make use of the Services and Deliverables; and to immediately notify the Disclosing Party in the event it becomes aware of any loss or disclosure of any of the Confidential Information of Disclosing Party. + +**9.2 Compelled disclosure.** If the Receiving Party becomes legally compelled to disclose any Confidential Information, the Receiving Party shall provide: (a) prompt written notice of such requirement so that the Disclosing Party may seek, at its sole cost and expense, a protective order or other remedy; and (b) reasonable assistance, at the Disclosing Party's sole cost and expense, in opposing such disclosure or seeking a protective order or other limitations on disclosure. If, after providing such notice and assistance as required herein, the Receiving Party remains required by Law to disclose any Confidential Information, the Receiving Party shall disclose no more than that portion of the Confidential Information which, on the advice of the Receiving Party's legal counsel, the Receiving Party is legally required to disclose and, upon the Disclosing Party's request, shall use commercially reasonable efforts to obtain assurances from the applicable court or agency that such Confidential Information will be afforded confidential treatment. + +**9.3** Nothing in this Agreement shall prevent either party from using any general methodologies or know-how contained in the unaided memory of such party's personnel or those of its Affiliates developed or disclosed under this Agreement, provided that in doing so it is not in breach of its obligations of confidentiality under this section or using any Intellectual Property Rights of the other party or any of its Affiliates. + +### 10. Representations and Warranties. + +**10.1 Mutual.** Each party represents and warrants to the other party that: (a) it has the full right, power, and authority to enter into this Agreement, to grant the rights and licenses granted hereunder and to perform its obligations hereunder; and (b) when executed and delivered by such party, this Agreement will constitute the legal, valid and binding obligation of such party, enforceable against such party in accordance with its terms. + +**10.2 Rocket.Chat.** Rocket.Chat represents and warrants to Customer that: (a) it shall perform the Services in a professional and workmanlike manner and in compliance with all applicable laws, and shall devote adequate resources to meet its obligations under this Agreement; (b) the Services and Deliverables shall conform in all respects with the specifications and will be performed to Customer's reasonable satisfaction; and (c) the Services and Deliverables, and Customer's use thereof, do not and will not infringe any third party rights. + +**10.3** EXCEPT FOR THE EXPRESS WARRANTIES IN THIS SECTION 10, (A) EACH PARTY HEREBY DISCLAIMS ALL WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE UNDER THIS AGREEMENT, AND (B) ROCKET.CHAT SPECIFICALLY DISCLAIMS ALL IMPLIED WARRANTIES OF MERCHANTABILITY. + +### 11. Indemnification. + +**11.1 General.** Each party ("Indemnifying Party") shall indemnify, defend, and hold harmless the other party ("Indemnified Party") against any and all losses, damages, liabilities, deficiencies, claims, actions, judgments, settlements, interest, awards, penalties, fines, costs (collectively, "Losses"), relating to any claim of a third party arising out of or occurring in connection with: (a) bodily injury, death of any person or damage to real or tangible, personal property resulting from Indemnifying Party's willful, fraudulent or negligent acts or omissions; or (b) Indemnifying Party's negligence, willful misconduct, or material breach of this Agreement, including but not limited to material breach of any representation or warranty made by Indemnifying Party in this Agreement. + +**11.2 Intellectual Property Infringement.** Rocket.Chat shall defend, indemnify, and hold harmless the Customer from and against all losses based on a claim that any of the Services or Deliverables or Customer's receipt or use thereof infringes any Intellectual Property Right of a third party; provided, however, that Rocket.Chat shall have no obligations under this Section 11.2 with respect to claims to the extent arising out of (a) any instruction, information, designs, specifications, or other materials provided by Customer in writing to Rocket.Chat; (b) Customer's use of the Deliverables in combination with any materials or equipment not supplied to Customer or specified by Rocket.Chat in writing; or (c) any modifications or changes made to the Deliverables other than by Rocket.Chat. + +### **12. LIMITATION OF LIABILITY.** + +TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, (I) IN NO EVENT WILL ROCKET.CHAT AND ITS AFFILIATES, DIRECTORS, EMPLOYEES, OR AGENTS HAVE ANY LIABILITY, CONTINGENT OR OTHERWISE, FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE, STATUTORY OR EXEMPLARY DAMAGES ARISING OUT OF OR RELATING TO THIS AGREEMENT, THE SERVICES, SOFTWARE, DOCUMENTATION, OR ANY OTHER PRODUCTS OR SERVICES PROVIDED HEREUNDER, INCLUDING, BUT NOT LIMITED TO LOST PROFITS, LOST OR CORRUPTED DATA, LOSS OF GOODWILL, WORK STOPPAGE, EQUIPMENT FAILURE OR MALFUNCTION, PROPERTY DAMAGE OR ANY OTHER DAMAGES OR LOSSES, EVEN IF A PARTY HAS BEEN ADVISED OF THE POSSIBILITY THEREOF, AND REGARDLESS OF THE LEGAL OR EQUITABLE THEORY (CONTRACT, TORT, STATUTE, INDEMNITY OR OTHERWISE) UPON WHICH ANY SUCH LIABILITY IS BASED; AND (II) THE AGGREGATE LIABILITY OF ROCKET.CHAT AND ITS AFFILIATES, DIRECTORS, EMPLOYEES, AND AGENTS, AND THE SOLE REMEDY AVAILABLE TO CUSTOMER ARISING OUT OF OR RELATING TO THIS AGREEMENT, THE SERVICES, SOFTWARE, OR ANY PRODUCTS OR SERVICES PROVIDED HEREUNDER SHALL BE LIMITED TO TERMINATION OF THIS AGREEMENT AND DAMAGES NOT TO EXCEED THE TOTAL AMOUNT PAYABLE OR PAID TO ROCKET.CHAT BY CUSTOMER UNDER THIS AGREEMENT DURING THE TWELVE (12) MONTHS PRIOR TO TERMINATION. + +### **13.** Miscellaneous. + +**13.1 Independent Contractors.** The parties are independent contractors, and nothing contained in this Agreement shall be construed as creating any agency, partnership, joint venture or other form of joint enterprise, employment, or fiduciary relationship between them. Neither party shall be authorized to contract for or bind the other party in any manner whatsoever + +**13.2 Notices.** Except as otherwise set forth herein, all notices under this Agreement and its appendices shall be by email. Notices to customer shall be addressed to addresses set forth on the SOW, although Rocket.Chat may instead choose to provide notice to Customer through the Services (e.g., a bot notification). Notices to Rocket.Chat should be sent to legal@rocket.chat and include in copy Rocket.Chat’s primary point of contact defined in the SOW. A notice will be deemed to have been duly given (a) the day after it is sent, in the case of a notice sent through email; and (b) the same day, in the case of a notice sent through the Services. Customer must keep all of its account information with Rocket.Chat current. + +**13.3 Entire Agreement; Order of Precedence.** This Agreement, together with all schedules, exhibits, and Statements of Work, and any other documents incorporated herein by reference, constitutes the sole and entire agreement of the parties to this Agreement with respect to the subject matter contained herein, and supersedes all prior and contemporaneous understandings and agreements, both written and oral, with respect to such subject matter. In the event of any conflict between the terms and provisions of this Agreement and those of any schedule, exhibit or Statement of Work, the following order of precedence shall govern: (a) first, this Agreement, exclusive of its exhibits and schedules; (b) second, the applicable Statement of Work; and (c) third, any exhibits and schedules to this Agreement. + +**13.4 Assignment and Subcontractors.** This Agreement shall be assignable by [Rocket.Chat.](https://rocket.chat/) Customer acknowledges that from time to time, Rocket. Chat may enlist a subcontractor to perform some of the Services provided to the Customer. In the event services to be performed as outlined in this Agreement are subcontracted to a third party, the third party shall accept responsibility for the performance of such activities. [Rocket.Chat](https://rocket.chat/) will cease to bear any responsibility related to the performance of subcontracted services; however [Rocket.Chat](https://rocket.chat/) will act as a liaison between the subcontractor and Customer, to monitor the performance of services to be provided by any third party. + +**13.5 No Third-Party Beneficiaries.** This Agreement is for the sole benefit of the parties hereto and their respective successors and permitted assigns and nothing herein, express or implied, is intended to or shall confer upon any other Person any legal or equitable right, benefit, or remedy of any nature whatsoever, under or by reason of this Agreement. + +**13.6 Amendment and Modification; Waiver.** As our business evolves, we may change this Agreement. If we make a material change to these provisions, we will provide you with reasonable notice prior to the change taking effect either by emailing the email address associated with your account or by messaging you through the Services. You can review the most current version of the Customer Terms at any time by visiting this page: https://docs.rocket.chat/legal/master-service-agreement-for-professional-services. Any material revisions to these Customer Terms will become effective on the date set forth in our notice, and all other changes will become effective on the date we publish the change. If you use the Services after the effective date of any changes, that use will constitute your acceptance of the revised terms and conditions. No failure to exercise any right, remedy, power or privilege ("Rights") arising under this Agreement shall operate or be construed as a waiver thereof. No single or partial exercise of any Right hereunder precludes any other or further exercise thereof or the exercise of any other Right. + +**13.7 Severability.** No invalidity, illegality, or unenforceability of any provision herein in any jurisdiction, shall affect any other term or provision of this Agreement or invalidate or render such provision unenforceable in any other jurisdiction. If any provision is determined to be invalid, illegal, or unenforceable, the parties hereto shall negotiate in good faith to modify this Agreement so as to effect the original intent of the parties as closely as possible. + +**13.8 Governing Law: Submission to Jurisdiction.** This Agreement shall be governed by the laws of the State of Delaware and of the United States, without regard to any conflict of law provisions, except that the United Nations Convention on the International Sale of Goods and the provisions of the Uniform Computer Information Transactions Act shall not apply to this Agreement. Customer hereby consent to the jurisdiction of the state and federal courts of Delaware. If this Agreement is translated into a language other than English and there are conflicts between the translations of this Agreement, Customer agrees that the English version of this Agreement shall prevail and control. + +**13.9 Non-Exclusivity.** Rocket.Chat retains the right to perform the same or similar type of services for third parties during the term of this Agreement. + +**13.10 Force Majeure.** Neither Party will be liable for nonperformance or delays caused by acts of God, wars, riots, strikes, fires, floods, hurricanes, earthquakes, government restrictions, terrorist acts or other causes beyond its reasonable control. In addition, Rocket.Chat shall have no liability for any failure or delay of performance by Rocket.Chat that is caused by or results from any failure or delay of performance by the Customer of any obligations it is required to undertake or deliverables it is required to provide under this Agreement, an SOW or any applicable Supplement. + +**13.11 Equitable Relief; Cumulative Remedies.** Each party acknowledges that a breach of Section 8 (Intellectual Property Rights; Ownership) or Section 9 (Confidentiality) may cause the non-breaching party irreparable damages, for which an award of damages would not be adequate compensation. In the event of such breach or threatened breach, the non-breaching party will be entitled to seek equitable relief. Except as expressly set forth in this Agreement, the rights and remedies under this Agreement are cumulative and in addition to any other rights or remedies available at law or in equity or otherwise. + +**13.12 Headings.** The headings in this Agreement are for reference only and shall not affect the interpretation of this Agreement. + +**13.13 Counterparts.** This Agreement may be executed in counterparts, each of which shall be deemed an original, but all of which together shall be deemed to be one and the same agreement. A signed copy of this Agreement delivered by facsimile, email or other means of electronic transmission shall be deemed to have the same legal effect as delivery of an original signed copy of this Agreement. diff --git a/rocket.chat-legal/master-services-agreement-for-self-managed-workspaces.md b/rocket.chat-legal/master-services-agreement-for-self-managed-workspaces.md new file mode 100644 index 0000000000..ddd4578c3f --- /dev/null +++ b/rocket.chat-legal/master-services-agreement-for-self-managed-workspaces.md @@ -0,0 +1,167 @@ +# Master Services Agreement for Self Managed Workspaces + +## Master Services Agreement for Self Managed Workspaces + +_Effective date: February 27th, 2021_ + +## **ROCKET.CHAT MASTER SERVICES AGREEMENT FOR SELF-MANAGED DEPLOYMENTS** + +This Master Services Agreement (the "**Agreement**"), is entered as of\ +**\_\_\_** (the “**Effective Date**”),\ +by and between **\_\_\_\_**,\ +whose address is _\*\*\\_**\_**_\*\*\\_;\ +an entity (“**You,**” “**Your**,” or “**Customer**”) and Rocket.Chat Technologies Corp. (“**Rocket.Chat**”). In this Agreement, Customer and Rocket.Chat may be individually referred to as “**party**” and collectively referred to as “_\*parties\\_\*.” + +The Agreement covers the provision of services by Rocket.Chat to You for self-managed (otherwise known as "on-premise") deployment of Rocket.Chat and generally comes with an Order Form that specifies services and product editions for a particular initial term or period (the “Initial Order Term”) and any renewal terms or periods indicated therein (collectively, the “Order Term”); unless expressly provided otherwise, the Initial Order Term is 12 months from the effective date of the Order and renewals are for successive 12 months periods. It does explicitly not cover the mere provision of the Community Edition of our product or any other edition of our product which does not come with a reference to this Agreement. + +**1. DEFINITIONS.** + +**1.1 Affiliates** means an entity controlled by, under common control with, or controlling such party, where control is denoted by having fifty percent (50%) or more of the voting power (or equivalent) of the applicable entity. Subject to the terms and conditions of this Agreement, Your Affiliates may use the license granted hereunder. All references to Rocket.Chat shall be deemed to be references to Rocket.Chat and its Affiliates. + +**1.2 Agreement** means this Master Services Agreement, and any applicable Order Form attached hereto. + +**1.3 Devices** means (whether physical or virtual) a server, system, workstation, computer, mobile device, or endpoint upon which or through which the Services are used and/or on which the Software is installed. + +**1.4 Documentation** means the official user documentation prepared and provided by Rocket.Chat to You on the use of the Services or Software (as updated from time to time). For the avoidance of doubt, any online community site, unofficial documentation, videos, white papers, or related media, or feedback do not constitute Documentation. + +**1.5 Order Form** means the Rocket.Chat ordering document that specifies Your purchase of the Services, pricing, and other related information. All Order Form(s) will be attached to and made a part of this Agreement. + +**1.6 Personal Data** means any information that can be used to identify an individual as that term is defined under applicable law, which may include EU’s "General Data Protection Regulation" (“GDPR”) as and if applicable. + +**1.7 Services** means the products and Software services, including any support and application programming interface that accesses functionality, that is provided to the Customer by Rocket.Chat. + +**1.8 Software** means the object code version of any software to which Customer is provided access as part of the Service, including any updates or new versions. + +**1.9 Support** means the standard maintenance or support provided by Rocket.Chat or its designated agents as set forth in this Agreement. + +**1.10 User** means an individual authorized by You to use the Services, Software, and Documentation. + +**1.11 Your Data** or **Data** means data, files, or information, including data, files, or information that include Personal Data, accessed, used, communicated, stored, or submitted by You or Your Users related to Your or Your User’s use of the Services or Software. + +**2. PROVISION OF SERVICES.** + +**2.1 Services License.** Upon payment of fees and subject to continuous compliance with this Agreement, Rocket.Chat hereby grants Customer a limited, non-exclusive, non-transferable license to access, use, and install (if applicable) the Services, Software, and Documentation during the Term (defined below). You may provide, make available to, or permit Your Users to use or access the Services, the Software, or Documentation, in whole or in part. You agree that Rocket.Chat may deliver the Services or Software to You with the assistance of its Affiliates, licensors, and service providers. During the Term (as defined herein), Rocket.Chat may update or modify the Services or Software to reflect changes in, among other things, laws, regulations, rules, technology, industry practices, patterns of system use, and availability of a third-party program. Rocket.Chat’s updates or modifications to the Services or Software will not materially reduce the level of performance, functionality, security, or availability of the Services or Software during the Term. + +**2.2 Customization and Implementation.** Subject to the terms and conditions of this Agreement and applicable Order Form, Rocket.Chat will customize the Software for the Customer in accordance with the functional requirements specification which will be mutually developed during the customization effort. + +**2.3 Hosting is Not Covered**. Our hosted offerings are not covered by this Agreement. + +**2.4 Support**. Subject to the terms and conditions of this Agreement and applicable Order Form, as part of the Services, Rocket.Chat will provide Customer the support and maintenance services as described in the applicable Order Form during the Term. Rocket.Chat will provide the Customer with the Support subject to payment of the applicable fees as defined in the applicable Order Form. By the open source nature of Rocket.Chat and according to its License found at [https://github.com/RocketChat/Rocket.Chat/blob/master/LICENSE](https://github.com/RocketChat/Rocket.Chat/blob/master/LICENSE), the Customer may make modifications to the software, but Rocket.Chat's support will only cover original code, published by Rocket.Chat in its own repositories. + +**3. LICENSE RESTRICTIONS; OBLIGATIONS.** + +**3.1 License Restrictions.** You may not (i) provide, make available to, or permit individuals other than Your Users to use or access the Services, the Software, or Documentation, in whole or in part; (ii) use the Services or Software to store or transmit infringing, libelous, unlawful, or tortious material or to store or transmit material in violation of third party rights, including privacy rights; (iii) use the Services or Software to violate any rights of others; (iv) use the Services or Software to store or transmit malicious code, Trojan horses, malware, spam, viruses, or other destructive technology ("**Viruses**"); (v) interfere with, impair, or disrupt the integrity or performance of the Services or any other third party’s use of the Services or (vi) alter, circumvent, or provide the means to alter or circumvent the Services or Software, including technical limitations, recurring fees, or usage limits. + +**3.2 Your Obligations.** You acknowledge, agree, and warrant that: (i) You will be responsible for Your and Your Users’ activity and compliance with this Agreement, and if You become aware of any violation, You will immediately terminate the offending party’s access to the Services, Software, and Documentation and notify Rocket.Chat; (ii) You and Your Users will comply with all applicable local, state, federal, and international laws; (iii) You are legally able to process Your Data and are able to legally provide Your Data to Rocket.Chat and its Affiliates, including obtaining appropriate consents or rights for such processing, as outlined further herein, and have the right to access and use Your infrastructure if requested by You, including any system or network, to obtain the Services and Software and will be solely responsible for the accuracy, security, quality, integrity, and legality of the same; and (iv) You will keep your registration information, billing information, passwords and technical data accurate, complete, secure and current for the Term of this Agreement. + +**3.3 Representations and Warranties**. Each party represents and warrants that: (i) such party has the full power and authority to enter into this Agreement; (ii) this Agreement is duly authorized by all necessary action and has been duly executed and delivered; (iii) such party is in compliance with all applicable requirements of law, other than where the failure to be in compliance would not have a material adverse effect upon such party’s execution, delivery or performance of this Agreement or consummation of the transactions contemplated hereby; and (iv) such party has not entered into any agreement with any other entity that contains restrictive provisions that may impair its ability to perform its obligations under this Agreement. + +**3.4 API Fair Use** Many of our services work via API calls managed under a central infrastructure of us. You may not place excessive API calls or otherwise deliberately try to overburden this API system. We may throttle your use of the APIs in case we deem it necessary to facilitate an overall acceptable service level across our infrastructure (e.g. such as in the case of continued, excessive API usage). We may monitor use of the APIs for compliance with these rules, and we may deny you access to the API or shut down your Integration if you try to go around or break the policies we set. If your Order Form includes a defined API limit or minimum, then the Order Form controls. + +**4. PROPRIETARY RIGHTS.** + +**4.1 Ownership of Rocket.Chat Intellectual Property.** The Services, Software, and Documentation are licensed, not sold. Use of the term "purchase" in conjunction with licenses of the Services, Software, and Documentation shall not imply a transfer of ownership. Except for the limited rights expressly granted by Rocket.Chat to Customer in this Agreement, Customer acknowledges and agrees that all right, title and interest in and to all copyright, trademark, patent, trade secret, intellectual property (including without limitation algorithms, business processes, improvements, enhancements, modifications, derivative works, information collected and analyzed in connection with the Services) and other proprietary rights, arising out of or relating to the Services, the Software, the provision of the Services or Software, and the Documentation, belong exclusively to Rocket.Chat or its suppliers or licensors. All rights, title, and interest in and to content, which may be accessed through the Services or the Software, is the property of the respective owner and may be protected by applicable intellectual property laws and treaties. This Agreement gives Customer no rights to such content, including the use of the same. Rocket.Chat is hereby granted a royalty-free, fully-paid, worldwide, transferable, sub-licensable, irrevocable and perpetual license to use or incorporate into its products and services suggestions, enhancement requests, recommendations or other feedback provided by You or Your Users relating to the Services or Software. To clarify: this mentioned license does not extend to any data of You or Your users, but is aimed to allow us to incorporate Your feedback et al. into our products and services. All rights not expressly granted under this Agreement are reserved by Rocket.Chat. + +**4.2 Ownership of Data.** Rocket.Chat does not obtain ownership in data that is submitted into our Services or Software. Unless agreed otherwise between Customer and User, Customer acknowledges and agrees that when a User submits content or information to the Services, such as messages or files, all such content and information, is generally owned by the User and that User grants Customer a license to operate the Services, Software and Support in accordance with the agreement between Customer and User (e.g. a customer contract). + +Customer in turn grants Rocket.Chat a sublicense of said license for the purposes of operating the Services, Software and Support as described in this Agreement, where this sublicense is needed (e.g. to analyze bugs by being granted access to user data by Customer). Other than as specifically provided in this Agreement and the [Rocket.Chat Privacy Policy](https://rocket.chat/privacy), Rocket.Chat will not release, transmit, or utilize Customer Data, in particular not store or repurpose it. + +**5. TERM; TERMINATION.** + +**5.1 Term.** This Agreement will begin on the Effective Date and will continue so long as any Order Term remains in effect or until terminated by either party as outlined in this Section (the "**Term**"). + +**5.2 Termination Rights.** + +**a. Renewal.** Unless a party gives written notice of non-renewal or termination at least thirty (30) days prior to the expiration of the relevant Term, this Agreement will automatically renew for a period equal to the previous Term. Any Fees for a renewed Term are due upon the date of renewal. + +**b. For Cause.** Either party may terminate this Agreement and any Order Forms immediately upon 30 days’ written notice to the other party in the event of any material breach of this Agreement (including without limitation, any failure to pay any amounts when due hereunder, your failure to comply with restrictions under this Agreement, including those set out in Section 3) by such party where such material breach is not cured during such notice period. Either party may also terminate this Agreement and all Order Forms, without notice, (i) upon the institution by or against the other party of insolvency, receivership or bankruptcy proceedings (provided such proceedings are not dismissed within one hundred twenty (120) days of such institution), (ii) upon the other party's making an assignment for the benefit of creditors, or (iii) upon the other party's dissolution or ceasing to do business without a successor. + +**5.3 Effect of Termination or Expiration.** Termination or expiration shall not relieve You of the obligation to pay any fees or other amounts accrued or payable to Rocket.Chat, including fees for the remainder of the Order Term(s) after an earlier termination. If Rocket.Chat terminates for cause, or Customer terminates for convenience, Customer will immediately pay all amounts due and payable for the remainder of the Order Term without limiting Rocket.Chat’s other rights and remedies. Without prejudice to any other rights, upon termination or expiration, You must cease all use of the Services, Software, and Documentation and destroy or return (upon request by Rocket.Chat) all copies of the Services, Software, and Documentation. You further acknowledge and agree that You will retrieve Your Data or copies of Your Data from Rocket.Chat within thirty (30) business days of the termination or expiration. Unless in accordance with our internal policies, contractual, legal, or other obligation, You acknowledge and agree that Rocket.Chat has the right to delete Your Data, including any and all copies thereof. Your Data, once deleted, will not be able to be recovered. Sections 1, 3, 4, 5.3, 6, 8, 9, 10, 11, and 12, shall survive any termination or expiration of this Agreement. + +**6. FEES AND PAYMENT; TAXES.** + +**6.1 Fees and Payment.** All Order Forms placed will be considered final upon acceptance by Rocket.Chat. Fees will be due and payable as set forth on the Order Form, which are attached to and made part of this Agreement. Unless otherwise set forth herein, fees shall be at Rocket.Chat’s then-standard rates at the time of invoice or, if applicable, as set forth in the Order Form. If You fail to pay, Rocket.Chat shall be entitled, at its sole discretion, to (i) suspend the provision of the Services until You fulfill Your pending payment obligations; (ii) charge You an interest rate designated by Rocket.Chat at the time of invoice; and/or (iii) terminate this Agreement and all Order Forms. Unless otherwise stated, all payments made under this Agreement shall be in United States dollars. Fees and payments are non-refundable except to the extent expressly described otherwise. All fees due to Rocket.Chat under these Terms are non-cancellable, and the sums paid are non-refundable and non-creditable, except as otherwise expressly provided in these Terms. + +**6.2 Taxes.** All fees are exclusive of taxes and You shall pay or reimburse Rocket.Chat for all taxes arising out of transactions contemplated by this Agreement. As reasonably requested, You will provide documentation to Rocket.Chat showing that taxes have been paid to the relevant taxing authority. "Taxes" means any sales, VAT, use, and other taxes (other than taxes on Rocket.Chat’s income), export and import fees, customs duties and similar charges imposed by any government or other authority. You hereby confirm that Rocket.Chat can rely on the name and address that You provide to Rocket.Chat when You agree to the fees or in connection with Your payment method as being the place of supply for sales tax and income tax purposes or as being the place of supply for VAT purposes where You have established Your business. + +**7. DATA; PROTECTION OF YOUR DATA.** + +**7.1 Your Data.** You agree that You and Your Users are responsible for maintaining and protecting backups of Your Data directly or indirectly processed using the Services and Software and that Rocket.Chat is not responsible for exportation of, the failure to store, the loss, or the corruption of Your Data. + +You agree that Rocket.Chat and its Affiliates will process configuration, performance, usage, and consumption data about You and Your Users use of the Services and Software to assist with the necessary operation and function of the Services and Software and to improve Rocket.Chat products and Services and Your and Your Users’ experience with Rocket.Chat and its Affiliates pursuant to the Rocket.Chat Privacy Notice, available at[ https://rocket.chat/privacy](https://rocket.chat/privacy). + +**7.2 Protection of Your Data.** Each party shall comply with its respective obligations under applicable data protection laws. Each party shall maintain appropriate administrative, physical, technical and organizational measures that ensure an appropriate level of security for Confidential Information and Personal Data. You are responsible for ensuring that the security of the Services is appropriate for Your intended use and the storage, hosting, or processing of Personal Data. Information on how Rocket.Chat protects personal data is in Rocket.Chat´s [Privacy Policy](https://rocket.chat/privacy). + +**8. CONFIDENTIAL INFORMATION.** + +As used in this Agreement, **"Confidential Information"** means any nonpublic information or materials disclosed by either party to the other party, either directly or indirectly, in writing, orally, or by inspection of tangible objects that the disclosing party clearly identifies as confidential or proprietary. For clarity, Confidential Information includes Personal Data and Rocket.Chat Confidential Information includes the Services, Software, Documentation, and any information or materials relating to the Services, Software (including pricing), or otherwise. Confidential Information may also include confidential or proprietary information disclosed to a disclosing party by a third party. + +The receiving party will: (i) hold the disclosing party’s Confidential Information in confidence and use reasonable care to protect the same; (ii) restrict disclosure of such Confidential Information to those employees or agents with a need to know such information and who are under a duty of confidentiality respecting the protection of Confidential Information substantially similar to those of this Agreement; and (iii) use Confidential Information only for the purposes for which it was disclosed, unless otherwise set forth herein. The restrictions will not apply to Confidential Information, excluding Personal Data, to the extent it (i) is (or through no fault of the recipient, has become) generally available to the public; (ii) was lawfully received by the receiving party from a third party without such restrictions; (iii) was known to the receiving party without such restrictions prior to receipt from the disclosing party; or (iv) was independently developed by the receiving party without breach of this Agreement or access to or use of the Confidential Information. + +The receiving party will return to the disclosing party or destroy all Confidential Information of the disclosing party in the receiving party’s possession or control and permanently erase all electronic copies of such Confidential Information promptly upon the written request of the disclosing party upon the termination of this Agreement. The receiving party will certify in writing signed by an officer of the receiving party that it has fully complied with its obligations under this Section 8. + +The receiving party may disclose Confidential Information to the extent the disclosure is required by law, regulation, or judicial order, provided that the receiving party will provide to the disclosing party prompt notice, where permitted, of such order and will take reasonable steps to contest or limit the steps of any required disclosure. The parties agree that any material breach of Section 3 or this Section 8 will cause irreparable injury and that injunctive relief in a court of competent jurisdiction will be appropriate to prevent an initial or continuing breach of these Sections in addition to any other relief to the applicable party may be entitled. + +**9. DISCLAIMER.** + +THE SERVICES, SOFTWARE, DOCUMENTATION, AND ALL OTHER PRODUCTS AND SERVICES PROVIDED UNDER THE TERMS OF THIS AGREEMENT AND/OR APPLICABLE ORDER FORM, INCLUDING HOSTED SERVICES, ARE PROVIDED ON "AS IS" AND “AS AVAILABLE” BASIS. ROCKET.CHAT DISCLAIMS ALL REPRESENTATIONS AND WARRANTIES OF ANY KIND, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, ACCURACY, RELIABILITY, SECURITY, LOSS OR CORRUPTION OF YOUR DATA, CONTINUITY, OR ABSENCE OF DEFECT RELATING TO THE SERVICES, SOFTWARE, DOCUMENTATION, ANY OTHER PRODUCT OR SERVICES, OR RESULTS OF THE SAME PROVIDED TO YOU UNDER THIS AGREEMENT. ROCKET.CHAT DOES NOT WARRANT THAT THE SPECIFICATIONS OR FUNCTIONS CONTAINED IN THE SERVICES OR SOFTWARE WILL MEET YOUR REQUIREMENTS OR THAT DEFECTS IN THE SERVICES OR SOFTWARE WILL BE CORRECTED. + +EACH PARTY SPECIFICALLY DISCLAIMS RESPONSIBILITY OF THIRD-PARTY PRODUCTS AND SERVICES WITH WHICH YOU MAY UTILIZE THE SERVICES AND SOFTWARE, AND EACH PARTY SPECIFICALLY DISCLAIMS AND WAIVES ANY RIGHTS AND CLAIMS AGAINST THE OTHER PARTY WITH RESPECT TO SUCH THIRD PARTY PRODUCTS AND SERVICES. + +**10. INDEMNIFICATION.** + +**10.1 Rocket.Chat Indemnification.** Rocket.Chat will indemnify, defend, and hold You harmless from any third party claim brought against You that the Services, as provided by Rocket.Chat, infringe or misappropriate any U.S. patent, copyright, trademark, trade secret, or other intellectual property rights of a third party, provided (i) use of the Services by You is in conformity with the Agreement and Documentation; (ii) the infringement is not caused by modification or alteration of the Services; and/or (iii) the infringement was not caused by a combination or use of the Services with products not supplied by Rocket.Chat. Rocket.Chat’s indemnification obligations are contingent upon You: (i) promptly notifying Rocket.Chat in writing of the claim; (ii) granting Rocket.Chat sole control of the selection of counsel, defense, and settlement of the claim; and (iii) providing Rocket.Chat with reasonable assistance, information, and authority required for the defense and settlement of the claim. This Section states Rocket.Chat’s entire liability (and shall be Your sole and exclusive remedy) with respect to indemnification to You. + +**10.2 Your Indemnification.** You agree to indemnify, defend, and hold harmless Rocket.Chat and its Affiliates, and its directors, employees, and agents from and against any claims arising out of or due to: (i) Your Data; (ii) Your (or Your User’s) breach of this Agreement; (iii) Your (or Your User’s) use of the Services, Software, or Documentation in violation of third party rights, including any intellectual property or privacy rights, or any applicable laws; or (iv) Your (or Your User’s) misuse of the Services, Software, or Documentation. + +**11. LIMITATION OF LIABILITY.** + +TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, (I) IN NO EVENT WILL ROCKET.CHAT AND ITS AFFILIATES, DIRECTORS, EMPLOYEES, OR AGENTS HAVE ANY LIABILITY, CONTINGENT OR OTHERWISE, FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE, STATUTORY OR EXEMPLARY DAMAGES ARISING OUT OF OR RELATING TO THIS AGREEMENT, THE SERVICES, SOFTWARE, DOCUMENTATION, OR ANY OTHER PRODUCTS OR SERVICES PROVIDED HEREUNDER, INCLUDING, BUT NOT LIMITED TO LOST PROFITS, LOST OR CORRUPTED DATA, LOSS OF GOODWILL, WORK STOPPAGE, EQUIPMENT FAILURE OR MALFUNCTION, PROPERTY DAMAGE OR ANY OTHER DAMAGES OR LOSSES, EVEN IF A PARTY HAS BEEN ADVISED OF THE POSSIBILITY THEREOF, AND REGARDLESS OF THE LEGAL OR EQUITABLE THEORY (CONTRACT, TORT, STATUTE, INDEMNITY OR OTHERWISE) UPON WHICH ANY SUCH LIABILITY IS BASED; AND (II) THE AGGREGATE LIABILITY OF ROCKET.CHAT AND ITS AFFILIATES, DIRECTORS, EMPLOYEES, AND AGENTS, AND THE SOLE REMEDY AVAILABLE TO YOU ARISING OUT OF OR RELATING TO THIS AGREEMENT, THE SERVICES, SOFTWARE, OR ANY PRODUCTS OR SERVICES PROVIDED HEREUNDER SHALL BE LIMITED TO TERMINATION OF THIS AGREEMENT AND DAMAGES NOT TO EXCEED THE TOTAL AMOUNT PAYABLE OR PAID TO ROCKET.CHAT BY YOU UNDER THIS AGREEMENT DURING THE TWELVE (12) MONTHS PRIOR TO TERMINATION. + +**12. GENERAL.** + +**12.1 Notices.** All notices must be in writing and shall be mailed by registered or certified mail to Rocket.Chat Technologies Corp., 251 Little Falls Drive, Wilmington, DE, 19808, or sent via email to legal@rocket.chat (with evidence of the effective transmission). + +**12.2 Entire Agreement.** This Agreement and the exhibits and attachments hereto constitute the entire agreement between the parties relating to the Services, Software, and Documentation provided hereunder and supersedes all prior or contemporaneous communications, agreements, and understandings, written or oral, with respect to the subject matter hereof. If other Rocket.Chat terms or conditions conflict with this Agreement, this Agreement shall prevail and control with respect to the Services, Software, and Documentation provided hereunder. In addition, any and all additional or conflicting terms provided by You, whether in a purchase order, an alternative license, or otherwise, shall be void and shall have no effect. + +**12.3 Export Control Laws.** The Services, Software, and Documentation delivered to You under this Agreement are subject to export control laws and regulations and may also be subject to import and export laws of the jurisdiction in which it was accessed, used, or obtained, if outside those jurisdictions. You shall abide by all applicable export control laws, rules, and regulations applicable to the Services, Software, and Documentation. You agree that You are not located in or are not under the control of or a resident of any country, person, or entity prohibited to receive the Services, Software, or Documentation due to export restrictions and that You will not export, re-export, transfer, or permit the use of the Services, Software, or Documentation, in whole or in part, to or in any of such countries or to any of such persons or entities. + +**12.4 Modifications.** Unless as otherwise set forth herein, this Agreement shall not be amended or modified by You except in writing signed by authorized representatives of each party. + +**12.5 Severability.** If any provision of this Agreement is held to be unenforceable, illegal, or void, that shall not affect the enforceability of the remaining provisions. The parties further agree that the unenforceable provision(s) shall be deemed replaced by a provision(s) that is binding and enforceable and that differs as little as possible from the unenforceable provision(s), with considerations of the object and purpose of this Agreement. + +**12.6 Waiver.** The delay or failure of either party to exercise any right provided in this Agreement shall not be deemed a waiver of that right. + +**12.7 Force Majeure.** Rocket.Chat will not be liable for any delay or failure to perform obligations under this Agreement due to any cause beyond its reasonable control, including acts of God; labor disputes; industrial disturbances; systematic electrical, telecommunications or other utility failures; earthquakes, storms, or other elements of nature; blockages; embargoes; riots; acts or orders of government; acts of terrorism; pandemics, public health crisis and war. + +**12.8 Construction.** Paragraph headings are for convenience and shall have no effect on interpretation. + +#### **12.9 Governing Law; Venue; Waiver of Jury Trial; Fees** + +\ +**Governing Law.** Any dispute, controversy, or claim arising out of or in connection with these Terms shall be sought settled through negotiations in good faith. This Agreement and any disputes arising out of or related to this Agreement shall be governed by and construed in accordance with applicable law as outlined in Section, without regard to any conflict of law provisions. The terms of the United Nations Convention on Contracts for the Sale of Goods do not apply to these Terms. The Uniform Computer Information Transactions Act (UCITA) will not apply to these Terms regardless of when or where adopted. + +**Applicable Law.** All references to Rocket.Chat,’ ‘we,’ or ‘us’ under the Contract, what law will apply in any dispute or lawsuit arising out of or in connection with the Contract, and which courts have jurisdiction over any such dispute or lawsuit, depending on where Customer is domiciled. + + + +| **Domicile** | **Rocket.Chat Contract Entity** | **Governing Law** | **Venue** | +| --------------------------------- | ------------------------------- | ----------------------- | ------------------------------- | +| United States and other Countries | Rocketchat Technologies Corp. | Delaware, United States | Delaware, United States | +| Brazil | Rocketchat Tecnologia LTDA | Brazil | Porto Alegre, Rio Grande do Sul | + + + +The Agreement and any disputes arising out of or related hereto will be governed exclusively by the applicable governing law above. The courts located in the applicable venue above will have exclusive jurisdiction to adjudicate any dispute arising out of or relating to the Agreement or its formation, interpretation, or enforcement. Each party hereby consents and submits to the exclusive jurisdiction of such courts. + +**Attorneys’ Fees.** If any legal action or other proceeding is brought to enforce the provisions of this Agreement, the prevailing party shall be entitled to recover reasonable attorney fees and other costs incurred in the action or proceeding, in addition to any other relief to which the prevailing party may be entitled. + +**Dispute Resolution.** In the event of any controversy or claim arising out of or relating to these Terms, the parties will consult and negotiate with each other and, recognizing their mutual interests, attempt to reach a solution satisfactory to both parties. If the parties do not reach a settlement within a period of sixty (60) days, either party may pursue relief as may be available under these Terms pursuant to Governing Law and Jurisdiction Sections. All negotiations pursuant to this Section will be confidential and treated as compromise and settlement negotiations for purposes of all rules and codes of evidence of applicable legislation and jurisdictions. + +**Injunctive Relief; Enforcement.** Notwithstanding the provisions of Dispute Resolution and Governing Law Sections, nothing in these Terms will prevent us from seeking injunctive relief with respect to a violation of intellectual property rights, confidentiality obligations, or enforcement or recognition of any award or order in any appropriate jurisdiction. + +**Language.** If this Agreement is translated into a language other than English and there are conflicts between the translations of this Agreement, you agree that the English version of this Agreement shall prevail and control. + +**12.10 Third Party Rights.** Other than as expressly provided herein, this Agreement does not create any rights for any person who is not a party to it, and no person not a party to this Agreement may enforce any of its terms or rely on an exclusion or limitation contained in it. + +**12.11 Relationship of the Parties.** The parties are independent contractors. This Agreement does not create a partnership, franchise, joint venture, agency, fiduciary, or employment relationship between the parties. diff --git a/rocket.chat-legal/server-lookup.md b/rocket.chat-legal/server-lookup.md new file mode 100644 index 0000000000..83b65f5a69 --- /dev/null +++ b/rocket.chat-legal/server-lookup.md @@ -0,0 +1,7 @@ +# Server Lookup + +Rocket.Chat is open source software and can be installed by everyone. + +To find out if a Rocket.Chat server is hosted by us or by a third party (e.g. if you want to contact the server administrator), use this lookup form: + +[https://rocket.chat/server-lookup](https://rocket.chat/server-lookup) diff --git a/rocket.chat-legal/terms-of-service.md b/rocket.chat-legal/terms-of-service.md new file mode 100644 index 0000000000..98e7d99e29 --- /dev/null +++ b/rocket.chat-legal/terms-of-service.md @@ -0,0 +1,172 @@ +# Terms of Service + +_Effective date: May 4th, 2021_ + +These Customer Terms of Service (the “Customer Terms”) describe your rights and responsibilities pertaining to Rocket.Chat Services (the "Services"), such as Rocket.Chat Cloud Hosting, Support Plans, Marketplace, or any other services we may provide to you, the customer. Some sections of these Customer Terms only apply to specific Services, as indicated by the headings of the respective paragraph. These Customer Terms **do not** apply to on-premises installation of Rocket.Chat. Please read the Customer Terms carefully and **note that these Customer Terms include auto-renewal provisions and may limit your rights and liabilities.** + +“Rocket.Chat,” “we,” “us,” or “our” means Rocket.Chat Technologies Corp. “Customer”, “you” or “your” means the Customer indicated below, including its users, as applicable. + +**Legal Binding** + +These Customer Terms form a part of a binding "Contract" between Customer and Rocket.Chat, and apply to any Services you order, subscribe to, activate, or use. + +"Customer" is the organization that you represent in agreeing to the Contract. If your Instance is being set up by someone who is not formally affiliated with or employed by an organization, Customer is the individual creating the Instance. When you create an Instance, invite users, or use or allow use of that Instance after being notified of a change to these Customer Terms, you acknowledge your understanding of the then-current Contract and agree to the Contract on behalf of Customer. Please make sure you have the necessary authority to enter into the Contract on behalf of Customer before proceeding, and you represent and warrant that you do. + +**Customer Data** + +When a Customer or any of its users submit content or information to the Services, such as messages or files (“User Data”), the Customer retains ownership of any intellectual property rights in that content. + +With regards to Services operated directly by Rocket.Chat: + +Customer hereby grants Rocket.Chat a worldwide license to use, host, store, reproduce, modify, create derivative works (e.g. as translations, adaptations or other changes we make so that the content in question works better with the Services), communicate, publish, perform, display and distribute User Data. Customer also represents and warrants it has the right to grant this license and has obtained any necessary consent from users and third parties regarding such User Data. The rights granted in this license are for the limited purpose of providing, operating and improving the Services, and to develop new ones. (For a more thorough description of the limited purposes we use personal data, please refer to our Privacy Policy.) This license does not expire even if you stop using the Services (for example, so that Rocket.Chat can deliver a message that you sent to another user before you stopped using our Services). If a user employs the Services to share content with others, anyone that user has shared content with (including the general public, in certain circumstances) may have access to the content, depending on the channels and the way the content was shared. + +Rocket.Chat may provision or deprovision access to the Services, set the version of the Service and update the Service, enable or disable third party integrations, manage permissions, retention and export settings, transfer or assign workspaces, share channels, or consolidate this workspace or channels with other workspaces or channels, and these choices and instructions may result in the access, use, disclosure, modification or deletion of certain or all User Data.You may access, import, and export all your User Data, including private channels and direct messages through your account preferences panel. You may also request that your account is deleted, together with all the messages you have previously sent and your personal information, such as names and email addresses. + +**Legal Age** + +You (in case of a natural person) represent that you are over the legal age. You may not sign-up, access or use the Services for any purpose if the preceding sentence is not true. Without limiting the foregoing, you must be of legal working age. + +Your Users may be above or under the legal age, as per Your determination. You are responsible to comply with applicable laws regarding the minimum age for Your Users , depending on the context you allow them to access or use the Services. + +**Duties and Unacceptable Conduct** + +You agree to abide by the following list of duties and unacceptable conduct for our Services. If we believe a violation of the policy is deliberate, repeated or presents a credible risk of harm to other users, our customers, the Services or any third parties, we may suspend or terminate your access. + +You must: + +* comply with all applicable laws and governmental regulations, including, but not limited to, all intellectual property, data, privacy, and export control laws, and regulations promulgated by any government agencies; +* upload and disseminate only Customer Data to which you own or have all required rights under law and under contractual and fiduciary relationships (such as proprietary and confidential information learned or disclosed as part of employment relationships or under nondisclosure agreements) and do so only consistent with applicable law; +* keep passwords and all other login information confidential; +* monitor and control all activity conducted through your account in connection with the Services; +* use the proper functions that come with your account to interact with your workspace and subscription (e.g. renewal and cancellation of workspace), or - in emergency case these are not available to you - you must properly identify yourself to us before we can make these changes for you. We cannot make these changes just by receiving an email alone. +* promptly notify us if you become aware of or reasonably suspect any illegal or unauthorized activity or a security breach involving your accounts, including any loss, theft, or unauthorized disclosure or use of a username, password, or account; and +* comply in all respects with all applicable terms of the third party applications that you access or subscribe to in connection with the Services. + +You may not: + +* share, transfer or otherwise provide access to an account designated for you to another person; +* use the Services to store or transmit any Customer Data that may infringe upon or misappropriate someone else's trademark, copyright, or other intellectual property, or that may be tortious or unlawful; +* upload to, or transmit from, the Services any data, file, software, or link that contains or redirects to a virus, Trojan horse, worm, or other harmful component or a technology that unlawfully accesses or downloads content or information stored within the Services or on the hardware of Rocket.Chat or any third party; +* attempt to reverse engineer, decompile, hack, disable, interfere with, modify, or disrupt the features, functionality, integrity, or performance of the Services (including any mechanism used to restrict or control the functionality of the Services), any third party use of the Services, or any third party data contained therein (except to the extent such restrictions are prohibited by applicable law); +* attempt to gain unauthorized access to the Services or related systems or networks or to defeat, avoid, bypass, remove, deactivate, or otherwise circumvent any software protection or monitoring mechanisms of the Services; +* use the Services in any manner that may harm minors or that interacts with or targets people under the age of thirteen; +* impersonate any person or entity, including, but not limited to, an employee of ours, an “Administrator”, an “Owner”, or any other User, or falsely state or otherwise misrepresent your affiliation with a person, organization or entity; +* use the Services to provide material support or resources (or to conceal or disguise the nature, location, source, or ownership of material support or resources) to any organization(s) designated by the United States government as a foreign terrorist organization pursuant to section 219 of the Immigration and Nationality Act or other laws and regulations concerning national security, defense or terrorism; +* access, search, or create accounts for the Services by any means other than our publicly supported interfaces (for example, "scraping" or creating accounts in bulk); +* send unsolicited communications, promotions or advertisements, or spam; +* place any advertisements within a Rocket.Chat client; +* send altered, deceptive or false source-identifying information, including "spoofing" or "phishing"; +* use contact or other user information obtained from the Services (including email addresses) to contact Users outside of the Services without their express permission or authority or to create or distribute mailing lists or other collections of contact or user profile information for Users for use outside of the Services; or +* authorize, permit, enable, induce or encourage any third party to do any of the above. + +**API Fair Use** Many of our services work via API calls managed under a central infrastructure of us. You may not place excessive API calls or otherwise deliberately try to overburden this API system. We may throttle your use of the APIs in case we deem it necessary to facilitate an overall acceptable service level across our infrastructure (e.g. such as in the case of continued, excessive API usage). We may monitor use of the APIs for compliance with these rules, and we may deny you access to the API or shut down your Integration if you try to go around or break the policies we set. If your Order Form includes a defined API limit or minimum, then the Order Form controls. + +**Supported and running versions** + +To provide you the Services in a consistent and secure manner, we regularly update our Services and only support the Rocket.Chat versions, that are within their support period as stated in our [support policy.](https://docs.rocket.chat/getting-support) Specifically for our Cloud Hosting, we automatically upgrade Rocket.Chat servers to stay within the supported version range and do not provide versions, that are beyond their End of Life term. + +**Limitation of Liability** + +If we believe that there is a violation of the Customer Terms or any of our other policies that can simply be remedied by removal of certain Customer Data or taking other action, we may directly step in and take what we determine to be appropriate action (including disabling your account) if we believe there is a credible risk of harm to us, the Services, Users, or any third parties, including Vendors and Third Party Apps. To the maximum extent permitted by law, Rocket.Chat offers the Services and Products “AS IS” and “AS AVAILABLE”, and Rocket.Chat hereby disclaims all warranties, whether express, implied or statutory, including but not limited to any implied warranties of title, non-infringement, merchantability or fitness for a particular purpose. You may have other statutory rights, in which case the duration of any statutory warranties will be limited to the maximum extent permitted by law. IN NO EVENT WILL WE HAVE ANY LIABILITY FOR ANY LOST PROFITS OR REVENUES OR FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, COVER OR PUNITIVE DAMAGES HOWEVER CAUSED, WHETHER IN CONTRACT, TORT OR UNDER ANY OTHER THEORY OF LIABILITY, AND WHETHER OR NOT YOU HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. OUR MAXIMUM AGGREGATE LIABILITY FOR ANY BREACH OR IN CONNECTION WITH THIS AGREEMENT OR ANY SERVICE IS ONE HUNDRED DOLLARS ($100) IN THE AGGREGATE OR THE AMOUNT YOU PAID US DURING THE PRIOR 12 MONTHS. THE FOREGOING DISCLAIMERS WILL NOT APPLY TO THE EXTENT PROHIBITED BY APPLICABLE LAW AND DO NOT LIMIT EITHER PARTY’S RIGHT TO SEEK AND OBTAIN EQUITABLE RELIEF. + +#### Payment; Fees + +All fees due to Rocket.Chat under these Terms are non-cancellable, and the sums paid are non-refundable and non-creditable, except as otherwise expressly provided in these Terms. + +### **General Provisions** + +**Email and Rocket.Chat Messages** + +Except as otherwise set forth herein, all notices under the Customer Terms will be by email, although we may instead choose to provide notice to Customers through the Services (e.g., a bot notification). Notices to Rocket.Chat should be sent to contact@rocket.chat. A notice will be deemed to have been duly given (a) the day after it is sent, in the case of a notice sent through email; and (b) the same day, in the case of a notice sent through the Services. + +**TERM; TERMINATION.** + +**Term.** + +When Customer orders, activates, subscribes to, or uses any Services, such Services will be subject to an initial subscription term or period (the “Initial Subscription Period”) and any renewal terms or periods applicable thereto (collectively, the “Subscription Period” or “Order Term”); unless expressly provided otherwise, the Initial Subscription Period is 12 months from the initial order, activation, subscription, or use date and automatically renews for successive 12 month periods thereafter, unless terminated or not renewed in accordance with these Customer Terms. **If you do not want to renew, you must following our non-renewal processes and stop using the applicable Services.** + +These Customer Terms will begin on the Effective Date and will continue thereafter so long as one or more Subscription Period(s) remain in effect or until terminated by either party as outlined in this Section (the "**Term**"). + +**Termination Rights**. + +**a. Renewal.** Unless a party gives written notice of non-renewal or termination at least thirty (30) days prior to the expiration of the relevant Term, this Agreement will automatically renew for a period equal to the previous Term. Any Fees for a renewed Term are due upon the date of renewal. + +**b. For Cause.** Either party may terminate this Agreement and any Order Forms immediately upon 30 days’ written notice to the other party in the event of any material breach of this Agreement (including without limitation, any failure to pay any amounts when due hereunder, your failure to comply with restrictions under this Agreement, including those set out in Section 3) by such party where such material breach is not cured during such notice period. Either party may also terminate this Agreement and all Order Forms, without notice, (i) upon the institution by or against the other party of insolvency, receivership or bankruptcy proceedings (provided such proceedings are not dismissed within one hundred twenty (120) days of such institution), (ii) upon the other party's making an assignment for the benefit of creditors, or (iii) upon the other party's dissolution or ceasing to do business without a successor. + +**c. Vendors and Third Party Apps:** Where Rocket.Chat relies on Vendors or Third Party Apps (as defined below) to provide a Service or any function or feature relating to our Services (e.g. Apple for Apple Business Chat integrations), Rocket.Chat reserves the right to change, suspend, limit, or discontinue your use of the Services, function, or feature at any time (i) if the Vendor revokes the status of Rocket.Chat as an intermediary to provide You such Service, function, or feature; or (ii) at the request of the Vendor, such requests being at the discretion of the Vendor, without notice or liability. + +**Effect of Termination or Expiration**. Termination or expiration shall not relieve You of the obligation to pay any fees or other amounts accrued or payable to Rocket.Chat including fees for the remainder of the Subscription Period(s) after an earlier termination. If Rocket.Chat terminates for cause, Customer will immediately pay all amounts due and payable for the remainder of the Subscription Period(s) without limiting Rocket.Chat’s other rights and remedies. Without prejudice to any other rights, upon termination, You must cease all use of the Services, Software, and Documentation and destroy or return (upon request by Rocket.Chat) all copies of the Services, Software, and Documentation. You further acknowledge and agree that You will retrieve Your User Data or copies of Your User Data from Rocket.Chat within thirty (30) business days of the termination or expiration of these Customer Terms. Unless in accordance with our internal policies, contractual, legal, or other obligation, You acknowledge and agree that Rocket.Chat has the right to delete Your User Data, including any and all copies thereof. Your User Data, once deleted, will not be able to be recovered. + +**Privacy Policy** + +Please review our Privacy Policy for more information on how we collect and use data relating to the use and performance of our products and services. + +**Modifications** + +As our business evolves, we may change these Customer Terms. If we make a material change to the Customer Terms, we will provide you with reasonable notice prior to the change taking effect either by emailing the email address associated with your account or by messaging you through the Services. You can review the most current version of the Customer Terms at any time by visiting this page. Any material revisions to these Customer Terms will become effective on the date set forth in our notice, and all other changes will become effective on the date we publish the change. If you use the Services after the effective date of any changes, that use will constitute your acceptance of the revised terms and conditions. + +**Waiver** + +No failure or delay by either party in exercising any right under the Customer Terms will constitute a waiver of that right. No waiver under the Customer Terms will be effective unless made in writing and signed by an authorized representative of the party being deemed to have granted the waiver. + +**Severability** + +The Customer Terms will be enforced to the fullest extent permitted under applicable law. If any provision of the Customer Terms is held by a court of competent jurisdiction to be contrary to law, the provision will be modified by the court and interpreted so as best to accomplish the objectives of the original provision to the fullest extent permitted by law, and the remaining provisions of the Customer Terms will remain in effect. + +**Assignment** + +You may not assign any of your rights or delegate your obligations under these Customer Terms, whether by operation of law or otherwise, without the prior written consent of us (not to be unreasonably withheld). We may assign these Customer Terms in their entirety (including all terms and conditions incorporated herein by reference), without your consent, to a corporate affiliate or in connection with a merger, acquisition, corporate reorganization, or sale of all or substantially all of our assets. + +### **Governing Law; Venue; Waiver of Jury Trial; Fees** + +\ +**Governing Law.** Any dispute, controversy, or claim arising out of or in connection with these Terms shall be sought settled through negotiations in good faith. This Agreement and any disputes arising out of or related to this Agreement shall be governed by and construed in accordance with applicable law as outlined in Section, without regard to any conflict of law provisions. The terms of the United Nations Convention on Contracts for the Sale of Goods do not apply to these Terms. The Uniform Computer Information Transactions Act (UCITA) will not apply to these Terms regardless of when or where adopted. + +**Applicable Law.** All references to Rocket.Chat,’ ‘we,’ or ‘us’ under the Contract, what law will apply in any dispute or lawsuit arising out of or in connection with the Contract, and which courts have jurisdiction over any such dispute or lawsuit, depending on where Customer is domiciled. + + + +| **Domicile** | **Rocket.Chat Contract Entity** | **Governing Law** | **Venue** | +| --------------------------------- | ------------------------------- | ----------------------- | ------------------------------- | +| United States and other Countries | Rocketchat Technologies Corp. | Delaware, United States | Delaware, United States | +| Brazil | Rocketchat Tecnologia LTDA | Brazil | Porto Alegre, Rio Grande do Sul | + + + +The Agreement, and any disputes arising out of or related hereto will be governed exclusively by the applicable governing law above. The courts located in the applicable venue above will have exclusive jurisdiction to adjudicate any dispute arising out of or relating to the Agreement or its formation, interpretation, or enforcement. Each party hereby consents and submits to the exclusive jurisdiction of such courts. + +**Attorneys’ Fees.** If any legal action or other proceeding is brought to enforce the provisions of this Agreement, the prevailing party shall be entitled to recover reasonable attorney fees and other costs incurred in the action or proceeding, in addition to any other relief to which the prevailing party may be entitled. + +**Dispute Resolution.** In the event of any controversy or claim arising out of or relating to these Terms, the parties will consult and negotiate with each other and, recognizing their mutual interests, attempt to reach a solution satisfactory to both parties. If the parties do not reach a settlement within a period of sixty (60) days, either party may pursue relief as may be available under these Terms pursuant to Governing Law and Jurisdiction Sections. All negotiations pursuant to this Section will be confidential and treated as compromise and settlement negotiations for purposes of all rules and codes of evidence of applicable legislation and jurisdictions. + +**Injunctive Relief; Enforcement.** Notwithstanding the provisions of Dispute Resolution and Governing Law Sections, nothing in these Terms will prevent us from seeking injunctive relief with respect to a violation of intellectual property rights, confidentiality obligations, or enforcement or recognition of any award or order in any appropriate jurisdiction. + +**Language.** If this Agreement is translated into a language other than English and there are conflicts between the translations of this Agreement, you agree that the English version of this Agreement shall prevail and control. + +\ +**Rocket.Chat Marketplace; Specific Provisions** Rocket.Chat Marketplace is an online marketplace for plugins, addons and extensions ("Apps") that work with Rocket.Chat´s products. The following sections govern specific provisions regarding the Marketplace in the context of these Customer Terms. + +_**App Listing**_ The listing for each App will identify the provider of the App (“Vendor”), which may be Rocket.Chat or a third party. Apps for which Rocket.Chat is the Vendor are "Rocket.Chat Apps,” and Apps for which the Vendor is a third party are “Third Party Apps”. + +_**Orders**_ You can place Orders on the Marketplace. Your Order will identify the Vendor, your authorized scope of use of the App and license or subscription term, as applicable. For any Third Party App, you agree that Rocket.Chat is the Vendor’s commercial agent and that you are required to make any related payments directly to Rocket.Chat, except where Third Party Apps may be enabled or paid for through a third party Vendor’s own website and this is indicated in the App listing. Once you complete your Order, Rocket.Chat will provide you with access to the applicable Apps. Apps are provided on a license or subscription basis and you do not acquire any ownership rights in the Marketplace or the Apps. You may terminate your Order of an App under these Terms, for no reason or any reason, by providing notice of termination to us no later than fourteen (14) days after the Order date for such App. In the event you terminate your initial Order, we will refund you the amount paid under the Order for that App. This termination and refund right applies only to your initial Order of the App and only if you exercise your termination right within the period specified above, and does not apply to Additional Services or anything else. The Marketplace may also offer free trial periods for Apps. After expiration of the trial period, if you do not place an Order for the App, the App will cease to function and you must cease using and delete your copies of the App. + +_**Usage of Apps**_ Without limiting the disclaimers, restrictions or other provisions in these Terms of Use, usage of Apps is subject to license or subscription terms, privacy policies and other applicable terms specified by the Vendor (“Vendor Terms”). Vendor Terms are typically included on the App’s listing page or presented through the Order process. You may not use an App if you do not agree to the relevant Vendor Terms.\ +Third Party Apps are subject to the third party’s Vendor Terms, not Rocket.Chat Terms. By ordering, installing or enabling any Third Party App, you are entering into the Vendor Terms directly with the applicable third party Vendor. Any support and maintenance of Third Party Apps will be provided by the applicable Vendor to the extent described in the applicable Vendor Terms. + +_**Access to Data**_ If you place an Order for Apps, you authorize Vendors to access or use certain data in the applicable Rocket.Chat Products. This may include transmitting, transferring, modifying or deleting such data, or storing such data on Vendor or third party systems. For Rocket.Chat Apps, this access and use is covered by our privacy policy. Any third party Vendor’s use of accessed data (whether data in the Rocket.Chat Products or separately collected from you or your device) is subject to the applicable Vendor Terms. You are solely responsible for your decision to permit any third party Vendor or Third Party App to access or use data to which you’ve granted access. It is your responsibility to carefully review the Vendor Terms, as provided by the applicable third party Vendor. + +**Notice Regarding Apple as a Third Party Vendor.** You agree to be bound by the then-current Apple Business Register Terms of Use as found on Apple’s website: [https://register.apple.com/tou/abr/latest/en](https://register.apple.com/tou/abr/latest/en) if you order, access, or use the applicable Apple services, functions, or features described therein in connection with Rocket.Chat Services. In addition, you acknowledge that these Terms are between You and Rocket.Chat only, not with Apple Inc. (“Apple”), and Apple is not responsible for the Services or the content thereof. Apple has no obligation to furnish any maintenance and support services with respect to the Services we provide you. To the maximum extent permitted by applicable law, Apple has no warranty obligations with respect to the Services. Apple is not responsible for addressing any claims by You or any third party relating to the Services or your possession and/or use of the Services, including: (a) product liability claims; (b) any claim that the Services fail to conform to any applicable legal or regulatory requirement; or (c) claims arising under consumer protection or similar legislation. Apple is not responsible for the investigation, defense, settlement and discharge of any third party claim that the Services and/or Your possession and use of the Services infringe a third party’s intellectual property rights. Apple and Apple’s subsidiaries are third party beneficiaries of these Terms, and upon Your acceptance of these Terms, Apple will have the right (and will be deemed to have accepted the right) to enforce these Terms against You as a third party beneficiary of these Terms. You agree to comply with any applicable third party terms when using the Services. You hereby represent and warrant that: (i) You are not located in a country that is subject to a U.S. Government embargo, or that has been designated by the U.S. Government as a “terrorist supporting” country; and (ii) You are not listed on any U.S. Government list of prohibited or restricted parties. At all times any personal information collected through use of the Services will be treated in accordance with Apple's Privacy Policy which can be viewed at: [http://www.apple.com/legal/privacy/](http://www.apple.com/legal/privacy/). + +_**Responsibilities**_ You represent and warrant that you have all necessary authority to enter into and be legally bound by these Customer Terms, Vendor Terms, to place any Orders and to authorize Vendors to access and use your data and information. + +_**Marketplace Disclaimers and Liability**_ Third party Vendors are solely responsible for their Apps and any related content or materials included in their Apps. Rocket.Chat has no liability or responsibility whatsoever for any Third Party Apps, even if Rocket.Chat has reviewed, certified, or approved the Third Party App. Any use of Third Party Apps is at your sole discretion and risk. Vendors are solely responsible for the information they provide. At any time, Rocket.Chat may remove an App from the Marketplace in accordance with applicable policies, and Vendors may also update, modify or remove their own Apps at any time. Rocket.Chat makes no guarantee that any Apps will work properly with Rocket.Chat Products as they change over time. + +**Entire Agreement** + +The Customer Terms, including any terms, subscriptions, or order forms incorporated by reference into the Customer Terms, constitute the entire agreement between you and us and supersede all prior and contemporaneous agreements, proposals or representations, written or oral, concerning its subject matter. To the extent of any conflict or inconsistency between the provisions in these Customer Terms and any pages referenced in these Customer Terms, the terms of these Customer Terms will first prevail, followed by the pages referenced in these Customer Terms (e.g., the Privacy Policy). + +**Contacting Rocket.Chat** + +Please also feel free to contact us if you have any questions about Rocket.Chat’s Customer Terms. You may contact us at contact@rocket.chat or at our mailing address below: + +Rocket.Chat Technologies Corp. 251 Little Falls Rd Wilmington, DE, 19808 USA diff --git a/rocket.chat-privacy-and-security/data-processing-agreement.md b/rocket.chat-privacy-and-security/data-processing-agreement.md new file mode 100644 index 0000000000..833ce8360e --- /dev/null +++ b/rocket.chat-privacy-and-security/data-processing-agreement.md @@ -0,0 +1,25 @@ +# Data Processing Agreement + +Are you a Rocket.Chat customer and looking for a GDPR-compliant **Data Processing Agreement (DPA)**? + +You can find one here: [Link to Data Processing Agreement Signature Form](https://sign.zoho.com/signform?form\_link=234b4d535f49562358c5ef244fe89e6ae2d8fdb86e695c36b7c86b7756fe6b391304c2d25f1f02b94c622ec59e9df9003ee0724f2f8d49d0d2437ba15135d8f2d9791f88d48dd7e4) + +It is **pre-signed** and only needs to be signed from your end for your compliance purposes. It contains EU standard contract clauses as a data transfer mechanism for data controllers subject to EU law. Keep in mind that our privacy policy is already part of any customer agreement and therefore already is deemed sufficient by most jurisdictions as a "contractual agreement" to prescribe our processing of personal data. + +The DPA covers our hosted offering. The DPA can also cover cases of customers, that run a **self-managed instance** of Rocket.Chat, but **connect to Rocket.Chat services** such as the push notification gateway or the marketplace. For this, you generally need to **register your server.** In these cases, personal data is processed by us to provide you with these services and you might be required by the applicable laws to have a DPA in place. Our DPA is flexible enough to cover for these cases as well. + +_Info: The DPA is not valid for individual Rocket.Chat users (individual persons). For them, only the privacy policy of their Rocket.Chat workspace (provided by the data controller) applies. This DPA also does not cover processing of third-party apps from our marketplace (beyond us providing the capability to consume such apps) and in case of multiple DPAs being submitted, only the most recent version applies._ + +
+ +How does it work? + +1. Click the link to request your copy. Enter your email-address and you will receive an authentication code to your email. +2. Enter your authentication code and accept the ZOHO Sign Terms and Conditions for Electronic Signature. +3. Fill out the remaining fields, such as company name and address. Check optional fields and enter additional information into the text boxes. Keep in mind that excluding certain types of personal data but effectively entering them into our services does not preclude us from processing such data. You can forward the document to be signed by someone else, by using the function within ZOHO Sign. +4. Once all mandatory fields are filled out, click "finish". +5. Choose your delivery method (download a copy or send via email). A copy of the DPA with your signature will be mailed to us automatically. + +
+ +For questions, contact [privacy@rocket.chat](mailto:privacy@rocket.chat) diff --git a/rocket.chat-privacy-and-security/gdpr.md b/rocket.chat-privacy-and-security/gdpr.md new file mode 100644 index 0000000000..cfecbd6856 --- /dev/null +++ b/rocket.chat-privacy-and-security/gdpr.md @@ -0,0 +1,53 @@ +# GDPR + +_Effective date: May 22, 2018_ + +## Rocket.Chat is GDPR compliant + +Rocket.Chat has implemented various updates and changes to its codebase in preparation for GDPR enforcement on May 25th 2018. + +A summary of Rocket.Chat's overall GDPR readiness strategy for this project can be found below: + +[#9769](https://github.com/RocketChat/Rocket.Chat/issues/9769) + +Our public statement can also be found on [GitHub](https://github.com/RocketChat/Rocket.Chat/issues/10823). + +The following are some of the more recent GDPR updates that are now part of the core codebase: + +## Right of Access + +[#9767](https://github.com/RocketChat/Rocket.Chat/issues/9767) (implemented [#9906](https://github.com/RocketChat/Rocket.Chat/pull/9906)) + +## Right to be forgotten/erased + +[#9766](https://github.com/RocketChat/Rocket.Chat/issues/9766) (implemented [#9947](https://github.com/RocketChat/Rocket.Chat/pull/9947)) + +## Data Portability + +[#9768](https://github.com/RocketChat/Rocket.Chat/issues/9768) (implemented in [#9906](https://github.com/RocketChat/Rocket.Chat/pull/9906)) + +## Other rights + +Other rights for the data subjects are either covered by features already built into our codebase, or outside the scope of the open source software project, including: + +### Right to Rectification + +The codebase can be configured to support user modification/correction/rectification of any data supplied (entered) by the user. + +### Right to restriction of processing + +This is outside the scope of the open source software project, and is up to the controller ( administrator / deployer / operator of the the server system) to enforce. + +### Right to Object + +This is outside the scope of the open source software project, and is up to the controller ( administrator / deployer / operator of the server system) to enforce. + +## Community compliance + +The above will allow our community members to build and deploy GDPR compliant systems and services. We know and understand that all of you have custom installation, configuration and deployment environments and that you are working to ensure your own deployment of Rocket.Chat is compliant with GDPR if necessary. + +Meanwhile, we would welcome any advice, input, or questions you may have regarding Rocket.Chat’s GDPR readiness. Please help us by emailing your thoughts to privacy@rocket.chat. + +Thank you! + +The Rocket.Chat Team diff --git a/rocket.chat-privacy-and-security/privacy-policies/README.md b/rocket.chat-privacy-and-security/privacy-policies/README.md new file mode 100644 index 0000000000..1bc8b910e3 --- /dev/null +++ b/rocket.chat-privacy-and-security/privacy-policies/README.md @@ -0,0 +1,2 @@ +# Privacy Policies + diff --git a/rocket.chat-privacy-and-security/privacy-policies/privacy-policy-facebook-messenger.md b/rocket.chat-privacy-and-security/privacy-policies/privacy-policy-facebook-messenger.md new file mode 100644 index 0000000000..a52fee030f --- /dev/null +++ b/rocket.chat-privacy-and-security/privacy-policies/privacy-policy-facebook-messenger.md @@ -0,0 +1,10 @@ +# Privacy Policy Facebook Messenger + +Please read the following Customer Terms:\ +\ +**For SaaS deployments:** [Rocket.Chat Terms of Service](https://rocket.chat/terms)\ +**For Self-managed deployments:** [Master Services Agreement](https://docs.rocket.chat/legal/master-services-agreement-for-self-managed-workspaces)\ +\ +We use your data to provide and improve the Service. By using the Service, you agree to the collection and use of information in accordance with this policy. Unless otherwise defined in [this Privacy Policy](https://rocket.chat/privacy), the terms used in this Privacy Policy have the same meanings as in our Terms and Conditions.\ +\ +Please, check the [Facebook privacy policies here](https://developers.facebook.com/docs/messenger-platform/policy/policy-overview/). diff --git a/rocket.chat-privacy-and-security/privacy-policies/privacy/README.md b/rocket.chat-privacy-and-security/privacy-policies/privacy/README.md new file mode 100644 index 0000000000..4ec65a6333 --- /dev/null +++ b/rocket.chat-privacy-and-security/privacy-policies/privacy/README.md @@ -0,0 +1,314 @@ +# Rocket.Chat Privacy Policy + +_Effective date: October 23rd, 2020_ + +Rocket.Chat Technologies Corp. ("us", "we", or "our") operates the [https://rocket.chat](https://rocket.chat) website, the [https://open.rocket.chat](https://open.rocket.chat) community server, the Marketplace, incl. associated Rocket.Chat Apps, Rocket.Chat´s Cloud Offering and the Rocket.Chat mobile applications (the "Service"). + +This page informs you of our policies regarding the collection, use, and disclosure of personal data when you use our Service and the choices you have associated with that data. + +We use your data to provide and improve the Service. By using the Service, you agree to the collection and use of information in accordance with this policy. Unless otherwise defined in this Privacy Policy, terms used in this Privacy Policy have the same meanings as in our Terms and Conditions. + +## Summary + +* **Administrators are responsible for user privacy, we help administrators** + + There are basically two ways of using Rocket.Chat: self-managed (also known as on-premises deployment) on your own or someone else´s infrastructure or via our hosted offering. In both cases, the administrator of that instance - or the organization behind the administrator - is the person responsible to ensure privacy of Rocket.Chat users. We aim to help by providing features in our products and services to make that job easier. We also provide this policy to explain what we do as a "helping hand"/data processor for administrators in case we process personal data of users. +* **You remain in control of your personal data** + + We cannot access your personal data in a self-managed instance of Rocket.Chat. Our code is open source, there are no back doors whatsoever. You are however free to connect a self-managed instance to other services, e.g. our marketplace or push notification gateway, where this privacy policy applies. When you do not register your instance, these settings are turned off by default. You can also connect it to third party services, such as external authentication services, in which case their privacy policy applies. It is your choice and you are not forced to do so. In our hosted offering, we only process your data for the purposes of providing you the service in the name of the administrator. Administrators are still in full control over the configuration of their instance. +* **We don´t sell your data** + + We do not sell your personal data. Our business model is to provide you with a free edition and we charge you for extra services or features, according to the plan you choose. What you process within Rocket.Chat is yours and stays yours. +* **Our community server is for testing purposes** + + Our community server [https://open.rocket.chat](https://open.rocket.chat) is a testing ground for our users and we use it to test and analyze new features. We track user activity in there with the trackers described below - including google analytics - to learn how our service is used and to improve our product. + +## Definitions + +* **Service** + + Service means the [https://rocket.chat](https://rocket.chat) website, the [https://open.rocket.chat](https://open.rocket.chat) community server, the Rocket.Chat Marketplace, incl. associated Rocket.Chat Apps, the [https://cloud.rocket.chat](https://cloud.rocket.chat) service offering, push notification gateways and the Rocket.Chat mobile applications operated by Rocket.Chat Technologies Corp. +* **Personal Data** + + Personal Data means data about a living individual who can be identified from those data (or from those and other information either in our possession or likely to come into our possession). +* **Usage Data** + + Usage Data is data collected automatically either generated by the use of the Service or from the Service infrastructure itself (for example, the duration of a page visit). +* **Cookies** + + Cookies are small pieces of data stored on your device (computer or mobile device). +* **Data Controller** + + Data Controller means the natural or legal person who (either alone or jointly or in common with other persons) determines the purposes for which and the manner in which any personal information are, or are to be, processed. + + For the purpose of this Privacy Policy, we are a Data Controller of your Personal Data. +* **Data Processors (or Service Providers)** + + Data Processor (or Service Provider) means any natural or legal person who processes the data on behalf of the Data Controller. + + We may use the services of various Service Providers in order to process your data more effectively. +* **Data Subject (or User)** + + Data Subject is any living individual who is using our Service and is the subject of Personal Data. + +## **What personal data do we collect and to which purposes do we use your personal data?** + +In connection with our operations and during the lifecycle of business relationship with our customers, we collect various types of personal data, meaning any information that identifies or allows to identify you, including: + +### Types of Data Collected + +#### Personal Data + +While using our Service, we may ask you to provide us with certain personally identifiable information that can be used to contact or identify you ("Personal Data"). Personally identifiable information may include, but is not limited to: + +* Email address +* First name and last name +* Cookies and Usage Data + +We may use your Personal Data to contact you with newsletters, marketing or promotional materials, and other information that may be of interest to you, if you have provided consent to this processing or if we can base this processing on a legitimate interest that is not overridden by your fundamental rights. You may in the future withdraw that consent or object to receiving any, or all, of these communications from us by following the unsubscribe link or instructions provided in any email we send or by contacting us. + +#### Account Data + +Some Services may allow or require that you register for a personalized account. Account data may include in addition your account name, authentication information, registration date, contact information, payment information, and any other information associated with your account. + +#### Usage Data + +We may also collect information that your browser sends whenever you visit our Service or when you access the Service, incl. by or through a mobile device ("Usage Data"). + +This Usage Data may include information such as your computer's Internet Protocol address (e.g. IP address), browser type, browser version, the pages of our Service that you visit, the time and date of your visit, the time spent on those pages, unique device identifiers and other diagnostic data. + +When you access the Service by or through a mobile device, this Usage Data may include information such as the type of mobile device you use, the IP address of your mobile device, your mobile operating system, the app version, the type of mobile Internet browser you use, unique device identifiers and other diagnostic data. + +As a byproduct of the usage data within a Rocket.Chat instance, Administrators may choose to share aggregated and therefore anonymous, non-personal data with us to help us learn more about how our product is being used. This setting is described [here](https://docs.rocket.chat/guides/administrator-guides/general#reporting). The information shared is the same information as is shown on the "info"-page of the administration panel of an instance. E.g. this statistics sharing would transmit the total # of channels, but it would not transmit the actual channel names, and so on, preserving the privacy of your workspace. This is completely optional to use and can be activated and deactivated at any time. + +#### Location Data + +We may use and store information about your location if you give us permission to do so (“Location Data”). We use this data to provide features of our Service (only to allow you to share your location to another user via Rocket.Chat, if it was enabled by the administrator). + +You can enable or disable location services when you use our Service at any time, through your device settings. + +#### App Data + +When you use the Marketplace, you may choose to install Apps provided by Rocket.Chat. These Apps process data from your instance of Rocket.Chat and therefore nonpersonal data, such as software version, amount of users, and similar. Depending on the purpose and your actual usage of the App (e.g. enabling certain features), Personal Data may however be processed. E.g. you enable an integration, which processes your users' information. The description of the App will make the types of personal data sufficiently clear as well as any potential deviations from this policy. + +For Third-Party Apps on the Marketplace, the Vendor will provide you with a specific privacy policy that governs his Third-Party App. + +#### Content you provide + +When you use our Services you may provide content into that service (e.g. upload file, send a message). + +#### Tracking & Cookies Data + +We use cookies and similar tracking technologies to track the activity on our Service and hold certain information. We DO NOT track activity in your self-managed instances. We regularly monitor aggregated activity data on our infrastructure, but it is not tracking of individual users in the sense of this paragraph, which only occurs when we have a legitimate interest to do so (e.g. for security and compliance purposes). We do perform regular tracking on our community server. + +Cookies are files with a small amount of data which may include an anonymous unique identifier. Cookies are sent to your browser from a website and stored on your device. Tracking technologies also used are beacons, tags, and scripts to collect and track information and to improve and analyze our Service. + +You can instruct your browser to refuse all cookies or to indicate when a cookie is being sent. However, if you do not accept cookies, you may not be able to use some portions of our Service. + +Examples of Cookies we use: + +* Session Cookies. We use Session Cookies to operate our Service. +* Preference Cookies. We use Preference Cookies to remember your preferences and various settings. +* Security Cookies. We use Security Cookies for security purposes. + +### Distinction of data collection between Self Managed Workspaces and Hosted Workspaces + +The following paragraph applies to data processing in Rocket.Chat workspaces and is for clarification purposes only. Self Managed workspaces and workspaces hosted by us differ in the kind of data we are processing from you because, in the case of our hosted offering, all data put into the workspaces is technically processed on our infrastructure. + +There is also a difference between **registered**, self-managed workspaces (which consume services from us) and **unregistered**, self-managed workspaces. + +See the following table for a general distinction between the data that is processed in each case. Keep in mind that this can differ in individual circumstances, such as cases where apps are installed on unregistered workspaces via workarounds. + +| Data type | Self Managed (not registered) | Self Managed (registered) | Hosted | +| :----------------------: | :---------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | +| **Account Data** | no | yes - to register your workspace via an account (optional) | yes - to register your workspace via an account | +| **Usage Data** | no | yes - as per the service you are consuming via your registration, e.g. push notifications via our gateway | yes - as part of using the hosted workspace on our infrastructure | +| **App Data** | no | yes - if you install apps from the marketplace and based on the use case of the app. Third party apps have their own privacy policy. | yes - if you install apps from the marketplace and based on the use case of the app. Third party apps have their own privacy policy. | +| **User content** | no | no - content is not processed, unless it falls under the aforementioned (e.g. the content of a push notification sent via our gateway) | yes - as part of using the hosted workspace on our infrastructure. End-to-end encrypted content is only stored in encrypted form. | +| **Tracking and Cookies** | no | yes - tracking occurs on our end to monitor the consumption of the services you use (Usage Data). We do not track inside the workspace. | yes - tracking occurs to monitor the consumption of the services used. | + +## How do we use information? + +We collect and use your personal data to the extent necessary to carry out our operations and provide our services as well as to comply with any regulatory obligations in our activities. + +These purposes are defined in more detail below: + +* To provide and maintain our Service +* To notify you about changes to our Service +* To allow you to participate in interactive features of our Service when you choose to do so +* To provide customer support +* To gather analysis or valuable information so that we can improve our Service +* To monitor the usage of our Service +* To detect, prevent and address technical issues +* To provide you with news, special offers and general information about other goods, services and events which we offer that are similar to those that you have already purchased or enquired about if you have provided consent to receive this information or the processing is in our legitimate interests and it's not overridden by your rights. + +## Legal Basis for Processing Personal Data + +In accordance with the applicable regulations, we may only use your personal data for at least one of the following reasons: + +\ +**To comply with legal and regulatory obligations** + +We collect and use your personal data to comply various legal and regulatory obligations, such as: + +* Anti-money laundering regulations and counter-financing of terrorism regulations, including Know Your Customer (KYC) obligations. +* Regulations relating to international financial sanctions and embargoes. + +\ +**To fulfil our legitimate interest** + +We also use your personal data to fulfill our legitimate interests, which include the following: + +* Provision and delivery of our products and services. +* Marketing and customer communication and development of our customer relationships. +* Development of our products and services. +* Security and safety of our IT and facilities. + +**Based on your consent** + +If processing of certain personal data requires your consent (e.g. cookies), we will inform you of this including details of the specific processing activity and request your consent to such processing. You may request to revoke your consent at any time. + +## Retention of Data + +Rocket.Chat Technologies Corp. will retain your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use your Personal Data to the extent necessary to comply with our legal obligations (for example, if we are required to retain your data to comply with applicable laws), resolve disputes, and enforce our legal agreements and policies. + +Rocket.Chat Technologies Corp. will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of our Service, or we are legally obligated to retain this data for longer time periods. + +## Transfer of Data + +Your information, including Personal Data, may be transferred to — and maintained on — computers located outside of your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from your jurisdiction. + +If you are located outside United States and choose to provide information to us, please note that we transfer the data, including Personal Data, to the United States or other jurisdictions deemed not not have an adequate level of data protection deemed by the competent authorities of your residence. Rocket.Chat Technologies Corp. will take all steps reasonably necessary to ensure that your data is treated securely and in accordance with this Privacy Policy and no transfer of your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of your data and other personal information. + +## Disclosure of Data + +### Business Transaction + +If Rocket.Chat Technologies Corp. is involved in a merger, acquisition or asset sale, your Personal Data may be transferred. We will provide notice before your Personal Data is transferred and becomes subject to a different Privacy Policy. + +### Disclosure for Law Enforcement + +Under certain circumstances, Rocket.Chat Technologies Corp. may be required to disclose your Personal Data if required to do so by law or in response to valid requests by public authorities (e.g. a court or a government agency). + +### Legal Requirements + +Rocket.Chat Technologies Corp. may disclose your Personal Data in the good faith belief that such action is necessary to: + +* To comply with a legal obligation +* To protect and defend the rights or property of Rocket.Chat Technologies Corp. +* To prevent or investigate possible wrongdoing in connection with the Service +* To protect the personal safety of users of the Service or the public +* To protect against legal liability + +## **How do we secure your data?** + +Ensuring the security of the data you entrust to us is one of our most important responsibilities. We apply appropriate technical and organizational measures to keep your personal data secure. We use physical, administrative, and technical security measures to reduce the risk of loss, misuse, or unauthorized access, disclosure, or modification of your personal data. + +Your data can only be accessed by persons for whom it is necessary in relation to their work. + +We may outsource our processing of personal data to external service providers. In such events we enter into appropriate agreements with the providers in order to ensure that your personal data is processed in accordance with this Privacy Policy and any applicable laws. We also have received internationally recognised [security certifications](https://docs.rocket.chat/guides/security/compliance-resources#iso-27001-certification). + +Although we do our best, given the nature of communications and information processing technology, we cannot guarantee that Information during transmission through the Internet or while stored on our systems or otherwise in our care will be absolutely safe from intrusion by others. + +## "Do Not Track" Signals Under California Online Privacy Protection Act (CalOPPA) + +We do not support Do Not Track ("DNT"). Do Not Track is a preference you can set in your web browser to inform websites that you do not want to be tracked. + +You can enable or disable Do Not Track by visiting the Preferences or Settings page of your web browser. **** + +## **Your Rights** + +In accordance with applicable regulations and where applicable, you have the following rights**:** + +* **To access:** you can obtain information relating to the processing of your personal data, and a copy of such personal data. +* **To rectify:** where you consider that your personal data are inaccurate or incomplete, you can request that such personal data be modified accordingly. +* **To erase:** you can require the deletion of your personal data, to the extent permitted by law. +* **To restrict**: you can request the restriction of the processing of your personal data. +* **To object:** you can object to the processing of your personal data, on grounds relating to your particular situation. You have the right to object to the processing of your personal data for direct marketing purposes, which includes profiling related to such direct marketing. +* **To withdraw your consent:** where you have given your consent for the processing of your personal data, you have the right to withdraw your consent at any time. +* **To data portability:** where legally applicable, you have the right to have the personal data you have provided to us be returned to you or, where technically feasible, transferred to a third party. + +### How to exercise your rights? + +If you wish to exercise the rights listed above, please send your request to our Data Protection Office, the contact information of which is provided at the end of this Privacy Policy. + +Please include a scan/copy of your proof of identity for identification purpose when required. + +In accordance with applicable regulation, in addition to your rights above, you are also entitled to lodge a complaint with the competent supervisory authority. + +## Service Providers and Subprocessors + +We may employ third party companies and individuals to facilitate our Service ("Service Providers"), to provide the Service on our behalf, to perform Service-related services or to assist us in analyzing how our Service is used. + +These third parties have access to your Personal Data only to perform these tasks on our behalf and are obligated not to disclose or use it for any other purpose. + +### Subprocessors + +We employ the subprocessors to process personal data. The current list of subprocessors can be found [here](https://docs.rocket.chat/legal/privacy/subprocessors). + +### Analytics + +We may use third-party Service Providers to monitor and analyze the use of our Service. + +* Google Analytics + + Google Analytics is a web analytics service offered by Google that tracks and reports website traffic. Google uses the data collected to track and monitor the use of our Service. This data is shared with other Google services. Google may use the collected data to contextualize and personalize the ads of its own advertising network. + + For more information on the privacy practices of Google, please visit the Google Privacy & Terms web page: [https://policies.google.com/privacy?hl=en](https://policies.google.com/privacy?hl=en) +* Firebase + + Firebase is analytics service provided by Google Inc. + + You may opt-out of certain Firebase features through your mobile device settings, such as your device advertising settings or by following the instructions provided by Google in their Privacy Policy: [https://policies.google.com/privacy?hl=en](https://policies.google.com/privacy?hl=en) + + We also encourage you to review the Google's policy for safeguarding your data: [https://support.google.com/analytics/answer/6004245](https://support.google.com/analytics/answer/6004245). For more information on what type of information Firebase collects, please visit please visit the Google Privacy & Terms web page: [https://policies.google.com/privacy?hl=en](https://policies.google.com/privacy?hl=en) + +## Links to Other Sites + +Our Service may contain links to other sites that are not operated by us. If you click on a third party link, you will be directed to that third party's site. We strongly advise you to review the Privacy Policy of every site you visit. + +We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services. + +## Children's Privacy + +Our Service does not address anyone under the age of 18 ("Children"). + +We do not knowingly collect personally identifiable information from anyone under the age of 18. If you are a parent or guardian and you are aware that your child has provided us with Personal Data, please contact us. If we become aware that we have collected Personal Data from children without verification of parental consent, we take steps to remove that information from our servers. + +## Specific Provisions to our Cloud Offerings + +For our Cloud Offerings, we act as a Data Processor for our Customers, who are the Data Controllers of the instances they have licensed and administer. You as a user generally will be bound by the Data Controller´s policies. For theses instances, please direct your data privacy questions to the Data Controller. + +With regards to some of our Cloud Products, Customers have certain options to select the processing location of data and to configure the privacy-relevant settings of the instance. If you are the customer of one of these instances, you can contact us and get more information on where your instance is running. + +We generally offer two regions: + +* hosting in the United States +* hosting in the European Union + +Other regions may be added over time. + +Where required, we also offer to sign Standard Contractual Clauses approved by the European Commission to guarantee an adequate level of data protection or other mechanisms relevant for the Customer. + +The amount of Personal Data we process with our Cloud Offerings is limited to what the Customer and his users enter into the Service. In the cloud offering, we will not process the personalized cookie or analytics data described above. The purposes of processing the data are strictly limited to providing and improving the Service and in accordance with the Data Controller´s instructions. We never access workspace data (i.e. the actual content the customer is entering in his instance), unless the customer asks us to in form of a support request, we are bound by a valid law enforcement request or to protect our own interests, such as investigating potential abuse of the service. + +Once your usage of our cloud offering ceases, we will remove all your data, including backups, after a short grace period - or immediately, if you tell us to. + +## Changes to This Privacy Policy + +We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page. + +We will let you know via email and/or a prominent notice on our Service, prior to the change becoming effective and update the "effective date" at the top of this Privacy Policy. + +You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page. + +## Contact Us + +If you have any questions about this Privacy Policy, please contact us: + +* Rocket.Chat´s Data Protection Officer by email: [privacy@rocket.chat](mailto:privacy@rocket.chat) +* By visiting this page on our website: [https://rocket.chat/contact](https://rocket.chat/contact) + +## **Data Protection Officer** + +To communicate with our Data Protection Officer, please email [privacy@rocket.chat](mailto:privacy@rocket.chat) diff --git a/rocket.chat-privacy-and-security/privacy-policies/privacy/subprocessors.md b/rocket.chat-privacy-and-security/privacy-policies/privacy/subprocessors.md new file mode 100644 index 0000000000..2d3287d184 --- /dev/null +++ b/rocket.chat-privacy-and-security/privacy-policies/privacy/subprocessors.md @@ -0,0 +1,81 @@ +--- +description: 'Last update: January 5th, 2023' +--- + +# Subprocessors + +We have updated this policy. For the previous version of this policy, please expand the section [below](subprocessors.md#previous-versions-of-this-subprocessors-list). + +The list below identifies sub-contractors (sub-processors) that may be engaged by Rocket.Chat to Process personal data during the provisioning of our Services. + +
+ +What is a Subprocessor + +A sub-processor is a third-party data processor engaged by Rocket.Chat, including entities from within the Rocket.Chat Group, who has or potentially will have access to or process Service Data (which may contain Personal Data). Rocket.Chat engages different types of sub-processors to perform various functions as explained in the tables below. + +
+ +
+ +Due Diligence + +Rocket.Chat undertakes to use a commercially reasonable selection process by which it evaluates the security, privacy, and confidentiality practices of proposed sub-processors that will or may have access to or otherwise process Service Data. + +
+ +## Infrastructure Sub-processors – Service Data Storage and Processing + +| Entity Name | Purpose | Data Hosting Location | +| ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +|

Amazon Web Services,

OVH

| We use OVH to underlying the infrastructure of our hosted offering, marketplace, open community server, and other services such as push notifications. We use a hybrid deployment. Generally speaking, after June 2020, all workspaces run on OVH. |

United States
The location of where an instance of our hosted offering is deployed is determined by the customer during onboarding.

Please reach out to support if you want to know the concrete subprocessor for your case.

| +| AWS | Infrastructure that runs the cloud deployments and supports Rocket.Chat's internal processes | United States | +| MongoDB Cloud | Analytics and Backup Management | United States | + +## Service Specific Sub-processors + +| Entity Name | Purpose | Data Processing Location | +| ----------------------------------------- | -------------------------------------------------- | ------------------------ | +| Stripe | Billing platform | | +| ZOHO | email marketing, newsletter, CRM, customer support | | +| Apple Push Notification Service, Firebase | Push notification service for iOS devices | | + +## Innovation Service Specific Sub-processors + +| Entity Name | Purpose | Data Processing Location | +| ----------- | ------------------ | ------------------------ | +| Clearbit | Account Enrichment | United States | +| Yesware | email marketing | | +| PRVolt | email marketing | | +| Mailchimp | email marketing | | + +## Rocket.Chat Affiliates + +Rocket.Chat affiliates involved in processing of personal data will depend on the location of our users and their customers and the nature of the services we provide to you. By agreeing to the [DPA](https://docs.rocket.chat/privacy-and-security/data-processing-agreement), you agree all of these Sub-Processors may have access to Customer Data. + +The following entities are members of the Rocket.Chat Group. Accordingly, they function as sub-processors to provide the Services. + +| Entity Name | Data Processing Location | +| ------------------------------ | ------------------------ | +| Rocket.Chat Technologies Corp. | United States | +| Rocketchat Tecnologia LTDA | Brazil | + +## Partners Joint Processors or Sub-processors + +| Entity Name | Purpose | Data Processing Location | +| ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ | +| [Fabulor.eu](https://fabulor.eu/en/support/contact/) | Fabulor is a Rocket.Chat Official Partner. When we receive a lead from the EMEA and APAC region that classify under some contractual conditions, we may share the Lead/Customer's information with Fabulor to reach out to them. Fabulor may access the following Lead's/Customer data for this purpose: Email; Contact Name; Country; Phone. | Belgium; Netherlands | + +## **Objecting to a subprocessor** + +You may object to a subprocessor by submitting your objection by email to [privacy@rocket.chat](mailto:privacy@rocket.chat.com) with the subject line “Subprocessor Objection," along with your name, company name, name of the [Rocket.Chat](http://rocket.chat) service, name of the subprocessor, and objectively justifiable grounds for objection unless otherwise provided for in your service agreement with [Rocket.chat](http://rocket.chat) which terms control. + +## Updates to this page + +Due to the nature of our business, we are consistently updating the list and controls of our subprocessors. + +For more information on Rocket.Chat's privacy practices, please visit our [Privacy Policy.](https://docs.rocket.chat/privacy-and-security/privacy-policies/privacy) If you have questions regarding this page, please get in touch with us at privacy@rocket.chat. + +### Previous Versions of this Subprocessors List + +{% file src="../../../.gitbook/assets/Subprocessors-list-10-23-20.pdf" %} diff --git a/rocket.chat-privacy-and-security/security-policy.md b/rocket.chat-privacy-and-security/security-policy.md new file mode 100644 index 0000000000..111e4ef01f --- /dev/null +++ b/rocket.chat-privacy-and-security/security-policy.md @@ -0,0 +1,350 @@ +# Security Policy + +We have created a general information security policy and specific policies for related topics and are working to put them in place. These policies are necessary to set up secure processes and demonstrate our compliance with industry standards towards our customers. You can also find the annual acknowledgment forms here. + +In case of any questions, contact the security team. More information on [this page](https://rocket.chat/handbook/departments/security/) + +Do you want a short summary? You can find a [security one pager here!](https://docs.google.com/document/d/1ZiyPRgAJMwKZAkdGDL36npEBFJYfCDqaX4-ZOef3P90/edit?usp=sharing) + +## Mandatory Acknowledgment & Secure Configuration + +Because we all must follow our security policies, we have set up GoogleForms that you can fill out and submit. Use the following 3 checklists to set yourself up securely: + +* [Policy Acknowledgment](https://docs.google.com/forms/d/e/1FAIpQLSe5NwjKNXQl9gQPhgF93iB2clFPY2tiYVIE3PKEL\_ZaswTkkw/viewform?usp=sf\_link), an acknowledgment for our current policies. Mandatory to complete annually by all employees +* [Security configuration](https://docs.google.com/forms/d/e/1FAIpQLSffmdQUSHaE2WWX6UHo8BAqT6VM0ijBPxyWwJCkmgeRvSpvkA/viewform?usp=sf\_link), a checklist to set up a basic secure configuration of your tools. Mandatory to complete annually by all employees. + +## Overall Security Policy + +Overall Management intention on security and baseline for our security management system. + +### Purpose + +Rocket.Chat places a great emphasis on protecting its information. Such information includes e.g. information we manage on behalf of our customers, personnel files, our intellectual property. + +At Rocket.Chat, we aim to ensure at all times that information we manage is appropriately secured to protect against the consequences of breaches of confidentiality, failures of integrity or interruptions to the availability of that information. + +Our objectives are: + +* We will meet all applicable requirements in properly protecting our information, including: laws, regulations, industry standards and contractual commitments +* The protections we apply to information assets will be in proportion to the value and sensitivity of the information, and will balance the sensitivity of the information against the cost of controls, the impact of the controls on the effectiveness of business operations and the risks against confidentiality, integrity and availability of the information +* We will ensure that these controls are accepted by all employees, vendors, service providers, representatives and associates of our company who may have access to our information. This includes ensuring that all personnel at all levels are aware of, and are held accountable for safeguarding information assets +* We will identify and mitigate any breaches to this policy. +* We aim to continually improve our security practices over time. + +### Applicability and Ratification + +This information security policy provides management direction and support for information security across the organisation. Specific, subsidiary information security policies, procedures and guidelines are considered an integral part of this information security policy, because only when followed in its entirety, we can ensure the objectives of this policy are met. This policy has been ratified by Rocket.Chat´s management team and forms part of its policies and procedures. It is applicable to and will be communicated to our staff, contractors, students and other relevant parties. + +### Responsibilities + +Everyone handling Rocket.Chat information has the responsibility to keep the information safe, no matter where the information is located. This includes our staff members, contractors, students, etc., but also our suppliers (e.g. those that provide us with our tools to work) and other recipients of that information. + +To determine the appropriate levels of security measures applied to information systems, a process of risk assessment is carried out to identify the probability and impact of security failures. + +To manage information security within the organisation an information security oversight committee is established, chaired by Rocket.Chat´s Security Lead and consisting of senior members of our relevant teams. The objective of this committee is to ensure that there is clear direction and visible management support for security initiatives. This oversight group shall promote security through appropriate commitment and adequate resourcing. + +An information security working party, comprising management representatives from all relevant parts of the organisation, shall devise and coordinate the implementation of information security controls. The responsibility for ensuring the protection of information systems and ensuring that specific security processes are carried out shall lie with the head of the department managing that information system. + +Specialist advice on information security is available throughout the organisation. Any member of the organization can contact his manager or directly Rocket.Chat´s Security Lead. + +Rocket.Chat will establish and maintain appropriate contacts with other organisations, law enforcement authorities, regulatory bodies, and network and telecommunications operators. + +Violations of our policies will be handled in accordance with the severity of the violation and applicable rules and regulations, including up to termination of contract for severe violations. + +### Review + +This policy is reviewed and updated regularly to ensure that it remains appropriate in the light of any relevant changes to the law, our other policies or contractual obligations. We will inform relevant parties about the updates. + +The implementation of the information security policy shall be reviewed independently of those charged with its implementation. + +## Security Special Policies + +The following are subpolicies related to specific areas and supplement the general policy. + +## Organization + +We maintain a [RASCI-chart](https://drive.google.com/file/d/10oSnNvSqx5OObvXyIjrAkOZLNFEc6n6d/view?usp=sharing) that contains the responsibilities around information security. Conflicts of interest in these responsibilities must be avoided and tasks that create these conflicts be assigned to different persons. Where this is not possible, compensating controls (e.g. four-eyes principle) should be considered. + +Current conflicting roles identified: + +* The roles of data protection officer and security lead are currently taken by one person and cases of conflict of interest will be raised to the management team to resolve. + +The company maintains relevant contacts with authorities and agencies, those relevant for Rocket.Chat being mostly: + +* Data protection agencies +* NIST +* ISO +* Open Source Community + +In project management, the project leads are responsible to ensure security is properly addressed in a project. + +## Personnel Security + +All personnel is screened before entering a position and subject to a Terms of employment, including a duty of confidentiality. The screening process is in relation to the applicable laws and regulations as well as the requirements of the position. All personnel is subject to contractual terms that describe their duties. The Information Security Team ensures that all personnel is aware of Rocket.Chat´s Security policies. Personnel that is leaving Rocket.Chat must certify that all assets have been returned to the company and then will be de-registered from the user directories. + +The details of these processes are implemented and the records kept by the Human Resources Team. + +## Asset Management + +All assets must be inventoried. An asset is something of value for Rocket.Chat (e.g. information itself, a device, intellectual property). We maintain a list of all devices and all software used, including additional information relevant per type of asset. References to sublists for assets (e.g. virtual machine inventories, mobile device lists) are allowed and should be referenced. The amount of effort needed to maintain a detailed list of assets should correspond to the criticality of the asset.Assets must be returned to Rocket.Chat once an owner leaves the organization. Ownership of an asset and the risks associated with an asset are separated to focus on overarching risk mitigation without boundaries between assets. + +The lists of assets can be found [here.](https://docs.google.com/spreadsheets/d/1Nh8T3FP7QGR35jAdbd9j6HQnnirQDNcnC7X9Dg-Kdvo/edit?usp=sharing) + +## Data Classification & Lifecycle Policy + +This section is about how we classify various elements of data and how to treat them regarding their criticality. You might have seen documents containing footers like "confidential" / "top secret", etc. This section focusses on general aspects of handling data. + +### Scope: + +This data classification policy applies to all data and to all user-developed data sets and systems that may access these data, regardless of the environment where the data reside (including cloud systems, servers, personal computers, mobile devices, etc.). The policy applies regardless of the media on which data reside (including electronic, microfiche, printouts, CD, etc.) or the form they may take (text, graphics, video, voice, etc.) Your private opinion, e.g. what you share on social media under your personal name, is not in scope of this policy. You should always make clear if you are posting in the name of Rocket.Chat or privately, if the context leaves room for ambiguity. + +### Classifications: + +All data you create, modify, receive or otherwise process in connection with Rocket.Chat, must be handled confidentially and protected according to the risk related to it. (Confidential Data). Your NDA includes more details on what is considered confidential and what not. We do not distinguish between various levels of confidentiality (like secret, top secret, super secret, ...). + +An exception to confidentiality of data applies when the data in question is specifically targeted at a broader audience outside the organization (e.g. blog posts, webinars, public source code). This data is classified as "public". (Public Data). + +In case a customer has a different way of classifying data and we are required to follow the customer's classification scheme (either by contract or because it is custom), then the customer classification scheme applies. (Customer Data Classification) + +### Handling and marking of data, incl. access control: + +Unless stated otherwise, the creator of data is considered its owner and has to ensure the provisions of this policy are followed. Our general policy is that access to data is denied by default within the company, unless the owner has authorized access to it (e.g. to an individual, to a role or to a group of individuals). This granting or changing of access must be logged and the access control lists regularly reviewed by the owner. This also means we follow the principle of discretionary access control, meaning that owners of data grant access to this data by themselves. + +Confidential data: We generally do not tag or otherwise mark confidential information. Instead we store information in secure repositories and grant access to information only when there is a legitimate need to it ("need-to-know"-access). Unauthorized access must be prevented with the features of the tools you are using. E.g. you should set links to a file with the correct sharing permission. Before sharing confidential data with individuals outside the Rocket.Chat organization, an NDA must be signed. This NDA signature is the responsiblity of the HR team for employees and contractors and of the Sales team for potential clients and customers. In case you are in doubt of the existence of an NDA, contact these teams respectively before sharing confidential data. For confidential information shared from us to customers or other external parties (e.g. a slidedeck), you must tag it with the Rocket.Chat logo to indicate its origin and minimize intellectual property infringement. Where the context warrants an additional note to the recipient, you should consider putting a footer like "Confidential material. Do not reproduce" on your document. Secure ways of sharing data (e.g. PGP-encrypted mailing, end-to-end encrypted channels on Rocket.Chat) should be preferred. For sending confidential material via hardcopy, only use legitimate mail services and avoid marking that draws attention to the content of the package. + +Public data: Public data is also not marked specifically, instead it is characterized as being public when you put it on a place where the intended audience can access it (e.g. on our website or a public GitHub repository). To distinguish public data and confidential data, consider where it is being placed. Consider also that all data you put on the web is potentially replicated in other places (e.g. wayback machine, reupload on youtube, etc.) so be sure to check in advance if the data in question is really intended to be public. + +Customer Data Classification: For information that is received from customers or regularly exchanged with them (e.g. slidedecks, RFQs, etc.) stick to the customer´s classification method and mark it appropriately. + +Other handling and marking methods depending on tools and systems you use: When you work with specific tools and systems, these systems often come with their own classification schemes (e.g. GitHub Public vs Private Repositories) and mechanisms (access control lists, metadata, etc.). You should use these classification mechanisms in the spirit of this policy and the context of how you use the system. + +### Deletion of data: + +Once data is considered no longer necessary, it should be deleted. Keep in mind that we are required to keep certain data for a minimum or maximum amount of time (e.g. for legal reasons). Use secure methods for deleting data, e.g. [DBAN](https://dban.org/) Contact the security team in case you are in doubt of deleting data. Public data generally does not need to be deleted since the risk associated with it is low and our external audience often expects this data to be available (e.g. in our public source code repositories). + +## Acceptable Use + +This section is about general acceptable use of equipment, systems, the internet, etc. when you are using those in a capacity for Rocket.Chat. We have additional, specific policies for device types, which are presented in the upcoming sections. + +### Applicability: + +This policy applies to assets, when these assets are provided by Rocket.Chat or when they are provided by you and used in the name of Rocket.Chat. Assets are: Internet/Intranet/Extranet-related systems, including but not limited to computer equipment, software, operating systems, storage media, network accounts providing electronic mail, WWW browsing, and FTP. It does not apply to the usage of e.g. your private internet at home when not working for Rocket.Chat. + +### Acceptable Use: + +Assets must primarily be used for business purposes in serving the interests of the company, and of our clients and customers in the course of normal operations. You are responsible for exercising good judgment regarding the reasonability of personal use. Personal use may never endanger the objectives of our policies (e.g. via actions regarded as unacceptable use) + +### Unacceptable Use: + +The following are examples of unacceptable use: + +* Violations of the law or of rights of any person or company, e.g. copyrights, patents, trademarks +* Accessing data, a server or an account for any purpose other than conducting company business +* Exporting technology in violation of international or regional export control laws +* Introduction of malicious programs into the network or server +* Revealing your account password to others or allowing use of your account by others. This includes family and other household members when work is being done at home. +* Making statements about warranty, expressly or implied, unless it is a part of normal job duties +* Effecting security breaches or disruptions of network communication, e.g. port scanning or security scanning +* Circumventing user authentication or security of any host, network or account. + +Certain exceptions to the items listed under acceptable use apply when such behaviour listed is expressly part of your job duties (e.g. to perform vulnerability scanning) or with prior authorization of senior management. + +### Enforcement: + +For security and network maintenance purposes, authorized individuals within Rocket.Chat may monitor equipment, systems and network traffic at any time. This also includes equipment that you privately own, but use for business purposes. Rocket.Chat reserves the right to audit networks and systems on a periodic basis to ensure compliance with this policy. In case additional software is needed to run on a system or device, you must facilitate the installation of the software and not interfere with its intended function. + +## Device & Portable Storage Security + +Our general policy is that everyone is responsible to secure their workstation by themselves. We do not enforce group policies, software whitelisting, or such. This means in turn that you yourself must be taking a greater amount of care to secure your workstation. + +### General + +Applicable to all devices: + +* Keep your workstation in a secure environment (e.g. a locked room or building). +* Always lock your workstation screen when leaving it. +* Store all important or sensitive information on network drives (e.g. GSuite). +* Keep your antivirus and antimalware protection up to date at all times and with daily definition updates +* Keep on updating your operating system and local software to the latest version as soon as it becomes available. +* Run a full anti-malware check at least monthly. +* In case of a virus/malware warning, run a full scan and resolve all findings. +* Use software and OS that still receive security updates from their vendors. +* Do not install software that could cause security risks (e.g. not from official app stores). You are responsible to determine if a new software you are about to install poses a security risk. +* Limit your privileges to what is necessary (e.g. do not run programs with administrator privileges that do not need them). +* When decommissioning a workstation, securely wipe it with DBAN or an alternative (e.g. factory reset) before using it in another way (e.g. selling it). + +### Mobile Device Specifics + +* Install at least one authenticator app to allow for multifactor authentication +* No jailbreak / rooted devices +* Do not store business information outside of apps (e.g. in the download folder), instead keep information inside the native apps and use the app-side browser to view and modify information. + +### Portable Storage + +Portable Storage (e.g. USB sticks, external HDDs) creates some additional risks, especially to availability of information and the risk of theft. That is why portable storage is generally not allowed to be used for Rocket.Chat information. You may use portable storage in limited circumstances when you have custody of the device (e.g. you own it) and it is used: + +* For non-sensitive purposes (e.g. marketing material to be shared with a customer on a USB stick) +* For encrypted backups of your workstation +* To extend the storage of your mobile devices + +Portable storage you acquire in a used state or not directly from a vendor (e.g. a gift you received, lost & found devices) may never be connected to your devices and should be returned or destroyed because they could be infected with Malware, even after wiping them. Instead of using portable storage, you should always use shared network resources (e.g. GSuite). + +## Physical Security, incl. Homeoffice + +### Porto Alegre + +* Read the rules that are pinned in the office +* Join the Rocket.chat channel to be informed about news + +### Homeoffice / Remote Work + +Additional rules apply if you work remotely: + +* Configure a secure home network, you can use a guide like: [link 1](https://hackernoon.com/how-to-set-up-a-secure-home-network-a3d0f829fd6c) or [link 2](https://www.makeuseof.com/tag/configure-router-make-home-network-really-secure/) +* Use VPN when working outside of your home office (e.g. in a coffee shop) +* Block sight lines of others, so that only you can see your screen when it contains confidential information +* Keep printouts with work data to an absolute minimum and destroy them securely once done. In general, most of your work should be done paperless. +* Keep your workstation secure at all times (e.g. not leave it in a car) + +## Cryptography + +Cryptographic requirements are adressed in the other parts of the subpolicies and must follow the general principles as described by [OWASP](https://www.owasp.org/index.php/Guide\_to\_Cryptography) Cryptography in our products will be described in the product documentation. + +On the Rocket.Chat servers you use for business purposes and share sensitive business information, you must set your End-to-End-Encryption key when logging in the first time on a new device and encrypt the relevant channels before sharing the sensitive information. + +## Password & Secrets Policy + +* Always use strong passwords, as described e.g. [here.](https://www.fpainc.com/blog/password-guidelines-from-nist) +* Always reset your password if you have suspicion of it being compromised. +* Always keep your passwords in a secure and encrypted location like your password manager (preferred, e.g. ZOHO Vault) or your head. +* Never share your passwords with anyone. Credential sharing is not allowed. An exception to this applies if the password is shared by nature. + +### Shared Passwords + +Shared passwords & secrets should only be used, if a personal password can NOT be used. Always prefer using your own passwords (tied with your own account/credential). Shared passwords must be stored in an approved secure and auditable password storage system. Our current standard is ZOHO Vault, its integrations are approved (e.g. the browser extension). + +Shared Passwords must: + +* Abide our password policies (complexity, length), unless the target system/use case does not allow this or prescribes a different standard +* Have one or multiple owners, default owner is the creator of the shared password. In Zoho, this is called “Authorizer” or “Owner”. +* Always be maintained in the central storage system. Do not update passwords and keep an outdated password in ZOHO. ZOHO is single source of truth. + +Shared Passwords SHOULD: + +* Be put in folders (ZOHO: “Chambers”), with a preconfigured set of persons with access. This makes it easier to manage access control. +* Not be exported out of Zoho. + +When a person leaves the company, he must transfer ownership of the shared password to a successor. Click on “more actions” → “Transfer Ownership” in ZOHO. + +## Authentication Policy + +Access to confidential Rocket.Chat data is only allowed after successfully and securely authenticating an individual. Your main account is your rocket.chat account and serves as your main digital identity. You will receive your account during your onboarding process as well as other, potentially needed digital identities. + +You should always use your firstname.lastname@rocket.chat identity. Exceptions apply when you are testing out a service or you specifically want to access the service under a pseudonym. You may not circumvent authentication or use different identities unless this is specifically part of your duties. + +In terms of authentication methods, you should always opt for using SSO/SAML authentication where possible. Since your identity is tied to a Google account, you can also click on the "Sign up with Google" button or similar phrasing, in case SAML/SSO is not available. If you get an error when authenticating via SAML or SSO, contact the person who invited you to enable it properly. + +2-Factor- or Multifactor-Authentication is required before accessing critical assets and will be set as mandatory there. + +## Secure Development & Change Management + +Secure engineering basic principles: + +Features or changes involving components that could affect overall system security (e.g. authentication, encryption, access control) should consider the following steps: + +* have a thoroughly documented PR explaining the change +* the PR must pass all checks, alerts must be remediated before merging +* be subject to the regular tests (including security tests) before a release and not be introduced after these tests +* should check if documentation needs to be updated and if so, update it + +Changes to assets should only occur when a change is necessary. All changes must be controlled. All changes related to source code must occur through the authorized version control system (e.g. GitHub). In case a change is urgent, the change control process may be shortened by decision of management, in order to mitigate potential damages to the organization. + +## Accessing Customer Data + +For access to customer data, you must adhere to the following: + +You may only access customer data if + +* The customer specifically requests it (e.g. support request) _or_ +* When it is necessary for us to fulfill our contractual obligations (e.g. to act proactively to prevent an instance from failing) + +Access is strictly limited to the data needed to fulfill the request. You may not access data of other customers. No customer data may be extracted unless this is strictly requested by the customer. All data extracted must be stored safely and deleted when it is no longer necessary. + +You must terminate the session immediately after the reason for your access has been resolved. You must as soon as possible inform the customer of the outcome of your access. + +## Incident Management + +An incident is any event that has the potential to affect the confidentiality, integrity or availability of Rocket.Chat information, in any format, or IT systems in which this information is held. Violations of laws, policies, contractual obligations or also external requests should also be considered as incidents in this sense. + +Examples of incidents include: + +* Lost devices +* A suspicious and successful log in +* Malware incident +* Ransomware attack +* Email with confidential data sent to wrong recipient +* Law enforcement requests to disclose data of customers + +General Incident Process: + +1. Logging the incident +2. Assigning it to the proper team to investigate +3. Triage +4. Escalation (if needed) +5. Resolution, including implementation, testing, as well as reaching out to other parties necessary. Before advancing, the affected user or customer must also be in agreement that the incident has been resolved. +6. Closing + +The Security Team will produce metrics on the incidents occurring in order to reduce their occurrence and improve our process. The detailed process is in the playbooks section of the security team. + +Incidents happen and it is important for Rocket.Chat to be aware of them and taking proper action. In case you feel you are in a conflict of interest or in fear of potential repercussions of reporting an incident, you can confidentially contact the HR team or the Security team and your incident report will be submitted anonymously. + +## Business Continuity and Disaster Recovery + +Business Continuity ensures that regular business will continue even during a disaster. + +Disaster recovery means restoring vital support systems and is a subset of business continuity. + +### Disaster prevention: + +Disaster prevention is everyone´s responsibility. This means that every employee must actively prevent disasters from occurring and report potential risks of a disaster to management. Most controls to prevent disasters are taken on a system level by the respective system administrator and will be performed against a system specific control catalog (e.g. backup configuration). Since many of our systems rely on third party providers, following our policies for third parties is critical. Disaster Prevention controls include: + +* Redundancy of the network in the office +* Preventing vendor lock-ins +* Chosing of trusted partners that provide an adequate level of security (e.g. SaaS providers) +* Storing data offsite and off-client + +### Criticality ratings: + +Rocket.Chat maintains a list of all systems, including a rating of their criticality on our business processes. This criticality is mostly based on tolerable downtime. The criticality ratings are defined in specific DR documents. Criticality ratings to a system may be adjusted on a case-by-case basis where the circumstances justify the adjustment. Rocket.Chat also runs a risk management program to identify and manage risks, including risks of a disaster occuring. + +### Disaster Recovery: + +In case of a disaster, we will form an incident response team consisting of the respective members of our management team, security and other individuals, depending on the type of disaster. The members of the team will communicate using Rocket.Chat - or where this is not possible - email or phone. We will inform all affected employees via the Rocket.Chat channel "important" or others where relevant. In case the disaster has taken down the rocket.chat servers, we will notify via email or - where warranted - contact you via the phone numbers you have given us during onboarding. The incident response team will also ensure that affected customers are informed via the proper methods. + +### Testing: + +Annually, we test our business continuity and disaster recovery capabilities. The scope and method of testing are related to our risk management process and decided by management. The results of these tests are shared in the company and may lead to updates to this policy. + +## Procurement + +All Systems procured must comply with defined information security requirements. Those requirements are defined before a procurement decision is made. + +## Supplier Relationships + +This policy applies to the security and compliance of supplier relationships. Maintaining a secure supply chain is important because often vulnerabilities and risks are introduced through supplier relationships. Suppliers can be SaaS providers, hardware suppliers and similar. + +### Contracts & Service levels: + +Relationships with suppliers must be based on written agreements/contracts. Such contracts must include provisions on information security when necessary. Service levels of suppliers must be agreed upon and monitored, e.g. by monitoring uptime reports, quality of service, and in case the service does not meet the expected level, the supplier be notified to remediate the issues. Changes to the provision of services by vendors, including changes to agreements, must be recorded (e.g. a contract amendment). + +### Supplier access & privacy: + +Suppliers accessing or processing Rocket.Chat data must be subject to an NDA or other confidentiality clauses. They must follow either our privacy policy or have their own, legally compliant privacy policy. + +### Supplier compliance: + +Supplier compliance is assessed on a risk-based approach and against the requirements of our security policies. Suppliers must demonstrate the same level of compliance for their supply chain. + +## Auditing + +The Information Security Team will audit the design and implementation of these policies on a regular basis, with a focus on risks identified in the risk management process. Where a potential conflict of interest takes place, the audit will be delegated to another individual with such conflict or other compensating controls be taken. diff --git a/rocket.chat-privacy-and-security/security/README.md b/rocket.chat-privacy-and-security/security/README.md new file mode 100644 index 0000000000..3f19cc1475 --- /dev/null +++ b/rocket.chat-privacy-and-security/security/README.md @@ -0,0 +1,47 @@ +--- +description: Rocket.Chat Security Documentation +--- + +# Security and Compliance Guides + +### One-Stop-Shop + +Here you can find all Rocket.Chat security- and compliance-related Documentation with links to the different sections to navigate our documentation more efficiently. + +If you still have questions, feel free to reach out to [security@rocket.chat](mailto:security@rocket.chat) + +## Product-related security information + +Security is built-in myriads of features in Rocket.Chat. Detailed information about each of the security features of our product can best be found via the **search** function of our Docs section. Use keywords (e.g. OAuth, LDAP, Encryption) to narrow your search. + +We have compiled summaries of important security aspects on the pages below: + +### Learn more + +* [Compliance Resources, including certifications](compliance-resources.md) like ISO 27001 to help your organization to determine, if Rocket.Chat fits your needs. +* [Security fixes and update](https://docs.rocket.chat/guides/security/security-updates) - an overview of vulnerabilities that have recently been closed and in which versions. +* [End-to-End Encryption Specifications](https://docs.rocket.chat/guides/security/end-to-end-encryption-algorithms) - an overview of our algorithms and functionality. + +## Outside Resources + +Below are related resources in other sections of Rocket.Chat's Documentation. + +### Security Features Overview + +* [Security Solutions](https://rocket.chat/security) - features, testimonials, and use cases on how Rocket.Chat can help you to secure your data. + +### Privacy + +* [Privacy Policy](https://rocket.chat/privacy) - how we process personal data. +* [Terms of Service](https://rocket.chat/terms) - legal documentation on how we provide services to you (e.g. push notifications, etc.). +* [GDPR](https://rocket.chat/gdpr) - a special page dedicated to GDPR requirements we implemented in 2018. + +### Community + +* [Report Vulnerabilities](https://docs.rocket.chat/contributing/security/) - how to best let us know about the security vulnerabilities you have found. +* [Code of Conduct](https://rocket.chat/code-of-conduct) - rules that apply to our servers. +* [White Hat Hall of Fame](https://docs.rocket.chat/contributors/contributing/security#whitehat-hall-of-fame) - famous contributors that made Rocket.Chat even more secure. + +### Rocket.Chat Handbook + +* [Company Security Policy](https://handbook.rocket.chat/departments-operations/security/security-policy) - how we ourselves do security internally. diff --git a/guides/security/compliance-resources.md b/rocket.chat-privacy-and-security/security/compliance-resources.md similarity index 75% rename from guides/security/compliance-resources.md rename to rocket.chat-privacy-and-security/security/compliance-resources.md index e4e50ecfc1..16554afb4d 100644 --- a/guides/security/compliance-resources.md +++ b/rocket.chat-privacy-and-security/security/compliance-resources.md @@ -4,7 +4,7 @@ On this page, we provide you with resources around compliance of Rocket.Chat wit Each resource is tagged with a section to indicate the scope. Some resources only apply to our hosted services, others to our self-managed product or else. -## Compliance certifications +## Compliance certifications ### ISO 27001 certification @@ -12,36 +12,36 @@ Each resource is tagged with a section to indicate the scope. Some resources onl Scope: **Hosted Offering, App Store, Software Development** {% endhint %} -![](../../.gitbook/assets/27001-small.png) +![](<../../.gitbook/assets/27001 small.png>) **Rocket.Chat is ISO 27001 certified**. ISO 27001 is an internationally recognized standard for information security management systems. Our organization is audited on an annual basis by an independent third-party auditor to verify the design and operational effectiveness of the management system. -* Certificate: +* Certificate: -{% file src="../../.gitbook/assets/certificate-2020.pdf" caption="ISO 27001 certificate 2020" %} +{% file src="../../.gitbook/assets/Certificate 2020.pdf" %} +ISO 27001 certificate 2020 +{% endfile %} * **Name**: ISO 27001 Information Security Management Systems -* **Statement of applicability** \([link](https://drive.google.com/file/d/14tYG-sVDkw6hGZvxnRjSCEcCfJXdYetb/view?usp=sharing)\) -* * _contains a list of controls and whether they are applicable or not_ +* **Statement of applicability** ([link](https://drive.google.com/file/d/14tYG-sVDkw6hGZvxnRjSCEcCfJXdYetb/view?usp=sharing)) +* + * _contains a list of controls and whether they are applicable or not_ * **Certifying body**: QMS Certification Services * **Validity**: July 2020 - July 2023 * **Use cases** for Rocket.Chat users: due diligence, security review, regulatory compliance, internal audit, supply chain audit ## Industry-specific resources -### Cloud Security Alliance \(CSA\) +### Cloud Security Alliance (CSA) {% hint style="info" %} Scope: **Hosted Offering** {% endhint %} -Rocket.Chat has published a pre-filled questionnaire in the STAR-registry of the CSA [here](https://cloudsecurityalliance.org/star/registry/rocket-chat). The CSA is a leading organization in the standardization and improvement of security in cloud computing. The Consensus Assessments Initiative Questionnaire \(CAIQ\) is a self-assessment that is updated on an annual basis. +Rocket.Chat has published a pre-filled questionnaire in the STAR-registry of the CSA [here](https://cloudsecurityalliance.org/star/registry/rocket-chat). The CSA is a leading organization in the standardization and improvement of security in cloud computing. The Consensus Assessments Initiative Questionnaire (CAIQ) is a self-assessment that is updated on an annual basis. * Name: Consensus Assessments Initiative Questionnaire * Last Update: October 2019 * Use cases: due diligence, security review ## Country-specific resources - - - diff --git a/rocket.chat-privacy-and-security/security/end-to-end-encryption-algorithms.md b/rocket.chat-privacy-and-security/security/end-to-end-encryption-algorithms.md new file mode 100644 index 0000000000..8246d1f4fa --- /dev/null +++ b/rocket.chat-privacy-and-security/security/end-to-end-encryption-algorithms.md @@ -0,0 +1,203 @@ +--- +description: >- + The following contains an overview of the implemented mechanisms of the + Rocket.Chat End to End Encryption feature. It provides technical information + and supplements the user guide. +--- + +# End-to-End Encryption Specifications + +## Encryption Process Overview + +{% hint style="info" %} +**IMPORTANT:** **E2E encryption functionality is currently in beta** and includes notable restrictions that workspace owners should carefully consider before activating this feature for production use as follow: + +* E2E encrypted messages will not appear in search operations +* Bots or other ancillary systems interacting via webhooks or REST API will not be able to read E2EE encrypted messages +* File uploads are not encrypted +* Rocket.Chat enables users to reset their private E2EE key to avoid permanent loss of data during the beta period +{% endhint %} + +Upon login, the client auto-generates the encryption password and asks the user to save it. This password is used to generate a secure 256-bit **AES-CBC** encryption key, called “**Master** **Key.**” + +For using end-to-end encryption (**E2EE**), the client (**C**) of a user (**U**) needs to have a Public-Private key pair (**Ku, Kr**). This key pair is generated when the user logs in with a client for the first time. The public key is sent to the server and stored in the database in the User model. The private key is first encrypted using the Master key and then sent to the server for storing in the User model database. If a public-private key pair already exists in the database for the user, instead of generating it again, it is downloaded from the server. The downloaded public key is used as-is, and the encrypted private key is first decrypted using the master key. If the master key has not been decrypted client-side already, the user is prompted to enter the master key again. + +The public key is used to encrypt a persistent session key (**Ks**), which is then used for the actual encryption of messages and files. This encrypted session key is stored in the database, in the Subscription model for every user in a room (including the user who initiates the **E2EE** session). Note that this method works for direct messages as well as groups since direct messaging is just a room with only two people in it. + +When starting a new **E2EE** session, first, if an existing session key exists in the room subscription of the current user, it is downloaded and decrypted using the user’s private key and then used to encrypt future messages. In case an existing session key is not found in the database, a new session key is generated by the current user and then stored in the database encrypted for every user in the room. + +Once a session key has been obtained in the above manner, we enter **E2EE** mode, and all messages sent henceforth are encrypted using this session key. + +Because keys are stored in the database and are persistent, the other users in the room do not need to be online to participate in an **E2EE** conversation. + +## Code + +The relevant code for E2EE is located in + +(rocket.chat/app/e2e/client) [_https://github.com/RocketChat/Rocket.Chat/tree/2bf8edab056dbc5e0d40aeae2c4472f729ec09d9/app/e2e/client_](https://github.com/RocketChat/Rocket.Chat/tree/2bf8edab056dbc5e0d40aeae2c4472f729ec09d9/app/e2e/client)\_\_ + +_(rocket.chat/app/e2e/client)_ [https://github.com/RocketChat/Rocket.Chat/tree/2bf8edab056dbc5e0d40aeae2c4472f729ec09d9/app/e2e/client](https://github.com/RocketChat/Rocket.Chat/tree/2bf8edab056dbc5e0d40aeae2c4472f729ec09d9/app/e2e/client)\ +**And**\ +[https://github.com/RocketChat/Rocket.Chat/blob/2bf8edab056dbc5e0d40aeae2c4472f729ec09d9/app/e2e/client/helper.js ](https://github.com/RocketChat/Rocket.Chat/blob/2bf8edab056dbc5e0d40aeae2c4472f729ec09d9/app/e2e/client/helper.js)[https://github.com/RocketChat/Rocket.Chat/blob/2bf8edab056dbc5e0d40aeae2c4472f729ec09d9/app/e2e/client/helper.js](https://github.com/RocketChat/Rocket.Chat/blob/2bf8edab056dbc5e0d40aeae2c4472f729ec09d9/app/e2e/client/helper.js) + +contains the technical specifications of the implementation of E2EE. + +## Algorithms Used + +Specifically, **E2EE** uses: + +`- client key pair: RSA-OAEP, length 2048` + +`- master key: AES-CBC, length 256, iterations: 1000` + +`- session key: AES-CBC, length 128` + +## Architectural Specifications + +1. **User Login:** As soon as the user logs in, we ask for their “**E2E** **password**”. Using this password with a **PBKDF** (Password-based Key Derivation Function), we generate a “Master Key.” We then check the server database for whether a public-private key pair exists for this user. If it does, we download that key pair. The public key is used as-is. The private key is in encrypted form and will be decrypted using the master key before it can be used. +2. **Client Startup:** Using _`startClient()`_ in `rocketchat.e2e.js`, check the local storage of the client to determine whether this is a new client or not. If local storage does not have the public-private key pair for this client, then this is treated as a new client, and this RSA-OAEP key pair is generated using a function call to: `crypto.subtle.generateKey({name: 'RSA-OAEP', modulusLength: 2048, publicExponent: new Uint8Array([0x01, 0x00, 0x01]), hash: {name: 'SHA-256'}}, true, ['encrypt', 'decrypt']);` This key pair is finally stored in the client’s local storage in a serialized form (JSON-stringified). This serial form of the public key and encrypted private key is also sent over to the server database using a server-method call to `addKeyToChain()`. +3. The client starts the encryption session from the E2E flex tab button: The handshake() function in rocketchat.e2e.room.js is called for the room where the client started the session. First, try fetching an encrypted session key from the subscription for this user-room pair from the database. If this key is found, decrypt this using the client’s private key, and the **E2EE** session is started using this decrypted key. If the user’s subscription to this room does not contain a key, generate a new AES-CBC session key for use. This is done by a function call to: `RocketChat.E2E.crypto.generateKey({name: 'AES-CBC', length: 128}, true, ['encrypt', 'decrypt'])` Once a key has been generated, it has to be stored, encrypted in the subscriptions of all users in the current room. This is done by: Fetch public keys for all users in the room using server-method calls to `getUsersOfRoom()` and `fetchKeychain()`. One by one, encrypt the newly generated session key using each of these public keys, and store this encrypted key in the corresponding user’s subscription to this room using a server-method call to `updateGroupE2EKey()`. **E2EE** session is now started using the generated session key. 4. Client sends a message: Making use of the `onClientBeforeSendMessage` event when the user sends the message, the message object is encrypted using the session key obtained in the previous step when **E2E** is in session. This encrypted message is wrapped in another object, in a “msg” parameter, and a new parameter for type, called “t”, is added to this new object with the value “**e2e**” to distinguish it from a regular message. Thus, the new object becomes: + +`final_message: {` + +`msg: <encrypted_message>,` + +`T: “e2e” }`\ +This new object is sent to the other client. Note that the original message is not visible to anyone, and only the encrypted message is sent. + +1. The client receives a message: When a message object is received, using the \``onClientMessageReceived` event, we intercept it and check whether the “t” type parameter of the message object is “**e2e**”, like we set when sending the message. If it is not, we don't need to decrypt it as it is a plaintext message, and **E2EE** was not used. If it is an encrypted message, we take the “msg” parameter’s value and decrypt that message using the session key. + + Note that if the receiving client does not have the session key in its local storage, it will have to download the encrypted session key from the server using the `fetchGroupE2EKey`\`method, and then decrypt it using its own private key, and then use this key for decryption of the incoming message. + +## Server Methods + +### 1. `addKeyToChain(key)` + +For saving a newly generated public key to the database for the current user.\ +**Request:** + +`key = {` + +`RSA-PubKey: “< The generated public key for a client>”,` + +`RSA-EPrivKey: “<` **\`\`**`Generated private key, encrypted using the master key>”` + +`}` + +The keys have been converted from ArrayBuffer to String format before sending them. + +**Response:** null + +### 2. fetchGroupE2EKey(rid) + +For fetching the encrypted session key for a conversation, for the current user. + +**Request:** + +`rid = The room id of a conversation` (either of direct or private). + +**Response:** + +The **E2EE** session key for the current user for that conversation. + +### 3. fetchKeychain(userId) + +For fetching the public key of a user (to be used for encrypting the session key for that user). + +**Request:** + +`userId = The id of a user` + +**Response:** + +`{` + +`RSA-PubKey: “< The public key for that user>”,` + +`RSA-EPrivKey: “< The private key, encrypted using the master key>”` + +`}` + +### 4. updateGroupE2EKey(rid, uid, key) + +For saving an encrypted session key to the database for a user. + +**Request:** + +`rid = The room id of a conversation (either of direct or private)` + +`uid = The id of a user` + +`key = The E2EE Session key for that user, for that conversation` + +**Response:** + +`{ Rocket.Chat subscription object }` + +### 5. emptyKeychain() + +Clears out the current user’s public and encrypted private keys from the server database. + +**Request:** {} + +**Response:** {} + +### 6. fetchMyKeys() + +Fetches current user’s public and encrypted private keys from the server database. + +**Request:** {} + +**Response:** + +`{` + +`RSA-PubKey: “<The public key for current user>”,` + +`RSA-EPrivKey: “<The private key, encrypted using the master key>”` + +`}` + +## REST API routes for encryption-related requests + +Each route directly corresponds to one server DDP method described above. These routes follow the same naming system as the DDP methods described above. Please refer to the above description to know more about the individual request/response pairs for each route. + +`GET e2e.fetchGroupE2EKey(rid)` + +`GET e2e.fetchKeychain(uid)` + +`GET e2e.fetchMyKeys()` + +`POST e2e.addKeyToChain(RSAPubKey, RSAEPrivKey)` + +`POST e2e.emptyKeychain()` + +`POST e2e.updateGroupE2EKey(uid, rid, key)` + +## Push Notifications of End-to-End encrypted messages + +Push Notifications for messages of an E2EE room just contain the encrypted payload of a message, the job of decrypting this content before shown is done locally by the mobile clients (iOS/Android). + +### Process + +The server sends Push notifications. The server, however, doesn't store the unencrypted content of any message from an E2EE room, because only the encrypted string is stored on the server. These encrypted strings can only be decrypted using the private key of a user that is stored locally on clients. + +When a new push notification from a E2EE message arrives, it has a messageType: '`e2e`'. The mobile client then starts decrypting the message, within the push payload, checking for the locally stored private key of a user and the E2EE key of the room that the message came from. If both are found, the message is decrypted locally on the device and then shows the plaintext message. In this process, only the encrypted message content passed via the push notification gateways. + +This feature is available in our **Community Edition.** + +### Fetching full message content from the server on receipt (Enterprise Edition only) + +To add an additional layer of security, there exists another feature for push notifications: + +`Fetch full message content from the server on receipt` + +This means to request the push message content from the server to display it, and it does not pass any message content - encrypted or not - via Google/Apple/other push gateways. Instead, the message content itself is fetched by and within the Rocket.Chat client itself. What passes via the gateways is only the information that a new message should be fetched and then shown as a push notification. Once the client receives this, the client will fetch the content. This way, you can prevent that the message content (even in encrypted form) passes via a separate gateway. + +Note: This feature is **Enterprise Edition only**. + +## Off-the-record Messaging (OTR) encryption specifications + +OTR is closely related to End-to-End-Encryption. It uses the same ciphers but instead uses only the participant´s local session storage to store the keys. + +Keys are exchanged when the OTR invitation is accepted by the counterpart, that is why all participants need to be online. Messages from an OTR session are removed when the session storage is cleared. diff --git a/rocket.chat-privacy-and-security/security/security-updates/README.md b/rocket.chat-privacy-and-security/security/security-updates/README.md new file mode 100644 index 0000000000..63dc27edce --- /dev/null +++ b/rocket.chat-privacy-and-security/security/security-updates/README.md @@ -0,0 +1,21 @@ +# Security fixes and updates + +This page includes regular updates about recently patched security issues in Rocket.Chat. + +Do you want to report a security issue yourself? Please have a look at our [Responsible Disclosure Policy](https://docs.rocket.chat/contributors/contributing/security#if-you-find-a-security-issue). We appreciate your reports. + +New issues are listed below, at first without details to give administrators and users sufficient time to upgrade. Details to the issue are added in with the next version release, e.g.: fixes introduced in version x.1 will be added when version x.2 is available. + +{% hint style="info" %} +Providing fixes for legacy versions of Rocket.Chat becomes increasingly difficult due to the code differences, which is why we focus on providing fixes for the most recent versions only. Please see our [support policy](https://docs.rocket.chat/getting-support), which outlines our supported versions. +{% endhint %} + +Please make sure to follow new version updates by subscribing to our newsletters or activating the announcement feature for new releases directly in the Rocket.Chat server administration settings. We recommend updating to the newest version as soon as possible to always have the newest security fixes. + + + +**Known vulnerabilities** + +We address a CVE for all vulnerabilities found in our product, you can check it by accessing the following page: + +[https://www.cvedetails.com/vulnerability-list/vendor\_id-17468/Rocket.chat.html](https://www.cvedetails.com/vulnerability-list/vendor\_id-17468/Rocket.chat.html) diff --git a/rocket.chat-privacy-and-security/security/security-updates/cve-2022-32211.md b/rocket.chat-privacy-and-security/security/security-updates/cve-2022-32211.md new file mode 100644 index 0000000000..301c033768 --- /dev/null +++ b/rocket.chat-privacy-and-security/security/security-updates/cve-2022-32211.md @@ -0,0 +1,20 @@ +# cve-2022-32211 + +Dear customers, + +Recently our security team received from an external researcher a report related to some vulnerabilities. As soon as we received it we took some actions to fix the vulnerabilities and applied the patches for the versions 3.18.x, 4.4.x, and 4.7.x + +All our cloud instances are already upgraded to this version and our incident response team guarantees that we didn't have any incident related to this vulnerability. We kindly ask all our customers that upgrade the instances for the versions 3.18.7, 4.4.5, and 4.7.4 to avoid any security breaches. + +We will keep you updated about any news regarding this vulnerability and soon we will release the cve-2022-32211 + +For further information, please, check + +{% embed url="https://www.cvedetails.com/vulnerability-list/vendor_id-17468/Rocket.chat.html" %} + +We'd like to thank Ghaem Arasteh for the report.\ + + +Best regards, + +Rocket.Chat security team diff --git a/rocket.chat-resources/brand-and-visual-guidelines/README.md b/rocket.chat-resources/brand-and-visual-guidelines/README.md new file mode 100644 index 0000000000..575bc839a3 --- /dev/null +++ b/rocket.chat-resources/brand-and-visual-guidelines/README.md @@ -0,0 +1,22 @@ +--- +description: A brief intro to our Brand Guidelines +--- + +# Brand and Visual Guidelines + +## What are Brand Guidelines? + +Our brand guidelines are a collection of information, assets, and overall advice to help you by providing some guidance on what our brand consists of, feels like and looks like. + +These guidelines will be touching on the following topics: + +* [Logo](logo.md) +* [Typography](typography.md) +* [Colors](colors.md) +* [Patterns](patterns.md) +* [Iconography](iconography.md) +* [Photos](photos.md) +* [Brand usage examples](brand-usage-examples.md) +* [Media kit](compositionsed.md) + +Make use of this guide anytime you feel unsure of which visual path to take when producing content regarding rocket.chat. diff --git a/rocket.chat-resources/brand-and-visual-guidelines/brand-usage-examples.md b/rocket.chat-resources/brand-and-visual-guidelines/brand-usage-examples.md new file mode 100644 index 0000000000..1ae3a34075 --- /dev/null +++ b/rocket.chat-resources/brand-and-visual-guidelines/brand-usage-examples.md @@ -0,0 +1,23 @@ +# Brand Usage Examples + +### Examples + +Below are some examples of how to use the new Rocket.Chat brand from online applications to offline. Be sure to maintain consistency in the application of all elements of the brand. + +### Brand in use + +![](../../.gitbook/assets/01.jpg) + +![](<../../.gitbook/assets/image (695).png>) + +![](<../../.gitbook/assets/image (684).png>) + +![](<../../.gitbook/assets/image (645).png>) + +![](<../../.gitbook/assets/image (654).png>) + +![](<../../.gitbook/assets/image (676) (1).png>) + +![](<../../.gitbook/assets/image (673).png>) + +![](<../../.gitbook/assets/image (667) (1).png>) diff --git a/rocket.chat-resources/brand-and-visual-guidelines/colors.md b/rocket.chat-resources/brand-and-visual-guidelines/colors.md new file mode 100644 index 0000000000..2cef1549ca --- /dev/null +++ b/rocket.chat-resources/brand-and-visual-guidelines/colors.md @@ -0,0 +1,61 @@ +--- +description: Here you will find Guidelines about Rocket.Chat's Color +--- + +# Colors + +Our color palette is varied and offers many accent colors to use when producing content for our brand. A white or light-colored background is favored, with small splashes of color in the form of type accentuation, images, or small elements that display our brand tones. + +A dark background can also be used, but in this case, white type and accenting elements are best for contrast. + +### Primary + +Red is a primary color along with blue and both should be prioritized in their usage above secondary and supporting colors. Red is the color of our logo and as such plays a major role in our branding, blue was also adopted as a primary color for its positive connotations in the tech space. These colors should only be used on white, or corresponding light backgrounds (see supporting colors section). Transparency on these colors may be altered if used on elements but not on backgrounds and typography. The typography that sits atop these colors should be white. + +![](<../../.gitbook/assets/image (671).png>) + +Their respective color codes are: + +* Red: `#F5455C` +* Blue: `#1D74F5` + +### Secondary + +The following first two colors serve as taste breakers from the usual red and blue and can be used in iconography, illustrations, typography, and other assets to bring variety to our visual identity. These can also be used to highlight certain keywords in a title or subtitle, but shouldn’t be used as the background color. Our shades of black and white also serve to bring versatility to our brand image, offering more possibilities for typographical styling and backgrounds. + +![](<../../.gitbook/assets/image (595) (1).png>) + +Their respective color codes are: + +* Dark Purple: `#9F22C7` +* Light Purple: `#CA71E7` +* Light Green: `#2DEDA5` +* Dark Green: `#148660` +* White: `#F7F8FA` +* Black: `#2F343D` + +### Supporting Colors + +These lighter shades of our brand colors serve as options for backgrounds and iconography, as well as other elements such as images and illustrations. These lighter shades of our brand colors serve as options for backgrounds and iconography, as well as other elements such as images and illustrations. + +![](<../../.gitbook/assets/image (624).png>) + +Their respective color codes are: + +* Red for backgrounds: `#FEECEF` +* Blue for backgrounds: `#E8F1FE` +* Purple for backgrounds: `#F5E9F9` +* Green for backgrounds: `#EAFCF6` + +### Highlight Shades: + +These gradients are a gradient version of the supporting colors and should only be used as the fill for the highlighting shape, as exemplified on our homepage, behind the second sentence in the subtitle. + +![](<../../.gitbook/assets/image (679).png>) + +![Their respective color codes are:](<../../.gitbook/assets/image (678).png>) + +* Light red highlight: `#FEECEF` to`#FFFFFF` +* Light blue highlight: `#E8F1FE` to`#FFFFFF` +* Light purple highlight: `#F5E9F9` to`#FFFFFF` +* Light green highlight: `#EAFCF6` to`#FFFFFF` diff --git a/rocket.chat-resources/brand-and-visual-guidelines/compositionsed.md b/rocket.chat-resources/brand-and-visual-guidelines/compositionsed.md new file mode 100644 index 0000000000..ccd4b17ab1 --- /dev/null +++ b/rocket.chat-resources/brand-and-visual-guidelines/compositionsed.md @@ -0,0 +1,9 @@ +--- +description: Here you will find Guidelines about Rocket.Chat's Modular Compositions +--- + +# Media Kit + +Our MediaKit contains important resources for producing content regarding Rocket.Chat. Complete with our logo and official fonts, along with some supplementary resources to help fine-tune the overall aesthetic of whatever is produced. + +{% file src="../../.gitbook/assets/MediaKit_Rocket.Chat.7z" %} diff --git a/rocket.chat-resources/brand-and-visual-guidelines/iconography.md b/rocket.chat-resources/brand-and-visual-guidelines/iconography.md new file mode 100644 index 0000000000..e5da04cb21 --- /dev/null +++ b/rocket.chat-resources/brand-and-visual-guidelines/iconography.md @@ -0,0 +1,15 @@ +--- +description: Here you will find Guidelines about Rocket.Chat's Iconography +--- + +# Iconography + +Our iconography follows the same design principles as the rest of our brand. Utilizing our brand colors as the focal point, making use of transparency for a lighter look, simple and clean lines along with to-the-point and easy-to-understand representations. + +Below, you can find some examples of our icons, for the complete collection of Rocket.Chat branded icons visit: [https://drive.google.com/drive/folders/1m097stjSL7k8FSYpbKV3\_gvu83sPfeE2?usp=sharing](https://drive.google.com/drive/folders/1m097stjSL7k8FSYpbKV3\_gvu83sPfeE2?usp=sharing) + +{% embed url="https://drive.google.com/drive/folders/1m097stjSL7k8FSYpbKV3_gvu83sPfeE2?usp=sharing" %} + +### Icon Examples + +![](<../../../.gitbook/assets/image (661).png>) diff --git a/rocket.chat-resources/brand-and-visual-guidelines/logo.md b/rocket.chat-resources/brand-and-visual-guidelines/logo.md new file mode 100644 index 0000000000..7e32328c7c --- /dev/null +++ b/rocket.chat-resources/brand-and-visual-guidelines/logo.md @@ -0,0 +1,27 @@ +--- +description: Here you will find Guidelines about Rocket.Chat's Logo +--- + +# Logo + +The logo is one of the main resources to identify Rocket.Chat. So, using it consistently and coherent is fundamental to strengthening the brand image. + +Our vertical variant should only be used in situations where the full logo won't fit, but our brand name must still be displayed. + +![](../../../.gitbook/assets/01\_logo.jpg) + +![](../../../.gitbook/assets/02\_logo.jpg) + +![](../../../.gitbook/assets/03\_logo.jpg) + +### Protection area + +The proximity to other elements can reduce the visual impact of the logo. When applying any of the versions, an area of non-interference around the logo must be protected, equivalent to at least 3 balls from our symbol. + +![](../../../.gitbook/assets/05\_logo.jpg) + +### Position in icons + +Whenever placing the Rocket.Chat symbol in circular or square formats, use the circle in the center of our symbol as a reference for centering. + +![](../../../.gitbook/assets/06\_logo.jpg) diff --git a/rocket.chat-resources/brand-and-visual-guidelines/patterns.md b/rocket.chat-resources/brand-and-visual-guidelines/patterns.md new file mode 100644 index 0000000000..4c9d795ea4 --- /dev/null +++ b/rocket.chat-resources/brand-and-visual-guidelines/patterns.md @@ -0,0 +1,26 @@ +--- +description: Here you will find the Guidelines about Rocket.Chat's Patterns +--- + +# Patterns + +Our brand doesn’t rely on repeatable patterns, leaning more on illustrations that reflect our product’s capabilities, our brand values, or are otherwise relevant to complement a certain topic. + +Below, you’ll find some versatile examples that can be used to add a bit of our branding to any content you produce. + +Find the full collection of Rocket.Chat branded images on our shared google drive folder at:\ +[https://drive.google.com/drive/folders/1gaRMmpX2iuc8x9x5szbqdDSfaArjb19e?usp=sharing](https://drive.google.com/drive/folders/1gaRMmpX2iuc8x9x5szbqdDSfaArjb19e?usp=sharing) + +{% embed url="https://drive.google.com/drive/folders/1gaRMmpX2iuc8x9x5szbqdDSfaArjb19e?usp=sharing" %} + +or on the Figma file at: + +{% embed url="https://www.figma.com/file/8I6eLVus4HcBP5tD4nsM9X/Website-Image-Exports?node-id=0%3A1" %} + +### Pattern Examples + +![](<../../../.gitbook/assets/image (668).png>) ![](<../../../.gitbook/assets/image (689).png>) + +![](<../../../.gitbook/assets/image (647) (1).png>) ![](<../../../.gitbook/assets/image (681).png>) + +![](<../../../.gitbook/assets/image (646) (1).png>) diff --git a/rocket.chat-resources/brand-and-visual-guidelines/photos.md b/rocket.chat-resources/brand-and-visual-guidelines/photos.md new file mode 100644 index 0000000000..47ab1454b2 --- /dev/null +++ b/rocket.chat-resources/brand-and-visual-guidelines/photos.md @@ -0,0 +1,25 @@ +--- +description: Here you will find Guidelines about Rocket.Chat's Photos +--- + +# Photos + +Our brand makes use of illustrations in lieu of photography. Although images of people should be included in these illustrations for both realism and relatability, the focal point should be the product and not the photography, hence the shift in focus favoring illustration. + +We increasingly want to appropriate a unique, contemporary language that conveys our value proposition in the stories that we are telling. So, we have some guidelines to inspire the way the Rocket.Chat style must be. + +### Treatment + +Our photos are high temperature and saturated, resulting in a simple, proprietary effect. + +![](../../../.gitbook/assets/01\_photo.jpg) + +### Image Bank + +First of all, when choosing a bank image photo, it is necessary to understand the content and context that it will bring to your art. Then you will do the right search and filter for the best image. The more specific your search term is, the easier it will be to find the right image. + +![](../../../.gitbook/assets/02\_photo.jpg) + +![](../../../.gitbook/assets/03\_photo.jpg) + +![](../../../.gitbook/assets/04\_photo.jpg) diff --git a/rocket.chat-resources/brand-and-visual-guidelines/typography.md b/rocket.chat-resources/brand-and-visual-guidelines/typography.md new file mode 100644 index 0000000000..56382f6cb5 --- /dev/null +++ b/rocket.chat-resources/brand-and-visual-guidelines/typography.md @@ -0,0 +1,23 @@ +--- +description: Here you will find Guidelines about Rocket.Chat's Typography +--- + +# Typography + +The Rocket.Chat typeface family brings flexibility and recognition. Its primary function is to have a fluid performance in the digital medium. Its unique design also helps to highlight aspects such as modernity, technology, and simplicity. + +![](<../../../.gitbook/assets/image (677) (1).png>) + +![](<../../../.gitbook/assets/image (675).png>) + +### Type Scale + +We follow a 6px baseline grid for achieving a vertical rhythm on all block-level elements in the app. + +![](../../../.gitbook/assets/04\_typo.jpg) + +![](../../../.gitbook/assets/05\_typo.jpg) + +![](../../../.gitbook/assets/06\_typo.jpg) + +![](../../../.gitbook/assets/07\_typo.jpg) diff --git a/development-docs.md b/rocket.chat-resources/development-docs.md similarity index 99% rename from development-docs.md rename to rocket.chat-resources/development-docs.md index 9fd9478c64..1b80db6b7d 100644 --- a/development-docs.md +++ b/rocket.chat-resources/development-docs.md @@ -1,4 +1,3 @@ # Development Docs Rocket.Chat Developer documentation has been moved to [http://developer.rocket.chat/](http://developer.rocket.chat/) - diff --git a/rocket.chat-resources/frequently-asked-questions/README.md b/rocket.chat-resources/frequently-asked-questions/README.md new file mode 100644 index 0000000000..d399358746 --- /dev/null +++ b/rocket.chat-resources/frequently-asked-questions/README.md @@ -0,0 +1,2 @@ +# Frequently Asked Questions + diff --git a/rocket.chat-resources/frequently-asked-questions/cloud-faqs.md b/rocket.chat-resources/frequently-asked-questions/cloud-faqs.md new file mode 100644 index 0000000000..bd07030075 --- /dev/null +++ b/rocket.chat-resources/frequently-asked-questions/cloud-faqs.md @@ -0,0 +1,187 @@ +# Cloud FAQs + +## Trials + +
+ +How long do trials last? + +Currently, trials last 30 days. + +
+ +
+ +How can I convert from a trial to a paid plan? + +Our trials are fully featured. So if you enter your card information in the billing section of the [Cloud Console](https://cloud.rocket.chat) your trial will automatically convert to a paid plan at the end of the trial period. + +
+ +
+ +How do I cancel my trial? + +You can cancel your Rocket.Chat workplace directly within the Cloud Console. + +
+ +## Data Export + + + +
+ +How can I get a data export? + +Send an email to cloud.support@rocket.chat with the address of your workspace. Note: The request will take some time to fulfill. + +
+ +## Cloud Accounts + +**** + +
+ +How do I view the push usage for my workspace? + +To view the push usage for your workspace, you need to login to the Cloud Console ([cloud.rocket.chat](https://cloud.rocket.chat)): navigate to Workspaces and click on the workspace you'd like to see usage for. + + + + + + + +
+ +
+ +I already canceled my workspace, but it is still in the “Cancelling” status and is accessible. Why? + +Please note that in case you cancel your workspace in the middle of the billing period, it will be accessible and in the “Cancelling” status till the end of your billing period. + +If, for example, you are charged on the 5th of every month and decide to cancel the subscription on the 20th of December or later - your workspace will be operational till the 5th of January (this way, we want to allow customers to use what they paid for). After this, it will stop running and switch to “Cancelled”. + +
+ +
+ +How do I cancel my cloud subscription? + +If you want to end your subscription, please note that it can be done only by the workspace administrator in your Cloud Console ([cloud.rocket.chat](https://cloud.rocket.chat)) : navigate to Workspaces -> click on the three dots at the end of the correspondent workspace line -> select **Cancel**.\ +\ +This will stop your subscription and hibernate your server (your server will still exist if you want to get back to Rocket.Chat later). + + + +If you need a database dump or if you want to permanently delete your workspace and all the data associated with it - submit a ticket here on our Helpdesk or drop an email to [support@rocket.chat](mailto:support@rocket.chat) with the respective request. + +
+ +
+ +How can I create one more workspace with the same Cloud account? + +Please, note that this can only be done by our Cloud engineers. If you want to create an additional workspace - submit a ticket here on our Helpdesk or drop us a letter at [support@rocket.chat](mailto:support@rocket.chat) - include the workspace address you would like and the plan.\ +\ +**NOTE**: Additional workspaces are billed based on their usage. So if you have 5 users on one and 10 on the other, you will get billed for them both separately. + +
+ +
+ +How can I change the ownership of the workspace? + +If you need to grant the ownership of your workspace to another person or to change the primary email of your workspace - submit a ticket here on our Helpdesk or drop us an email to [support@rocket.chat](mailto:support@rocket.chat) with the respective request. + +**NOTE**: ticket should be submitted from the admin email address (the email address the workspace is registered under) and should contain the email address the ownership should be granted to/the email address it (admin one) should be changed to. + +
+ +
+ +I already canceled my subscription but was charged again. Why? + +Please, note that we charge our customers afterward, not in advance. This means that on a particular day of each month you will be charged for the previous month of use. + +If, for example, you started your trial on December 1st, it expired on December 15th and your subscription was automatically continued (you added the payment method before the trial expired) - on January 15th you will receive an invoice for the previous month (December 15th - January 15th). + +
+ +
+ +How can I reactivate my workspace after the trial has expired? + +If your trial has expired, and you didn’t manage to add your payment method to continue your subscription, navigate to Payment methods in your Cloud Console ([cloud.rocket.chat](https://cloud.rocket.chat)) -> click **Add payment method** (top right corner) to add your card (credit/debit card is the only payment method we accept at the moment). + + + + + + + +
+ +
+ +How to change workspace region? + +The region is defined upon creation. Please, note that customers can not migrate their instances between regions independently. This process involves manual work required by Rocket.Chat Cloud team. If you need to switch regions - submit a ticket or drop an email to [support@rocket.chat](mailto:support@rocket.chat). + +
+ +
+ +How can I change or remove my credit card data? + +Please, note that you can not delete the card that is the only one (default one) linked to your workspace as well as you can not delete the card that was charged last - in both cases, you will see the error message “Can't delete last payment option”. + +If you need to change the card - add it as a new payment method and make it the default one (after that, you will be able to delete all other cards). + +If you want to remove the card information before canceling your subscription, please note that your payment data can only be deleted and all the other data associated with your workspace. To request that, submit a ticket here on our Helpdesk or drop an email to [support@rocket.chat](mailto:support@rocket.chat). + +
+ +
+ +Can I use another payment method rather than a credit/debit card? + +A credit/debit card is the only payment method we accept at the moment. + +For companies paying up-front for a specific period, we provide invoices to pay by wire transfer. + +
+ +
+ +How can I have more than one Cloud workspace under the same Cloud account? + +Adding more instances to your Cloud account can only be done by our engineers. Reach out to us at support@rocket.chat and specify the following data for the new workspace you want to add: + +* workspace name +* SaaS plan and billing period (monthly or annual payment) +* number of seats +* region of the deployment (US or EU) + +
+ +
+ +How to change your Cloud account email? + +Cloud account email can be changed at cloud.rocket.chat on the Profile page. If you have difficulties changing the email of the account owner, contact us at support@rocket.chat. The request must be sent from the original account owner's email. + +
+ +
+ +How to request a custom domain? + +To request a custom domain, set up a CNAME DNS record for the domain name you want to have pointing to "**cdns.use1.cloud.rocket.chat**" (for US region) and to "**cdns.euc1.cloud.rocket.chat**" (for EU region). Afterward, please send us an email to support@rocket.chat so we can make respective changes to your workspace. + +Please note that the ability to set a custom domain is available only in the Enterprise Edition offereing. + +
+ diff --git a/rocket.chat-resources/frequently-asked-questions/ldap-faq.md b/rocket.chat-resources/frequently-asked-questions/ldap-faq.md new file mode 100644 index 0000000000..ad1db5b8c0 --- /dev/null +++ b/rocket.chat-resources/frequently-asked-questions/ldap-faq.md @@ -0,0 +1,117 @@ +# Identity Management EE FAQ + +
+ +What exactly will be implemented on Enterprise Edition (EE) only? When will this be effective? + +Rocket.Chat has launched a re-factored set of advanced LDAP features on September 28, 2021. The ability to connect to your LDAP server to sync user names and unique identifiers will remain in the Community Edition together with existing social login features. Selected advanced LDAP features including extended user attribute sync, group/team management, background sync, and SAML integration will be implemented only in the Enterprise edition. This change will enable Rocket.Chat to support ongoing improvements to our suite of identity management solutions while continuing to make our basic LDAP directory synchronization codebase available for use and extension by the Rocket.Chat community. + +
+ +
+ +What LDAP, Active Directory, OAuth, and SAML mean, and how do these things work together? + +These resources mean: + +* **Directory service**\ + Directory service is a shared information infrastructure for locating, managing, administering, and organizing everyday items and network resources, which can include volumes, folders, files, printers, users, groups, devices, telephone numbers, and other objects.\ + Eg. Microsoft AD, NetIQ eDirectory, Apache Directory. +* **LDAP**\ + Lightweight Directory Access Protocol is an open, vendor-neutral, industry-standard application protocol for accessing and maintaining distributed directory information services, that allows the sharing of information about users, systems, networks, services, and applications. +* **SAML**\ + Security Assertion Markup Language is an open standard for exchanging authentication and authorization data between parties, in particular, between an identity provider and a service provider. +* **OAuth**\ + Open Authorization is an open standard for access delegation, commonly used as a way for Internet users to grant websites or applications access to their information on other websites but without giving them the passwords. + + Eg. Google, Facebook, LinkedIn, Twitter. +* **SSO**\ + Single sign-on is an authentication scheme that allows a user to log in with a single ID and password to any of several related, yet independent, software systems. + +
+ +
+ +Why is Identity Management (and authentication/authorization services) important? + +The ability to integrate with your organization’s user directory service is important for keeping your users’ access up to date at all times. For example, when someone joins your organization their Rocket user can be created automatically, and when they leave their user can be promptly deactivated. This becomes more important with scale, the greater the count of users. + +
+ +
+ +What will community users not be able to do anymore? Examples. + +Community users will be able to connect an LDAP service used by their organization to and sync user email, name, and username; use the fallback option and encrypted settings. Basic SAML sync options, and Oauth for all providers (Apple, Dolphin, Drupal, Facebook, GitHub, GitHub, Enterprise, GitLab, Google, Linkedin, Meteor, Nextcloud, Tokenpass, Twitter, WordPress) will continue available in Community Edition.\ +\ +[View full functionalities](../../setup-and-administer-rocket.chat/advanced-workspace-management/identity-management-ee-vs-ce.md) + +
+ +
+ +Will the new implementation affect Single Sign-On capabilities? Please explain single sign-on. + +Single Sign-On (SSO) is an authentication scheme that allows a user to log in with a single ID and password to any of several related, yet independent, software systems. True single sign-on allows the user to log in once and access services without re-entering authentication factors. Workspaces that use social login capabilities (users sign-on via Google, Linked In, etc.) will not be impacted by this change. + +
+ +
+ +I've contributed to building LDAP/SAML/Custom Oauth and now I can't use my code. What should I do? + +We are rewriting the LDAP feature to TypeScript and making improvements on top of it. It's natural that over time parts of the code will be changed. We recognize all portions of our platform had contributions from our community. For those who contributed to LDAP/SAML/Custom Oauth, we will make sure it will not have a negative impact on their operation. Please contact @duda.nogueira on the open server. + +
+ +
+ +How will this affect my air-gapped (no internet connection) environment? Can’t we just pull from our intranet easily anyway? + +If the Rocket.Chat server is air-gapped but integrated with an internal LDAP server, then there is a need to apply for an enterprise edition license to access the complete suite of advanced LDAP/SAML/Oauth features when you upgrade. + +
+ +
+ +The reason a division of our team/company uses RC is for security, and/or it is air-gapped. This LDAP change doesn’t seem to affect us for our purposes – but will this have some sort of unanticipated effect on our security processes/ability to maintain data privacy? If so, please explain so we can consider it further. + +No there will not be ancillary effects. + +
+ +
+ +What's the "Bind successful but user was not found via search" error? + +This error means that the login attempt was successful, but a subsequent search for the user on the LDAP Server returned no results. If you want to disable this search, you can turn off the "Find user after login" setting. + +
+ +
+ +How do I stop disabled LDAP users from logging in on Rocket.Chat? + +You need to use the "Sync User Active State" setting under Advanced Sync, but it is not yet compatible with all LDAP Servers. + +
+ +
+ +I cannot log in even though everything looks good + +If you cannot log in without getting any error messages (the last thing in the log you see is `Attempt to bind `), make sure the username of your LDAP account does not match any username of a local account. For example, if you created a local user with a username`joe`, then enable LDAP and try to log in with a username `joe` (who exists on your LDAP server), it will silently fail without any error message in your log simply saying username or password does not match. You cannot log in by`joe,`your LDAP password nor by your local password anymore. + +
+ +
+ +No users are created even if everything looks good + +Every Rocket.Chat user has to have an email. So either the LDAP users need to have an email or you have to set a default domain using the setting "default domain". + +
+ +## References + +MS LDAP Info: [https://msdn.microsoft.com/en-us/library/windows/desktop/aa746475(v=vs.85).aspx](https://msdn.microsoft.com/en-us/library/windows/desktop/aa746475\(v=vs.85\).aspx) diff --git a/rocket.chat-resources/frequently-asked-questions/omnichannel-faqs.md b/rocket.chat-resources/frequently-asked-questions/omnichannel-faqs.md new file mode 100644 index 0000000000..6d45c92554 --- /dev/null +++ b/rocket.chat-resources/frequently-asked-questions/omnichannel-faqs.md @@ -0,0 +1,14 @@ +# Omnichannel FAQs + +
+ +How can I set the email field on Live Chat widget optional? + +To make the email field on Live Chat widget registration page optional; + +* Navigate to **Omnichannel** > **Livechat** **appearance** > **Registration Form** and disable the **Show email field** +* Then go to **Omnichannel** > **Custom Field** and create an email field with the required button disabled. + +![](<../../.gitbook/assets/Set email field optional on Live Chat widget.png>) + +
diff --git a/rocket.chat-resources/frequently-asked-questions/support-faqs.md b/rocket.chat-resources/frequently-asked-questions/support-faqs.md new file mode 100644 index 0000000000..d8a14b0c3c --- /dev/null +++ b/rocket.chat-resources/frequently-asked-questions/support-faqs.md @@ -0,0 +1,80 @@ +# Support FAQs + +## **Slow connections. iOS connection error** + +95% or more of these are due to improperly configured reverse proxies where the WebSocket is not working properly. If a WebSocket cannot be correctly established, the client will try and fall back to an XHR connection. It is extremely slow and flaky. The iOS app will not connect at all without a WebSocket. + +Please use Chrome and dev tools to check for the presence of a WebSocket. + +## **WebSockets** + +* Right Click, Inspect +* Network, F5 to refresh +* Look for the WS filter +* Should see WebSocket + + WebSocket - wss://open.rocket.chat/sockjs/123/pbiz45rm/websocket + +Click it and look on the right for 'Headers' + +Has this got a green light? + +``` + Status Code: 101 Switching Protocols +``` + +What do the headers say? + +``` +Response headers + Connection: Upgrade + Sec-WebSocket-Accept: nXd/PfaHuA1Kx/ggJWAAy+96Ee4= + Upgrade: websocket +``` + +## **Upgrading Rocket.Chat** + +For upgrading first, you have Rocket.Chat itself, and then the Mongo database. + +Snaps should auto-update so this is aimed at those who use other methods. + +* Rule One. Backup. Lots of them and lots of ways, and practice restores as well. +* Rule Two. Use virtual machines for testing. They are so cheap. + +Upgrading Mongo + +* Again backups! Please read how to do this. Practice it. +* Use the Mongo documentation. There are leaps between 2.x and 3.x +* Then there are more leaps as you proceed trough 3.x and then again to 4.x +* As of writing 3.4 is going EoL so you need to be on 3.6 +* For now I would get to 3.6 and then start preparing for 4.x + +Upgrading Rocket + +Did we mention backups? Yup - boring. Until you need them. 😉 + +Most Roket.Chat updates also update the database schema - the core layout. + +Now, theoretically apart from adding oplogs to Mongo for Rocket 1.x + you should be able to merrily jump from say 0.62 through to todays 2.1.x + +Except..... those schema changes. If you are going to hit a problem, it will be one of those. + +The devs test changes from one version to another, and maybe even over a few versions. But not every single version up to latest or say 0.74.3 -> 1.3.2 + +That's where it may go wrong. + +So a recommended path is something like this: + +``` +-> 0.73.x -> 1.0.x -> 1.32 -> 2.0.x -> 2.1.x +``` + +Or possibly even more cautious: + +``` + -> 073.x - 1.0.x -> 1.1.x -> 1.2.x -> 1.3.x -> 2.0.x -> 2.1.x +``` + +( 'x' means the last patched version e.g. 1.3.2 Check [tags](https://github.com/RocketChat/Rocket.Chat/tags) or [releases](https://github.com/RocketChat/Rocket.Chat/releases) ) + +We have seen people make some big jumps. And some disasters too. If in doubt, take your time and a backup!😃 diff --git a/rocket.chat-resources/frequently-asked-questions/update-faqs.md b/rocket.chat-resources/frequently-asked-questions/update-faqs.md new file mode 100644 index 0000000000..7a45260c6a --- /dev/null +++ b/rocket.chat-resources/frequently-asked-questions/update-faqs.md @@ -0,0 +1,11 @@ +# Update FAQs + +## Desktop App + +#### Why can't I update my desktop app version 2.17.0 or above? + +In some cases, for version 2.17.0 and above you may have problems in order to update your app. If you click on the **Install Update** button and nothing happens for one minute then you need to follow the steps below: + +1. Go to [https://rocket.chat/install/?gclid=undefined](https://rocket.chat/install/?gclid=undefined); +2. Download the matching edition to their OS +3. Install the app diff --git a/rocket.chat-resources/frequently-asked-questions/whatsapp-business-app-faqs.md b/rocket.chat-resources/frequently-asked-questions/whatsapp-business-app-faqs.md new file mode 100644 index 0000000000..e2977be652 --- /dev/null +++ b/rocket.chat-resources/frequently-asked-questions/whatsapp-business-app-faqs.md @@ -0,0 +1,320 @@ +# Whatsapp Business App FAQs + +## **New customers** + +
+ +Can customers try WhatsApp free of charge? Is there any kind of free trial? + +Not at the moment. We are working to provide a sandbox to be able to do so. + +
+ +
+ +Is there a difference between Community Edition (CE) and Enterprise Edition (EE)? + +No, there is no differentiation on WhatsApp for CE x EE. All charges incurred for CE will be applied the same way (App fee, number fee, and variable costs). CE users will only be able to do so through our self-service method.\\ + +
+ +
+ +Can customers who have CE open tickets about WhatsApp? + +Community workspaces that purchase the app will have access to support for all matters related to WhatsApp. The process should be done normally by opening up a ticket [at Zoho desk](https://desk.rocket.chat/portal/en/signin). + +
+ +
+ +What happens to actual customers using the old version of the App? + +We have a few customers using the old versions. The payment of $59 will be the same for these customers until the end of the contract. After that, the current policy applies, and for 1 number the new price will be $78. This price already includes taxes. + +
+ +
+ +What does a customer who has an old version of WhatsApp need to do to get the new one? + +Existing customers should click on uninstall button on the Marketplace panel. Before that, please copy the API KEY and then paste it onto the app after installing it.\\ + +
+ +
+ +What is the oldest version of Rocket.chat that supports Whatsapp? + +`3.14.0` + +
+ +
+ +What do we do with air-gapped customers? + +We won’t be able to serve air-gapped customers because the necessity to connect with the 360Dialog proxy is needed to have access to the WhatsApp Business API. + +
+ +## **Pricing Details** + +
+ +What costs will the customer have? + +There will be 3 types of costs. App fee ($39/mo), 360dialog's monthly fee ($39/mobile number/mo) + Facebook costs per template message used (variable depending on volume). Rocket.Chat does not charge any mark-up on variable costs. This price already includes taxes. + + + +**Understanding 360dialog's fixed monthly fee** + +\ +Our pricing is based on the monthly license fee per hosted number. Incoming & outgoing WhatsApp Session Messages are always free and unlimited - we never charge any extra cost per session message. The license fee can vary according to the available bandwidth since we have higher tier options for customers that exchange more than 10 messages per second and to partner deal size. If your account will need to process more than 10 messages per second, please reach out to our support team. We never charge any extra cost per Outgoing Template Messages, the WhatsApp fees are only passed through. + +**Facebook Current Pricing (until January 31st, 2022) and New Facebook Pricing (starting February 1st, 2022): Conversation-based Pricing** [**can be found here**](https://docs.360dialog.com/useful/how-much-does-it-cost-to-have-a-whatsapp-business-api-account-with-360dialog) + +\_\_ + +_Facebook Current Pricing (until January 31st, 2022)_ + +Template messages (business-initiated) sent through your WhatsApp Business Account are charged according to a tiered pricing model. If your customer initiates messaging with you, WhatsApp will not charge you for any messages (including Templated Messages) that you send to that customer for up to 24 hours following the last message that that customer sends to you ("Customer Care Window"). Any additional message you send to that customer beyond the Customer Care Window must be a Templated Message + +**Facebook Pricing** + +_The prices listed below are effective until February 1, 2022. After that, conversation-based pricing rates apply._ + +**Pricing Rules** + +* “Message template” has the meaning detailed in our Documentation. “Templated message” means a message sent using a message template, in compliance with Facebook’s terms and policies. +* All prices are set forth in the List Price Schedule below and will apply to Templated Messages sent on or after the effective date indicated in the List Price Schedule. +* Facebook will determine the price of each delivered Templated Message based upon the country code of the message recipient and the volume of Templated Messages delivered in a calendar month to a given country or region. Templated Message volume will not be aggregated across countries or regions or different Whatsapp Business API’s. +* The price charged for each delivered Templated Message will be the price effective at the time you send the Templated Message. +* Charges are applicable for each Templated Message that is delivered within 30 days after being sent. Charges will not be applicable for Templated Messages that were delivered more than 30 days after it was sent. We determine that a message has been delivered when WhatsApp servers process a delivery receipt for the sent message\*\*.\*\* +* If your customer initiates messaging with you, we will not charge you for any messages (including Templated Messages) that you send to that customer for up to 24 hours following the last message that that customer sends to you ("Customer Care Window"). Any additional message you send to that customer beyond the Customer Care Window must be a Templated Message, for which we will charge you as set forth in our rate card. +* Facebook will have the right to update this rate card on a monthly basis, and changes will take effect the first day of the calendar month following such changes. +* The WhatsApp Business Solution may not be used to send messages to or from the following countries and regions: Crimea, Cuba, Iran, North Korea, and Syria. + +**Cost per Message in USD** + +To see the entire list of the countries and the complete pricing range, please visit this page. + +New Facebook Pricing (starting February 1st, 2022): Conversation-based Pricing The main change going into effect on February 1st is that now instead of only paying for used template messages. Facebook will start charging for each and every conversation. Also, you can send as many messages as you want in a 24-hour session, even if the customer doesn't respond. + +**How It Works** + +In conversation-based Pricing, WhatsApp Business API conversations fall into two categories that are priced differently: + +* User-initiated, like customer care and general support inquiries +* Business-initiated, like post-purchase notifications + +All conversations are measured in 24-hour increments, or "sessions", that start whenever the first message is delivered by a business. The first message can be initiated by the business (business-initiated) or a business reply within 24 hours of a user message (user-initiated). A user is defined as the person or entity with whom the business is messaging. + +Charges for conversations are based on the user’s phone number. Rates for business-initiated conversations and user-initiated conversations vary by market (country or region). See Rates below. + +**Free Tier Conversations** + +The first 1,000 conversations each month will be free, so your business can start to build experiences your customers will love before having to pay. Each WABA gets 1,000 free tier conversations. Free tier conversations can be business-initiated or user-initiated\*\*.\*\* + +**Free Entry Points Conversations** + +Conversations will not be charged when users message businesses using call-to-action buttons on Ads that click to WhatsApp or a Facebook Page CTA. Free entry point conversations can only be user-initiated. Only the first conversation that starts from the entry point is free of charge. Subsequent conversations with the user are charged. + +Standard pricing will apply for Ads that Click to WhatsApp. The conversation that initiates from the ad is free, but not the ad itself. + +**Detailed pricing and examples can be found** [**on this link**](https://developers.facebook.com/docs/whatsapp/pricing/conversationpricing?locale=en\_US)**.** + +
+ +
+ +Is there any price differentiation for the government? + +Government Agencies must get approval from Facebook before creating any WhatsApp Business accounts. Please note that this process can take up to 60 days and will generate extra costs. To start the Government WABA Application process, please send the information requested in the form below. Then, a member of our team will reach out to you with the next steps. Anybody involved (partner, business, or government agency) can fill out the form. If needed, extra information will be requested by the team member responsible for the process. + +[**Form Link**](https://marketplace.360dialog.com/government-access-request-form) + +
+ +
+ +Can I have more than one number registered? Is there a price difference? + +Yes, you can have more than one number but there isn’t a difference based on the number of numbers bought. + +
+ +
+ +Which taxes are applied on Whatsapp in Brazil? + +The 78$ price already includes taxes**.** + +
+ +## Billing Model + +
+ +How are charges made? + +Trying to provide a better experience to our customers, Rocket.Chat will be responsible for sending a single invoice with any other charges that may be due Rocket.Chat. + +
+ +## **App installation** + +
+ +What to register first? 360 Dialog / Facebook? + +The process starts at Rocket.Chat, after installing the App, the user is guided through all the steps. The 360D account will be created, the phone number will be sent and if all goes well, the number will be set up and ready for production in less than 10 minutes. It is also important for the customer to have a Facebook Business Manager account in the company's name. Check the signup documentation for details on this link. + +
+ +
+ +What are the minimum requirements to be able to register? + +A Facebook Business Manager account and a valid phone number capable of receiving calls or SMS. + +
+ +## **Messaging with Whatsapp** + +
+ +How does Whatsapp Template Messaging work? + +Template messages must be submitted to Facebook for review before they are available to use. It is Facebook that reviews each template and checks that each message complies with their WhatsApp API guidelines + +
+ +
+ +When to use templates for WhatsApp messaging? + +If a customer initiates messaging with you, Facebook will not charge you for any WhatsApp messages (including Templated Messages) that you send to that customer for up to 24 hours following the last message that the customer sends to you ("Customer Care Window"). Any message you send to your customers beyond the Customer Care Window must be a Template Message. WhatsApp does not charge for incoming messages from the customer side or outgoing messages from the company side as long as they are sent within the 24-hour time window. To use a message template, WhatsApp wants to approve each message template to avoid spam. Once WhatsApp has approved your template, you can use the message template to send notifications. Templates use placeholder values that can be replaced with dynamic content inside double curly braces when the message is sent. Think of template messages as a conversation starter in a two-way conversation**.** + +**Cost of WhatsApp Template Messages** + +Template messages are subject to a WhatsApp country-specific price list and will be charged 1:1 to the customer without surcharge.\ +Examples and approval tips [can be found on this link](https://docs.360dialog.com/whatsapp-api/whatsapp-api/template-messaging). + +
+ +
+ +Can I send active messages to the customer? + +Yes, but be aware of the details. If a customer initiates messaging with you, Facebook will not charge you for any WhatsApp messages (including Templated Messages) that you send to that customer for up to 24 hours following the last message that the customer sends to you ("Customer Care Window"). Any message you send to your customers beyond the Customer Care Window must be a Template Message. WhatsApp does not charge for incoming messages from the customer side or outgoing messages from the company side as long as they are sent within the 24-hour time window. [More info here](https://docs.360dialog.com/whatsapp-api/whatsapp-api/template-messaging). + +
+ +
+ +How do I send active messages to the customer? + +You should do that through template messages as explained above. + +
+ +
+ +How do my agents send active messages to the customer? + +You should do that through template messages as explained above. + +
+ +
+ +After the client replies to an active message, does he go to the agent who sent it? + +It depends on your current Omnichannel setup as it can be redirected to a specific department or if it’s public. The message will go to the agent who sent it as long as the agent is active, if not it will be redirected to an active agent. See our documentation. [Link](https://developer.rocket.chat/reference/api/rest-api/endpoints/apps-endpoints/whatsapp-endpoints) + +
+ +## **Technical Questions** + +### **How to register a number?** + +First, you need to copy your newly generated API key on 360Dialog. After that, come back to your Rocket.Chat workspace and click Connect WhatsApp Number. + +![](https://lh4.googleusercontent.com/80y-QCgnInHMUybqmPGzzc-ioZxhBIYxjjW1dCh8J4BPDbor-TKxmjoGFtea4WWS3eU3\_kqcpXn9g5w78voaoPYrF4u1j9qnYfAsSF1a\_-K8\_94jzLkCaNzalLstoR6I-agqG7Hd) + +1. Paste your API key in **API Key**, +2. Associate this WhatsApp number to a specific **Department** if you want, +3. Set a **Welcome Message** if you want, +4. Set a **Conversation Finished Message** if you want. It is a message sent to your customer when an agent closes the conversation, +5. Set a **Default message for offline service** if you want. It is a message sent to your customer when no agents are available online, +6. Click **Connect**, + +as shown below: + +![](<../../.gitbook/assets/image (662) (1) (1) (1) (1) (1).png>) + +Your WhatsApp number is now connected to Rocket.Chat, as shown below: + +![](<../../.gitbook/assets/image (644) (1) (1) (1) (1) (1) (1).png>) + +**Our documentation** [**about that is here**](https://docs.rocket.chat/guides/app-guides/omnichannel-apps/whatsapp/whatsapp-configuration/whatsapp-omnichannel-setup/connect-whatsapp-number-to-your-workspace)**.** + +
+ +Could it be a number that has already been used by an Individual? And a Corporation? + +Yes, but the number submitted must be a new number that has never been used before as an API. If the customer wants to port their number from another broker, 360D provides this service but it doesn't work through the regular submission form available via the setup channel. It is important to remember that once a number is used as an API, it cannot be used again. + +
+ +
+ +Can it be VOIP / 0800 / Landline? + +Yes, all of them. You can choose whether you prefer to receive the code by call or SMS. So, in the case of a landline, you can choose the call. In general, those 0800 lines have an audible response unit (ARU) to distribute the service to the best sector. Also, we suggest disabling it when you receive the call or configuring it so that the call reaches a functional line. + +
+ +
+ +After using this phone, can I change the number? + +In fact, you can't exactly change the number. What you can do is register a new number and then delete the old one. + +
+ +
+ +After using this phone, can I use it again? + +A number can only be registered once in the API. If you need, you can migrate to another vendor. But if the number is excluded, it becomes infeasible. + +
+ +
+ +Is there a chatbot for WhatsApp? + +One of Rocket.Chat’s strength is its integration flexibility capabilities. Meaning that a variety of chatbot solutions can now be natively integrated into Rocket.Chat’s Omnichannel and offer automated service on the WhatsApp for Business channel. Bring the power of chatbot automation to Rocket.Chat and provide personalized experiences for your customers in the world's most popular instant messaging app. + +
+ +## **Support** + +
+ +How to receive support for WhatsApp? + +All issues regarding WhatsApp should be dealt with directly with Rocket.Chat. Our support team will be responsible for any contact with 360Dialog or Facebook if needed. + +
+ +
+ +360 Dialog and Facebook: Who supports it and how? + +The customer will have an account with 360dialog, but Rocket.Chat is the one providing the service and billing so the first point of contact should always be us following the guidelines mentioned above. + +
diff --git a/rocket.chat-resources/frequently-asked-questions/whatsapp-cloud-api-faqs.md b/rocket.chat-resources/frequently-asked-questions/whatsapp-cloud-api-faqs.md new file mode 100644 index 0000000000..dae31e4dba --- /dev/null +++ b/rocket.chat-resources/frequently-asked-questions/whatsapp-cloud-api-faqs.md @@ -0,0 +1,43 @@ +# WhatsApp Cloud API FAQs + +
+ +WhatsApp Cloud API Pricing + +Pricing for using the WhatsApp Cloud API can be estimated using [Conversation-Based Pricing](https://developers.facebook.com/docs/whatsapp/pricing) provided by Meta. + +Rocket.Chat does not change for WhatsApp conversations with the WhatsApp Cloud App. + +
+ +
+ +Number of total messages per second + +The Cloud API can send and receive text and media messages at a combined rate of up to 80 messages per second (mps) by default and up to 500 mps upon request. Learn more [here](https://developers.facebook.com/docs/whatsapp/cloud-api/support/faqs#faq\_535008344623707). + +
+ +
+ +What media types are supported by WhatsApp Cloud API? + +See a list of supported media types [here](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types) + +
+ +
+ +How can I make the WhatsApp Cloud API token permanent? + +To generate a permanent Access Token by following this guide [create-permanent-whatsapp-cloud-api-token.md](../../extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp-cloud-app/facebook-developer-account-with-whatsapp/create-permanent-whatsapp-cloud-api-token.md "mention") + +
+ +
+ +More details and Cloud API FAQs by Meta + +More FAQs about WhatsApp Cloud API can be seen [here](https://developers.facebook.com/docs/whatsapp/cloud-api/support/faqs) + +
diff --git a/rocket.chat-saas/cloud-account/README.md b/rocket.chat-saas/cloud-account/README.md deleted file mode 100644 index e908fc3531..0000000000 --- a/rocket.chat-saas/cloud-account/README.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -description: >- - Cloud account gives you limited access to manage your rocket.chat workspace. - It's available both for self-managed as well as SaaS customers. ---- - -# Cloud Account - -The following topics give you all the information you need regarding the setup and usage of your new rocket.chat cloud account. - -{% page-ref page="create-new-cloud-account.md" %} - -{% page-ref page="set-up-your-new-cloud-account.md" %} - -{% page-ref page="manage-your-workspace-on-cloud-account/" %} - - - diff --git a/rocket.chat-saas/cloud-account/create-new-cloud-account.md b/rocket.chat-saas/cloud-account/create-new-cloud-account.md deleted file mode 100644 index f5539b5d75..0000000000 --- a/rocket.chat-saas/cloud-account/create-new-cloud-account.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -description: >- - Cloud account gives you limited access to manage your rocket.chat workspace. - It's available both for self-managed as well as SaaS customers. ---- - -# Create your new cloud account - -If you are a self-managed customer cloud account is optional but if you are a SaaS customer, it is created by default when you first create your workspace with us. - -## To create a new cloud account: - -* Go to rocket.chat -* Click Pricing. - -![](../../.gitbook/assets/image%20%2877%29.png) - - - -* Hit SaaS. - -![](../../.gitbook/assets/image%20%2881%29.png) - -* Select your desired SaaS package. Note that if you select **Bronze** or **Silver** you will proceed with a full-featured **Gold** trial. -* You will be directed cloud.rocket.chat website. -* Enter your details as follows: - -1. Enter a coupon code if you have any. -2. Enter your name. -3. Enter your email address. -4. Click continue. - -![](../../.gitbook/assets/image%20%2886%29.png) - -* Please enter your workspace details on the next window: - -1. Enter your new workspace name. -2. Select region. -3. Confirm the domain name. -4. Agree to the terms of service and privacy policy. -5. Click **Launch Trial**. - -![](../../.gitbook/assets/image%20%2875%29.png) - - - - -* You are notified that a verification email has been sent to your email address. - -![](../../.gitbook/assets/image%20%2880%29.png) - -* Open your email account and confirm your email address. - -![](../../.gitbook/assets/image%20%2874%29.png) - -* After you confirm your email you are taken to password setup, as shown below: - -![](../../.gitbook/assets/image%20%2884%29.png) - -* As soon as you click **Continue** on the password page, rocket.chat will start creating your cloud account, as shown below: - -![](../../.gitbook/assets/image%20%2887%29.png) - -* Copy and share the link to your new rocket.chat cloud account with your colleagues. Hit **Start now** to set up your new rocket.chat cloud account. - -![](../../.gitbook/assets/image%20%2879%29.png) - diff --git a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/README.md b/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/README.md deleted file mode 100644 index 8835f464b8..0000000000 --- a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/README.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -description: >- - You can use your cloud account to manage things like, your plan, your users, - contact support or cancel your rocket.chat subscription. ---- - -# Manage your cloud account - -To access your rocket.chat cloud account: - -1. Go to [https://cloud.rocket.chat/](https://cloud.rocket.chat/) -2. Enter your email address and password. -3. Hit **Log** **in**. - -![](../../../.gitbook/assets/image%20%2892%29.png) - diff --git a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/invoices.md b/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/invoices.md deleted file mode 100644 index 48e4c06d00..0000000000 --- a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/invoices.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -description: Check and download your invoices. ---- - -# Invoices - -See the list of your invoices here. - -![](../../../.gitbook/assets/image%20%28102%29.png) - -To download an invoice: - -1. Click download. - -![](../../../.gitbook/assets/image%20%2897%29.png) - -![](../../../.gitbook/assets/image%20%2898%29.png) - -{% hint style="info" %} -Your workspace is on the _standard tiered plan_ paying monthly per 10 members— e.g., if you have two members, you will still be charged for 10 members. -{% endhint %} - -To find more billing information, please follow the link to our [pricing](https://rocket.chat/pricing/). - -### Post-factum Billing - -Please note that rocket.chat offers two pricing models. If you are an old customer, you might still be on the old pricing model where you are charged at the end of the month on which your billing period has ended, as shown below: - -![](../../../.gitbook/assets/image%20%28308%29%20%282%29%20%282%29%20%282%29.png) - -This is the charge for the time you have actually used the workspace. - -### Advance Billing - -If you are a new customer, you should be on the new pricing model and are charged in advance. - diff --git a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/organization-settings.md b/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/organization-settings.md deleted file mode 100644 index 144327ecc7..0000000000 --- a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/organization-settings.md +++ /dev/null @@ -1,8 +0,0 @@ -# Organization Settings - -If you want to mention additional details of your company, you can do it here: - -![](../../../.gitbook/assets/image%20%28125%29.png) - - - diff --git a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/payment-methods.md b/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/payment-methods.md deleted file mode 100644 index 4cd21be309..0000000000 --- a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/payment-methods.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -description: You can manage your credit cards here. ---- - -# Payment Methods - - - -You can add multiple credit cards here. - -Add a new credit card, as shown below: - -![](../../../.gitbook/assets/image%20%28106%29.png) - -Delete a card, as shown below: - -![](../../../.gitbook/assets/image%20%28120%29.png) - -Set a card as your default payment method. - -![](../../../.gitbook/assets/image%20%28113%29.png) - -If you have only one credit card added, it is impossible for you to delete the only payment method on your own. Please contact [support@rocket.chat](mailto:support@rocket.chat) to get it deleted. - diff --git a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/profile.md b/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/profile.md deleted file mode 100644 index fdd88fd70e..0000000000 --- a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/profile.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -description: >- - You can manage (change phone number or password) your cloud account profile - here. ---- - -# Profile - -To manage your profile: - -1. Click Profile. -2. Change your password. -3. Save changes, as shown below: - -![](../../../.gitbook/assets/image%20%28103%29.png) - - - diff --git a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/support.md b/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/support.md deleted file mode 100644 index 45e72fa150..0000000000 --- a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/support.md +++ /dev/null @@ -1,50 +0,0 @@ -# Support Ticketing System - -To get support from us, click **Support**, as shown below: - -![](../../../.gitbook/assets/image%20%28115%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%282%29%20%281%29%20%282%29%20%281%29%20%281%29.png) - - - -## Ticketing System - -You are directed to rocket.chat ticketing system, as shown below: - -![](../../../.gitbook/assets/image%20%28109%29.png) - -### Sign up - -Click sign up, as shown below: - -![](../../../.gitbook/assets/image%20%28105%29.png) - -Enter your name and email address. - -![](../../../.gitbook/assets/image%20%28112%29.png) - -![](../../../.gitbook/assets/image%20%28114%29.png) - -You receive the following invitation email. - -![](../../../.gitbook/assets/image%20%28108%29.png) - -Accept it and you are directed to the registration link, where you can set up your password, as shown below: - -![](../../../.gitbook/assets/image%20%28118%29.png) - -![](../../../.gitbook/assets/image%20%28119%29.png) - -You can create a new ticket in the My Area tab, as shown below: - -![](../../../.gitbook/assets/image%20%28107%29.png) - -{% hint style="info" %} -If you want to obtain service under the service-level agreement \(SLA\), please make sure that use our ticketing system. Tickets received from personal emails are not entertained by rocket.chat -{% endhint %} - -You can also make use of our knowledge base and check out the articles here: - -![](../../../.gitbook/assets/image%20%28117%29.png) - - - diff --git a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/README.md b/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/README.md deleted file mode 100644 index 2991e9558e..0000000000 --- a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/README.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -description: You can manage your workspaces in workspaces. ---- - -# Workspaces - -As soon as you log in, you will see the list of workspaces linked to your cloud account, as shown below: - -![](../../../../.gitbook/assets/image%20%2895%29%20%281%29.png) - -Click the Add button to add your self-managed workspace. - -![](../../../../.gitbook/assets/image%20%2894%29.png) - -![](../../../../.gitbook/assets/image%20%2896%29.png) - -{% hint style="info" %} -If you want to have multiple cloud workspaces under the same cloud account, please reach out to us at [support@rocket.chat](mailto:support@rocket.chat) -{% endhint %} - diff --git a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/cancel-workspace.md b/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/cancel-workspace.md deleted file mode 100644 index 6c04fb5a85..0000000000 --- a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/cancel-workspace.md +++ /dev/null @@ -1,38 +0,0 @@ -# Cancel Workspace - -{% hint style="info" %} -Only cloud customers can cancel their workspaces. Self-managed customers can not do that. -{% endhint %} - -If you want to stop using the SaaS service, you can go ahead and cancel it, as shown below: - - - -![](../../../../.gitbook/assets/image%20%28201%29.png) - -![](../../../../.gitbook/assets/image%20%28204%29.png) - -Reload, and the Status shows it's '**canceling';** - -{% hint style="info" %} -The status should remain '**canceling'** until the end of your billing cycle. -{% endhint %} - -After the billing cycle is ended, the status should change to '**canceled';** as shown below: - -![](../../../../.gitbook/assets/image%20%28202%29.png) - -{% hint style="info" %} -If you change your mind within 15 days of your workspace getting canceled, please reach out to us at [support@rocket.chat](mailto:support@rocket.chat) to get your workspace revived. After 15 days, you will have to create a new one. -{% endhint %} - -### Post-factum Billing - -If you are an old rocket.chat customer; you might still be on the old billing model. You are charged for at the end of the month \(for the time you have used the service\) your billing cycle has ended, as shown below: - -![](../../../../.gitbook/assets/image%20%28308%29%20%282%29%20%282%29%20%281%29.png) - -### Pre-paid Billing - -All new rocket.chat customers are on the new billing model, i.e., you are charged in advance before your monthly billing cycle starts. - diff --git a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/restart-workspace.md b/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/restart-workspace.md deleted file mode 100644 index 28f31337a7..0000000000 --- a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/restart-workspace.md +++ /dev/null @@ -1,10 +0,0 @@ -# Restart Workspace - -A restart of the server is recommended when facing small performance issues, e.g., messages are slow, messages are greyed-out. - -To restart your workspace: - -![](../../../../.gitbook/assets/image%20%28203%29.png) - -After you restart your workspace, it will take 1-5 minutes \(depending upon your number of users\) for the workspace to be restarted. - diff --git a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/upgrade-downgrade-your-plan.md b/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/upgrade-downgrade-your-plan.md deleted file mode 100644 index c2ed2f9964..0000000000 --- a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/upgrade-downgrade-your-plan.md +++ /dev/null @@ -1,16 +0,0 @@ -# Upgrade/Downgrade your Plan - -To upgrade/downgrade your plan: - -1. Click **Change Plan**, as shown below: - -![](../../../../.gitbook/assets/image%20%28147%29.png) - -2. Select your desired plan. - -![](../../../../.gitbook/assets/image%20%28149%29.png) - -Your new plan is in place. - -![](../../../../.gitbook/assets/image%20%28148%29.png) - diff --git a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/upgrade-update-workspace.md b/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/upgrade-update-workspace.md deleted file mode 100644 index 268ddad92e..0000000000 --- a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/upgrade-update-workspace.md +++ /dev/null @@ -1,14 +0,0 @@ -# Update Workspace - -To update your workspace to the latest version: - -![](../../../../.gitbook/assets/image%20%28205%29.png) - -Choose the version from the latest two versions, as shown below: - -![](../../../../.gitbook/assets/image%20%28206%29.png) - - - -![](../../../../.gitbook/assets/image%20%28200%29.png) - diff --git a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/workspace-details.md b/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/workspace-details.md deleted file mode 100644 index 1b9a788ac6..0000000000 --- a/rocket.chat-saas/cloud-account/manage-your-workspace-on-cloud-account/workspaces/workspace-details.md +++ /dev/null @@ -1,16 +0,0 @@ -# Workspace Details - -If you click on a workspace, you can check the following details. - -![](../../../../.gitbook/assets/image%20%28126%29.png) - -#### - -{% hint style="info" %} -After your first sign-up, you are given a 14 days' trial of the **Gold** plan. On the 15th day, you are charged according to your chosen plan. -{% endhint %} - -{% hint style="info" %} -Minimum volume or resources on Cloud provided per workspace is for 10 members so you will be billed accordingly even if you have less than 10 users -{% endhint %} - diff --git a/rocket.chat-saas/cloud-account/set-up-your-new-cloud-account.md b/rocket.chat-saas/cloud-account/set-up-your-new-cloud-account.md deleted file mode 100644 index 12cd758d16..0000000000 --- a/rocket.chat-saas/cloud-account/set-up-your-new-cloud-account.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -description: >- - The setup wizard guides you through the process of setting up your first admin - user, configuring your organization and registering your server to receive - free push notifications, and more. ---- - -# Cloud account Setup Wizard - -## Setting up the first admin user - -To set up your first admin user: - -1. Enter the admin's **Name**. -2. Enter the admin's **Username**. -3. Enter the admin's **Organization Email.** -4. Enter the **Password**. -5. Hit **Continue**, as shown below: - -![](../../.gitbook/assets/image%20%2889%29.png) - -## Configuring your organization - -To configure your organization : - -1. Choose **Organization Type**. -2. Enter the **Organization Name**. -3. Select your **Industry.** -4. Select the **Size** of your organization. -5. Choose your **Country**. -6. Enter the URL of your official **Website**. -7. Hit **Continue**, as shown below: - -![](../../.gitbook/assets/image%20%2882%29.png) - -## Enter your server information - - - -To enter your server information: - -1. **Site** **Name** is populated automatically. -2. Choose your **Language**. -3. Select your **Server Type;** Public or Private team. -4. Choose if you want to **Auto opt-in new users for Two Factor via Email**, or not. -5. Hit **Continue**, as shown below: - -![](../../.gitbook/assets/image%20%2883%29.png) - -## Register server - -1. Read and agree to the Terms and Privacy Policy. -2. Hit **Continue**, as shown below: - -![](../../.gitbook/assets/image%20%2893%29.png) - -Verify your password to continue. - -![](../../.gitbook/assets/image%20%2876%29.png) - -Your workspace is ready. Click **Go to your workspace** to access it. - -![](../../.gitbook/assets/image%20%2888%29.png) - -![](../../.gitbook/assets/image%20%2878%29.png) - - - - - diff --git a/rocket.chat-saas/faq.md b/rocket.chat-saas/faq.md deleted file mode 100644 index 369137ac88..0000000000 --- a/rocket.chat-saas/faq.md +++ /dev/null @@ -1,127 +0,0 @@ -# FAQ - -## Trials - -#### How long do trials last? - -Currently trials last 14 days. - -#### How can I convert from a trial to a paid plan? - -Our trials are fully featured. So if you enter your card information in the billing section of the [Cloud Console](https://cloud.rocket.chat) your trial will automatically convert to a paid plan at the end of the trial period. - -#### How do I cancel my trial? - -You can cancel your Rocket.Chat workplace directly within the [Cloud Console](https://cloud.rocket.chat>). - -## Data Export - -#### How can I get a data export? - -Send an email to cloud.support@rocket.chat with the address of your workspace. Note: The request will take some time to fullfill. - - - -#### - -## Cloud Accounts - -**How do I view the push usage for my workspace?** - -To view the push usage for your workspace you need to login to the Cloud Console \([cloud.rocket.chat](https://cloud.rocket.chat)\): navigate to Workspaces and click on the workspace you'd like to see usage for. - -![](../.gitbook/assets/image%20%2873%29.png) - -#### I already canceled my workspace but it is still in the “Cancelling” status and is accessible. - -Please, note that in case you cancel your workspace in the middle of billing period it will be accessible and in the “Cancelling” status till the end of your billing period. - -If, for example, you are charged on the 5th of every month and decided to cancel the subscription on the 20th of December or later - your workspace will be operational till the 5th of January \(this way we want to give customers the opportunity to use what they paid for\). After this, it will stop running and will switch to “Cancelled”. - -#### How do I cancel my cloud subscription? - -If you want to end your subscription, please note that it can be done only by the workspace administrator in your Cloud Console \([cloud.rocket.chat](https://cloud.rocket.chat/)\) : navigate to Workspaces -> click on the three dots at the end of the correspondent workspace line -> select **Cancel**. - -This will stop your subscription and hibernate your server \(your server will still exist in case you want to get back to Rocket.Chat later\). - -![](../.gitbook/assets/cancel_cloud_subscription%20%281%29%20%281%29%20%281%29%20%281%29.png) - -If you need a database dump or if you want to permanently delete your workspace and all the data associated with it - submit a ticket here on our Helpdesk or drop an email to [support@rocket.chat](mailto:support@rocket.chat) with the respective request. - -#### How can I create one more workspace with the same Cloud account? - -Please, note that this can only be done by our Cloud engineers. If you want to create an additional workspace - submit a ticket here on our Helpdesk or drop us a letter at [support@rocket.chat](mailto:support@rocket.chat) - include workspace address you would like and the plan. - -**NOTE**: Additional workspaces are billed based on their individual usage. So if you have 5 users on one and 10 on the other you will get billed for them both separately. - -#### How can I change the ownership of the workspace? - -If you need to grant the ownership of your workspace to another person or to change the primary email of your workspace - submit a ticket here on our Helpdesk or drop us an email to [support@rocket.chat](mailto:support@rocket.chat) with the respective request. - -**NOTE**: ticket should be submitted from the admin email address \(the email address the workspace is registered under\) and should contain the email address the ownership should be granted to/the email address it \(admin one\) should be changed to. - -#### I already canceled my subscription but was charged again. - -Please, note that we charge our customers afterwards, not in advance. This means that on a particular day of each month you will be charged for the previous month of use. - -If, for example, you started your trial on December 1st, it expired on December 15th and your subscription was automatically continued \(you added payment method before trial expired\) - on January 15th you will receive an invoice for the previous month \(December 15th - January 15th\). - -#### How can I reactivate my workspace after trial expired? - -If your trial expired and you didn’t manage to add your payment method to continue subscription, navigate to Payment methods in your Cloud Console \([cloud.rocket.chat](https://cloud.rocket.chat/)\) -> click on **Add payment method** \(top right corner\) to add your card \(credit/debit card is the only payment method we accept at the moment\). - -![](../.gitbook/assets/add_payment_method%20%281%29%20%281%29%20%281%29%20%281%29.png) - -![](../.gitbook/assets/add_credit_card.png) - -#### How to change workspace region? - -Region is defined upon creation. Please, note that customers can not migrate their instances between regions on their own. This process involves manual work required by Rocket.Chat Cloud team. If you need to switch region - submit a ticket or drop an email to [support@rocket.chat](mailto:support@rocket.chat). - -#### How can I change or remove my credit card data? - -Please, note that you can not delete the card that is the only one \(default one\) linked to your workspace as well as you can not delete card that was charged last - in both cases you will see the error message “Can't delete last payment option”. - -If you need to change the card - add it as a new payment method and make it the default one \(after that you will be able to delete all other cards\). - -If you want to remove the card information before canceling your subscription, please note that your payment data can only be deleted along with all the other data associated with your workspace. In order to request that, submit a ticket here on our Helpdesk or drop an email to [support@rocket.chat](mailto:support@rocket.chat). - -#### Can I use other payment method rather than credit/debit card? - -Credit/debit card is the only payment method we accept at the moment. - -For companies paying up-front for a specific period we do provide invoices to pay by wire transfer. - -#### How can I have more than one Cloud workspaces under the same Cloud account? - -Adding more instances to your Cloud account can only be done by our engineers. Reach out to us at support@rocket.chat and specify the following data for the new workspace you want to add: - -* workspace name -* SaaS plan and billing period \(monthly or annual payment\) -* number of seats -* region of the deployment \(US or EU\) - -#### How to change Cloud account email? - -Cloud account email can be changed at cloud.rocket.chat on the Profile page. If you have difficulties changing the email of the account owner contact us at support@rocket.chat. The request must be sent from the original account owner email. - -#### How to request a custom domain? - -To request a custom domain, set up a CNAME DNS record for the domain name you want to have pointing to "**cdns.use1.cloud.rocket.chat**" \(for US region\) and to "**cdns.euc1.cloud.rocket.chat**" \(for EU region\). Afterwards, send us an email to support@rocket.chat so we could make respective changes to your workspace. - -Please note that custom domain is available in Silver and Gold plans only on SaaS offering. - - - -#### - - - -### - -#### - - - -#### - diff --git a/setup-and-administer-rocket.chat/accessing-your-workspace/README.md b/setup-and-administer-rocket.chat/accessing-your-workspace/README.md new file mode 100644 index 0000000000..e911843303 --- /dev/null +++ b/setup-and-administer-rocket.chat/accessing-your-workspace/README.md @@ -0,0 +1,18 @@ +--- +description: >- + This guide walks users with administrator privileges or the first person to + set up Rocket.Chat, customize it, and invite new users. The guide has several + sections which are enlisted below. +--- + +# Accessing Your Workspace + +This guide onboards users with administrator privileges or the first user to set up Rocket.Chat, customize it, and invite members of their organization to the workspace. The sections of this guide are enlisted below. + +****[**Rocket.Chat Setup Wizard**](rocket.chat-setup-wizard.md): Understand the preliminary steps required to link Rocket.Chat workspace to Rocket.Chat client apps. + +****[**Admin Account Creation**](creating-the-first-administrator.md): Learn how to become the first administrator and delegate administrator roles to other users in your new workspace. + +****[**Basic White-labeling**](../basic-white-labeling.md): Customize your Rocket.Chat workspace to have the look and feel of your organization. + +****[**Inviting Users**](inviting-users.md): Find out how to create new users and invite others to your workspace. diff --git a/setup-and-administer-rocket.chat/accessing-your-workspace/creating-the-first-administrator.md b/setup-and-administer-rocket.chat/accessing-your-workspace/creating-the-first-administrator.md new file mode 100644 index 0000000000..bf1629331d --- /dev/null +++ b/setup-and-administer-rocket.chat/accessing-your-workspace/creating-the-first-administrator.md @@ -0,0 +1,41 @@ +--- +description: Creating your first admin user and user group. +--- + +# Admin Account Creation + +After deploying the server, the first user to register becomes the administrator, with the power to set other users as administrators. + +Following the [**Setup Wizard**](../../use-rocket.chat/workspace-administration/settings/setup-wizard.md) allows you to create the first admin user of your workspace. Alternatively, you can configure an admin user during deployment by specifying it in the configuration files. + +In case your server has no administrators, you can create the first admin account by defining the environment variables `INITIAL_USER, ADMIN_PASS,` and `ADMIN_EMAIL` once. Open your terminal and specify these variables line by line. + +```bash +export ROOT_URL=http://your-host-name.com-as-accessed-from-internet:3000/ +export MONGO_URL=mongodb://localhost:27017/rocketchat +export PORT=3000 +export ADMIN_USERNAME=admin +export ADMIN_PASS=supersecret +export ADMIN_EMAIL=admin@example.com +node main.js +``` + +If you are hosting your own MongoDB instance, such as MongoDB Atlas, change the MONGO\_URL variable to your MongoDB connection string. + +Installing Rocket.Chat server with the `docker compose file`, you can also specify the `INITIAL_USER`, `ADMIN_USERNAME,` and `ADMIN_PASSWORD` directly. + +``` + environment: + - PORT=3000 + - ROOT_URL=http://localhost:3000 + - MONGO_URL=mongodb://mongo:27017/rocketchat + - MONGO_OPLOG_URL=mongodb://mongo:27017/local + - INITIAL_USER=yes + - ADMIN_USERNAME=admin + - ADMIN_NAME=Admin + - ADMIN_EMAIL=rodriq@localhost.com + - ADMIN_PASS=supersecret + - OVERWRITE_SETTING_Show_Setup_Wizard=completed + - REG_TOKEN=${REG_TOKEN} +# - MAIL_URL=smtp://smtp.email +``` diff --git a/setup-and-administer-rocket.chat/accessing-your-workspace/inviting-users.md b/setup-and-administer-rocket.chat/accessing-your-workspace/inviting-users.md new file mode 100644 index 0000000000..13613f2557 --- /dev/null +++ b/setup-and-administer-rocket.chat/accessing-your-workspace/inviting-users.md @@ -0,0 +1,9 @@ +# Inviting Users + +After creating and setting up your new workspace, it is time to add users to your Rocket.Chat workspace. + +You can start by creating your first user following this [guide](../../use-rocket.chat/workspace-administration/users/) on adding new users or inviting your colleagues to join your workspace. + +{% hint style="info" %} +Note that for self-managed workspaces, you need to have[ SMTP enabled and configured](../../use-rocket.chat/workspace-administration/settings/email/setup.md) in order to be able to send emails through the workspace. +{% endhint %} diff --git a/setup-and-administer-rocket.chat/accessing-your-workspace/rocket.chat-setup-wizard.md b/setup-and-administer-rocket.chat/accessing-your-workspace/rocket.chat-setup-wizard.md new file mode 100644 index 0000000000..677f2a39c3 --- /dev/null +++ b/setup-and-administer-rocket.chat/accessing-your-workspace/rocket.chat-setup-wizard.md @@ -0,0 +1,92 @@ +--- +description: Administrator initial workspace configuration for Rocket.Chat server. +--- + +# Rocket.Chat Setup Wizard + +After installing your Rocket.Chat server, it is time to configure and start enjoying all the fantastic features. + +Rocket.Chat provides multiple [Rocket.Chat Client Apps](../../deploy-rocket.chat/installing-client-apps/) that can be used for the user interface. + +{% hint style="info" %} +This guide proceeds with the assumption you have either the latest Rocket.Chat Desktop client or Browser installed. + +The server used for this guide is available at [http://localhost:3000](http://localhost:3000), but if you are hosting your instance, it will is the link to your website with the port you specified in your settings. +{% endhint %} + +### Adding Rocket.Chat server to Desktop Client + +* After installing the [Rocket.Chat Desktop Client](../../deploy-rocket.chat/installing-client-apps/#desktop-apps), launch the application. +* An interface is presented to you with a text field to input your server URL. Enter your server URL, in this case, [http://localhost:3000](http://localhost:3000), for a local setup or specify the link to the domain of your server. +* Click **Connect.** + +{% hint style="info" %} +Note that wherever the link [http://localhost:3000](http://localhost:3000) is used here, you have to specify your server's domain rather than [http://localhost:3000](http://localhost:3000). +{% endhint %} + +If you initially had any server linked on your client app, you can add another by clicking on the plus sign icon by the left of the navigation menu. + +### Accessing Rocket.Chat Using Browser + +To access Rocket.Chat in your browser, yo; you should type the link [`http://localhost:3000`](http://localhost:3000) or your server's domain in your browser. + +## Setup Wizard + +To launch your workspace, it is required to do a simple 4-step setup. + +* **Admin Information**: Fill in this information as it is needed to create the first user who automatically becomes an administrator of your Rocket.Chat workspace. The necessary information includes your name, chosen username, your provided organizational email, and a password selected by you. The next thing to do is click on **Continue** to be taken to the page for the organization's information. +* **Organization Information**: This involves information about your organization. The data to be filled in about your organization include the organization's name, its type, the size of the organization, the country in which your organization operates, and the industry your organization is linked to, as well as your organization's website if there is any. When all the fields have been filled, you can click on **Continue** to proceed to the third step, which has to do with server information. +* **Server Info**: The server Info form has four fields which include the site name, selecting your preferred language from a dropdown, selecting whether the server is private or public, and finally selecting the option to opt into two-factor authentication via email. Click on the Continue option to go next step. +* **Register Your Server**: You are asked to register your workspace to the Rocket.Chat Cloud or proceed with a standalone server. + +{% hint style="info" %} +We recommend you register your workspace, which automatically creates a [Rocket.Chat Cloud Account](broken-reference) for you, and you can enjoy all its benefits like; + +* Mobile [**push notifications**](../../use-rocket.chat/rocket.chat-mobile/push-notifications/)**.** +* ****[**Omnichannel**](../../use-rocket.chat/omnichannel/)**** +* Access to [**marketplace apps**](../../extend-rocket.chat-capabilities/rocket.chat-marketplace/). +{% endhint %} + +
+ +Information collected for Registered workspaces + +Suppose you choose to register your workspace, Rocket.Chat collects the following information about your workspace. + +* The **workspace Id** to help identify the workspace. +* The organization's **address.** +* **Contact name** for the workspace. +* **Contact email** for the workspace. +* The number of **seats** for the workspace. +* The **account name.** +* The **organization type**. +* What **industry** the organization belongs to. +* The **size of the organization**. +* The **country** of the organization. +* **Language** set for the workspace. +* **Website** of the organization. +* **Site name** of the workspace. +* The **workspace type**. +* The **deployment method** used for the workspace. +* The **deployment platform.** +* The **version of Rocket.Chat** deployed. + +
+ +#### Register Workspace + +* Click on **Register to access** to continue and check if you want to receive security updates or not. +* Ensure that you agree to the [**Terms**](../../rocket.chat-legal/terms-of-service.md) and [**Privacy Policy**](../../rocket.chat-privacy-and-security/privacy-policies/) of Rocket.Chat before clicking **Continue**. +* Open up your email inbox and click **verify registration.** Make sure the security codes match. +* Confirm the registration and go back to your server. + +#### Continue as Standalone + +* Click **Continue as standalone.** +* Click **Confirm.** + +Your workspace is now ready for use. + +{% hint style="success" %} +From here, you can get a 30 days trial on the features that come with the [Enterprise Edition](../enterprise-edition-trial/). +{% endhint %} diff --git a/setup-and-administer-rocket.chat/advanced-workspace-management/README.md b/setup-and-administer-rocket.chat/advanced-workspace-management/README.md new file mode 100644 index 0000000000..9c6082b0e3 --- /dev/null +++ b/setup-and-administer-rocket.chat/advanced-workspace-management/README.md @@ -0,0 +1,25 @@ +# Advanced workspace management + +****[**Authentication**](authentication/): Authenticate users into your Rocket.Chat workspace through [LDAP](../../use-rocket.chat/workspace-administration/settings/ldap/), [SAML](../../use-rocket.chat/workspace-administration/settings/saml/), [OpenID](authentication/open-id-connect/), and [OAuth](../../use-rocket.chat/workspace-administration/settings/oauth/). + +****[**Google Cloud Features**](google-cloud/): Implement various Google Cloud features in your workspace—for example, Google Auto-Translate. + +****[**Environment Variables**](../../deploy-rocket.chat/rocket.chat-environment-configuration/environment-variables.md): Configure your workspace settings using environment variables. + +****[**Identity management (EE vs. CE)**](identity-management-ee-vs-ce.md)**:** Learn the differences between community and enterprise editions while using Identity Management Systems. + +****[**Notifications**](notifications.md): Update your workspace notification preferences. + +****[**Database Migration**](database-migration.md): Configure the database migration collection. + +****[**Restoring an Admin User**](restoring-an-admin.md): Restore an admin user based on your workspace installation. + +****[**CDN**](cdn.md): Use a CDN to serve static assets such as JS, CSS, and images to your workspace. + +****[**Troubleshooting**](troubleshooting.md): Common workspace management troubleshooting techniques. + +****[**Client Compatibility Matrix**](client-compatibility-matrix.md): Mobile and desktop clients with their supported Rocket.Chat releases. + +{% hint style="info" %} +To learn more, go to [workspace administration](../../use-rocket.chat/workspace-administration/). If these guides don't meet your needs, you can contact us via [support](../../resources/get-support/). +{% endhint %} diff --git a/setup-and-administer-rocket.chat/advanced-workspace-management/authentication/README.md b/setup-and-administer-rocket.chat/advanced-workspace-management/authentication/README.md new file mode 100644 index 0000000000..fb9174cd25 --- /dev/null +++ b/setup-and-administer-rocket.chat/advanced-workspace-management/authentication/README.md @@ -0,0 +1,18 @@ +# Authentication + +{% content-ref url="open-id-connect/" %} +[open-id-connect](open-id-connect/) +{% endcontent-ref %} + +{% content-ref url="single-sign-on-iframe.md" %} +[single-sign-on-iframe.md](single-sign-on-iframe.md) +{% endcontent-ref %} + +## External Authentication + +If you need to automatically login users from your own website you can look at the [iframe integration page ](../../../use-rocket.chat/workspace-administration/settings/account-settings/#iframe)or you can use the [REST API Login](https://developer.rocket.chat/reference/api/rest-api/endpoints/other-important-endpoints/authentication-endpoints/login) in combination with [deeplinking](https://developer.rocket.chat/rocket.chat/deeplink) and the resumeToken. + +``` +# get the resumeToken from your REST API login - it's the authToken field +https://yourown.rocket.chat/home?resumeToken=abcd123456789 +``` diff --git a/setup-and-administer-rocket.chat/advanced-workspace-management/authentication/open-id-connect/README.md b/setup-and-administer-rocket.chat/advanced-workspace-management/authentication/open-id-connect/README.md new file mode 100644 index 0000000000..163bc076d3 --- /dev/null +++ b/setup-and-administer-rocket.chat/advanced-workspace-management/authentication/open-id-connect/README.md @@ -0,0 +1,13 @@ +# OpenID Connect + +{% content-ref url="gluu-server-4.0.md" %} +[gluu-server-4.0.md](gluu-server-4.0.md) +{% endcontent-ref %} + +{% content-ref url="keycloak.md" %} +[keycloak.md](keycloak.md) +{% endcontent-ref %} + +{% content-ref url="okta.md" %} +[okta.md](okta.md) +{% endcontent-ref %} diff --git a/setup-and-administer-rocket.chat/advanced-workspace-management/authentication/open-id-connect/gluu-server-4.0.md b/setup-and-administer-rocket.chat/advanced-workspace-management/authentication/open-id-connect/gluu-server-4.0.md new file mode 100644 index 0000000000..bb39f89828 --- /dev/null +++ b/setup-and-administer-rocket.chat/advanced-workspace-management/authentication/open-id-connect/gluu-server-4.0.md @@ -0,0 +1,5 @@ +# Gluu Server 4.0 + +Gluu Server 4.0 comes out of the box with excellent SSO support for Rocket.Chat.\ +\ +Please see their documentation, [Gluu Server OpenID Connect Provider for Rocket.Chat](https://gluu.org/docs/gluu-server/4.0/integration/saas/rocketchat/), for up-to-date information. diff --git a/setup-and-administer-rocket.chat/advanced-workspace-management/authentication/open-id-connect/keycloak.md b/setup-and-administer-rocket.chat/advanced-workspace-management/authentication/open-id-connect/keycloak.md new file mode 100644 index 0000000000..ae92491acb --- /dev/null +++ b/setup-and-administer-rocket.chat/advanced-workspace-management/authentication/open-id-connect/keycloak.md @@ -0,0 +1,94 @@ +# Keycloak + +## Configuring Keycloak OpenID Connect + +Create a client in Keycloak. + +1. Provide a client ID: `rocket-chat-client` +2. Select the client protocol as openid-connect +3. Select the client access type as confidential +4. Standard flow implemented: ON +5. Valid Redirect URL: `http:{Rocket.Chat_server_address}/*` + +The following image shows the minimal configurations needed to setup Keycloak as an Identity Provider to Rocket.Chat. + +![](../../../../.gitbook/assets/client\_configurations.png) + +(In the example above we are using http://locahost:3000/\* as the Redirect URI change it to the IP and PORT of your rocketchat instance.) + +After saving the changes a new credentials tab will be created for the client. This credentials tab will provide the client secrets which will be used when configuring the Rocket.Chat. + +## Configuring Rocket.Chat + +### Create a Custom Oauth provider + +* Login to Rocket.Chat with an administrator account and navigate to OAuth page. +* Click the Add custom OAuth button and provide the following configurations + +The URL paths provided in the below configurations can be also obtained by navigating to the Realm setting and clicking the endpoints link in the `General Tab`. While configuring the below settings replace the `realm_name` with the appropriate realm name. The default realm provided by Keycloak is `master`. + +1. URL: `http://{keycloak_ip_address}:{port}` +2. Token Path: `/realms/{realm_name}/protocol/openid-connect/token` +3. Token sent via: Header +4. Identity Token Sent Via: Same As "Token Sent Via" +5. Identity Path `/realms/{realm_name}/protocol/openid-connect/userinfo` +6. Authorize Path `/realms/{realm_name}/protocol/openid-connect/auth` +7. Scope: `openid` +8. Param Name for access token: `access_token` +9. Id: This is the id of the Rocket.Chat client created in the keycloak `rocket-chat-client` +10. Secret: Secret key provided in the credentials tab when creating the Rocket.Chat client +11. Button Text: `Login with Keycloak` + +Leave the rest of the configurations as default. Click the blue button Save Changes at the top. + +Next, make sure you enable the new Keycloak provider. And click the Refresh OAuth Services button. + +If you are in a test environment with no SMTP server set make sure to disable Two-factor Authentication in Administration > Settings > General. + +If you don't have an SMTP server set make sure to disable Two-Factor Authentication in Administration > Settings > General. + +Now logout from Rocket.Chat to view the keycloak based login option visible in the login page. + +![](../../../../.gitbook/assets/keycloak\_federation.png) + +## Mapping non-federated keycloak user roles to Rocket.Chat roles + +This section documents how client-specific roles of keycloak managed user can be mapped to Rocket.Chat roles. This does not work for federated users (e.g. LDAP managed users). + +For this example, we map the `admin` and `livechat-manager` role, as documented in [Permissions](https://docs.rocket.chat/administrator-guides/permissions/). + +First we add the required roles to the client. + +**Add role to the client** + +To create a role, click **Add Role**, enter in the name and description of the role, and then click **Save**. + +![Add Role](<../../../../.gitbook/assets/Add role.jpg>) + +then we have to add a mapper entry, that maps our client roles to OpenId, passing the value to Rocket.Chat. + +**View all client roles** + +To view all the client roles you have created, click **Roles** > **View all roles** + +![View client roles](<../../../../.gitbook/assets/Keyclock\_Client Roles\_31052022.jpg>) + +**Composite Roles** + +A _composite role_ is a role that can be associated with other roles. + +To define composite roles, click **Role** and then navigate to **Composite** **Roles.** + +![Composite Roles](<../../../../.gitbook/assets/keycloak\_CompositeRoles\_31052022 (1).jpg>) + +Now in order to grant the Rocket.Chat role to a user, we have to modify the users Role Mappings. + +**Create Protocol Mapper** + +![Create Protocol Mapper](../../../../.gitbook/assets/Createprotocalmapping.jpg) + +**Mappers** + +![Mappers](<../../../../.gitbook/assets/30052022\_User Mapper.jpg>) + +The roles are only synced on first login, and not being refreshed on each login. Please see the [bug report](https://github.com/RocketChat/Rocket.Chat/issues/15225) for current state. diff --git a/setup-and-administer-rocket.chat/advanced-workspace-management/authentication/open-id-connect/okta.md b/setup-and-administer-rocket.chat/advanced-workspace-management/authentication/open-id-connect/okta.md new file mode 100644 index 0000000000..96e286d937 --- /dev/null +++ b/setup-and-administer-rocket.chat/advanced-workspace-management/authentication/open-id-connect/okta.md @@ -0,0 +1,66 @@ +--- +description: Open ID Connect +--- + +# Okta Identity Cloud Service + +Okta Identity Cloud Service can be integrated as an Identity Provider for Rocket.Chat via its Open ID Connect support. + +## Rocket.Chat Settings + +On the Rocket.Chat OAuth settings page **add a custom auth**. + +Give the custom OAuth a unique name. For this example we will use _okta_. + +Set the following: + +* **Enabled**: _True_ +* **URL**: The URL to your okta domain on okta.com with a suffix of _/oauth2/v1_. For example: _`https://mycompany.okta.com/oauth2/v1`_ +* **Token**: _/token_ +* **Token Sent Via**: _Header_ +* **Identity Token Sent Via**: _Same as Token Sent Via_ +* **Identity Path**: _/userinfo_ +* **Authorize Path**: _/authorize_ +* **Scope**: _openid email profile groups offline\_access_ +* **Param Name for access token**: _access\_token_ +* **id**: Set to the **Client ID** in the Okta app **Client Credentials** below. +* **Secret**: Set to the **Client secret** in the Okta app **Client Credentials** below. +* **Login Style**: Either setting works. Popup with pop up the Okta check/login in another window. Redirect will redirect the current page. +* **Button Text**: Set to personal preference. +* **Button Text Color**: Set to personal preference. +* **Button Color**: Set to personal preference. +* **Username field**: _preferred\_username_ +* **Avatar field**: Was not used on our Okta instance. Further research will be required to use this. +* **Roles/Groups field name**: roles +* **Merge Roles from SSO**: Our server syncs from ldap so we left this _false_. +* **Merge users**: Our server syncs from ldap so we left this _false_. + +## Configuring the Identity Provider + +### Adding a new Application in Okta + +On your Okta Applications Dashboard, find the button to create a new app. It should open the following pop-up: + +![](../../../../.gitbook/assets/AddApp.png) + +Select **OpenID Connect** and select **Create** to open the window to create the new integration. + +### Create Integration + +!\[Create Integration]\[CreateIntegration] + +The only information needed on this page is the **application name** and **redirect URI**. The URI you need to use here is the same one that is shown on the **callback URL** listed at the top of the page after creating the custom OAuth section in the Rocket.Chat settings. In this example the custom oauth will be called _okta_. This will result in a **redirect URI** of _`https://my-rocketchat-server.org/_oauth/okta`_. + +Select **Save** to be taken to the **General Settings** for the new app. + +### Client Credentials + +Copy the **Client ID** to the Rocket.Chat **id** field on the oauth settings page. + +Copy the **Client secret** to the Rocket.Chat **secret** field on the oauth settings page. + +### Testing + +Everything should be properly configured now. You can now assign users or groups users to your Integration app on the Okta Dashboard and then test the login on your Rocket.Chat instance. + +\[CreateIntegration]: CreateIntegration.png diff --git a/setup-and-administer-rocket.chat/advanced-workspace-management/authentication/single-sign-on-iframe.md b/setup-and-administer-rocket.chat/advanced-workspace-management/authentication/single-sign-on-iframe.md new file mode 100644 index 0000000000..f674c07a89 --- /dev/null +++ b/setup-and-administer-rocket.chat/advanced-workspace-management/authentication/single-sign-on-iframe.md @@ -0,0 +1,46 @@ +# iframe based Single Sign On + +## Introduction + +It's possible to authenticate users inside Rocket.Chat automatically from a third-party application, useful when embedding the chat inside another application or to make the users' life easier. + +### Iframe + +There are two ways to use the Iframe integration for this purpose and we will describe them below. It's important to note that both options require you to handle the user creation from your own application server using our APIs and make the login to retrieve the user's session token in order to pass it to the Rocket.Chat client via one of those ways: + +#### Embedding Rocket.Chat inside an Iframe + +If you already have the Rocket.Chat inside an iframe you can use call commands inside the Rocket.Chat's iframe, [there is a command to login the user passing a token](https://developer.rocket.chat/rocket.chat/iframe-integration/iframe-integration-sending-commands), for that, you need to make your own way to retrieve the token from your own APIs and then pass it to the iframe. + +We suggest one common way, once your application loads: + +1. Call your own API to retrieve the token, let's say `/api/rocketchat/token` +2. Your API will validate your own session, probably via cookies +3. Your API will then call the[ Rocket.Chat APIs](https://developer.rocket.chat/reference/api) to check if the user exists + 1. If it doesn't exist call the Rocket.Chat APIs to create the user +4. If the user exists, call the Rocket.Chat APIs to make the login and receive the token +5. Return the token in your API response +6. In your client, with the token in hands, call the [iframe methods to execute the login](https://developer.rocket.chat/rocket.chat/iframe-integration/iframe-integration-sending-commands) + +#### Embedding your own "Loading page" inside the Rocket.Chat + +Even using Rocket.Chat inside an iframe you can still use this method to make the login flow rather than use the iframe commands above. + +This flow requires a page to be rendered in place of the normal Rocket.Chat's login page, can be a basic loading screen since it's used just for information purposes. + +The other setting you configure here is the [API URL and Method](https://developer.rocket.chat/rocket.chat/iframe-integration/what-is-iframe-auth) to be called once a not authenticated user opens the Rocket.Chat. Then Rocket.Chat will make an HTTP call to your endpoint expecting a [JSON response containing the authToken](https://developer.rocket.chat/rocket.chat/iframe-integration/what-is-iframe-auth#managing-mongodb-directly), so you should use cookies to identify if the user calling your own API is authenticated and make the process to generate the Rocket.Chat's token and return it: + +1. Rocket.Chat will call the configured API and Method to retrieve the token +2. The API should validate your own session via cookies +3. The API will then call the Rocket.Chat APIs to check if the user exists + 1. If it doesn't exists call the Rocket.Chat APIs to create the user +4. If the user exists, call the Rocket.Chat APIs to make the login and receive the token +5. Return the token in your API response in JSON format as [described here](https://developer.rocket.chat/rocket.chat/iframe-integration/what-is-iframe-auth#managing-mongodb-directly) +6. Rocket.Chat will use the token automatically to make the authentication + +{% hint style="warning" %} +For this implementation you will need to configure [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) and [X-FRAME](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options): + +1. Your server should **not** block the page you want to load inside the iframe, check the [X-FRAME](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options) for more information on how to prevent this. +2. Your server should **not** block the calls **from** the Rocket.Chat's domain to your configured API endpoint, calls between domains are often blocked by default, please check the [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options) for more information on how to prevent this. +{% endhint %} diff --git a/setup-and-administer-rocket.chat/advanced-workspace-management/cdn.md b/setup-and-administer-rocket.chat/advanced-workspace-management/cdn.md new file mode 100644 index 0000000000..25ad46a5b0 --- /dev/null +++ b/setup-and-administer-rocket.chat/advanced-workspace-management/cdn.md @@ -0,0 +1,57 @@ +--- +description: CDN Setup instructions +--- + +# CDN + +Rocket.Chat allows you to use a CDN to serve static assets such as JS, CSS and images to your workspace. + +{% hint style="info" %} +If you provide a CDN prefix that is not live or incorrect, you may lose access to your Rocket.Chat instance as the required assets will not be found. +{% endhint %} + +## Enabling CDN + +To enable CDN in your workspace, + +* Go to **Administration > Workspace > Settings > General.** +* **Update the** CDN Prefix. +* You can enable **Use CDN Prefix for all assets** or set a different + +### CDN Prefix + +This string will generate different outcomes depending on the value provided. + +| Value | Example Url for Asset | +| ------------------------------------------------ | ---------------------------------------------------------------------------------- | +| cdn | /cdn/example-asset.js | +| [http://cdn.domain.com](http://cdn.domain.com) | [http://cdn.domain.com/example-asset.js](http://cdn.domain.com/example-asset.js) | +| [https://cdn.domain.com](https://cdn.domain.com) | [https://cdn.domain.com/example-asset.js](https://cdn.domain.com/example-asset.js) | + +### Use CDN Prefix for all assets + +Enable this for serving all assets from the same CDN. + +### CDN Prefix for JS/CSS + +This option takes the same style input as CDN Prefix. The value provided will be applied only to JS and CSS assets. + +## Troubleshooting + +If the situation occurs where CDN stops working, or the provided values are incorrect, then there are a few work arounds to allow a fix to be implemented inside the Administration settings, which may be inaccessible. + +### Database Fix + +As the front end of Rocket.Chat may be inaccessible, the backend Mongo database can be updated to remove the CDN. The following Mongo commands should reset the value to the default state. + +``` +db.rocketchat_settings.update({_id:"CDN_PREFIX"},{$set:{"value":""}}) +``` + +``` +db.rocketchat_settings.update({_id:"CDN_JSCSS_PREFIX"},{$set:{"value":""}}) +``` + +### Use a Browser Extension + +A browser extension can be used to rewrite URLs from the CDN address to the same location as where Rocket.Chat is running. Please take care when selecting an appropriate extension for your browser. diff --git a/setup-and-administer-rocket.chat/advanced-workspace-management/client-compatibility-matrix.md b/setup-and-administer-rocket.chat/advanced-workspace-management/client-compatibility-matrix.md new file mode 100644 index 0000000000..64f065b668 --- /dev/null +++ b/setup-and-administer-rocket.chat/advanced-workspace-management/client-compatibility-matrix.md @@ -0,0 +1,23 @@ +# Client Compatibility Matrix + +## Desktop + +| Electron Version | Supported releases | +| :--------------: | :----------------: | +| 2.15 | 1.0+ | +| 2.14 | ⩽ 0.70 | +| 2.13 | ⩽ 0.69 | +| 2.12 | ⩽ 0.68 | +| 2.11 | ⩽ 0.65 | +| 2.10 | ⩽ 0.59 | +| 2.9 | ⩽ 0.58 | +| 2.8 | ⩽ 0.56 | +| 2.7 | ⩽ 0.55 | + +## Mobile + +Our mobile applications have a maximum of 3 major server versions that is supported on each release. All the past releases are not officially supported and may cause problems. It is because our APIs are evolving a lot on each release, and sometimes it is hard to maintain compatibility with older versions when they don’t have support for specific features. + +| App Version | Supported releases | +| :---------: | :----------------: | +| 4.0.0+ | 0.70+ | diff --git a/setup-and-administer-rocket.chat/advanced-workspace-management/database-migration.md b/setup-and-administer-rocket.chat/advanced-workspace-management/database-migration.md new file mode 100644 index 0000000000..320ab54dbf --- /dev/null +++ b/setup-and-administer-rocket.chat/advanced-workspace-management/database-migration.md @@ -0,0 +1,25 @@ +# Database Migration + +As features are added to Rocket.Chat, the database schema may change between versions. + +Database migration means updating an older schema to a newer one (or vice versa). When you incrementally update your Rocket.Chat version, the database migration is automatic, and you do not have to take any explicit action. Rocket.Chat migrations and thier versions can be found on [GitHub](https://github.com/RocketChat/Rocket.Chat/blob/develop/apps/meteor/server/startup/migrations). + +We use migrations to force an updatable version range. It means you cannot upgrade from version three to five because the migrations in between are removed. + +{% hint style="info" %} +Rocket.Chat cannot be officially downgraded due to database migrations. However, you can manually roll back migrations separately. +{% endhint %} + +### Migration Collection + +A migration collection has only one document with the following structure: + +```javascript +{"_id": "control","locked":false, "version":19} +``` + +* `_id` : The value is always `control`. It means the collection has only one document to control migration actions. +* `locked` : The value is boolean and can either be `true` or `false`. It identifies whether migration is currently happening or not. If a migration fails, it will be stuck at true. +* `version` - The migration version your server is currently at. + +**To skip a migration**, set the version field in the migration collection to the next version of the one you want to skip. diff --git a/setup-and-administer-rocket.chat/advanced-workspace-management/google-cloud/README.md b/setup-and-administer-rocket.chat/advanced-workspace-management/google-cloud/README.md new file mode 100644 index 0000000000..05785102b3 --- /dev/null +++ b/setup-and-administer-rocket.chat/advanced-workspace-management/google-cloud/README.md @@ -0,0 +1,51 @@ +--- +description: 'Learn how to use Google Cloud Features with your Rocket.Chat server:' +--- + +# Google Cloud Features + +## Google Auto Translate + +Every communication you receive on a channel can be translated using the Google translation engine. You require a Google Translate API key for that. The [official Google API documentation](https://cloud.google.com/translate/pricing) explains how to get and use a Google Translate API key. + +## Getting the key + +To get the Google Translate API Key, + +* Go to [Google Cloud Console](http://cloud.google.com/console/). +* Create a Project and select it. +* On the navigation menu, go to **APIs & Services >** **Dashboard.** +* Click on **ENABLE APIS AND SERVICES** and search for Cloud Translation API. +* Go to **Credentials.** +* Click **Create credentials.** +* Select **API key.** + +## Configuration + +It's time to configure auto-translate in your workspace now that you have your API key.t. + +* Go to **Administration > Workspace > Settings > Message >Auto-Translate** +* **Enable Auto-Translate**. +* Select **Google** as the **Service Provider**. + +{% hint style="info" %} +Only users with the `auto-translate` [permission](../../../use-rocket.chat/workspace-administration/permissions.md) will be able to use this feature. See +{% endhint %} + +## Enabling Auto-Translate on a Channel + +Any messages sent in a language that **Google Translate** supports will be translated into your chosen language when you enable Auto-Translate in a room. + +> The translated messages are only visible to you. The original, untranslated messages is displayed for users who have not enabled Auto Translation. + +To activate Auto-Translate in a room, + +* Click the ![](<../../../.gitbook/assets/three-dot-icon (1).png>) **three-dot icon** in the room header. +* Select **Auto-Translate**. +* Enable **Automatic Translation** and select your desired language**.** +* Now, an **auto-translate icon** ![](../../../.gitbook/assets/auto-translate.png) is displayed beside the room name to indicate that the feature is active. + +To translate a messaage, + +* Hover over the message and click the ![](<../../../.gitbook/assets/three-dot-icon (1).png>) **three-dot icon.** +* Select **Translate**. diff --git a/setup-and-administer-rocket.chat/advanced-workspace-management/identity-management-ee-vs-ce.md b/setup-and-administer-rocket.chat/advanced-workspace-management/identity-management-ee-vs-ce.md new file mode 100644 index 0000000000..fe41baf19f --- /dev/null +++ b/setup-and-administer-rocket.chat/advanced-workspace-management/identity-management-ee-vs-ce.md @@ -0,0 +1,37 @@ +# Identity Management (EE vs CE) + +It is essential to guarantee that only the right individuals have appropriate access to your workspace and every conversation there. With Rocket.Chat, you can connect to your Active Directory application or Identity Management System through [Lightweight Directory Access Protocol](../../use-rocket.chat/workspace-administration/settings/ldap/) (LDAP), [Open Authorization](../../use-rocket.chat/workspace-administration/settings/oauth/) (OAuth), and [Security Assertion Markup Language](../../use-rocket.chat/workspace-administration/settings/saml/) (SAML). + +## **LDAP / AD** + +Leverage advanced settings such as background sync, roles mapping from groups, auto-logout, and advanced user data sync with [LDAP ](../../use-rocket.chat/workspace-administration/settings/ldap/)in your workspace. Here are some differences between the community and enterprise editions when using LDAP. + +| Community | Enterprise | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +|

Login

Login Fallback: This option allows regular password users to log in on Rocket.Chat. It will let LDAP users continue using Rocket.Chat if the LDAP server is down.

Merge with existing Rocket.Chat users: Detect if the LDAP user is already registered on Rocket.Chat and use the same user for both authentication types.

Filter what LDAP users can log in: There are two settings to manage this: Search Filter and Group Filter.

|

Advanced User Data Sync

Load information from the LDAP user to Rocket.Chat

Load Custom User Data from LDAP: Load any LDAP attribute to a custom field on Rocket.Chat

Advanced-Data Sync: Perform additional operations based on data from LDAP

Roles Mapping from Groups: You can map any LDAP group to a Rocket.Chat role

Auto-Subscribe to Channels: You can map any LDAP group to a Rocket.Chat channel

Auto-Unsubscribe from Channels: You can also remove users from Rocket.Chat channels on LDAP

Auto-Join Teams: You can map any LDAP group to a Rocket.Chat team

Auto-Leave Teams: You can also remove users from Rocket.Chat teams on LDAP

| +|

Basic User Data Sync

Load information from the LDAP user to Rocket.Chat

Load Basic User Data from LDAP: Email, name, and username.

Load Avatars: Load the user's avatar from an LDAP attribute

|

Background Sync

Periodic background sync

Incremental Sync: Give the option to use Incremental Sync (will be implemented in a future release)

Sync User Active State: Determine if users should be enabled or disabled on Rocket.Chat based on the LDAP status

Auto logout: Auto logout user on the next sync when it's removed/disabled on the LDAP group

| +|

Encryptions

The encryption method used to secure communications to the LDAP server

| **** | + +## **SAML** + +Create role mapping from user groups by selecting any field you want to sync with Rocket.Chat. + +| Community | Enterprise | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +|

Basic Synchronization: Keep user data in sync with the server on login (email, name, and username)

Customizable User Interface: Ability to customize button color and text

|

Roles mapping: Role mapping from user groups

Fields mapping: Select any field you want to sync with RC

Advanced: Advanced settings (eg. login with username and password x win user)

| + +{% content-ref url="../../use-rocket.chat/workspace-administration/settings/saml/" %} +[saml](../../use-rocket.chat/workspace-administration/settings/saml/) +{% endcontent-ref %} + +## **OAuth / Custom OAuth** + +Let your users log in via Facebook, Google, LinkedIn, GitHub, and others. + +| Community | Enterprise | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +|

Basic Social logins / pre-defined OAuth options

Keep user data in sync with the server on login (Unique identifier and username)

Avatar import

Login methods: Apple, Dolphin, Drupal, Facebook, GitHub, GitHub Enterprise, GitLab, Google, Linkedin, Meteor, Nextcloud, Tokenpass, Twitter, WordPress

Basic Custom OAuth:

Basic login settings

Login via Custom OAuth protocol using a unique identifier

Load Name, Username, and Email from

OAuth

Import Avatar from OAuth

|

Advanced Custom OAuth:

Assign Rocket.Chat roles based on OAuth roles

Join channels automatically based on OAuth roles

| + +{% content-ref url="../../rocket.chat-resources/frequently-asked-questions/ldap-faq.md" %} +[ldap-faq.md](../../rocket.chat-resources/frequently-asked-questions/ldap-faq.md) +{% endcontent-ref %} diff --git a/setup-and-administer-rocket.chat/advanced-workspace-management/managing-settings-using-environmental-variables.md b/setup-and-administer-rocket.chat/advanced-workspace-management/managing-settings-using-environmental-variables.md new file mode 100644 index 0000000000..9fa3d644dc --- /dev/null +++ b/setup-and-administer-rocket.chat/advanced-workspace-management/managing-settings-using-environmental-variables.md @@ -0,0 +1,213 @@ +# Managing Settings Using Environmental Variables + +You can set any settings value via an environment variable when starting your server. You will only have to know the setting id and what type of setting it is (boolean, string, integer, etc...). + +### Basic Settings + +| Name | Data Type | +| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| \_id | `SettingId = string` | +| type | `\| 'boolean'\| 'timezone'\| 'string'\| 'relativeUrl'\| 'password'\| 'int'\| 'select'\| 'multiSelect'\| 'language'\| 'color'\| 'font'\| 'code'\| 'action'\| 'asset'\| 'roomPick'\| 'group'\| 'date';` | +| public | `boolean` | +| env | `boolean` | +| group(Optional) | `GroupId = SettingId` | +| section(Optional) | `SectionName = string` | +| tab(Optional) | `TabId = SettingId` | +| i18nLabel | `string` | +| value | `SettingValue = string \| boolean \| number \| SettingValueMultiSelect \| Date \| AssetValue \| undefined;` | +| packageValue | `SettingValue = string \| boolean \| number \| SettingValueMultiSelect \| Date \| AssetValue \| undefined;` | +| blocked | `boolean` | +| enableQuery(Optional) | `string` | +| displayQuery(Optional) | `string` | +| sorter | `number` | +| properties(Optional) | `unknown` | +| enterprise(Optional) | `boolean` | +| requiredOnWizard(Optional) | `boolean` | +| hidden(Optional) | `boolean` | +| modules(Optional) | `Array` | +| invalidValue(Optional) | `SettingValue = string \| boolean \| number \| SettingValueMultiSelect \| Date \| AssetValue \| undefined;` | +| valueSource(Optional) | `string` | +| secret(Optional) | `boolean` | +| i18nDescription (Optional) | `string` | +| autocomplete(Optional) | `boolean` | +| processEnvValue(Optional) | `SettingValue = string \| boolean \| number \| SettingValueMultiSelect \| Date \| AssetValue \| undefined;` | +| meteorSettingsValue(Optional) | `SettingValue = string \| boolean \| number \| SettingValueMultiSelect \| Date \| AssetValue \| undefined;` | +| ts | `Date` | +| createdAt | `Date` | +| \_updatedAt(Optional) | `Date` | +| multiline(Optional) | `boolean` | +| values(Optional) | `Array` | +| placeholder(Optional) | `string` | +| wizard(Optional) |

step: number;

order: number;

| +| persistent(Optional) | `boolean` | +| readonly(Optional) | `boolean` | +| alert(Optional) | `string` | +| private (Optional) | `boolean` | + +### Group Settings + +| Name | Data Type | +| --------------- | ----------- | +| \_id | `string` | +| hidden | `boolean` | +| blocked | `boolean` | +| ts | `Date` | +| sorter | `number` | +| i18nLabel | `string` | +| displayQuery | `string` | +| i18nDescription | `string` | +| value | `undefined` | +| type | `group` | +| alert | `string` | + +### Enterprise Settings + +| Name | Data Type | +| ------------ | ----------------------------------------------------------------------------------------------------------- | +| enterprise | true | +| invalidValue | `SettingValue = string \| boolean \| number \| SettingValueMultiSelect \| Date \| AssetValue \| undefined;` | + +### Color Settings + +| Name | Data Type | +| ----------------------- | --------------- | +| type | `color` | +| editor | `SettingEditor` | +| packageEditor(Optional) | `SettingEditor` | + +### Action Settings + +| Name | Data Type | +| -------------------- | --------- | +| type | `action` | +| value | `string` | +| actionText(Optional) | `string` | + +### Code Settings + +| Name | Data Type | +| -------------------- | --------- | +| type | `action` | +| value | `string` | +| actionText(Optional) | `string` | + +### Asset Settings + +| Name | Data Type | +| --------------- | ---------------------------- | +| type | `asset` | +| value | `AssetValue` | +| fileConstraints | `IRocketChatAssetConstraint` | +| asset | `string` | + +### SelectOption Settings + +| Name | Data Type | +| --------- | ------------------- | +| key | `string \| number;` | +| i18nLabel | `string` | + +### Editor Settings + +| Name | Data Type | +| ---------- | ------------ | +| COLOR | `color` | +| EXPRESSION | `expression` | + +### Date Settings + +| Name | Data Type | +| ----- | --------- | +| type | `date` | +| value | `Date` | + +### Statistics Settings + +| Name | Data Type | +| --------------------------------------- | --------- | +| account2fa(Optional) | `boolean` | +| cannedResponsesEnabled (Optional) | `boolean` | +| e2e (Optional) | `boolean` | +| e2eDefaultDirectRoom(Optional) | `boolean` | +| e2eDefaultPrivateRoom(Optional) | `boolean` | +| smtpHost(Optional) | `string` | +| smtpPort(Optional) | `string` | +| fromEmail(Optional) | `string` | +| fileUploadEnable(Optional) | `boolean` | +| frameworkDevMode(Optional) | `boolean` | +| frameworkEnable(Optional) | `boolean` | +| surveyEnabled(Optional) | `boolean` | +| updateChecker(Optional) | `boolean` | +| liveStream(Optional) | `boolean` | +| broadcasting(Optional) | `boolean` | +| allowEditing(Optional) | `boolean` | +| allowDeleting(Optional) | `boolean` | +| allowUnrecognizedSlashCommand(Optional) | `boolean` | +| allowBadWordsFilter(Optional) | `boolean` | +| readReceiptEnabled(Optional) | `boolean` | +| readReceiptStoreUsers(Optional) | `boolean` | +| otrEnable(Optional) | `boolean` | +| pushEnable(Optional) | `boolean` | +| globalSearchEnabled(Optional) | `boolean` | +| threadsEnabled(Optional) | `boolean` | +| bigBlueButton(Optional) | `boolean` | +| jitsiEnabled(Optional) | `boolean` | +| webRTCEnableChannel(Optional) | `boolean` | +| webRTCEnablePrivate(Optional) | `boolean` | +| webRTCEnableDirect(Optional) | `boolean` | + +## Set Setting + +To set a setting for the first time you need only to add the env var `SETTING_ID=VALUE` when starting the server. + +Example: + +``` +FileUpload_Storage_Type=GoogleCloudStorage +``` + +**Note: This only works if the setting isn't already set. So this is most useful for setting on initial start. If the setting already has a value you will need to use the syntax below** + +## Overwrite Setting + +You can overwrite any setting by setting an environment variable prefixed with: `OVERWRITE_SETTING_` + +Example: + +``` +OVERWRITE_SETTING_FileUpload_Storage_Type=GoogleCloudStorage +``` + +## Block Settings + +You can block a setting from being changed by specifying the `SETTINGS_BLOCKED` environment variable. This is a comma separated list. Any setting you want to block you need to add to this list. + +Example: + +``` +SETTINGS_BLOCKED=FileUpload_Storage_Type,FileUpload_GoogleStorage_AccessId,FileUpload_GoogleStorage_Secret +``` + +**Even you as an admin will not be able to change this via the UI. If you want to change the setting you will need to remove it from the list and reboot the server** + +## Hide Settings + +Example: + +You can hide settings from the client by using the `SETTINGS_HIDDEN` environment variable + +``` +SETTINGS_HIDDEN=FileUpload_GoogleStorage_AccessId,FileUpload_GoogleStorage_Secret +``` + +**Be careful with this setting some settings like `FileUpload_Storage_Type` are needed by the client so cannot be hidden** + +## **Wizard Required** Settings + +Example: + +You can force settings to be required on wizard pages by using the `SETTINGS_REQUIRED_ON_WIZARD` environment variable + +``` +SETTINGS_REQUIRED_ON_WIZARD=Organization_Type,Organization_Name +``` diff --git a/setup-and-administer-rocket.chat/advanced-workspace-management/notifications.md b/setup-and-administer-rocket.chat/advanced-workspace-management/notifications.md new file mode 100644 index 0000000000..ccbec9e7b8 --- /dev/null +++ b/setup-and-administer-rocket.chat/advanced-workspace-management/notifications.md @@ -0,0 +1,44 @@ +# Notifications + +## Set General Notification Preferences + +To update the general notification preferences for your account, + +* Click your **avatar** from the sidebar to access the [user panel](https://docs.rocket.chat/use-rocket.chat/user-guides/user-panel). +* Select **My Account**. +* Click **Preferences**, then select **Notifications.** + +Based on your preference, you can set the type of messages you want to receive for **desktop notifications**, **push notifications**, and **offline email notifications**. You can also toggle on/off the option to **receive login detection emails**. + +## Set Room Notification Preferences + +To configure notifications within a room or channel, + +* Click the **three dots** icon at the menu bar of the room. +* Select **Notification Preferences**. + +You can toggle on/off for any of these actions: receiving alerts, mute `@here` and `@all` mentions, mark a room as unread when there are unread messages. + +Room notifications are only sent when the desktop/web client goes without use for more than five minutes. Changing your status to "Away" does not speed up this countdown. Depending on the privacy settings set by the administrator, you will see the sender, room name or the first line of the message as a notification on your mobile device. + +## Desktop + +Upon starting Rocket.Chat, you are asked to allow desktop notifications. Notifications appear as small boxes on the right corner, depending on the general or room notification preference. + +## Mobile + +Depending on your notification preference , you receive notifications on your mobile device for all messages or only if somebody mentions you. + +## Emails + +Notifications of direct messages or `@username` mentions are sent to your email address, but only if your web client is connected. + +## Mentions + +* `@username` - notifies this user. +* `@all` - notifies all members of this room or channel. +* `@here` - notifies all members of this room or channel who are online. + +## User Presence + +User presence is another vital notification configuration. You do not receive push notifications on your mobile device when using your web or desktop client. If you are idle for 60 seconds, you will be considered away, and all your mentions will be pushed to your mobile client after 60 seconds. However, if you disable auto-away, you won't receive any push notifications unless your screen goes off due to your computer settings. diff --git a/setup-and-administer-rocket.chat/advanced-workspace-management/restoring-an-admin.md b/setup-and-administer-rocket.chat/advanced-workspace-management/restoring-an-admin.md new file mode 100644 index 0000000000..7323fe90c3 --- /dev/null +++ b/setup-and-administer-rocket.chat/advanced-workspace-management/restoring-an-admin.md @@ -0,0 +1,114 @@ +# Restoring an Admin User + +You may lose access to a vital admin user (or the only Admin on the server) and need to restore it without using another admin user. To restore an admin, you will need to access the database. + +## Access the Database + +You can access the database in various ways, depending on how you installed Rocket.Chat server. + +### Docker-based installations + +To open the **mongo shell** within the **mongo container**, + +* Change into the docker-compose directory (where your `docker-compose.yml` is located) and run mongo bash. + +```bash +cd /opt/docker/Rocket.Chat +docker-compose run mongo bash +``` + +Alternatively, you can run the following command without navigating to the`docker-compose.yml` directory. + +``` +docker exec -it -u root mongo-image /bin/bash +``` + +* Login into the mongo shell. + +``` +mongo +``` + +{% hint style="info" %} +Make sure to replace `mongo` with the name of your MongoDB container if you use a different one. +{% endhint %} + +* Open the database in the mongo shell + +```sql +use rocketchat +``` + +{% hint style="info" %} +Make sure to replace `rocketchat` with the name of your Mongo database. If you're unsure of the name, you can either check your `docker-compose.yml` file or run the following command: +{% endhint %} + +```sql +show dbs +``` + +### Ubuntu Snaps Installation + +* Connect to MongoDB using the following command: + +```bash +sudo rocketchat-server.mongo +``` + +* Select the Rocket.Chat Database: + +```sql +use parties +``` + +## Updating the Admin Password + +To update the admin password, you can either use a one-time access token or update the admin password to a random string. + +* Using an access token will require the user to change his password. + +```javascript +db.getCollection('users').update({username:"administrator"}, {$set: { "services":{"loginToken":{"token":"some-token-id-that-you-will-use-to-login-once"}}, "requirePasswordChange":true} }) +``` + +Then access `http://{your server url}/login-token/some-token-id-that-you-will-use-to-login-once` to log in. + +* Alternatively, you can update the admin password to a random string. Using `12345` as an example of the password, use its hashed(bycrypt) value: + +```javascript +db.getCollection('users').update({username:"administrator"}, { $set: {"services" : { "password" : {"bcrypt" : "$2a$10$n9CM8OgInDlwpvjLKLPML.eizXIzLlRtgCh3GRLafOdR9ldAUh/KG" } } } }) +``` + +{% hint style="warning" %} +_Replace `administrator` with the appropriate username of the administrator on your server._ +{% endhint %} + +* Restart your application container in case the new password is not accepted yet. + +### **Generate a Valid Admin Password** + +To generate a valid password and its hashed value with `bcrypt-cli,` + +* Install **** `bcrypt-cli` **** with: + +``` +// npm install -g @carsondarling/bcrypt-cli +``` + +* Then, use this to generate your `bcrypt` password: + +``` +// npm install -g @carsondarling/bcrypt-cli bcrypt $(echo -n "yourPasswordHere" | sha256sum | cut -d " " -f 1) && echo +``` + +## Reset a User role to Admin + +To reset a user role to admin, run the following database command : + +```javascript +db.users.update({username: "administrator"}, { $push: { roles: "admin"}}) +``` + +{% hint style="warning" %} +_Replace `administrator` with the appropriate username of the administrator on your server._ +{% endhint %} diff --git a/setup-and-administer-rocket.chat/advanced-workspace-management/troubleshooting.md b/setup-and-administer-rocket.chat/advanced-workspace-management/troubleshooting.md new file mode 100644 index 0000000000..6a94bdadfc --- /dev/null +++ b/setup-and-administer-rocket.chat/advanced-workspace-management/troubleshooting.md @@ -0,0 +1,14 @@ +# Troubleshooting + +Occasionally, you may encounter some issues with your server. Common troubleshooting problems and solutions are outlined in this guide. + +## Invalid Site URL Warning + +If you receive an alert that you have an invalid Site URL. This means your Site URL and the URL you are accessing don't match. It can cause assets in Rocket.Chat not to load correctly. Most times, it happens when someone changes the setting. + +To resolve it, you will need to modify the site URL by setting the following environment variables: + +``` +OVERWRITE_SETTING_Site_Url=https://the-address-you-use-to-access +ROOT_URL=https://the-address-you-use-to-access +``` diff --git a/setup-and-administer-rocket.chat/basic-white-labeling.md b/setup-and-administer-rocket.chat/basic-white-labeling.md new file mode 100644 index 0000000000..8679e75207 --- /dev/null +++ b/setup-and-administer-rocket.chat/basic-white-labeling.md @@ -0,0 +1,11 @@ +# Basic White-labeling + +Leverage the white-labeling capabilities of Rocket.Chat to give your workspace the look and feel that suits your organization's brand. + +To achieve this, you are required to be the workspace administrator having the [admin](roles-in-rocket.chat/) role. + +The UI changes can be managed in the [layout.md](../use-rocket.chat/rocket.chat-workspace-administration/settings/layout.md "mention") **** settings of your workspace. + +{% hint style="info" %} +For advanced workspace customization, visit this [guide](https://developer.rocket.chat/rocket.chat/white-labelling-rocket.chat/advanced-white-labeling-of-server). +{% endhint %} diff --git a/setup-and-administer-rocket.chat/enterprise-edition-trial/README.md b/setup-and-administer-rocket.chat/enterprise-edition-trial/README.md new file mode 100644 index 0000000000..22761ea5d1 --- /dev/null +++ b/setup-and-administer-rocket.chat/enterprise-edition-trial/README.md @@ -0,0 +1,27 @@ +# Enterprise Edition Trial + +This section explains how to apply Enterprise license for your 30 day Trial. + +Some of the benefits of Rocket.Chat Enterprise Trial: + +* Message auditing panel +* Unlimited mobile push notifications +* Support access +* Enhanced LDAP/active directory +* Omnichannel features for improved management and agent efficiency +* Engagement dashboard +* Access to Enterprise bundle on marketplace +* High scalability + +Follow the instructions below depending on your situation to get Enterprise Edition Trial up and running if you:\ + + +{% hint style="info" %} +[**Have a workspace**](has-workspace.md) +{% endhint %} + +{% hint style="info" %} +[**Do not have a workspace**](does-not-have-a-workspace.md) +{% endhint %} + +You may also request to [**Extend your Enterprise Trial period**](extending-trial.md)**.**\ diff --git a/setup-and-administer-rocket.chat/enterprise-edition-trial/does-not-have-a-workspace.md b/setup-and-administer-rocket.chat/enterprise-edition-trial/does-not-have-a-workspace.md new file mode 100644 index 0000000000..5d5e56dcdb --- /dev/null +++ b/setup-and-administer-rocket.chat/enterprise-edition-trial/does-not-have-a-workspace.md @@ -0,0 +1,48 @@ +# Do not have a Workspace + +If you do not have a workspace yet, you will need to deploy one first before applying the Enterprise Edition Trial. + +If you already have a workspace, see this [guide](has-workspace.md) on how to apply enterprise trial + +## Getting your workspace setup + +This guide proceeds with [creating a new account](https://cloud.rocket.chat/trial/ee): + +![](<../../.gitbook/assets/image (644) (2).png>) + +* Check your inbox for a link to create a workspace and apply the trial. Click or copy-paste the link in your browser to continue. + +![](<../../.gitbook/assets/image (671) (1) (1).png>) + +* You are then redirected to [Rocket.Chat Cloud Portal](https://cloud.rocket.chat/). Since you don't have any workspace registered yet, the Workspaces section will be empty and you will have the following options: + +![](<../../.gitbook/assets/image (639) (1).png>) + +1. **Install Rocket.Chat**: You can follow our guides on [installing your own Rocket.Chat instance](../../deploy-rocket.chat/prepare-for-your-deployment/). +2. **Launch a SaaS Trial**: This is the fastest option to deploy a Rocket.Chat workspace. +3. **Register self-managed**: This lets you register your workspace if you have a workspace up and running. + +Following item 1 above, you will see the option to register your server after deploying it as follows: + +![](https://lh6.googleusercontent.com/aymgd-YyVLVzbWt6Z8PQSHkX5kGDSYG8YgPzt8zYd3O8D4WTMabsEpCKJj68NCUOMDdvfPpwtG5KCW70uppBNkRJKp3DNMRVAXJ2QaEkTjSoplk7fSoUycycUg0EKLxGT1lNicrh2QHEbq\_pYw) + +Now that you have registered your workspace proceed to [Rocket.Chat Cloud Portal](https://cloud.rocket.chat/) to activate the license on the workspace. See the following steps: + +1. Under the Workspaces section click on the Apply button at the extreme right. +2. Then click on **Apply Trial** to confirm the action. + +![](<../../.gitbook/assets/image (663) (1) (1).png>) + +![](<../../.gitbook/assets/image (642) (1) (1).png>) + + + +## Verify Active Workspace + +* When all this is done, refresh the page, and you're able to see your workspace listed with current plan as **Enterprise** with an **Active** status. + +​ + +![](<../../.gitbook/assets/image (253) (1).png>) + +* Your workspace plan will now be modified to Enterprise diff --git a/setup-and-administer-rocket.chat/enterprise-edition-trial/extending-trial.md b/setup-and-administer-rocket.chat/enterprise-edition-trial/extending-trial.md new file mode 100644 index 0000000000..827bbeb37f --- /dev/null +++ b/setup-and-administer-rocket.chat/enterprise-edition-trial/extending-trial.md @@ -0,0 +1,16 @@ +# Extending Trial + +For whatever reason you may need your Enterprise Edition trial to be extended, you can apply for an extension straight from your cloud portal. + +Go to your [Cloud Portal](https://cloud.rocket.chat/home) **Workspace** where all your connected instances are listed. + +From here, you can apply for an extension by following the steps below. + +1. From your cloud portal workspace, click on the kebab menu by the extreme right on the workspace you want to extend its trial. +2. Then select the **Trial Extension** option on the dropdown that appears. + +![](<../../.gitbook/assets/image (661) (1).png>) + +3\. Next enter your message or reason why you need the extension then hit **Send Request**. The request will be sent to sales where they will evaluate and respond. + +![](<../../.gitbook/assets/image (657) (1) (1) (1) (1) (1) (1) (1).png>) diff --git a/setup-and-administer-rocket.chat/enterprise-edition-trial/has-workspace.md b/setup-and-administer-rocket.chat/enterprise-edition-trial/has-workspace.md new file mode 100644 index 0000000000..0a41423205 --- /dev/null +++ b/setup-and-administer-rocket.chat/enterprise-edition-trial/has-workspace.md @@ -0,0 +1,31 @@ +# Have a Workspace + +If you have a Rocket.Chat workspace up and running you will need to verify if it is currently linked to a Cloud account. See the [following steps](../../use-rocket.chat/workspace-administration/connectivity-services.md) to do so.\ + + +If you do not have a workspace yet, see this [guide ](does-not-have-a-workspace.md)on how to proceed. + + + +After connecting to the Cloud account, go to [Rocket.Chat Cloud Portal](https://cloud.rocket.chat/home) **Workspaces** section where all your connected instances are listed + +* Click on **Apply Trial** to continue + +![](<../../.gitbook/assets/image (637) (1).png>) + +* A pop up appears, **Apply Trial** to confirm + +![](https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M418Ul0aSTwf2PYsyPW%2Fuploads%2FjlypDfyInZtPEfLnXZMD%2Fimage.png?alt=media\&token=a5a25c0a-a899-4ba1-97d3-d4510dadd810) + + + +## Verify Active Workspace + +* When all this is done, refresh the page, and you're able to see your workspace listed with current plan as **Enterprise** with an **Active** status. + +​ + +![](<../../.gitbook/assets/image (253) (1).png>) + +* Your workspace plan will now be modified to Enterprise + diff --git a/setup-and-administer-rocket.chat/license-application.md b/setup-and-administer-rocket.chat/license-application.md new file mode 100644 index 0000000000..2a6c83dcf3 --- /dev/null +++ b/setup-and-administer-rocket.chat/license-application.md @@ -0,0 +1,58 @@ +# License Application + +Rocket.Chat License unlocks additional functionality included with your purchased [plan](https://www.rocket.chat/pricing). To be able to utilize these functionalities, you need to activate your workspace with a license. + +This guide outlines how to add a license to your SaaS or Self-Managed workspace. + +## License on SaaS Workspaces + +### I have a workspace from trial + +If you created your workspace from [SaaS trial](https://www.rocket.chat/trial-saas-new) you can get a license for your workspace by + +* Navigating to **Administration** > **Workspace** > **Connectivity Services** +* Click on **Sync** to sync the workspace to Rocket.Chat cloud + +The Enterprise License gets applied to your workspace, and you can manage your cloud workspace [Rocket.Chat Cloud](https://cloud.rocket.chat/). + +### I have a workspace provisioned by Rocket.Chat + +If your workspace was provisioned by Rocket.Chat, you can access and get it set up by following the: + +{% content-ref url="accessing-your-workspace/rocket.chat-setup-wizard.md" %} +[rocket.chat-setup-wizard.md](accessing-your-workspace/rocket.chat-setup-wizard.md) +{% endcontent-ref %} + +### I do not have a workspace + +To get a new SaaS workspace, you can use any of the following methods + +* [Creating a SaaS trial](https://www.rocket.chat/trial-saas-new) +* [Contacting Rocket.Chat sales](../use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/contact-sales.md) + * Before contacting sales, decide on a URL to use in the format `.rocket.chat` + * After the workspace has been created, visit the workspace URL and set it up following the [setup-wizard.md](../use-rocket.chat/workspace-administration/settings/setup-wizard.md "mention") + +## License on Self-Managed Workspaces + +After successfully [deploying your Rocket.Chat](../deploy-rocket.chat/prepare-for-your-deployment/) workspace applying license is possible with any of the following means depending on the type of workspace. + +* **Online Workspace**: The Rocket.Chat workspace has access to the internet +* **Offline or Air-gapped workspace**: The Rocket.Chat workspace deployed has restricted or no internet access. + +{% hint style="info" %} +To apply a license to a self-managed workspace, you are required to [Register your workspace](../use-rocket.chat/workspace-administration/connectivity-services.md#registration-steps). +{% endhint %} + +Below are links to guides explaining how this can be archived + +### Online Workspace + +{% content-ref url="../use-rocket.chat/workspace-administration/connectivity-services.md" %} +[connectivity-services.md](../use-rocket.chat/workspace-administration/connectivity-services.md) +{% endcontent-ref %} + +### Offline Workspace + +{% content-ref url="rocket.chat-air-gapped-deployment/offline-license.md" %} +[offline-license.md](rocket.chat-air-gapped-deployment/offline-license.md) +{% endcontent-ref %} diff --git a/setup-and-administer-rocket.chat/rocket.chat-air-gapped-deployment/README.md b/setup-and-administer-rocket.chat/rocket.chat-air-gapped-deployment/README.md new file mode 100644 index 0000000000..4419227375 --- /dev/null +++ b/setup-and-administer-rocket.chat/rocket.chat-air-gapped-deployment/README.md @@ -0,0 +1,38 @@ +--- +description: Deploy Rocket.Chat in an air-gapped environment using docker & docker compose +--- + +# Rocket.Chat Air-gapped Deployment + +An air-gapped computer system is one that is not directly connected to any external network. It ensures that a secure computer network is physically isolated from unsecured networks, such as the public internet or an unsecured local area network. + +{% hint style="info" %} +The recommended deployment method for Rocket.Chat is using [Docker and Docker Compose](../../quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/). +{% endhint %} + +## Deploying a local Docker Registry with Images + +To set up a local [Docker registry](https://docs.docker.com/registry/) on an air-gapped environment, consider building the registry's data volume on a host with internet connectivity so that you can use `docker pull` to fetch the required images or any remotely accessible images, then move the volume to the air-gapped network. + +{% hint style="info" %} +See the complete list of considerations in the [Docker documentation](https://docs.docker.com/registry/deploying/#considerations-for-air-gapped-registries). +{% endhint %} + +* Deploy a local registry following the[ official Docker guide](https://docs.docker.com/registry/deploying/). +* Then, pull the [Rocket.Chat](https://hub.docker.com/\_/rocket-chat), [MongoDB](https://hub.docker.com/r/bitnami/mongodb), and Nginx images from the docker hub which are needed to run Rocket.Chat into your registry. More details on how to do that [here](https://docs.docker.com/registry/deploying/#copy-an-image-from-docker-hub-to-your-registry) + +{% hint style="info" %} +For more details, see [copying an image from Docker Hub to your registry](https://docs.docker.com/registry/deploying/#copy-an-image-from-docker-hub-to-your-registry). +{% endhint %} + +* After deploying the local registry, move the volume to the air-gapped environment and install Rocket.Chat. + +## Installing Rocket.Chat in an Air-gapped environment through Docker & Docker Compose + +With your local registry completely [deployed](https://docs.docker.com/registry/deploying/) and [configured](https://docs.docker.com/registry/configuration/), + +* Follow our guide on installing Rocket.Chat with [Docker & Docker Compose](../../quick-start/installing-and-updating/rapid-deployment-methods/docker-and-docker-compose/#fetching-compose-file) using the example `compose.yml` file. + +{% hint style="info" %} +Once your local registry is configured on an air-gapped system, Docker will pull and use images directly from there. +{% endhint %} diff --git a/setup-and-administer-rocket.chat/rocket.chat-air-gapped-deployment/air-gapped-workspace-configuration.md b/setup-and-administer-rocket.chat/rocket.chat-air-gapped-deployment/air-gapped-workspace-configuration.md new file mode 100644 index 0000000000..ad9e9f9e18 --- /dev/null +++ b/setup-and-administer-rocket.chat/rocket.chat-air-gapped-deployment/air-gapped-workspace-configuration.md @@ -0,0 +1,13 @@ +--- +description: Extra configurations that can be done on your air-gapped workspace. +--- + +# Air-gapped workspace Configuration + +## Push Notification Configuration + +To configure push notifications on your workspace, you can use the Rocket.Chat [push notification gateway](../../use-rocket.chat/rocket.chat-mobile/push-notifications/). You are required to complete your [offline-workspace-registration.md](offline-workspace-registration.md "mention"). + +{% hint style="info" %} +For fully air-gapped workspaces, you have to build a Rocket.Chat app for your desired mechanism. To learn more, see [Rocket.Chat App](https://developer.rocket.chat/apps-engine). +{% endhint %} diff --git a/setup-and-administer-rocket.chat/rocket.chat-air-gapped-deployment/offline-license.md b/setup-and-administer-rocket.chat/rocket.chat-air-gapped-deployment/offline-license.md new file mode 100644 index 0000000000..cdc8c3315f --- /dev/null +++ b/setup-and-administer-rocket.chat/rocket.chat-air-gapped-deployment/offline-license.md @@ -0,0 +1,41 @@ +--- +description: Apply an offline License on your Rocket.Chat workspace +--- + +# Offline License + +Rocket.Chat License unlocks additional functionality included with your purchased plan. To utilize these functionalities, you must activate your workspace with a license. + +{% hint style="info" %} +See how to get a trial on [enterprise features](../enterprise-edition-trial/). +{% endhint %} + +## Getting Offline License + +There are two ways to get the license for your workspace before applying for air-gapped workspaces. + +* Contact Rocket.Chat support to provide a license for your workspace. +* Fetch your offline license from Rocket.Chat cloud console. + +### Contact Rocket.Chat support to provide a license for your workspace. + +* Open up a query requesting a license for your air-gapped workspace from the [Rocket.Chat support](../../resources/get-support/enterprise-support/). + +{% hint style="info" %} +You will be required to provide the following information: + +* Your workspace registration email +* The workspace URL. +{% endhint %} + +* When the license code is provided, follow the steps outlined in [applying offline license.](../../use-rocket.chat/workspace-administration/info.md#apply-offline-license) + +### 2. Get a License from Rocket.Chat Cloud + +{% hint style="info" %} +You are required to have completed[ registering your offline workspace](offline-workspace-registration.md). +{% endhint %} + +* Click the workspace on the [Rocket.Chat Cloud portal](https://cloud.rocket.chat/home) +* Click **Get License** +* Copy the license code provided and follow the steps outlined in [applying offline license.](../../use-rocket.chat/workspace-administration/info.md#apply-offline-license) diff --git a/setup-and-administer-rocket.chat/rocket.chat-air-gapped-deployment/offline-workspace-registration.md b/setup-and-administer-rocket.chat/rocket.chat-air-gapped-deployment/offline-workspace-registration.md new file mode 100644 index 0000000000..e324cbc1ba --- /dev/null +++ b/setup-and-administer-rocket.chat/rocket.chat-air-gapped-deployment/offline-workspace-registration.md @@ -0,0 +1,25 @@ +--- +description: Register your air-gapped or workspaces without internet access. +--- + +# Offline Workspace Registration + +{% hint style="info" %} +If you use a workspace accessible through the internet, you can follow [this guide](https://docs.rocket.chat/guides/administration/admin-panel/connectivity-services#registration-steps) on how to set it up. +{% endhint %} + +To register a workspace without internet access, + +* Navigate to **Administration** > **Workspace** > **Settings** > **Setup Wizard** > **Cloud Info** and enable **Cloud Service Privacy Terms Agreement.** Enabling it **** means you agree with the [Terms](https://rocket.chat/terms) & [Privacy Policy](https://rocket.chat/privacy). +* Navigate to **Administration** > **Workspace** > **Connectivity Services** and click **Register Offline**. +* Copy the code snippet that is displayed on the pop-up box. +* Create an account or login into your [Rocket.Chat cloud portal](https://cloud.rocket.chat). +* Then, click on **Register self-managed** to register a new workspace. +* Click **Continue Offline** if you are running an air-gapped workspace or your server has no internet connection. +* Paste the code you copied earlier from **Connectivity Services** and click **Continue.** +* You are provided with another code from the cloud portal. Copy the code and go back to your local workspace. +* On your local workspace, paste the code you got from the cloud portal and click **Finish Registration.** + +{% hint style="success" %} +With that done, you have successfully registered your workspace. +{% endhint %} diff --git a/setup-and-administer-rocket.chat/roles-in-rocket.chat/README.md b/setup-and-administer-rocket.chat/roles-in-rocket.chat/README.md new file mode 100644 index 0000000000..3cb3ec0e58 --- /dev/null +++ b/setup-and-administer-rocket.chat/roles-in-rocket.chat/README.md @@ -0,0 +1,57 @@ +# Roles in Rocket.Chat + +Roles in Rocket.Chat makes it easy for you to manage, control and secure access to resources and features. + +A Role can be tied to one or more [**Permissions**](../../use-rocket.chat/workspace-administration/permissions.md) allowing different users to have different levels of access based on the role assigned to them by the workspace Admin. + +As a Rocket.Chat workspace administrator, you can assign certain privileges to users, such as the ability to send messages or manage channels. By assigning roles and permissions, it is possible to control and limit the actions of a user, ensuring that they are only able to access and perform the action that they are authorized to do so. + +This document aims at listing out the various Roles in Rocket.Chat using the following categories: + +* [Administrator Role](./#rocket.chat-administrator-role) +* [User Roles](./#rocket.chat-user-roles) +* [Omnichannel Roles](./#rocket.chat-omnichannel-roles) +* [Marketplace Roles](./#rocket.chat-marketplace-roles) + +## Rocket.Chat Administrator Role + +A Rocket.Chat Administrator has the `Admin` role, which gives them full access to the entire Rocket.Chat workspace. + +They can manage both [workspace-administration](../../use-rocket.chat/workspace-administration/ "mention") and [omnichannel](../../use-rocket.chat/omnichannel/ "mention") settings. + +## Rocket.Chat User Roles + +Rocket.Chat users can have one or more roles, allowing them to perform the various actions granted by the Role's permissions. + +| Role | Description | +| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `user` | The `user` role is the most common role in Rocket.Chat. It serves as a standard role for all members in a Rocket.Chat instance. [Users ](../../use-rocket.chat/user-guides/)can join [rooms](../../use-rocket.chat/user-guides/rooms/), send messages, upload files, and participate in all forms of communication. | +| `bot` | [Bots ](../../use-rocket.chat/workspace-administration/settings/bots.md)are automated users that can be programmed to perform specific tasks, such as sending messages, answering questions, and triggering notifications. | +| `guest` | Guest users are non-registered users who have access to your Rocket.Chat instance public channels. | +| `anonymous` | Unauthenticated visitors on your Rocket.Chat workspace. Anonymous users do not have a specified username. | +| `app` | Automated users that are used by Rocket.Chat Apps from the [rocket.chat-marketplace](../../extend-rocket.chat-capabilities/rocket.chat-marketplace/ "mention") | +| `Owner` | A [Channel ](../../use-rocket.chat/user-guides/rooms/channels/)owner is a user designated as the owner of a specific channel. The channel owner has the ability to manage the channel, including controlling access to the channel, editing channel settings, and managing messages within the channel. | +| `Leader` | A channel Leader gets pinned on the top of a channel and they can receive 1:1 messages from other channel users. | +| `Moderator` | Moderators have the ability to manage messages, delete messages, and ban users in a specific channel. | +| `auditor` |

Gives a user the ability to view and audit all messages within the workspace.
Users with auditor role alone cannot send messages.

| +| `auditor-log` |

The auditor-log role gives a user the ability to see logs about all audited messages with timestamps and by who.
Users with just theauditor-log role cannot send messages.

| + +## Rocket.Chat Omnichannel Roles + +[Omnichannel](../../use-rocket.chat/omnichannel/)-related Roles give Rocket.Chat users have the ability to interact with or manage various Omnichannel features. + +| Role | Description | +| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Livechat Agent` | Live Chat [Agents](../../use-rocket.chat/omnichannel/agents.md) are responsible for handling visitors' inquiries and support requests through [Omnichannel Live Chat](../../use-rocket.chat/omnichannel/livechat-widget-installation.md). | +| `Livechat Manager` | Live Chat [Managers ](../../use-rocket.chat/omnichannel/managers.md)have the ability to manage Livechat [Agents](../../use-rocket.chat/omnichannel/agents.md) and all other [Omnichannel ](../../use-rocket.chat/omnichannel/)features. | +| `livechat-monitor` | Users with the `livechat-monitor` role can view and [monitor ](../../use-rocket.chat/omnichannel/monitors-managers-guide.md)Live Chat interactions and analytics. | + +{% hint style="info" %} +You can create and manage custom Roles with specified permissions tailored to your needs. Learn more about Rocket.Chat Roles here [#roles](../../use-rocket.chat/workspace-administration/permissions.md#roles "mention") +{% endhint %} + +### Rocket.Chat Marketplace Roles + +{% content-ref url="marketplace-roles.md" %} +[marketplace-roles.md](marketplace-roles.md) +{% endcontent-ref %} diff --git a/setup-and-administer-rocket.chat/roles-in-rocket.chat/marketplace-roles.md b/setup-and-administer-rocket.chat/roles-in-rocket.chat/marketplace-roles.md new file mode 100644 index 0000000000..8ed45a90df --- /dev/null +++ b/setup-and-administer-rocket.chat/roles-in-rocket.chat/marketplace-roles.md @@ -0,0 +1,34 @@ +# Marketplace Roles + +Internally, we have two different roles for [rocket.chat-marketplace](../../extend-rocket.chat-capabilities/rocket.chat-marketplace/ "mention"); one within the publisher and the second within the system. Henceforth known as publisher roles and system roles. + +## Publisher Roles + +There are three different roles within a Publisher. + +* [Owner](marketplace-roles.md#publisher-owner) +* [Developer](marketplace-roles.md#publisher-developer) +* [Viewer](marketplace-roles.md#publisher-viewer) + +as shown below: + +
+ +The Owner role is applied whenever someone creates a publisher. Each of the subsequent roles only applies to people they have invited. + +### Publisher: Owner + +The `owner` has permission to manage everything on the publisher dashboard. This includes managing both Apps and other Users. + +To change the role of another user, + +* Click **Change Role** from the **Actions** dropdown across the user in question +* Select the desired Role to change + +### Publisher: Developer + +A user with the `developer` role can read everything and update Apps. + +### Publisher: Viewer + +The `viewer` role can read everything but can not update anything. diff --git a/setup-and-configure/rocket.chat-air-gapped-deployment/air-gapped-app-installation.md b/setup-and-configure/rocket.chat-air-gapped-deployment/air-gapped-app-installation.md new file mode 100644 index 0000000000..0c2fe2550d --- /dev/null +++ b/setup-and-configure/rocket.chat-air-gapped-deployment/air-gapped-app-installation.md @@ -0,0 +1,44 @@ +--- +description: Get and install an app in an air-gapped workspace. +--- + +# Air-gapped App Installation + +Rocket.Chat allows you to extend and bring new functionalities to your air-gapped workspace by building and using Rocket.Chat apps using the [apps engine](https://developer.rocket.chat/apps-engine/rocket.chat-apps-engine). These apps can help in improving collaboration, boosting productivity, and having you do more with your workspace. + +{% hint style="info" %} +The following apps work without internet access and can be requested via your registered support contact from the support team. + +* [Bamboo Integration](../../extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/bamboo-integration.md) +* [Bitbucket Server](../../extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/bitbucket-server-integration.md) +* [Confluence Server](../../extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/confluence-server-integration.md) +* [Data Loss Prevention](../../extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/data-loss-prevention-dlp-app.md) +* Jenkins Integration +* [JIRA Server Integration](../../extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/atlassian/jira-server-integration.md) +* [Jitsi](../../use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/jitsi-app.md) +* [Pexip](../../use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/pexip-app.md) +{% endhint %} + +## Getting an App + +You can either request an existing Rocket.Chat App or [build an App ](https://developer.rocket.chat/apps-engine/getting-started/creating-an-app)by yourself. + +### Requesting for a Rocket.Chat App + +You can request these apps via your registered support contact in the support team. This option is available to [enterprise ](https://www.rocket.chat/pricing)customers. + +### Building a Rocket.Chat App + +See the developer guide on Getting started with Apps engine. + +{% embed url="https://developer.rocket.chat/apps-engine/getting-started" %} + +## Installing an App + +After getting your packaged and ready-to-use app in a `.zip` format, follow these instructions to install it on your workspace: + +* Navigate to **Administration > Marketplace > Private apps >** +* Click **Upload Private App**. You can install it from a URL or a file +* Choose the **Install from file** method +* Select the `.zip` file of the app and click **Install.** +* **Agree** to the permissions needed to complete the installation. diff --git a/use-rocket.chat/message-auditing-log.md b/use-rocket.chat/message-auditing-log.md new file mode 100644 index 0000000000..2fd679e36e --- /dev/null +++ b/use-rocket.chat/message-auditing-log.md @@ -0,0 +1,32 @@ +--- +description: Review log history of users who have accessed the Message Auditing Panel. +--- + +# Message Auditing Log + +
+ +The **Message Audit Log** allows you to verify who run audits and when a conversation was inspected. The user must have an `auditor-log` [role](../setup-and-administer-rocket.chat/roles-in-rocket.chat/) and `Can Audit Log` [permission](workspace-administration/permissions.md) to access the **Audit Logs**. + +To access the message auditing log, + +* Navigate to **Administration** > **Audit** > **Logs**. + +If you are interested in the entire log history, clear the start and end date fields. The full log history results are returned, from the oldest audits to the most recent. However, if you want to see who audited messages within a specific time frame, select the **start** (left) and end **date**s(right). The ![](<../.gitbook/assets/three-dot-icon (1).png>)**three-dots icon** also provides other time options like **Today**, **This Week,** etc. + +The message auditing logs returns a table with following information: + +* **Username** : The name, username, and avatar of the auditors. +* **Looked for** : The search term of each audit. +* **When** : The date and time when each audit was made. +* **Results**: The number of search results returned by each audit. +* **Filters**: Filters that were applied for each audit depending on the type of audit. + +## Assign Message Audit Log Permission to Specific Users + +The **Audit Log** [permissions](workspace-administration/permissions.md) grant users access to **Message Audit** **Log** features. As a workspace administrator, you can assign this permssion **** to any [role ](workspace-administration/permissions.md#roles)you want to give audit log access to. + +To assign message audit permissions, + +* Navigate to **Administration** > **Workspace** > **Permissions.** +* To access the **Message Auditing Panel**, check the `Can Audit Log` box under the role you want to assign. diff --git a/use-rocket.chat/message-auditing/README.md b/use-rocket.chat/message-auditing/README.md new file mode 100644 index 0000000000..b193b7b39d --- /dev/null +++ b/use-rocket.chat/message-auditing/README.md @@ -0,0 +1,68 @@ +--- +permalink: /administrator-guides/message-auditing/ +official: true +enterprise: true +--- + +# Message Auditing + +
+ +Rocket.Chat allows authorized users to audit messages and read conversations in a workspace. The user must have an `auditor` [role](../../setup-and-administer-rocket.chat/roles-in-rocket.chat/) and `Can Audit` [permission](../workspace-administration/permissions.md) to access the auditing panel. As an organization, you may want to inspect the [omnichannel](../omnichannel/) conversations and watch out for [agents ](../omnichannel/agents.md)that use improper language with customers. An auditor can do the following: + +* Review messages in private rooms. +* Review messages by users. +* Review direct messages between users. +* Review omnichannel messages. +* Check the audit history of individuals using the Message Auditing Panel. + +To access the Message Auditing Panel, + +* Navigate to **Administration** > **Audit** > **Messages,** + +{% hint style="info" %} +If you cant find the audit options, don't hesitate to get in touch with your workspace administrator to [assign message auditing permmisions to you](assign-message-auditing-permissions-to-specific-users.md). + +See [**Messaging Auditing Log**](./) to learn more about the auditing log history. +{% endhint %} + +## Search and Review Messages + +You can sort messages with various filters in your workspace. + +### By Channel/Room + +To search for a specific message in a room, + +* Update the **Message** field with the key phrase of the message you are searching .lf you wish to pull all messages, leave the **Message** field empty. +* Select the **start** and **end date** to limit the search results to a specific time frame. The ![](<../../.gitbook/assets/three-dot-icon (1).png>)**three-dots icon** also provides other time options like **Today**, **Last Week,** etc. +* Select the room you want to search in from the **Channel** dropdown**.** +* Click **Apply** to reveal the messages gotten between the periods. + +### By Users + +To search for a specific message by users, + +* Update the **Message** field with the key phrase of the message you are searching .lf you wish to pull all messages, leave the **Message** field empty. +* Select the **start** and **end date** to limit the search results to a specific time frame. The ![](<../../.gitbook/assets/three-dot-icon (1).png>)**three-dots icon** also provides other time options like **Today**, **Last Week,** etc. +* Type the username and select the user(s) for which you want to search messages in the **Users** field. +* Click **Apply**. The selected users' conversations between those periods that match the search phrase are displayed. + +### By Direct Messages + +To search for a specific message by a direct message(DM), + +* Update the **Message** field with the key phrase of the message you are searching .lf you wish to pull all messages, leave the **Message** field empty. +* Select the **start** and **end date** to limit the search results to a specific time frame. The ![](<../../.gitbook/assets/three-dot-icon (1).png>)**three-dots icon** also provides other time options like **Today**, **Last Week,** etc. +* Select at least two users whose direct messages you want to check in the **Users** field. +* Click **Apply**. The conversations between the users selected in that time frame that matches the search phrase are displayed. + +### By Omnichannel + +To search for a specific Omnichannel conversation: + +* Update the **Message** field with the key phrase of the message you are searching .lf you wish to pull all messages, leave the **Message** field empty. +* Select the **start** and **end date** to limit the search results to a specific time frame. The ![](<../../.gitbook/assets/three-dot-icon (1).png>)**three-dots icon** also provides other time options like **Today**, **Last Week,** etc. +* Enter the visitor's number in the **Visitor** field. +* Enter the agent's name who served the conversation you want in the **Agent** field. +* Click **Apply**. diff --git a/use-rocket.chat/message-auditing/assign-message-auditing-permissions-to-specific-users.md b/use-rocket.chat/message-auditing/assign-message-auditing-permissions-to-specific-users.md new file mode 100644 index 0000000000..e61ad48b27 --- /dev/null +++ b/use-rocket.chat/message-auditing/assign-message-auditing-permissions-to-specific-users.md @@ -0,0 +1,8 @@ +# Assign Message Auditing Permissions to Specific Users + +The **Auditor** [permission](../workspace-administration/permissions.md) grant users access to **Message Auditing** features. As a workspace administrator, you can assign this permission **** to any [role ](../workspace-administration/permissions.md#roles)you want to give audit access to. + +To assign message audit permissions, + +* Navigate to **Administration** > **Workspace** > **Permissions.** +* To access the **Message Auditing Panel**, check the `Can Audit` box under the role you want to assign. diff --git a/use-rocket.chat/message-auditing/check-historical-edits-and-deletions-of-messages.md b/use-rocket.chat/message-auditing/check-historical-edits-and-deletions-of-messages.md new file mode 100644 index 0000000000..59aef31646 --- /dev/null +++ b/use-rocket.chat/message-auditing/check-historical-edits-and-deletions-of-messages.md @@ -0,0 +1,9 @@ +# Check Historical Edits and Deletions of Messages + +Rocket.Chat lets you view any message history, including modified or removed messages. + +To update message history settings, + +* Navigate to **Administration > Workspace > Settings > Message.** +* Enable **Allow Message Editing** and **Keep Per Message Editing History** to see a history of all messages and not only the last edit made. +* Disable **Allow Message Deleting**. Otherwise, messages show only the _deleted_ status, and you cannot see the complete message history. diff --git a/use-rocket.chat/message-auditing/review-all-message-auditing-panelsearch-results.md b/use-rocket.chat/message-auditing/review-all-message-auditing-panelsearch-results.md new file mode 100644 index 0000000000..6df2b343bf --- /dev/null +++ b/use-rocket.chat/message-auditing/review-all-message-auditing-panelsearch-results.md @@ -0,0 +1,9 @@ +# Review All Message Auditing Panel Search Results + +The **Message Auditing Panel** returns all messages that match the search values defined in the mandatory fields for each option. However, the auditor cannot read the encrypted messages of other users. If you want to audit these messages, Rocket.Chat recommends that you disable message encryption. + +To disable message encryption, + +* Navigate to **Administration > Workspace > Settings > E2E Encryption.** +* Toggle off the **Enabled** option to disable E2E Encryption. +* Click **Save Changes.** diff --git a/use-rocket.chat/omnichannel-agents-guides/README.md b/use-rocket.chat/omnichannel-agents-guides/README.md new file mode 100644 index 0000000000..d5f4fccb95 --- /dev/null +++ b/use-rocket.chat/omnichannel-agents-guides/README.md @@ -0,0 +1,24 @@ +--- +description: Guide to be followed by omnichannel agents to assist customers. +--- + +# Omnichannel Agent's Guides + +As an Omnichannel agent, you can log in to your workspace using your username or email, and password. You can handle omnichannel or Livechat conversations. + +{% hint style="info" %} +To be an Omnichannel agent, you must have the **`Omnichannel Agent`** role. Contact your administrator if you need the role. +{% endhint %} + +As an omnichannel agent, your home screen has Omnichannel navigation tab that has features for: + +* [Opening Omnichannel Queue](omnichannel-queue.md) +* [Setting Omnichannel Agent's Availability](./#undefined) +* [Opening up Omnichannel Contact Center](omnichannel-contact-center/) + +## Omnichannel Agent Availability + +To make yourself available to take up conversations: + +* Click ![](<../../.gitbook/assets/chats-off (1).png>) icon to set your status to **Available** +* Click to set your status to **Unavailable**. diff --git a/use-rocket.chat/omnichannel-agents-guides/email-inboxes.md b/use-rocket.chat/omnichannel-agents-guides/email-inboxes.md new file mode 100644 index 0000000000..874da975cc --- /dev/null +++ b/use-rocket.chat/omnichannel-agents-guides/email-inboxes.md @@ -0,0 +1,44 @@ +--- +description: Learn to use email inboxes feature as an omnichannel agent +--- + +# Email Inboxes + +In your Rocket.Chat workspace, you can receive emails from contacts on an email address configured as an [email inbox](https://docs.rocket.chat/use-rocket.chat/rocket.chat-workspace-administration/email-inboxes). + +{% hint style="info" %} +To use this feature, your workspace administrator must enable [Omnichannel ](https://docs.rocket.chat/guides/administration/settings/omnichannel-admins-guide#enable-omnichannel)and assign [agents](https://docs.rocket.chat/guides/omnichannel/agents) and [managers](https://docs.rocket.chat/guides/omnichannel/managers). Kindly contact your administrator to set up [email inboxes ](https://docs.rocket.chat/use-rocket.chat/rocket.chat-workspace-administration/email-inboxes)on your workspace. +{% endhint %} + +Once an [email inbox](https://docs.rocket.chat/use-rocket.chat/rocket.chat-workspace-administration/email-inboxes) is set up successfully, any new email received is shown in your Rocket.Chat workspace. You can view and reply to these emails from your workspace. When you reply, it appears like any other email in your contact’s inbox. + +When you log in to your workspace as an agent and [set your status to **Available**](./#omnichannel-agent-availability)**,** to handle new conversations: + +* Any new email initiated to the [department](../omnichannel/departments.md) you belong to appears under **Chats in Progress** +* Click on an email to reply to the omnichannel contact. + +### Reply Email Inbox Messages + +* As soon as your contact sends an email, it will appear under **Chats in Progress.** +* Click the chat to open it. Click **Reply via Email,** type your message, and click **Send.** Your contact receives the reply in their email. + +{% hint style="info" %} +If you type without clicking **Reply via Email**, your contact will **NOT** receive your reply at all. +{% endhint %} + +## Invite an Agent to an Email Inbox + +Suppose you need help with a particular email, you can invite your fellow **agent** to that channel using `/invite @username` . + +
+ +Once an agent is invited to an email inbox, they have access to all the previous conversations that have taken place there. You can also have internal conversations with your fellow agent on the same channel. + +
+ +## Reply to Email Inbox with an Attachment + +To reply to an email with an attachment, + +* Click **Reply via Email**, then upload and send the file. +* Click **Send via Email as attachment.** diff --git a/use-rocket.chat/omnichannel-agents-guides/omnichannel-contact-center/README.md b/use-rocket.chat/omnichannel-agents-guides/omnichannel-contact-center/README.md new file mode 100644 index 0000000000..dd8778e973 --- /dev/null +++ b/use-rocket.chat/omnichannel-agents-guides/omnichannel-contact-center/README.md @@ -0,0 +1,75 @@ +# Omnichannel Contact Center + +,The Omnichannel Contact Center is a directory of contacts, chats, and calls. + +To access the Contact Center, click the icon on the Omnichannel navigation tab, and a screen displaying all the records is seen. + +{% hint style="info" %} +As an **omnichannel agent,** you can view contacts, chats, and calls you have served. + +As an **omnichannel manager,** you can view contacts, chats, and calls served by your department. + +As a **workspace administrator,** you can view contacts, chats, and calls served on your entire workspace. +{% endhint %} + +## Contacts + +Under the **Contacts** tab, you can see all the contacts you have been serving as an Omnichannel agent. + +### Search omnichannel contact + +Omnichannel contacts are searched by username, name, email, or phone. To search for a contact: + +* Click the **Contacts** tab if you are on a different tab. +* Enter your search query in the **Search** box. +* Click on the contact of interest, and the details are revealed on a panel on the right. + +Searching can also be done using [custom field](../../workspace-administration/settings/account-settings/custom-fields.md) values. This is only possible if the **Searchable** option of the field is enabled when creating the contact. + +### View/edit omnichannel contact information + +To view or edit a contact: + +* Click the contact. +* The details of the contact are revealed on a panel on the right. +* Click **Edit** to start editing. +* Update the fields you are interested in. +* Click **Save** to save the contact details or click **Cancel** otherwise. + +### Create a new omnichannel contact + +To create a new contact: + +* Click the **Contacts** tab. +* Click **New Contact.** +* Enter the new contact's name, email, phone, and email. +* Hit **Save.** + +{% hint style="success" %} +As a Rocket.Chat enterprise user; you can [assign an Omnichannel contact to a particular manager](omnichannel-contact-manager-assignment.md). +{% endhint %} + +## Chats + +All the conversations appear under the **Chats** tab. + +{% hint style="info" %} +No open chat appears in the **Contact Center**. A chat appears in the **Contact** **Center** as soon as it is closed because **Contact Center** only deals with archived conversations. +{% endhint %} + +* Search to open your desired conversation details +* Click **Edit** to edit the conversation details +* Click on top right on **Room Information** panel to view the full conversation +* You can perform all the [quick actions ](../omnichannel-conversation.md)applicable to the **Closed** state of the conversation. + +## Calls + +You can see all the calls under the **Calls** tab. + +### Search omnichannel call + +To search omnichannel calls: + +* Click the **Calls** tab. +* Enter the search query in the **Search** box. Search is done based on name or phone number. +* Click on a call row to see the details. The details of the call are revealed on the right, such as the duration, the wrap-up notes, and the last time you had a call with the contact. diff --git a/use-rocket.chat/omnichannel-agents-guides/omnichannel-contact-center/omnichannel-contact-manager-assignment.md b/use-rocket.chat/omnichannel-agents-guides/omnichannel-contact-center/omnichannel-contact-manager-assignment.md new file mode 100644 index 0000000000..e5b97e812d --- /dev/null +++ b/use-rocket.chat/omnichannel-agents-guides/omnichannel-contact-center/omnichannel-contact-manager-assignment.md @@ -0,0 +1,22 @@ +# Omnichannel Contact Manager Assignment + +​![](https://files.gitbook.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M418Ul0aSTwf2PYsyPW%2Fsync%2F1654b99a4e9df54521f42da4d3c1a7fbdb9f2238.jpg?generation=1633366358329646\&alt=media) + +​This feature lets you assign an omnichannel contact to a dedicated Omnichannel agent. If this contact initiates a conversation and the dedicated agent is **available**, the chat is routed directly to them. Otherwise, it will be routed to any other agent based on the routing algorithm selected. + +{% hint style="info" %} +To enable this feature, you need to enable **Assign new conversations to the contact manager** by changing the setting under **Administration** -> **Workspace** -> **Settings** -> **Omnichannel** -> **Routing** or contact your workspace administrator. +{% endhint %} + +You can set a contact manager for a contact using the contact center while creating or editing a contact. + +* Click the icon on the Omnichannel navigation tab +* Click **New contact** +* Enter **Contact Manager** +* Hit **Save**. + +### Using API Endpoint + +You can set a contact manager for a visitor/contact using + +{% embed url="https://developer.rocket.chat/reference/api/rest-api/endpoints/omnichannel/livechat-endpoints/livechat-contact/register-omnichannel-contact" %} diff --git a/use-rocket.chat/omnichannel-agents-guides/omnichannel-conversation.md b/use-rocket.chat/omnichannel-agents-guides/omnichannel-conversation.md new file mode 100644 index 0000000000..3e7c8fc1ae --- /dev/null +++ b/use-rocket.chat/omnichannel-agents-guides/omnichannel-conversation.md @@ -0,0 +1,187 @@ +--- +description: Learn how to handle omnichannel conversations. +--- + +# Omnichannel Conversation + +When you log in to your workspace as an agent and [set your status to **Available**](./#omnichannel-agent-availability)**,** to handle new conversations: + +* Any new Conversation initiated to the [department](../omnichannel/departments.md) you belong to appears under **Chats in Progress** +* Click on a conversation to reply to omnichannel contact. + +## Omnichannel Conversation Quick Actions + +Quick actions can be performed from the top of the chat screen in an Omnichannel conversation. They are shown as icons on the top right. + +## Moving back to the Queue + +If an omnichannel conversation needs to be handled by another agent within your department, + +* Click to +* Click **Move to the queue**. + +The conversation starts to appear in the Queued Chats for other agents to see. + +## Forwarding a conversation + +To forward a conversation: + +1. Click on the icon. +2. Enter the department or the Agent to whom the conversation should be forwarded. +3. Leave a comment if necessary +4. Hit **Forward**. +5. A notification appears briefly at the top to indicate if the operation succeeded or failed. + +## Conversation transcript + +Following an Omnichannel conversation, it may be necessary to forward the transcript to the contact you were serving as an agent. + +#### To send the transcript via email, + +* Click icon +* Click **Send via email** +* Enter their **Email** +* Enter the **Subject** +* Hit **Request**. + +#### To export the transcript as PDF, ![](<../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (27).jpg>) + +* Click icon to close the conversation first +* Enter comments if any +* Update [Tags](../omnichannel/tags-managers-guide.md) for this conversation +* Select **Export chat transcript as PDF** +* You receive a new direct message from **Rocket.Cat** with the conversation attached in PDF form. + +{% hint style="warning" %} +The option to export as PDF becomes available only after you **Close** the omnichannel conversation. It is not possible to export an incomplete conversation. +{% endhint %} + +To export the transcript of a previously closed conversation, + +* Click icon +* Click Export as PDF +* The transcript appears within the conversation as a message from **Rocket.Cat** + +{% hint style="info" %} +You need **Request PDF Transcript** permission assigned to your role. To assign permission, navigate to the home screen **Kebab menu > Workspace >** **Permissions**, assign **Request PDF Transcript** to your role, or contact your workspace administrator. +{% endhint %} + +## Place conversation On-Hold ![](<../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (27).jpg>) + +During supporting conversation as an agent, you can find yourself in a situation where Omnichannel contacts terminate the conversation abruptly. Still, the conversation will persist in your queue until it is **Closed**. This can potentially impact your service capacity as you may be unable to engage in new conversations due to the maximum number of simultaneous conversations allowed per agent. To address this concern, you can utilize the **Place Chat On-Hold** feature to pause the conversation temporarily. + +To place a conversation on hold, + +* Click +* Click **Place Chat On-Hold** + +If the Omnichannel contact engages again, the routing algorithm will try to find you first to assign this conversation. If you are busy serving other conversations at maximum capacity, the conversation will be assigned to the next available agent. + +Or click the conversation in the queue at any time and click **Resume** to engage with the same contact again. + +{% hint style="info" %} +You can place the conversation on hold manually only when you send the last message to the contact. +{% endhint %} + +## Closing a conversation + +To end a conversation: + +* Click icon. +* Enter comments if any +* Update [Tags](../omnichannel/tags-managers-guide.md) for this conversation +* Select **Export chat transcript as PDF** in case you need it exported. ![](<../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (27).jpg>) +* Select **Send chat transcript via email** if you want it sent to the guest's email. +* Click **Confirm,** and the conversation disappears from the **Chats in Progress** queue. +* The PDF conversation transcript is sent to you as a direct message if you request that the chat be exported. + +## Calling + +Communication with omnichannel contacts on Rocket.Chat can also be done using audio/video calls. Your workspace must have at least one call app installed to make these calls. + +{% hint style="info" %} +To enable Rocket.Chat video call feature, please get in touch with your administrator or follow the [instructions](../rocket.chat-conference-call/omnichannel-video-audio-call-configuration.md). +{% endhint %} + +{% hint style="success" %} +The following flow is sampled for web users, but both (Web and Mobile) user journeys are supported. +{% endhint %} + +To make a call: + +* Click icon from quick actions on the right side +* Click **Join Call** button in the conversation. +* Enter your name in the new browser window and hit **Join meeting** + +## Room information + +* Click the icon from quick actions on the right side to reveal the details of your current conversation. +* The details revealed include the date and time, average response time, queue time, the contact name, and your username. +* Click **Edit** to add some further information. E.g., the topic discussed or priority +* Hit **Save** + +## Canned Responses ![](<../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (27).jpg>) + +Canned responses allow you to call pre-saved message snippets with shortcuts (preceded with `!`) to communicate a quick note to your omnichannel contact in omnichannel as well as regular conversations inside your Rocket.Chat's workspace. + +**To send a canned response,** + +* Start your message with `!` and a shortcut or you can select the canned response from the drop-down list that will appear above your text field +* You can also use the same canned responses when talking to your peers outside Omnichannel + +To access all available canned responses for your department or all public canned responses on your workspace, + +* Click icon +* Hover your cursor over the canned response you want to use in your current conversation +* Hit **Use** + +### Creation of canned response from a room + +You can create a canned response during an omnichannel conversation on the go if you have appropriate permissions. + +{% hint style="info" %} +Check [canned-responses](../omnichannel/canned-responses/ "mention") or contact your workspace administrator. +{% endhint %} + +To create a canned response in a conversation, + +* Click icon +* Scroll down and click **Create** +* Enter **Shortcut**. E.g., `!welcome` +* Enter **Message**. E.g., `Welcome to Rocket.Chat LiveChat support! How can I help you?` +* Update **Tags** if required +* Hit Save. Your new canned response is saved and ready to be used. + +## Contact information + +To get the contact details of the currently selected omnichannel conversation's contact, + +* Click ![](../../.gitbook/assets/contact-info.png)icon + +While viewing contact information, click **Edit** to edit the contact details or click **Chat History** to see the chat history**.** + +## Searching chats + +To search for messages in a conversation, + +1. Click ![](../../.gitbook/assets/search.png) icon +2. Enter your search query. +3. The search result is displayed as you type. You can also use [Regular Expressions.](https://en.wikipedia.org/wiki/Regular\_expression) For example, to search for the word `error` followed by any three digits, use `error\d{3}` . + +## Searching for file attachments + +To search for files that have been attached to the conversation, + +1. Click icon +2. All files that have been attached are displayed. +3. Enter the search query. +4. Optionally, choose the file type you are interested in. By default, all the file types are displayed. + +## Viewing contact chat history + +To get the chat history of the contact: + +1. Click ![](../../.gitbook/assets/contact-history.png) icon +2. The contact is displayed alongside the last closing message which you sent. +3. Below the contact details, click the ![](../../.gitbook/assets/messages.png) icon, and the messages in the history are displayed. +4. Enter a search query in the search box. The results are displayed as you type. diff --git a/use-rocket.chat/omnichannel-agents-guides/omnichannel-queue.md b/use-rocket.chat/omnichannel-agents-guides/omnichannel-queue.md new file mode 100644 index 0000000000..70cbd2ca9c --- /dev/null +++ b/use-rocket.chat/omnichannel-agents-guides/omnichannel-queue.md @@ -0,0 +1,23 @@ +# Omnichannel Queue + +
+ +When you log in to your workspace as an agent and [set your status to **Available**](./#omnichannel-agent-availability)**,** to handle new conversations, icon appears on your screen. + +**As an administrator or omnichannel manager,** + +Click the ![](<../../.gitbook/assets/icon queue.png>) to see all the current Omnichannel chats in the queue. + +{% hint style="info" %} +As soon as you close them, they will disappear from the queue. +{% endhint %} + +Sorting this data can be done by: + +* **Served By**: Which Agent is serving the conversation +* **Status**: Status of the Agents to filter by +* **Department**: The department to show Queued conversations in + +**As an agent,** + +Click the ![](<../../.gitbook/assets/icon queue.png>) to see all the conversations you are currently serving appear diff --git a/use-rocket.chat/omnichannel/README.md b/use-rocket.chat/omnichannel/README.md new file mode 100644 index 0000000000..8b3e20bc40 --- /dev/null +++ b/use-rocket.chat/omnichannel/README.md @@ -0,0 +1,63 @@ +--- +description: >- + You can use Rocket.Chat to talk to your customers and website visitors, + regardless of which channel they choose to connect with you. +--- + +# Omnichannel + +Rocket.Chat **Omnichannel** allows you to integrate various customer communication channels into your workspace. You can incorporate the [Omnichannel Live Chat pop-up](livechat-widget-installation.md) widget into your website, serving as an entry point for communication or direct support to your customers or visitors. + +You can also use advanced [Omnichannel Apps](../../extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/), which provide a seamless communication experience between Rocket.Chat and external users from other communication platforms like [WhatsApp](../../extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/whatsapp/), [SMS](../../extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/sms.md), [Facebook](../../extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/), [Instagram Direct](../../extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/instagram-direct/), [Twitter](../../extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/twitter-app/twitter-app-installation.md), [Telegram](../../extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/), etc. + +Using Omnichannel helps **acquire** and **retain** customers in a multi-channel environment to save valuable potential sales while building relationships, providing an exceptional experience and the ability to interact through various communication channel + +Rocket.Chat Omnichannel has three primary users; [Admins](https://docs.rocket.chat/guides/omnichannel-guides/omnichannel), [Managers](https://docs.rocket.chat/guides/omnichannel-guides/omnichannel-manger-guides), and [Agents](https://docs.rocket.chat/guides/omnichannel/agents). + +## Enable Omnichannel + +To enable the **Omnichannel** feature on your workspace, + +* Go to **Administration > Workspace > Settings > Omnichannel** +* Toggle on **Enable Omnichannel.** +* Click **Save Changes.** + +{% hint style="info" %} +Kindly contact your workspace administrator to enable Omnichannel. [Learn how to configure Omnichannel on your Rocket.Chat workspace.](../workspace-administration/settings/omnichannel-admins-guide/) +{% endhint %} + +Now the administrator and Rocket.Chat Omnichannel Manager can access _**Omnichannel Settings**_ by navigating to **Administration > Omnichannel.** Only users with Administrator and Omnichannel Manager [roles ](../../setup-and-administer-rocket.chat/roles-in-rocket.chat/)assigned to them can access this menu. + +****[**Current Chats**](current-chats.md): View all existing Omnichannel conversations. + +****[**Analytics**](analytics.md): Analyze the productivity of your Live Chat Agents. + +****[**Real-time Monitoring**](real-time-monitoring.md): Monitor your incoming and ongoing Live Chat conversations in real time. + +****[**Managers**](managers.md): Organize Omnichannel managers. + +****[**Agents**](agents.md): Manage Omnichannel agents and their departments. + +****[**Department**](departments.md): Set up Omnichannel departments. + +****[**Custom Fields**](../workspace-administration/settings/account-settings/custom-fields.md): Add custom fields to receive additional information from visitors during registration before initiating a Live Chat conversation. + +****[**Livechat Triggers Manager's Guide**](livechat-triggers-managers-guide.md): Configure Omnichannel LiveChat trigger to open the LiveChat widget. + +****[**Livechat Widget Installation**](livechat-widget-installation.md): Embed the LiveChat widget into your web pages. + +****[**LiveChat Widget Appearance**](livechat-widget-appearance.md): Customize the LiveChat widget to suit your branding style. + +****[**Webhooks Manager's Guide**](webhooks-managers-guide.md)**:** Configure Omnichannel webhooks to integrate the Rocket.Chat Omnichannel to any third-party system, e.g., CRM, Zoho. + +****[**Business Hours Manager's Guide**](business-hours-managers-guide.md): Set up business hours to specify the working days and hours of your business. + +****[**Monitors Omnichannel Guide**](monitors-managers-guide.md): Set up users to monitor all Omnichannel activities. + +****[**Units Manager's Guide**](units-managers-guide.md)**:** Organize a unit of multiple [departments](departments.md) and assign a monitor to oversee them. + +****[**Canned Responses**](canned-responses/): Save message snippets with shortcuts to enable faster communication. + +****[**Tags Manager's Guide**](tags-managers-guide.md)**:** Create tags to sort Live Chat conversations quickly. + +****[**Priorities Manager's Guide**](priorities-managers-guide.md)**:** Change the order of Omnichannel queues based on Estimated Due Time. diff --git a/use-rocket.chat/omnichannel/agents.md b/use-rocket.chat/omnichannel/agents.md new file mode 100644 index 0000000000..5de12a2ee8 --- /dev/null +++ b/use-rocket.chat/omnichannel/agents.md @@ -0,0 +1,32 @@ +# Agents + +Omnichannel **Agents** are responsible for handling Omnichannel conversations. An agent can belong to a particular department and gets notified when a new conversation gets initiated if they are **available**. + +To access this menu, go to **Administration > Omnichannel > Agents**. Here, you can **view**, **add** or **remove** agents. + +## **Add Omnichannel Agent** + +To add a user as an Omnichannel agent, + +* Search or select the user from the **username field**. +* **Click Add**. + +This will automatically assign the **Omnichannel Agent** role to that user. + +## **View Omnichannel Agent** + +On the Omnichannel Agent menu, a list of all the existing agents is available with their details and can be paginated if you have many agents. An agent's status can be seen on the **Live Chat Status** tab showing whether they are available or not. + +Click an agent to edit their agent details. + +### Assign Omnichannel Agent to a Department + +You may need to assign a particular agent(s) to be in charge of conversations involving a particular department. To assign an agent to a department, + +* From the Omnichannel Agents page, click on the agent and click **Edit** on the sidebar +* A section is opened with the agent's details, scroll down to the **Departments** field and select the departments that the agent can respond to +* Click **Save**. + +## **Remove Omnichannel Agent** + +To remove a user from the agents' list, click on the **delete icon** on the right against the agent. This will also remove the **Omnichannel Agent** role from that user. diff --git a/use-rocket.chat/omnichannel/analytics.md b/use-rocket.chat/omnichannel/analytics.md new file mode 100644 index 0000000000..9c9399a715 --- /dev/null +++ b/use-rocket.chat/omnichannel/analytics.md @@ -0,0 +1,52 @@ +# Analytics + +This is an out-of-the-box analytics dashboard that allows you to track your [Live Chat Agents'](agents.md) performance (productivity) over any period of time. It gives managers the insight they need to make data-driven decisions that improve the customer experience. + +To access the Omnichannel Analytics settings, + +* Go to **Administration > Omnichannel > Analytics.** +* You can filter the analytics based on **Type**, **Department**, **Start, and End date.** + +## Omnichannel Agents Conversation Analytics + + To view conversation history analytics, + +* Select conversations from the **Type** dropdown menu. +* Select your desired department. +* Select your desired start date and end date. + +### Details of Conversation Matrices + +**Total Conversations:** It represents the total number of conversations during the selected period of time. + +**Open Conversations:** It represents the total number of open conversations for your selected department during the chosen period. + +**On Hold Conversations**: Shows the conversations on hold. + +**Total Messages:** It represents the total number of messages received in all the conversations during a selected period. + +**Busiest Day:** It shows the day during which you received the most chats for your selected time. + +**Conversation Per Day:** It shows the average count of conversations you received per day. + +**Busiest Time:** It shows the hour during which you received the most chats for your selected period of time. + +You can also see the **percentage of conversations**, the **average of chat duration**, and the **total messages handled** by each one of your agents from your selected department from the **Chart** field. + +## Omnichannel Agent Productivity Analytics + +To view Productivity history analytics, + +* Select **Productivity** from the **Type** dropdown menu. +* Select your desired department +* Select your desired start date and end date + +### Details of Productivity Matrices: + +**Average of Response Time:** This matrix represents the average of your agent’s team’s responses to all the conversations that are automatically assigned to them during a selected time. + +**Average of First Response Time:** This matrix represents the average of the team’s first response to all the chats they pick up. + +**Average of Reaction Time:** This matrix represents the average of the team’s reaction to the assigned chats. + +You can also see the **Average of First Response Time**, **Best First Response Time**, **Average of Response Time**, and **Average of Reaction Time** of each of your agents from your selected department. diff --git a/use-rocket.chat/omnichannel/business-hours-managers-guide.md b/use-rocket.chat/omnichannel/business-hours-managers-guide.md new file mode 100644 index 0000000000..02df0a3c12 --- /dev/null +++ b/use-rocket.chat/omnichannel/business-hours-managers-guide.md @@ -0,0 +1,34 @@ +# Business Hours + +{% hint style="info" %} +Multiple Business Hours is [Rocket.Chat Enterprise](../../setup-and-administer-rocket.chat/enterprise-edition-trial/) feature. +{% endhint %} + +Setting business hours lets you specify the working days and hours of your business. This reflects on the Live Chat widget availability making it easy for agents to be notified and hence receive queries. + +The enterprise workspaces can set up multiple business hours according to different time zones and their business needs, while community workspaces can only set up one set of business hours. + +To access **Business** **Hours** settings, + +* Navigate to **Administration > Omnichannel > Business** **Hours**. + +## Create New Omnichannel Business Hours + +To create a new business hour, + +* Click +**New.** +* Fill in the required details and click **Save.** + * **Enabled**: Enables the working hour. + * **Name**: Name of the working hour + * **Departments**: Select the departments the working hours apply to. + * **Timezone**: Select the timezone + * **Open Days of the Week**: Pick open days of the week. Each selected day lets you set an open and close time. + +## View and Edit Omnichannel Business Hours + +On the Business Hours page, a list of all the created business hours is seen. + +To edit a bussiness hour, + +* Click on that bussiness hour from the list. +* Update the bussiness hour and click **Save**. diff --git a/use-rocket.chat/omnichannel/canned-responses/README.md b/use-rocket.chat/omnichannel/canned-responses/README.md new file mode 100644 index 0000000000..f4166616fd --- /dev/null +++ b/use-rocket.chat/omnichannel/canned-responses/README.md @@ -0,0 +1,38 @@ +# Canned Responses + +
+ +Canned responses allow you to save message snippets that you can call with shortcuts (preceded with `!`) to communicate quickly. They can be configured to work both in Omnichannel conversations or general messaging within your Rocket.Chat workspace. + +## Canned Responses Rocket.Chat Admin's Guide + +As a Rocket.Chat workspace admin, you can enable and disable Canned Responses on your server. + +### Enable Rocket.Chat Canned Responses + +To enable canned responses on your workspace, + +* Go to **Administration** > **Workspace** > **Settings** > **Omnichannel** > **Canned Responses** +* Activate the toggle to enable and **Save Changes** + +{% hint style="info" %} +* When Canned Responses is enabled, it'll be available to users with the corresponding `*-canned-responses` role. +* To enable **Canned Responses** for the first time, **Omnichannel** needs to be enabled first. +* **Canned Responses** can be used only in the normal workspace when Omnichannel is disabled. +{% endhint %} + +## Canned Responses Permissions + +Under the **Administration** > **Workspace** > **Permissions** section, you can define which user roles should be able to view, create and delete the canned responses. + +{% hint style="info" %} +To save a new canned response for your workspace, visit [Canned Responses Omnichannel Managers Guide](canned-responses-omnichannel-managers-guide.md). +{% endhint %} + +See the guides below to learn more: + +* [Canned Responses Omnichannel Manager's Guide](canned-responses-omnichannel-managers-guide.md) + +{% hint style="info" %} +You can find the canned response agent guide[ here.](../../omnichannel-agents-guides/omnichannel-conversation.md#canned-responses) +{% endhint %} diff --git a/use-rocket.chat/omnichannel/canned-responses/canned-responses-omnichannel-managers-guide.md b/use-rocket.chat/omnichannel/canned-responses/canned-responses-omnichannel-managers-guide.md new file mode 100644 index 0000000000..e656fb1e57 --- /dev/null +++ b/use-rocket.chat/omnichannel/canned-responses/canned-responses-omnichannel-managers-guide.md @@ -0,0 +1,45 @@ +# Canned Responses Omnichannel Manager's Guide + +![](<../../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11).jpg>) + +{% hint style="info" %} +Canned responses allow you to save message snippets that you can call with shortcuts (preceded with `!`) to communicate a quick note to your visitors in Omnichannel and for messaging in regular conversations inside your Rocket.Chat's workspace. +{% endhint %} + +If you are using canned responses for the first time, please check the [Rocket.Chat Admin's guide for canned responses](./#canned-responses-rocket.chat-admins-guide) or contact your workspace Administrator to enable canned responses on your workspace. + +## Create Canned Responses + +To create Canned Responses, follow these steps + +* Go to **Administration > Omnichannel > Canned Responses**. A list of Canned Responses can be seen if they exist +* Click on **+ New** +* Update the required information and Hit **Save.** A new Canned Response is ready to be used by typing `!` in the message box. + * **Shortcut**: The shortcut of your new canned response. + * **Message**: Enter your message using any placeholders available. You can also preview the message anytime by switching between the `Editor` and `Preview` tab. + * **Tags**: Set the tags for your canned response. This helps agents find canned responses specific to a particular topic + * **Sharing**: Lets you set the usage level of your Canned Response + * **Public**: Anyone across your workspace can access your canned response. + * **Department**: Anyone in the selected department can access your canned response. + * **Private**: Only you and Omnichannel managers can access your canned response. + +## Manager create canned response from within chatroom + +You can create a canned response on the go from within a conversation. + +To create a canned response in a conversation, + +* Click on the Canned Responses icon by the top right. +* Click on **Create** and fill in the required details. + +## Filtering Canned Responses + +You can filter canned responses from the main page by: + +1. **Search**: Searching the Canned Message shortcut or message text. +2. **Sharing**: You can filter by sharing. +3. **Created By**: You can filter by name of the user who created the canned responses. + +{% hint style="info" %} +You can find the canned response agent guide[ here.](../../omnichannel-agents-guides/omnichannel-conversation.md#canned-responses) +{% endhint %} diff --git a/use-rocket.chat/omnichannel/current-chats.md b/use-rocket.chat/omnichannel/current-chats.md new file mode 100644 index 0000000000..5f37a2c367 --- /dev/null +++ b/use-rocket.chat/omnichannel/current-chats.md @@ -0,0 +1,29 @@ +# Current Chats + +Omnichannel Current Chats contains all the existing conversations that have not been deleted. + +To see the current chats, + +* Navigate to **Administration > Omnichannel > Current Chats** + +{% hint style="info" %} +You are required to have **View Omnichannel Contact Center** [permission ](../workspace-administration/permissions.md)to access this section. Contact your workspace administrator to grant/revoke this permission. +{% endhint %} + +## Omnichannel Current Chat Filters + +You can filter through the current chats with any of the following options: + +* **Sort by Guest name**: To sort the conversations by Guest/Visitor's name, enter the name in the field provided, and your conversations are sorted by visitor name. +* **Sort by Agent**: To sort the conversations served by an [agent](agents.md), select the agent from the **Served By** dropdown field +* **Sort by Department**: To sort the conversations by [**department**](departments.md), enter the department name in the **Department field**, and your conversations are sorted by department. +* **Sort by Status**: To sort the conversations by Open/Closed Status, choose the desired status from the **Status dropdown field**, and your conversations are sorted. A conversation can be **Open, On Hold,** or **Closed** +* **Sort by From and To date**: To sort the conversations per **From** and **To** date, enter the **From** and **To** Date in the field, and your conversations are sorted + +## Clear filters + +To clear the filters, click on the **three dots icon** and select **Clear filters.** + +## Delete all closed chats + +To delete closed chats, click on the **three dots icon** and select **Delete all closed chats.** This will delete all the chats that are marked closed by the agents. diff --git a/use-rocket.chat/omnichannel/custom-fields.md b/use-rocket.chat/omnichannel/custom-fields.md new file mode 100644 index 0000000000..e05f443000 --- /dev/null +++ b/use-rocket.chat/omnichannel/custom-fields.md @@ -0,0 +1,52 @@ +# Custom Fields + +Custom fields can be added to receive additional information from visitors during registration before initiating a Live Chat conversation or used to set other properties of a visitor/room. They can be set upon a **Visitor** or **Room.** + +To access this menu, go to **Administration > Omnichannel > Custom Fields**. Here, you can **View**, **Create New**, **Edit,** or **Delete** an existing field. + +{% hint style="info" %} +The Live Chat registration form has the **Name**, **Email**, and **I need Help With…**(Department) fields by default. +{% endhint %} + +## Create Omnichannel Custom Field + +To create a new custom field: + +* Click on **+New** from the custom field panel +* Fill in the required information and click **Save.** + +### Omnichannel Custom Field Information + +* **Field**: Enter the desired field that you want to add to your Live Chat registration form. E.g., last name. +* **Label:** The label of the field. +* **Scope:** A dropdown for you to set the scope of the custom field + * **Visitor**: If the visitor option is selected, the field will be available as an Omnichannel visitor's property + * **Room**: When selected, the field will be available against an Omnichannel room. +* **Visible:** Whether or not to make it visible +* **Searchable**: This lets you set if searching in the [Omnichannel Contact Center](../omnichannel-agents-guides/omnichannel-contact-center/) can be done with the custom field. + +### Enterprise Edition Omnichannel Custom Fields![](../../.gitbook/assets/2022-01-23\_20-47-25.png) + +{% hint style="warning" %} +The rest of the settings (mentioned below) are **Enterprise** only. +{% endhint %} + +* **Validation**: This lets you set validation Validation. +* **Required**: When enabled, the field will be set as required. +* **Type**: Choose the input type (`Input/Select`) of the field +* **Default value**: Set the default value of the field +* **Options**: Comma-separated list used to select a pre-configured value. Spaces between elements are not accepted. +* **Public**: Set it Public this will be displayed in external applications, such as Live Chat + +When a custom field is created and made public, any value supplied in that field is available on the [Live Chat agent's](agents.md) side. + +## Edit Omnichannel Custom Field + +To edit an Omnichannel Custom Field: + +* Click on the field you want yo update. +* A section is opened with all the current details of that field which can be modified. Update the field and click **Save**. + +## Delete Omnichannel Custom Field + +To delete an Omnichannel Custom Field, click on the **delete icon** on the right of the field from the Custom Field list. diff --git a/use-rocket.chat/omnichannel/departments.md b/use-rocket.chat/omnichannel/departments.md new file mode 100644 index 0000000000..2648707397 --- /dev/null +++ b/use-rocket.chat/omnichannel/departments.md @@ -0,0 +1,50 @@ +# Departments + +An Omnichannel Department is a collection of rooms that can be configured based on a category as needed. These departments can be related directly to the various departments in your company. + +When set, [Live Chat](livechat-widget-installation.md) conversations can be directed to a specific department. + +{% hint style="info" %} +A typical use case is when you have Live Chat conversations being initiated from different places or pages of your website, and you need them to be handled by different departments or groups of knowledge experts. You can [assign an agent to a department](agents.md#assign-omnichannel-agent-to-a-department). +{% endhint %} + +To access this menu, go to **Administration > Omnichannel > Departments**. Here, you can **View**, **Create New**, **Edit,** or **Delete** a department. + +## **Create Omnichannel Department** + +To create a new Omnichannel department: + +* Click +**New** on the top right of the screen +* Fill in the required information and click **Save.** + +### Omnichannel Department Information + +1. **Enabled**: Enables your new department. +2. **Name:** Name of the new department. +3. **Description**. An optional field that lets you set the department description +4. **Show on the registration page:** Allow your visitor to have the option to choose the department they want to talk to. The option will appear to your customer in the Live Chat widget. +5. **Email**: Forward your Omnichannel conversations to the email address of your choice during the hours you are offline. +6. **Show on offline page**: A radio button if you want your department to show offline during off-business hours. If you enable it, it will appear in the widget. +7. **Send this department's Live Chat offline messages to a channel:** Mention the name of the channel you want to direct the offline messages to. +8. **Request tag(s) before closing the conversation:** Request your agent to set tags for the conversation for later searching purposes if you want. +9. **Conversation closing tags:** You, as an administrator, can add some conversation tags for this department. +10. **Agents:** Assign the agents to this department. + +{% hint style="info" %} +You can have the following behavior depending on how many departments you have created: + +* No departments: All Live Chat agents will receive incoming chats using a round-robin rule. +* One department: All incoming chats will be offered to agents **only** in that department using a round-robin rule. +* More than one department: The visitor must choose what department he wants to talk to at registration. +{% endhint %} + +## Edit Omnichannel Department + +To edit an **Omnichannel** department, + +* Click on the department. +* A panel is opened with all the current details of that department that can be modified. Update the department and click **Save**. + +## Delete Omnichannel Department + +To delete an **Omnichannel** department, click on the **delete icon** by the right of the department name from the list. diff --git a/use-rocket.chat/omnichannel/facebook-messenger-managers-guide.md b/use-rocket.chat/omnichannel/facebook-messenger-managers-guide.md new file mode 100644 index 0000000000..271259704a --- /dev/null +++ b/use-rocket.chat/omnichannel/facebook-messenger-managers-guide.md @@ -0,0 +1,22 @@ +# Facebook Messenger Manager's Guide + +
+ +The Facebook Messager page allows you manage conversations from Facebook Messenger on the pages you have connected. + +{% hint style="info" %} +This integration has known vulnerabilities and has been deprecated for Rocket.Chat 6.0. As a Rocket.Chat [Enterprise user](../../setup-and-administer-rocket.chat/enterprise-edition-trial/) you can make use of the[ Facebook App](../../extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/). +{% endhint %} + +To access **Facebook Messenger m**anager's guide, + +* Navigate to **Administration > Omnichannel > Facebook Messenger**. +* Select Facebook Messenger and Enable it. You'll be prompted to log in. Be sure to use the credentials that are tied to the page you wish to receive messages from. You'll have to do a standard Facebook OAuth login and grant your Rocket.Chat instance access to your pages. +* Once you're returned from Facebook, you'll see a list of the pages associated with that account. If you see none, ensure the account has pages, then click RELOAD PAGES. +* Enable the pages you'd like to get messages from. + +Now, the **Live Chat** agents recieves any incoming chats from that page. Responses go back to Facebook as if you were using Messenger itself. + +{% hint style="info" %} +To learn more about Rocket,Chat and Facebook, see [Facebook App](../../extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/facebook-app/). +{% endhint %} diff --git a/use-rocket.chat/omnichannel/livechat-triggers-managers-guide.md b/use-rocket.chat/omnichannel/livechat-triggers-managers-guide.md new file mode 100644 index 0000000000..0b47e0e29a --- /dev/null +++ b/use-rocket.chat/omnichannel/livechat-triggers-managers-guide.md @@ -0,0 +1,32 @@ +# Livechat Triggers + +Omnichannel Live Chat Triggers are a set of events that can be configured that when they happen, causes the Live Chat widget to perform an action or opens up automatically. + +To access this menu, go to **Administration > Omnichannel > Live Chat Triggers**. Here, you can **View**, **Create New**, **Edit** or **Delete** existing Live Chat Triggers. + +## Create New Omnichannel Live Chat Trigger + +To create a new Omnichannel Live Chat Trigger: + +* Click +**New** on the top right of the screen +* A page for the department details is seen. Fill in these details and click **Save** + +### Omnichannel LiveChat Trigger Information + +* **Enable**: Enables the Live Chat Trigger +* **Run only once for each visitor**: Enable to let the trigger only run once for each visitor. If false, you get a recurring pop-open. (e.g., If your user goes to a different website and comes back to the same website, it pops open) +* **Name**: Name your new trigger. +* **Description**: Allows you set the description of the trigger. +* **Condition**: Allows you set the condition for which the action will be triggered. Depending on what condition to track, you can set additional properties for validation. +* **Action**: Define the action you want the Live Chat widget to perform. For now, there is only one option of sending a message to the visitor. You can also select if you want to impersonate the next available agent in the queue or use a bot/custom agent. + +## Edit Omnichannel Live Chat Trigger + +To edit an O**mnichannel Live Chat Trigger**: + +* Click on the Trigger from the list of Triggers +* A section is opened with all the current details of that Trigger, which can be modified and saved. + +## Delete Omnichannel Live Chat Trigger + +To delete an **Omnichannel Live Chat Trigger**, click on the **delete icon** by the right of the Trigger from the Triggers. diff --git a/use-rocket.chat/omnichannel/livechat-widget-appearance.md b/use-rocket.chat/omnichannel/livechat-widget-appearance.md new file mode 100644 index 0000000000..ce617aa272 --- /dev/null +++ b/use-rocket.chat/omnichannel/livechat-widget-appearance.md @@ -0,0 +1,37 @@ +# Livechat Widget Appearance + +The Live Chat Widget's appearance can be customized to fit your branding style. Whether agents are online or not, you can customize the widget appearance for offline and online hours. The fields on the registration form and the messages displayed after a conversation are both customizable. + +To access Live Chat Appearance, + +* Go to **Administration > Omnichannel > Live Chat Appearance**. + +## Live Chat Widget Online Appearance + +* **Title**: Set the title of your widget. +* **Title bar color**: Set the color of the title bar of your widget. +* **Message Character Limit**: Enable to set the maximum amount of characters per message. +* **Show agent information**: Enable to show agent’s name. +* **Show agent email**: Enable to show agent’s email. + +## Live Chat Widget Offline Appearance + +* **Display Offline Form**: Turn on to display offline form. +* **Offline Form Unavailable Message**: The message visitors will see when Live Chat form is unavailable. +* **Offline message**: Set Offline Message. +* **Title offline**: The Live Chat Widget title +* **Title bar color offline**: Set title bar color for when offline. +* **Email Address to Send Offline Messages**: Set the email address to which offline messages will be sent to. +* **Offline Success Message**: Set up the message you want to send to the visitor after successfully sending an offfline message. + +## Live Chat Widget Registration Form + +* **Enabled**: Enables the registration form. +* **Show name field**: Enable to show Name field. +* **Show email field**: Enable to show the Email field. +* **Registration Form Message**: Show any message on the registration form if you want. It appears right under the widget title. + +## Conversation Finished + +* **Conversation Finished Message**: Set up the message tiltle you want to send to the visitor when the conversation is finished. +* **Conversation Finished Text**: Set up the message text you want to display to the visitor when the conversation is finished. diff --git a/use-rocket.chat/omnichannel/livechat-widget-installation.md b/use-rocket.chat/omnichannel/livechat-widget-installation.md new file mode 100644 index 0000000000..9cfe4e4cbc --- /dev/null +++ b/use-rocket.chat/omnichannel/livechat-widget-installation.md @@ -0,0 +1,37 @@ +# Livechat Widget Installation + +The Live Chat Widget is a chat interface that can be embedded into a webpage. Visitors on your website can click the widget to initiate a conversation. It can serve as an excellent tool for use cases like the following: + +* Offering Live and real-time support to customers/users. +* Embedded to get information from people interacting with your website. + +## Livechat Widget Installation + +To install the Live Chat widget, + +* Go to **Administration** > **Omnichannel** > **Live Chat Installation**. +* Copy the code snippet and paste it above the last `` tag on your website. +* The **Live Chat** widget appears at the bottom right of your webpage. + +## Deploying Live Chat Widget to a different domain + +To run the Live Chat Widget on a domain different from your Rocket.Chat server, + +* After installing the widget, navigate to **Administration** > **Workspace** > **Settings** > **General.** +* Disable **Restrict access inside any iframe** on your Rocket.Chat server. + +## Troubleshoot Livechat Widget Installation + +If you have issues displaying the Live Chat Widget, check your browser developer console to examine the details of any errors you might be experiencing. + +### Failed to read 'localStorage' properly from Window + +![](<../../.gitbook/assets/Clipboard - May 12, 2022 4\_21 PM.png>) + +An error like this is related to your browser settings for third-party cookies. Try with another browser or review your browser settings to confirm it's not blocking third-party cookies. + +### Trying to access localhost:3000 + +![](<../../.gitbook/assets/Clipboard -2.png>) + +Review the **Site URL** setting under **Administration** > **Workspace** > **Settings** > **General** and the server name setting on your reverse proxy (if you have one) to guarantee they are all aligned and correspond to the same URL used in your Live Chat Widget installed script. diff --git a/use-rocket.chat/omnichannel/managers.md b/use-rocket.chat/omnichannel/managers.md new file mode 100644 index 0000000000..dbba8ca020 --- /dev/null +++ b/use-rocket.chat/omnichannel/managers.md @@ -0,0 +1,22 @@ +# Managers + +Omnichannel managers are responsible for managing Omnichannel conversations, they can [monitor ](real-time-monitoring.md)and see [analytics](analytics.md) of Omnichannel activities. + +To access this menu, go to **Administration > Omnichannel > Managers**. Here, you can **view**, **add** or **remove** managers. + +## View Omnichannel Managers + +On the **Omnichannel managers** screen, a list of all the existing managers is seen with their details and can be paginated if you have many managers. + +## Add a new Omnichannel manager + +To add a user as an Omnichannel manager, + +* Search or select the user from the **username field**. +* **Click Add**. + +This will automatically assign the **Live Chat Manager** role to that user, who can now [monitor ](real-time-monitoring.md)and see [analytics](analytics.md) of **Omnichannel** activities. + +## Remove the Omnichannel manager + +To remove or revoke Omnichannel manager access from a user, click the **delete icon** by the right of the user on the **Omnichannel Managers** list. This will remove the **Live Chat Manager** role from that user, and they won't be able to [monitor](real-time-monitoring.md), [view analytics](analytics.md) or see the Omnichannel menu. diff --git a/use-rocket.chat/omnichannel/monitors-managers-guide.md b/use-rocket.chat/omnichannel/monitors-managers-guide.md new file mode 100644 index 0000000000..70f1c19caa --- /dev/null +++ b/use-rocket.chat/omnichannel/monitors-managers-guide.md @@ -0,0 +1,29 @@ +# Monitors + +![](<../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (22).jpg>) + +Monitors in Omnichannel are users that have the ability to monitor Omnichannel activities and have access to [Current Chats](current-chats.md), [Analytics](analytics.md), [Real-time Monitoring](real-time-monitoring.md), [Agents](agents.md), [Departments](departments.md), [Business Hours](business-hours-managers-guide.md) and [Canned Responses](canned-responses/). + +{% hint style="info" %} +A monitor is only able to view analytics or activities of a department if they are assigned to a [unit](units-managers-guide.md). +{% endhint %} + +To access Omnichannel Monitors, + +* Go to **Administration > Omnichannel > Monitors**. + +## List Omnichannel Monitors + +On the Monitors page, a list of all the users with `livechat-monitor` role is displayed. From here, you can [add new monitors](monitors-managers-guide.md#2.-add-new-omnichannel-monitor) or [delete existing monitors](monitors-managers-guide.md#3.-delete-omnichannel-monitor). + +## Add New Omnichannel Monitor + +To add a new monitor(s), + +* Enter the person's username in the username field and hit the **Add** button. This will automatically assign that user the `livechat-monitor` role. + +## Delete Omnichannel Monitor + +To delete an Omnichannel Monitor, + +* Click the **Delete icon** on the right across the user. This will remove the `livechat-monitor` role from that user. diff --git a/use-rocket.chat/omnichannel/priorities-managers-guide.md b/use-rocket.chat/omnichannel/priorities-managers-guide.md new file mode 100644 index 0000000000..5a2d0a98c1 --- /dev/null +++ b/use-rocket.chat/omnichannel/priorities-managers-guide.md @@ -0,0 +1,41 @@ +# Priorities + +![](<../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (26).jpg>) + +Omnichannel Priorities enables you to change the order of Omnichannel queues based on `Estimated Due Time`. + +Conversations associated with priorities will be sorted in the order of estimated due time from a shorter to a longer time. This means chats with a shorter due time(high priority) will appear in the queue before others with either longer or no due time set(low priority). + +{% hint style="info" %} +`Estimated Due Time` is an estimated time defined for a customer to be served. If the estimated due time is, for instance, 10 minutes, the customer is supposed to wait in queue for up to 10 minutes until an agent takes the chat. +{% endhint %} + +To access **Priorities** settings, + +* Go to **Administration > Omnichannel > Priorities**. + +## List Omnichannel Priorities + +On the Priorities main menu, a list of all priorities is seen if any exists. Clicking on any opens a panel to edit it. + +Each Priority has its own(unique) `Estimated due time`(time in minutes), so once a priority is associated with an `Inquiry/room`, this value is used to set the [queue ](../omnichannel-agents-guides/omnichannel-queue.md)inquiry order. Priority is not mandatory for each conversation. Thus, the Omnichannel queues will have conversations with and without priorities. + +## Create Omnichannel Priorities + +To create an Omnichannel Priority: + +* Click on **+ New** +* Update the required information and click **Save** + * **Name**: What name to call the Priority + * **Description**: The description of the Priority + * **Estimated due time**: Lets you set a time in minutes for the Priority + +{% hint style="info" %} +Priorities can be added to a conversation by editing the Omnichannel room info. +{% endhint %} + +## Delete Omnichannel Priorities + +To delete an existing **Priority**, + +* Click on the **Delete icon** across the Priority from the main settings screen. diff --git a/use-rocket.chat/omnichannel/real-time-monitoring.md b/use-rocket.chat/omnichannel/real-time-monitoring.md new file mode 100644 index 0000000000..461711e87f --- /dev/null +++ b/use-rocket.chat/omnichannel/real-time-monitoring.md @@ -0,0 +1,35 @@ +# Real-time Monitoring + +Real-time monitoring allows you to monitor your incoming and ongoing Live Chat conversations in real-time. + +To access the Omnichannel Real-time monitoring dashboard, Go to **Administration > Omnichannel > Real-time Monitoring**. + +These monitoring metrics can be filtered by the **department** and set to be updated in a specified amount of time by changing the **Update every** field. + +When a [Live Chat](livechat-widget-installation.md) conversation is initiated, it is reflected immediately on the monitoring dashboard in real-time. + +## Monitoring Conversations Metrics + +This section shows matrices about all Live Chat conversations. + +* **Total Conversations:** It represents the total number of conversations at the current time. +* **Open Conversations**: This shows the number of open conversations for your selected department at the current moment. +* **On Hold Conversations**: This shows the number of conversations on hold at the moment. +* **Total Messages:** It represents the total number of messages received in all the current-day conversations. +* **Total** **Visitors:** It represents the total number of Live Chat users for your selected department for the current day. + +## Monitoring Chat Metrics + +* **Total Abandoned Chats:** It represents the total number of conversations abandoned by the visitor for your selected department's current day. +* **Average of Abandoned Chats:** Shows in percentage the number of abandoned chats. +* **Average of Chat Duration Time:** It represents the average duration of all the conversations of your selected department for the current day. + +## Monitoring Live Chat Metrics by Time + +* **Busiest Time:** It represents the hour(s) during the current day when you received the largest number of incoming chats. +* **Average of Service Available Time:** It represents how many hours the Omnichannel service was available during the day. It means that at least one agent is available to serve Omnichannel conversations. +* **Average of Service Time:** It represents the average time the agents spend serving chats in the current day. +* **Average of Response Time:** If the selected chat pickup method is auto-selection, the chat is automatically assigned to an agent. This metric represents the average of agents' responses to all the conversations automatically assigned to them. +* **Average of First Response Time:** This matrix represents the average of the agent's first response to all the chats he picks up. +* **Average of Reaction Time:** This metric represents the average of the agent's reaction to the assigned chats. +* **Average of Waiting:** It represents the average time your visitor spent in the waiting queue. diff --git a/use-rocket.chat/omnichannel/tags-managers-guide.md b/use-rocket.chat/omnichannel/tags-managers-guide.md new file mode 100644 index 0000000000..8e8c8bf130 --- /dev/null +++ b/use-rocket.chat/omnichannel/tags-managers-guide.md @@ -0,0 +1,35 @@ +# Tags + +![](<../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (2).jpg>) + +As a Live Chat Manager, you can set Tags to be assigned to the Live Chat conversations by the agents. Tags can be used to sort Live Chat conversations easily. **Omnichannel Tags** are used for marking and classifying Omnichannel conversations. + +{% hint style="info" %} +A practical use case is using tags to mark the progress made on a Live Chat query. You can have tags like `new`, `blocked`, `in progress,` `completed` etc. +{% endhint %} + +To access **Tags** settings, + +* Go to **Administration > Omnichannel > Tags**. + +## List Omnichannel Tags + +On the Tags menu, you see a list of tags if they exist. Clicking on one opens up a page where it can be edited. + +## Create Omnichannel Tags + +To create a new Tag: + +* Click on **+ New** +* Update the required information and click **Save** + * **Name**: Enter the name you wish for the Tag + * **Description**: A description of what the Tag is + * **Departments**: This lets you select a list of departments in which the Tag is available. Leave it empty to set it available to all departments. + +When created, [Omnichannel Agents](agents.md) can use the Tag on conversations. + +## Delete Omnichannel Tags + +To delete an existing **Tag**, + +* Click on the **Delete icon** across the **Tag** from the main settings screen. diff --git a/use-rocket.chat/omnichannel/units-managers-guide.md b/use-rocket.chat/omnichannel/units-managers-guide.md new file mode 100644 index 0000000000..e92f1f4e9d --- /dev/null +++ b/use-rocket.chat/omnichannel/units-managers-guide.md @@ -0,0 +1,28 @@ +# Units + +![](<../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (22).jpg>) + +Using Omnichannel units, you can group a set of departments for management purposes. As an [Omnichannel manager](managers.md), you can make a unit of multiple [departments](departments.md) and assign a monitor to oversee them. + +To access **Units** settings, + +* Go to **Administration > Omnichannel > Units**. + +## List Omnichannel Units + +On the Units page, you see a list of all the existing units and a button to initiate the creation of a new unit. Clicking on an existing unit opens up a page where you can edit it. + +## Create Omnichannel Unit + +To create a new unit, + +* Click on **+New** +* Update the required information and click **Save**. + * **Name:** The name of the new unit. + * **Visibility**: Set its visibility. Private/Public. A private unit will be available only for you. + * **Departments**: Add the desired departments to your unit. + * **Monitors**: Lets you assign monitors to the unit. + +## Delete Omnichannel Unit + +To delete a unit, click the **Delete icon** by the right of the unit from the Units screen. diff --git a/use-rocket.chat/omnichannel/webhooks-managers-guide.md b/use-rocket.chat/omnichannel/webhooks-managers-guide.md new file mode 100644 index 0000000000..53f7093760 --- /dev/null +++ b/use-rocket.chat/omnichannel/webhooks-managers-guide.md @@ -0,0 +1,181 @@ +# Webhooks + +Omnichannel webhooks allow you to integrate the Rocket.Chat Omnichannel to any third-party system, e.g., CRM, Zoho, etc. + +To access **Webhooks** settings, + +* Navigate to **Administration** > **Workspace** > **Omnichannel** > **CRM Integration**. + +## Create Omnichannel Webhook + +To create a new **Omnichannel** webhook, you need to update the following details: + +* **Webhook URL**: The Webhook URL from the system you want to connect(destination). +* **Secret Token**: Enter the secret token that can be used to verify the webhook. + +{% hint style="info" %} +The field **Secret Token** is sent to a header `X-RocketChat-Livechat-Token` so you can validate if the request became from Livechat. + +If your endpoint returns a response status other than `200`, Rocket.Chat will retry ten times, waiting ten seconds between retries. +{% endhint %} + +* **Send Request on**: Select the action(s) you want this integration to have. +* **Send Request on Chat Start**: Sends a post request to the webhook endpoint when an Omnichannel chat starts. +* **Send Request on Chat Close**: Sends a request when a chat gets closed. +* **Send Request on Chat Taken**: Sends a request when an Omnichannel agent **Takes** a chat. +* **Send request on Chat Queued**: A request gets sent when a chat gets queued. +* **Send Request on Forwarding**: Triggers request to be sent when a chat gets forwarded to another Omnichannel department or Agent. +* **Send Request on Offline Messages**: Sends a request when a visitor leaves an offline message. +* **Send Request on Visitor Messages**: A request is sent when an Omnichannel visitor sends a message. +* **Send Request on Agent Messages**: Sends a request when an Omnichannel Agent sends a message or reply. +* **Send Visitor Navigation History on Request**: Sends a request about visitor's navigation history. _This feature depends on "Send Visitor Navigation History as a Message" to be enabled._ +* **Send request on lead capture**: Sends a request when a lead is captured. +* **Lead capture email regex**: Specify the regex for lead captured email. +* **Lead capture phone regex**: Set the regex for lead-captured phone numbers. + +{% hint style="info" %} +If you enable Send Request on Chat Start, Rocket.Chat sends a webhook to the external system telling it that a new conversation has started. +{% endhint %} + +### Sample JSON Data + +Here is an example of JSON data sent in the request. + +{% tabs %} +{% tab title="Livechat session" %} +```json +{ + "_id": "Tc5SyBZHovD4k8BXv", + "label": "James", + "createdAt": "2023-02-02T10:16:07.230Z", + "lastMessageAt": "2023-02-02T10:22:14.087Z", + "tags": [ + "self" + ], + "visitor": { + "_id": "63db8d4990fe6eda42ad429a", + "token": "e36e352c742eee48860d576fcefb372afc44ebc95750fa1e3b646195f702341a", + "name": "James", + "username": "guest-3", + "email": [ + { + "address": "fongang.rodrique+local-on@rocket.chat" + } + ], + "phone": null + }, + "agent": { + "_id": "aXjjcPwq4Pcp7xftH", + "username": "user1", + "name": "User One", + "email": "uaser1@mail.com" + }, + "type": "LivechatSession", + "messages": [ + { + "u": { + "_id": "63db8d4990fe6eda42ad429a", + "username": "guest-3", + "name": "James" + }, + "_id": "2untSdndqBP7opGWw", + "username": "guest-3", + "msg": "Hi", + "ts": "2023-02-02T10:16:09.615Z" + }, + { + "u": { + "_id": "aXjjcPwq4Pcp7xftH", + "username": "user1", + "name": "User One" + }, + "_id": "7xjkw8ZFitMSNGmeJ", + "username": "user1", + "msg": "How can I help you today?", + "ts": "2023-02-02T10:21:05.391Z", + "agentId": "aXjjcPwq4Pcp7xftH" + }, + { + "u": { + "_id": "63db8d4990fe6eda42ad429a", + "username": "guest-3", + "name": "James" + }, + "_id": "y7p77YFfkHJeg5gD9", + "username": "guest-3", + "msg": "don't worry,thank you", + "ts": "2023-02-02T10:22:14.087Z" + }, + { + "u": { + "_id": "aXjjcPwq4Pcp7xftH", + "username": "user1", + "name": "User One" + }, + "_id": "ciAggDuN8ioqDrTby", + "username": "user1", + "msg": "Thank you for visiting", + "ts": "2023-02-02T10:23:11.437Z", + "agentId": "aXjjcPwq4Pcp7xftH", + "closingMessage": true + } + ], + "servedBy": { + "_id": "aXjjcPwq4Pcp7xftH", + "username": "user1", + "ts": "2023-02-02T10:16:07.375Z" + }, + "closedAt": "2023-02-02T10:23:11.344Z", + "closedBy": { + "_id": "aXjjcPwq4Pcp7xftH", + "username": "user1" + }, + "closer": "user" +} +``` +{% endtab %} + +{% tab title="Message sent" %} +```json +{ + "_id": "Tc5SyBZHovD4k8BXv", + "label": "James", + "createdAt": "2023-02-02T10:16:07.230Z", + "lastMessageAt": "2023-02-02T10:16:09.615Z", + "visitor": { + "_id": "63db8d4990fe6eda42ad429a", + "token": "e36e352c742eee48860d576fcefb372afc44ebc95750fa1e3b646195f702341a", + "name": "James", + "username": "guest-3", + "email": [ + { + "address": "fongang.rodrique+local-on@rocket.chat" + } + ], + "phone": null + }, + "agent": { + "_id": "aXjjcPwq4Pcp7xftH", + "username": "user1", + "name": "User One", + "email": "uaser1@mail.com" + }, + "type": "Message", + "messages": [ + { + "u": { + "_id": "aXjjcPwq4Pcp7xftH", + "username": "user1", + "name": "User One" + }, + "_id": "7xjkw8ZFitMSNGmeJ", + "username": "user1", + "msg": "How can I help you today?", + "ts": "2023-02-02T10:21:05.391Z", + "agentId": "aXjjcPwq4Pcp7xftH" + } + ] +} +``` +{% endtab %} +{% endtabs %} diff --git a/use-rocket.chat/rocket.chat-cloud/README.md b/use-rocket.chat/rocket.chat-cloud/README.md new file mode 100644 index 0000000000..a1edc943b0 --- /dev/null +++ b/use-rocket.chat/rocket.chat-cloud/README.md @@ -0,0 +1,15 @@ +--- +description: Setup and manage your Rocket.Chat cloud account. +--- + +# Rocket.Chat Cloud + +Rocket.Chat Cloud lets you connect your workspace to our cloud services and better manage your workspaces. You have the option to choose between cloud-hosted workspace or self-hosted workspaces. + +****[**Create your new cloud account**](create-new-cloud-account.md): Sign up for a new cloud account. + +****[**Manage your cloud account**](manage-your-cloud-account/): Manage your workspaces, add organization information, view invoices, and more services with your cloud account. + +****[**Cloud Account Setup Wizard**](../../rocket.chat-resources/frequently-asked-questions/cloud-faqs.md): Set up your first Admin user and register your server. + +****[**Cloud FAQs**](../../rocket.chat-resources/frequently-asked-questions/cloud-faqs.md)**:** Frequently asked questions on Rocket.Chat cloud. diff --git a/use-rocket.chat/rocket.chat-cloud/cloud-account-setup-wizard.md b/use-rocket.chat/rocket.chat-cloud/cloud-account-setup-wizard.md new file mode 100644 index 0000000000..2c40aaa537 --- /dev/null +++ b/use-rocket.chat/rocket.chat-cloud/cloud-account-setup-wizard.md @@ -0,0 +1,24 @@ +# Cloud Account Setup Wizard + +The Cloud Setup Wizard guides you through registering your server to receive free push notifications. + +After entering your [administrative and organization information during the setup of your Rocket.Chat workspace](../../setup-and-administer-rocket.chat/accessing-your-workspace/rocket.chat-setup-wizard.md#setup-wizard), register your server to the Rocket.Chat Cloud or run it as a standalone service. + +Connecting your workplace to the cloud gives you access to interact with services like + +* Mobile push notifications gateway +* Live Chat Omnichannel proxy +* OAuth proxy for social network +* Apps Marketplace + +To register your server, + +* Connect it to your cloud account. If you already have one- enter the cloud email address. Otherwise, create a [new account](https://docs.rocket.chat/rocket.chat-saas/cloud-account/create-new-cloud-account). +* You will receive an email to the registered email with a confirmation link. You must verify the security code that matches the one in the email. +* Click **Verify Registration**. Confirm the registration and go back to your server. +* Your workspace is ready. Click **Go to your workspace** to access it. + +To continue as a Standalone Server, + +* Click **Continue as standalone.** +* Then click **Confirm**. Your workspace is now ready for use. diff --git a/use-rocket.chat/rocket.chat-cloud/create-new-cloud-account.md b/use-rocket.chat/rocket.chat-cloud/create-new-cloud-account.md new file mode 100644 index 0000000000..7ebae3daf7 --- /dev/null +++ b/use-rocket.chat/rocket.chat-cloud/create-new-cloud-account.md @@ -0,0 +1,19 @@ +# Create your new cloud account + +Rocket.Chat Cloud allows you to connect your self-hosted Rocket.Chat workspace to the services we provide in our Cloud. It enables you to manage your workspace better. You can explore the workspace capabilities for free by signing up for a [30-day Rocket.Chat Enterprise Edition Trial](../../setup-and-administer-rocket.chat/enterprise-edition-trial/). You will get a notification in advance of when the trial is coming to an end. If you purchase any plan, your trial version will automatically convert to a paid plan at the end of the trial period. + +{% hint style="info" %} +If you are a self-managed customer**,** a cloud account is optional, but if you are a SaaS customer, it is created by default when you first start your workspace with us. +{% endhint %} + +## Create a new cloud account + +Log in to your Rocket.Chat Cloud account using your email or create a new account if you don't have one. + +* Go to [Rocket.Chat Cloud](https://cloud.rocket.chat/). +* Click **Create Account** to register your new Rocket.Chat cloud account. +* Fill in the required information. +* Read and accept the [Rocket.Chat Terms and Conditions](https://docs.rocket.chat/rocket.chat-legal/terms-of-service) and [Privacy Policy](https://docs.rocket.chat/rocket.chat-privacy-and-security/privacy-policies/privacy). +* Click **Next.** You will receive an email with the confirmation link to sign in to your cloud account. +* Confirm your email address by clicking on the link sent. Your cloud account has been created and is ready to use. +* You will see a Workspaces screen listing every workspace connected to your cloud account. diff --git a/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/README.md b/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/README.md new file mode 100644 index 0000000000..f9f24238ca --- /dev/null +++ b/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/README.md @@ -0,0 +1,26 @@ +# Manage your cloud account + +You can use your cloud account to manage your workspaces, add organization information, view invoices, upgrade or downgrade your workspaces, and more services. + +## Sign in to your Rocket.Chat Cloud Account + +You can log in to your cloud account with your email and password or via a login link to your email. + +### **Connect to your cloud account with a login link** + +* Go to [Rocket.Chat Cloud](https://cloud.rocket.chat/). +* Enter your **Email Address** and then click **Send Login Link.** You will receive an email with the link to sign in to your cloud console. +* From the email, click **Sign In** or copy and paste the URL into your web browser to access your cloud account. + +{% hint style="info" %} +Using your password, you can also connect to your cloud account without an email invitation. +{% endhint %} + +### Reset your password + +To reset your password, + +* Go to [Rocket.Chat Cloud](https://cloud.rocket.chat/). +* Enter the email address associated with your account. +* Click **Reset Password**. +* You will receive an email to finish the password reset process. diff --git a/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/contact-sales.md b/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/contact-sales.md new file mode 100644 index 0000000000..c8a71782d2 --- /dev/null +++ b/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/contact-sales.md @@ -0,0 +1,3 @@ +# Contact Sales + +You can talk to a Rocketeer in the sales or partnership team. Visit the Rocket.Chat [contact ](https://rocket.chat/contact)page to connect with the Sales Team and Customer Support Team. diff --git a/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/custom-domain-for-your-cloud-hosted-workspace.md b/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/custom-domain-for-your-cloud-hosted-workspace.md new file mode 100644 index 0000000000..20efb6e4f7 --- /dev/null +++ b/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/custom-domain-for-your-cloud-hosted-workspace.md @@ -0,0 +1,22 @@ +# Custom domain for your Cloud-hosted workspace + +Any Cloud Portal account with a Cloud-hosted workspace can apply custom domains + +{% hint style="warning" %} + If your custom domain stops working for any reason, there is no redirect option. +{% endhint %} + +To set a custom domain, + +* Access and log in to your cloud account. +* Click **Edit** next to your default URL + +

Edit workspace URL

+ +* Select **Use custom domain,** set your new domain, and click **Save.** + +****![DNS settings](<../../../.gitbook/assets/DNS settings saas.png>)**** + +A message tells you to wait for DNS verification, and your domain URL displays a pending status. + +Registrars usually process nameserver updates within 24 hours. Once complete, you will receive an email from Rocket.Chat Cloud. diff --git a/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/invoices.md b/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/invoices.md new file mode 100644 index 0000000000..fdf48d8ceb --- /dev/null +++ b/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/invoices.md @@ -0,0 +1,17 @@ +--- +description: Check and download a copy of your monthly invoice. +--- + +# Invoices + +You can view the list of invoices and filter by product and workspace. You can download invoices either as PDF or CSV. You can also multi-select invoices to download specific invoices. + +To view your invoices, + +* From the sidebar menu, click **Invoices.** +* You can see the list of your invoices and other associated details like workspace, product status, and date. +* Select the invoice and click **Download.** + +{% hint style="info" %} +To find more billing information, please go to our [pricing](https://rocket.chat/pricing/) page. +{% endhint %} diff --git a/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/organization-settings.md b/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/organization-settings.md new file mode 100644 index 0000000000..a53ea0d9bd --- /dev/null +++ b/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/organization-settings.md @@ -0,0 +1,9 @@ +# Organization Settings + +As a workspace administrator, you can update information about your organization. + +To update your organization's information, + +* From the sidebar menu, click **Organization.** +* Update your organization details. +* Then, click **Save Changes**. diff --git a/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/payment-methods.md b/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/payment-methods.md new file mode 100644 index 0000000000..cf529caea9 --- /dev/null +++ b/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/payment-methods.md @@ -0,0 +1,21 @@ +--- +description: Add a payment method to your Rocket.Chat Cloud account. +--- + +# Payment Methods + +You can add your credit or debit card as a new payment method for your Rocket.Chat account. The payment methods will then be an option when you make the payments. You have the option to set a card as your default payment method. + +To add a new payment method, + +* From the sidebar menu, click **Payment Methods.** +* Then, click **Add Payment Method.** +* Add your credit/debit card details. Click **Add Card**. + +To delete a card, + +* Select the card, and click Delete. + +{% hint style="info" %} +If you have only one credit card added, you can't delete the only payment method on your own. Please get in touch with [support@rocket.chat](mailto:support@rocket.chat) to get it deleted. +{% endhint %} diff --git a/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/profile.md b/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/profile.md new file mode 100644 index 0000000000..12598f9622 --- /dev/null +++ b/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/profile.md @@ -0,0 +1,8 @@ +# Profile + +To update your cloud account profile, + +* Click your **Avatar** icon**.** +* Select **My** **Profile**. +* Update the required information. +* Click **Save Changes.** diff --git a/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/security.md b/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/security.md new file mode 100644 index 0000000000..c790b80b12 --- /dev/null +++ b/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/security.md @@ -0,0 +1,35 @@ +--- +description: Manage the security of your Rocket.Chat Cloud account. +--- + +# Security + +## Password + +You can reset your password easily by signing out and clicking **Reset password** on the Rocket.Chat Cloud login page. + +A password reset link is sent to your email if it matches an account. + +## Two Factor Authentication + +Setting up 2FA(Two Factor Authentication) provides a higher layer of securing to your Rocket.Chat Cloud account. + +{% hint style="info" %} +Before setting up 2FA, you must set a password for your account first. +{% endhint %} + +To set up 2FA: + +* Click on **Enable** to enable the feature +* A modal is shown, prompting you to enter your TOTP (time-based one-time password) or to create one if you don't have +* Download and have available any Authenticator app of your choice to proceed. Some popular Authenticators include [Google Authenticator](https://googleauthenticator.net/),[ Authy, ](https://authy.com/)and[ Duo](https://duo.com/) +* Scan the QR Code provided with your Authenticator app or setup the Authentication keys manually +* Copy the code displayed by the newly added Authentication means (`Rocket.Chat Cloud`) and fill in the field prompting to enter the code, then proceed +* A list of backup codes is provided. Save them securely in case you lose access to your Authenticator app +* After that, the 2FA setup is completed + +You should now see on the security page the number of backup codes left and have the ability to disable 2FA or generate new codes. + +{% hint style="success" %} +With 2FA enabled on your account, you will be required to provide the Authenticator code when resetting your password and when logging in through password or passwordless means. +{% endhint %} diff --git a/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/support.md b/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/support.md new file mode 100644 index 0000000000..d0c9345042 --- /dev/null +++ b/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/support.md @@ -0,0 +1,28 @@ +--- +description: Get help from Rocket.Chat Help Desk if you are facing issues. +--- + +# Support + +When you are facing technical issues, you can get help from us through [Rocket.Chat Support](https://desk.rocket.chat/portal/en/signin). Using the Help Desk, you can raise your queries via tickets, read articles, and engage with our community. + +To access the Rocket.Chat Help Desk, + +* From the sidebar menu, click **Support.** +* If you are already a member, you can enter your email address and password to sign in or create an account by clicking **Sign Up.** +* You will receive an invitation email with the confirmation link to access Rocket.Chat Support's [Customer Self-Service Portal](https://desk.rocket.chat/portal/) +* Click **ACCEPT THE INVITATION,** then proceed to set up your password**.** + +To create a ticket, + +* Navigate to **My Area > Tickets.** +* Click **Add ticket.** +* Fill in the required information about the ticket you want to raise. +* Click **Submit**. + +{% hint style="info" %} +Use our ticketing system to request service following the service-level agreement (SLA). Rocket.Chat does not accept tickets sent by personal email. + +Learn more about Rocket.Chat from our [knowledge base portal and articles.](https://desk.rocket.chat/portal/en/kb/rocket-chat) +{% endhint %} + diff --git a/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/workspaces.md b/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/workspaces.md new file mode 100644 index 0000000000..bf5e476795 --- /dev/null +++ b/use-rocket.chat/rocket.chat-cloud/manage-your-cloud-account/workspaces.md @@ -0,0 +1,83 @@ +# Workspaces + +As a workspace administrator, you can view and manage all the workspaces linked to your account. + +## Manage Workspaces + +When you log in, you will see the list of workspaces linked to your cloud account. + +To register a self-managed workspace, click **Register self-managed** to enable your self-hosted workspace. + +{% hint style="info" %} + If you want multiple cloud workspaces under the same cloud account, please contact us at [support@rocket.chat](mailto:support@rocket.chat). +{% endhint %} + +To view workspace Information, + +* Click the workspace to see the following workspace information: + * Workspace plan + * Push notification limit + * Total usage + * Push notification usage. + +After your first sign-up, you are given a Rocket.Chat Enterprise Edition for 30 days. No payment is required. On the 30th day, you will be charged according to your chosen plan. The minimum volume or resources on Cloud provided per workspace is for 25 members, so you will be billed accordingly even if you have less than 25 users. Workspace members will continue to receive mobile push notifications for the remainder of the trial. + +## Upgrade/Downgrade your plan + +{% hint style="info" %} +This is currently available for Rocket.Chat SaaS workspaces. +{% endhint %} + +You can change your workspace plan from the Rocket.Chat Cloud Console, with the option to upgrade, downgrade or switch to monthly or yearly plans. + +* Log in to your [Rocket.Chat Cloud](https://cloud.rocket.chat/home) account +* Click and open the workspace you wish to upgrade the plan for +* Click on **Subscribe** or **Manage Subscription** button +* A side panel opens up with details for you to manage the subscriptions + * **Plans / Seats**: This lets you toggle your billing plan to `Monthly/Yearly` + * **Cloud Enterprise \[Monthly/Yearly]**: Increase or decrease the number of seats for your workspace depending on the plan selected above. +* After the subscription has been modified, hit **Save** to continue +* Validate the checkout and payment and **Subscribe** to apply the changes + +{% hint style="success" %} +After a successful checkout, your subscription gets activated, and you receive an invoice through email about the purchase. Decreasing already purchased seats will refund the cost as a Rocket.Chat Cloud account credit. +{% endhint %} + +## Restart Workspace + +When facing issues with your workspace, you can restart your workspace. This process disconnects you from your workspace so that it can be shut down and restarted. A server restart is required when you face minor performance issues, e.g., slow messages. After you restart your workspace, it will take 1-5 minutes (depending upon your number of users) for the workspace to continue again. + +To restart your workspace, + +* From the sidebar menu, click **Workspaces** +* Select the Workspace and click **Restart your workspace.** + +## Cancel Workspace + +You can cancel your workspace to end your subscription and hibernate your server. + +To cancel a workspace, + +* From the sidebar menu, click **Workspaces.** +* Click the **** ![](<../../../.gitbook/assets/three-dot-icon (1).png>)**three-dot** icon beside the workspace. +* Select **Cancel**. + +{% hint style="info" %} +Please be aware that the workspace administrator in your [Cloud Console](https://cloud.rocket.chat/) is the only person who can end your subscription. Self-managed customers can't cancel their workspaces. +{% endhint %} + +When you cancel a Saas service, the status remains **canceling** until the end of your billing cycle. After the billing cycle is ended, the status is changed to **canceled.** + +{% hint style="info" %} +If you change your mind within 30 days of your workspace getting canceled, please reach out to us at [support@rocket.chat](mailto:support@rocket.chat) to get your workspace restored. After 30 days, you will have to create a new one. +{% endhint %} + +## Update Workspace + +You can upgrade your workspace to the latest workspace version. + +To update your workspace, + +* From the sidebar menu, click **Workspaces.** +* Click the **** ![](<../../../.gitbook/assets/three-dot-icon (1).png>)**three-dot** icon beside the workspace. +* Select **Update**. diff --git a/use-rocket.chat/rocket.chat-conference-call/README.md b/use-rocket.chat/rocket.chat-conference-call/README.md new file mode 100644 index 0000000000..8d0083a728 --- /dev/null +++ b/use-rocket.chat/rocket.chat-conference-call/README.md @@ -0,0 +1,28 @@ +# Rocket.Chat Conference Call + +When it comes to conference calling Rocket.Chat supports multiple feature-rich options. Rocket.Chat's conference call allows you to use the following video conferencing platforms, available as apps on our [marketplace](https://rocket.chat/marketplace). + +* [Pexip](conference-call-admin-guide/pexip-app.md) +* [Jitsi](conference-call-admin-guide/jitsi-app.md) +* [BigBlueButton (BBB)](conference-call-admin-guide/bigbluebutton-bbb-app.md) +* [Google Meet](conference-call-admin-guide/google-meet-app.md) + +To configure conference calls on your Rocket.Chat workspace, visit the [**administration guide**](conference-call-admin-guide/). If you have it configured already, follow the [**user's guide**](conference-call-users-guide.md) to start using it. + +### **Rocket.Chat Edition Specific** Conference Call **Features** + + + +
FeatureCommunity EditionEnterprise EditionMobile
Create calls
List in the channel users who joined a callxx
Contextual bar containing call history xx
Options to start with camera and mic off
Mark calls as ended after 24 hours
Ring users before starting a callxx
Disable call button in the workspacexx
+ +### **Provider-Specific** Conference Call **Features** + +| Feature | Pexip (EE) | Jitsi | BBB | Google Meet (EE) | +| :-------------------------------------: | :--------: | :---: | :---: | :--------------: | +| **Start calls from Rocket.Chat** | **✓** | **✓** | **✓** | **✓** | +| **Identify moderator automatically** | **✓** | **✓** | **✓** | **x** | +| **Control microphone from Rocket.Chat** | **x** | **✓** | **x** | **x** | +| **Control camera from Rocket.Chat** | **x** | **✓** | **x** | **x** | +| **Load user names from Rocket.Chat** | **x** | **✓** | **✓** | **x** | +| **Load user avatars from Rocket.Chat** | **x** | **✓** | **✓** | **x** | +| **End calls automatically** | **x** | **x** | **✓** | **x** | diff --git a/use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/README.md b/use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/README.md new file mode 100644 index 0000000000..897de5547b --- /dev/null +++ b/use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/README.md @@ -0,0 +1,22 @@ +--- +description: Guide for Rocket.Chat administrators to configure video conference +--- + +# Conference Call Admin Guide + +To configure conference calls on your Rocket.Chat workspace, + +* Navigate to **Administration > Workspace > Settings > Conference Call** +* **Select Default Provider** + +{% hint style="info" %} +The default provider options will be empty if you have not set up any conference call apps from the marketplace. +{% endhint %} + +****[**Pexip app**](pexip-app.md) (Enterprise only): Learn to configure conference calls with the Pexip app in Rocket.Chat. + +****[**Jitsi app**](jitsi-app.md): Configure conference calls with the Jitsi app in Rocket.Chat. + +****[**BigBlueButton (BBB)**](bigbluebutton-bbb-app.md): Understand how to configure conference calls with the BigBlueButton app in Rocket.Chat. + +****[**Google Meet app**](google-meet-app.md) **** (Enterprise only): Configure conference calls with the Google Meet app in Rocket.Chat. diff --git a/use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/bigbluebutton-bbb-app.md b/use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/bigbluebutton-bbb-app.md new file mode 100644 index 0000000000..4b5585391c --- /dev/null +++ b/use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/bigbluebutton-bbb-app.md @@ -0,0 +1,34 @@ +# BigBlueButton (BBB) app + +**BigBlueButton** is an open-source web collaboration software utilized by education organizations for e-learning and training. According to user needs, the software provides a wide range of customization and integration options. **BigBlueButton** enables users to conduct web-conferencing and share documents, audio, and video files for online learning. The software’s “whiteboard” feature allows presenters to mark valuable topics in the presentation. In addition, its “polling” feature engages learners and helps the presenter to receive feedback. BigBlueButton’s “desktop sharing” feature extends beyond slides and allows moderators to share their screens with the audience enabling a better understanding of topics. + +## Download BigBlueButton app + +{% hint style="info" %} +**A BigBlueButton server is required for this integration.** +{% endhint %} + +To download the BigBlueButton app, + +* Go to **Administration > Apps > Marketplace.** +* Search for the **BigBlueButton** app. +* Click **Install** + +## Set up the BBB app **** + +To set up the **BBB** app on your workspace, + +* Confirm that the app is enabled. +* Run `sudo bbb-conf --secret` on the BBB server. It gives you a **URL** and a **Secret**. See [ BBB's documentation](https://docs.bigbluebutton.org/admin/bbb-conf.html). +* Use this URL and Secret in the Settings tab of the app to connect to BBB +* Click **Save Changes** + +## Configure conference call using the BBB **app** + +To configure the **BBB** video conference on your workspace, + +* Go to **Administration > Settings > Conference Call** +* Select BigBlueButton as your **Default Provider** +* Select the options that meet your needs and click **Save changes.** + +The BigBlueButton app is successfully configured on your server. Follow[conference-call-users-guide.md](../conference-call-users-guide.md "mention") to start using it. diff --git a/use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/google-meet-app.md b/use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/google-meet-app.md new file mode 100644 index 0000000000..2c8f79b7c4 --- /dev/null +++ b/use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/google-meet-app.md @@ -0,0 +1,30 @@ +--- +description: Enterprise only feature +--- + +# 👑 Google Meet app + +![](<../../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (17).jpg>) + +{% hint style="warning" %} +**The app is currently in Beta, and some features may not function as expected.** +{% endhint %} + +## Download the Google Meet app + +To download the BigBlueButton app, + +* Go to **Administration > Apps > Marketplace.** +* Search for the **Google Meet** app. +* Click **Install.** +* Confirm that the app is enabled. + +## Configure conference call using Google Meet + +To configure the **Google Meet** video conference on your workspace, + +* Go to **Administration > Settings > Conference Call** +* Select **GoogleMeet** as your **Default Provider** +* Select the options that meet your needs and click **Save changes.** + +The Google Meet app is successfully configured on your server. Follow[conference-call-users-guide.md](../conference-call-users-guide.md "mention") to start using it. diff --git a/use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/jitsi-app.md b/use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/jitsi-app.md new file mode 100644 index 0000000000..c92813b231 --- /dev/null +++ b/use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/jitsi-app.md @@ -0,0 +1,48 @@ +# Jitsi app + +{% hint style="success" %} +This app can also work in a fully air-gapped environment. If you are an Enterprise customer running an air-gapped workspace, follow the [Air-gapped App installation guide](../../../setup-and-configure/rocket.chat-air-gapped-deployment/air-gapped-app-installation.md) and continue with the configuration instructions below. +{% endhint %} + +**Jitsi** is a [collection of open Source projects](https://jitsi.github.io/handbook/docs/architecture) which provide state-of-the-art video conferencing capabilities that are secure, easy to use, and easy to self-host. The [Jitsi Meet project](https://jitsi.org/Projects/JitsiMeet) (Jitsi Video Bridge) is a tried and true bandwidth-efficient WebRTC-compatible SFU (server-based) solution from our gracious FOSS partner, [Jitsi](https://jitsi.org). Rocket.Chat users can now enjoy reliable and robust group video, audio, and screen-sharing experiences through **Jitsi**. + +## Download the Jitsi app + +{% hint style="info" %} +**A Jitsi server is required for this integration.** +{% endhint %} + +To Download the **Jitsi** app on your workspace, + +* Go to **Administration > Apps > Marketplace.** +* Search for the **Jitsi Video Conference Provider** app. +* Click **Install** + +## Set up the Jitsi app + +To set up the **Jitsi** app on your workspace, + +* Confirm that the app is enabled. +* Go to the settings tab and update the following fields: + * **Domain**: Your Jitsi domain + * **Title prefix**: Text added before the title when identifying a video conference + * **Title suffix**: Your room suffix + * **Use SSL**: Your Jitsi SSL + * **Chrome Extension Id**: Your Jitsi chrome extension Id + * **Use Authentication Token**: When enabled, Rocket.Chat will generate a JWT token using the settings below. + * **Application ID (iss)**: The app id to use when generating authentication tokens. + * **Application Secret**: The app secret to use when generating authentication tokens. + * **Limit token to Jitsi Room**: If enabled, generated tokens will grant access only to the intended Jitsi room. + * **Token Auditor**: The auditor's name to use when generating authentication tokens. + * **Token Expiration**: The expiring time of the authentication tokens. +* Click **Save Changes** + +### Configure conference call using the Jitsi app + +To configure the **Jitsi** video conference on your workspace, + +* Go to **Administration > Settings > Conference Call** +* Select Jitsi as your **Default Provider** +* Select the options that meet your needs and click **Save changes.** + +The **Jitsi** app is successfully configured on your server. Follow[conference-call-users-guide.md](../conference-call-users-guide.md "mention") to start using it. diff --git a/use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/pexip-app.md b/use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/pexip-app.md new file mode 100644 index 0000000000..ef59f9f8a3 --- /dev/null +++ b/use-rocket.chat/rocket.chat-conference-call/conference-call-admin-guide/pexip-app.md @@ -0,0 +1,68 @@ +--- +description: Enterprise only feature +--- + +# 👑 Pexip app + +![](<../../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (17).jpg>) + +{% hint style="success" %} +This app can also work in a fully air-gapped environment. If you are an Enterprise customer running an air-gapped workspace, follow the [Air-gapped App installation guide](../../../setup-and-configure/rocket.chat-air-gapped-deployment/air-gapped-app-installation.md) and continue with the configuration instructions below. +{% endhint %} + +[Pexip](https://www.pexip.com/) is a purpose-built video communication platform that empowers large organizations to transform their operations with video conferencing. Pexip’s unique technology provides a customized solution for an innovative and fully bespoke application of video, data privacy, and business continuity for secure spaces and frictionless collaboration for connected spaces. + +The integration between Rocket.Chat and Pexip, a video conferencing communication platform, enables secure and compliant communication that is ideal for organizations operating within strict regulatory requirements for internal and external communications, such as government, financial services, healthcare, and others. + +## Architecture + +This integration is made possible by connecting Rocket.Chat with Pexip infinity through its external policy API. The Rocket.Chat Pexip App acts as a relay between the two platforms. Rocket.Chat users initiate a video call to a Pexip conferencing node and trigger an external policy request to Pexip. The policy server creates a single-use Virtual Meeting Room (VMR) and responds with the meeting parameters. This VMR is made available in the Rocket.Chat room for its duration. + +{% hint style="info" %} +Ensure that the Rocket.Chat external policy server can connect to the Pexip Infinity Conferencing Nodes over HTTPS on port 443. +{% endhint %} + +

Rocket.Chat Pexip Architecture

+ +## Setup + +For a complete setup, here are some requirements you need: + +* A Rocket.Chat workspace with Enterprise license. +* A [Pexip infinity server deployed](https://docs.pexip.com/admin/installation\_overview.htm) with: + * [Valid certificates and intermediate certificates](https://docs.pexip.com/admin/certificate\_management.htm). + * [A suitable network routing between Rocket.Chat and Pexip Infinity](https://docs.pexip.com/admin/port\_usage.htm) + * Only one location for each Rocket.Chat workspace, but that location can contain multiple **Conferencing Nodes**. + +### Download the Pexip app + +To Download the **Pexip** app, + +* Go to **Administration > Apps > Marketplace.** +* Search for the **Pexip** app. +* Click **Install** + +### App Configuration + +To set up the **Pexip** app on your Rocket.Chat workspace, + +* Confirm that the app is enabled. +* [Configure the Pexip server ](https://docs.pexip.com/admin/integrate\_policy.htm)with a remote policy to make service configuration requests before connecting with Rocket.Chat. Copy the policy server URL (**GET policy/v1/service/configuration**) from the details tab of the app and update the Pexip settings. +* Enter the URL of your running Pexip conferencing node in the **Base URL** under **Settings** on Rocket.Chat Pexip app. +* Hit **Save Changes.** + +### Configure conference call using the Pexip app + +To configure the Pexip video conference on your workspace, + +* Go to **Administration > Settings > Conference Call** +* Select Pexip as your **Default Provider** +* Select the options that meet your needs and click **Save changes.** + +The Pexip app is successfully configured on your server. Follow the [conference call user's guide](../conference-call-users-guide.md) to start using it. + +### Using the Pexip app + +After successfully installing and configuring the Pexip app, you can initiate a secure Pexip call inside any Rocket.Chat room by using the slash command `/pexip` or the call icon in the room header. + +When you use the `/pexip` command, a new Pexip Virtual Meeting Room(VMR) is created, and a link is made available in the room for users to use and **Join call**. When you click the **call icon** in any Rocket.Chat room hit **Start call**. It rings and notifies users in that room to **Accept** or **Reject** the call. On joining the call, they are prompted to provide their details and grant permission for Camera and Microphone usage. The list of users joining the VMR can also be seen within the Rocket.Chat room. diff --git a/use-rocket.chat/rocket.chat-conference-call/conference-call-users-guide.md b/use-rocket.chat/rocket.chat-conference-call/conference-call-users-guide.md new file mode 100644 index 0000000000..90cdc697cc --- /dev/null +++ b/use-rocket.chat/rocket.chat-conference-call/conference-call-users-guide.md @@ -0,0 +1,54 @@ +# Conference Call User's Guide + +{% hint style="info" %} +Contact your workspace administrator or follow [conference-call-admin-guide](conference-call-admin-guide/ "mention") to configure conference calls in your workspace. +{% endhint %} + +In Rocket.Chat, you can initiate video and audio conferences using your desired provider in any [room](../user-guides/rooms/). + +## Initiating a call - Direct Message + +
+ +To start a call in Direct Message, + +* Click on the **phone** icon from the room's header. You may have pre-flight options like turning on/off the camera or microphone. However, these options depend on the conference call provider you have selected. +* Click the **call** button. The pop-up changes to the “calling state”. Now, you can perform other actions while you wait for the receiver to answer. The ringer stays active for 30 seconds. After that **Call again** button appears in the room. + +## Incoming direct call + +
+ +Three things happen once you receive a call: + +* A pop-up appears wherever you are in the Rocket.Chat application. +* The incoming call ringer starts to ring. +* An incoming call item will be highlighted in the left sidebar. + +These options are available when you have an incoming call: + +* Accept and join the call room. +* Decline and give the other user feedback through the chat. +* Dismiss and silently ignore the call. + +## Start a call - Room + +You can also start a call in other rooms like Team, Channel, Discussion, and Multiple Direct Messages. + +To start a call in a room, + +* Click on the **phone** icon from the room's header. You may have pre-flight options like turning on/off the camera or microphone. However, these options depend on the conference call provider you have selected. +* Click the **call** button. A message is sent in the room, where all participants in the call are shown as thumbnails. + +{% hint style="info" %} +The ringing feature is unavailable in any room except **Direct Messages(DMs**). +{% endhint %} + +## Conference logs + +After a conference call is ended, the room keeps a record of the following: + +* The user who initiated it +* The start time +* The name of the conference +* The attendees diff --git a/use-rocket.chat/rocket.chat-conference-call/omnichannel-video-audio-call-configuration.md b/use-rocket.chat/rocket.chat-conference-call/omnichannel-video-audio-call-configuration.md new file mode 100644 index 0000000000..3fae3405a9 --- /dev/null +++ b/use-rocket.chat/rocket.chat-conference-call/omnichannel-video-audio-call-configuration.md @@ -0,0 +1,10 @@ +# Omnichannel Video/Audio Call Configuration + +To set Omnichannel call provider, + +* Go to **Administration > Workspace > Settings > Omnichannel > Video and Audio Call > Call Provider**. +* Select **Default Provider**. It uses the default provider that you set when[ configuring conference calls](conference-call-admin-guide/). + +{% hint style="info" %} +To learn how to use conference calls as an Omnichannel agent visit [here](../omnichannel-agents-guides/omnichannel-conversation.md#calling). +{% endhint %} diff --git a/use-rocket.chat/rocket.chat-federation/README.md b/use-rocket.chat/rocket.chat-federation/README.md new file mode 100644 index 0000000000..afd1ff0e70 --- /dev/null +++ b/use-rocket.chat/rocket.chat-federation/README.md @@ -0,0 +1,43 @@ +# Rocket.Chat Federation + +Federation allows for unlimited communication between workspaces by making them visible to each other on the federated network. + +Rocket.Chat uses the [Matrix](https://matrix.org/) communication protocol for decentralized and interoperable communications. Bridging Rocket.Chat through Matrix makes it easy for organizations to connect and collaborate with external parties using any federated Rocket.Chat workspace or Matrix-compatible platform. + +To enable and set up Federation on your workspace, go to **Administration** > **Workspace** > **Settings** > **Federation**. See this guide. + +{% content-ref url="../rocket.chat-workspace-administration/settings/federation/" %} +[federation](../rocket.chat-workspace-administration/settings/federation/) +{% endcontent-ref %} + +Setup and Configure federation with Matrix with this guide. + +{% content-ref url="../workspace-administration/settings/federation/matrix-bridge/matrix-admin-guide/matrix-homeserver-setup/" %} +[matrix-homeserver-setup](../workspace-administration/settings/federation/matrix-bridge/matrix-admin-guide/matrix-homeserver-setup/) +{% endcontent-ref %} + +{% hint style="info" %} +![](<../../.gitbook/assets/Deprecated (1).png>) [Rocket.Chat basic federation](../workspace-administration/settings/federation/rocket.chat-federation/) is deprecated as from Rocket.Chat `6.0.` + +We recommend federating with [matrix-bridge](../rocket.chat-workspace-administration/settings/federation/matrix-bridge/ "mention")`` +{% endhint %} + +See how to make use of federated communication with this guide. + +{% content-ref url="../workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/" %} +[matrix-users-guide](../workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/) +{% endcontent-ref %} + +## Features + +### Current + +The following features are currently supported with the Rocket.Chat federation implementation. + +See the possibilities available for [Enterprise Edition(EE) ](../../setup-and-administer-rocket.chat/enterprise-edition-trial/)and Community Edition(CE) workspaces in the table below. + +
FeatureCE/EEEE Only
Create federated channels, groups, DMs, and multi-user DMs from the UI. create-a-federated-rooms.mdfalsetrue
Invite external users to federated channels, groups, DMs, and multi-user DMs from the UI. invite-external-users-to-your-rocket.chat-server.mdfalsetrue
Search public rooms in the Matrix Network.falsetrue
Invite multiple users to multi-user DMs using slash commands.falsetrue
Invite an external user to DMs using slash commands.truefalse
Send/Receive attachments (Files, audio, and video messages) truefalse
Edit, Delete and Qoute messages.truefalse
Message reactions and sending emojis.truefalse
Mention internal and external users in federated channels.truefalse
User's avatar synchronization.truefalse
User's typing indicator (More Info)truefalse
Define permissions for users inside rooms (More info) .truefalse
Support for Markdown spec.truefalse
Servers allow list/block list (More info).falsefalse
+ +#### Coming Soon + +Matrix CLI setup tool for a smooth and easy setup. diff --git a/use-rocket.chat/rocket.chat-federation/talking-to-users-from-another-server.md b/use-rocket.chat/rocket.chat-federation/talking-to-users-from-another-server.md new file mode 100644 index 0000000000..7b39e13089 --- /dev/null +++ b/use-rocket.chat/rocket.chat-federation/talking-to-users-from-another-server.md @@ -0,0 +1,36 @@ +# Cross-server Federated Channels + +With [rocket.chat-federation](../workspace-administration/settings/federation/rocket.chat-federation/ "mention") enabled and configured on your Rocket.Chat workspace, you can talk with users on other federated servers. + +{% hint style="info" %} +![](<../../.gitbook/assets/Deprecated (1).png>) Rocket.Chat basic federation is deprecated as from Rocket.Chat `6.0.` + +We recommend federating with [matrix-bridge](../rocket.chat-workspace-administration/settings/federation/matrix-bridge/ "mention")`` +{% endhint %} + +## Using Rocket.Chat Federation + +After enabling federation, you should be able to start chatting with other servers. + +## Inviting users from a different server + +To do so, you should go to the `Directory` section, `Users` tab, and pick `Every Workspace` from the dropdown menu. + +![Directory Search Users](../../.gitbook/assets/directory.png) + +Then, you should be able to look for users on remote servers called peers. You can search using a combination of a username and a domain or an e-mail address, like: + +* Username: `myfriendsusername@anotherdomain.com` +* E-mail address: `joseph@remotedomain.com` + +If the remote server is within Rocket.Chat Federated Network; you will be able to see the users: + +![Directory Search Result](../../.gitbook/assets/directory-result.png) + +## Inviting remote users and chatting + +If you click on one of those listed users, you will invite them to your server without login access. Also, you and everyone else on your server will be able to chat with that new remote user. + +![Chat](../../.gitbook/assets/chat.png) + +From now on, you can invite that user only to private rooms or discussions. Those channels are going to be replicated to the remote server, without the message history. diff --git a/use-rocket.chat/rocket.chat-mobile/README.md b/use-rocket.chat/rocket.chat-mobile/README.md new file mode 100644 index 0000000000..a3389b26dc --- /dev/null +++ b/use-rocket.chat/rocket.chat-mobile/README.md @@ -0,0 +1,97 @@ +--- +description: Accessing Rocket.Chat through the mobile apps. +--- + +# Rocket.Chat Mobile + +This guide is aimed at helping you navigate Rocket.Chat on your mobile devices. + +## Installing Rocket.Chat Mobile + +If you are using an Android phone, you can get Rocket.Chat from [Google Play](https://play.google.com/store/apps/details?id=chat.rocket.android\&hl=en\&gl=US), and if you instead have an iOS device, you can get it from [Apple's App Store](https://apps.apple.com/us/app/rocket-chat/id1148741252). + +## Sign Up for Rocket.Chat + +To create a Rocket.Chat account, you have to join a workspace. After you launch Rocket.Chat on mobile: + +* Enter your workspace URL. + + If you don't have one, you can join our [Community workspace](https://open.rocket.chat/) +* Tap on **Create an account** and either sign up with the third-party authentication providers Github and Google or provide a name, username, email, and password. +* A confirmation email is sent to your email, and tap on **Login** or access the URL of the workspace you provided initially to log in. + +## Login to Rocket.Chat + +To log in to Rocket.Chat from mobile: + +* Launch Rocket.Chat and provide your workspace URL. + +{% hint style="warning" %} +Please note that [**open workspace**](https://open.rocket.chat) **** should only be used as a test. +{% endhint %} + +* Tap **Login** +* If you created an account with Google or GitHub, choose the respective option or provide a username or email and password combination to log in. +* If you have not verified your email, you will be prompted to input it and check your mailbox to verify. +* After verification, you are taken to your workspace's homepage upon successful login. + +## Exploring your workspace's homepage + +Rocket.Chat's homepage has a **navigation drawer menu**, **toolbar,** and **main body,** allowing you to perform different actions. + +### Navigation Drawer + +The navigation drawer menu carries your profile avatar, name, and workspace name at the top and five action items which are Edit Status, Chats, Profile, Display, and Settings. + +* **The Edit Status** item is used to set a [custom status](../workspace-administration/user-status.md). +* **The Chats item** reveals the rooms you are part of, enabling you to select any and start a conversation. +* **The Profile** takes you to the screen for managing your [profile](../rocket.chat-cloud/manage-your-cloud-account/profile.md). +* **The Display** item takes you to the screen for display settings for you to choose between expanded or condensed messages, the sort order, and the grouping order of your rooms. +* **The settings item** takes you to the screen for app settings such as language, default browser, theme, and more. + +### Toolbar + +The toolbar (action bar) has three action icons. + +* The icon is used to create [Rooms](../user-guides/rooms/). +* The icon searches your whole workspace for rooms and users. +* The icon is used to search for rooms that you are already part of or the ones which you might want to join. + +### Main Body + +Your workspace's main body on mobile has the rooms which you are part of and has been conversing. You can tap a room from the list to start a conversation. + +## Settings + +Rocket.Chat mobile app allows you to configure different app features such as language, theme, and more. Let us go through the Settings screen item by item. + +* **Contact Us**: Email Rocket.Chat support team for your worries or inquiries. Opens in your default email client. +* **Language**: Set your preferred language from a range of languages supported by Rocket.Chat. +* **Review this app**: Review Rocket.Chat on either Google Play Store or Apple App Store. You are taken to the respective store depending on your current device's operating system. +* **Share this app**: Share the link to Rocket.Chat on either of the app stores so that others can visit the link to install the mobile app. +* **Default browser**: Choose links in Rocket.Chat to open in Rocket.Chat's in-app browser or for links to open by default in your default browser. +* **Theme**: Choose between using your device's default theme or a light or dark theme. +* **Security and Privacy**: Modify security and privacy settings. You can reset your end-to-end encryption key, set a screen lock for devices that support biometrics, log analytics events, and send crash reports to our backend. Crash reports help us track and solve bugs. +* **License**: Open and read Rocket.Chat mobile's MIT License. +* **Version**: Display the version of Rocket.Chat mobile that you are using. +* **Server version**: This gives information about the current server version to which your mobile app is connected. +* **Clear local server cache**: Delete cached information from your workspace. +* **Logout**: Logout from your workspace. + +## Creating a Workspace + +To create a new workspace, + +* Tap on the title of your current workspace +* Tap **Create new workspace**. +* You are redirected to **** [**Rocket.Chat Cloud**](../rocket.chat-cloud/). +* Follow [create-new-cloud-account.md](../rocket.chat-cloud/create-new-cloud-account.md "mention") to create a new workspace. + +## Adding a Workspace + +To add a workspace that you are already part of, + +* Tap on the title of your current workspace +* Tap **Add Server.** +* **Enter workspace URL** +* Tap **connect** to log in to the workspace diff --git a/use-rocket.chat/rocket.chat-mobile/messages-and-threads-on-mobile.md b/use-rocket.chat/rocket.chat-mobile/messages-and-threads-on-mobile.md new file mode 100644 index 0000000000..29b9b04272 --- /dev/null +++ b/use-rocket.chat/rocket.chat-mobile/messages-and-threads-on-mobile.md @@ -0,0 +1,19 @@ +# Messages and Threads on Mobile + +## Messaging + +Rocket.Chat has different types of messages you can send in a room. + +* **Text**: Within a room, type your new message in the New Message text field and tap the send icon when you are done. +* **Photos and Videos**: To use your camera, tap on the **plus** (+) icon in a room and select **Take a photo** or **Take a video** to do the appropriate action**.** For a photo, tap OK and edit the picture in the photo editor that comes if you wish to else, tap Okay for your image to be uploaded and made available to your workspace. For the video, click on Okay to upload the video.A text field will also be present if you wish to provide a caption for your picture or video. +* **Gallery**: To send a video or image as a message in any of your rooms, tap the plus (+) icon, select the **Choose from library** option, and select the video or image from your gallery. +* **Files**: To send videos, photos, and any other type of file, after tapping the plus icon, **select Choose file** option and attach you. + +## **Threads** + +To create a thread, + +* Long-tap on the message you want to create the thread from. +* Tap on **Reply in Thread**. +* Type the message and select **Send to channel** if you want the message also to be sent to the channel or otherwise. +* Tap the send icon to send the message. diff --git a/use-rocket.chat/rocket.chat-mobile/push-notifications/README.md b/use-rocket.chat/rocket.chat-mobile/push-notifications/README.md new file mode 100644 index 0000000000..ab2c8d0cce --- /dev/null +++ b/use-rocket.chat/rocket.chat-mobile/push-notifications/README.md @@ -0,0 +1,66 @@ +# Push Notifications + +There are two ways to set up push notifications with Rocket.Chat: + +* Push Gateway +* Self Configured + +## Push Gateway + +Select this option if you and your users intend to use the official Rocket.Chat mobile applications. option. To enable push alerts to be received on our official mobile application by any server, we set up a push gateway holding our keys. By doing this, we safeguard the secret keys required to transmit notifications to you and your users via Apple(APN) and Google (FCM) systems. + +## Self Configured + +When you choose to self-configure the push notifications, things become a bit more complicated. First, you need to get keys from both Apple and Google and compile/release your mobile applications to the app stores so your public keys will be distributed to your users. You will also need to add your keys to Rocket.Chat. + +Then, compile them for iOS and Android and submit them to the appropriate app stores for review. Finally, direct your users to download your custom version of the Rocket.Chat mobile applications. + +### Configuring for Android + +The Rocket.Chat native application for Android supports the FCM system. You can configure it with the following steps: + +* Create a Firebase project in the Firebase console if you don't already have one. Click Add project. If you already have an existing Google project associated with your mobile app, select it from the Project name drop-down menu. Otherwise, enter a project name to create a new project. +* _**(Optional)**_ Edit your Project ID. Your project is given a unique ID automatically, and it's used in publicly visible Firebase features such as database URLs and your Firebase Hosting subdomain. You can change it now if you want to use a specific subdomain. +* Follow the remaining setup steps and click Create a project (or Add Firebase if you're using an existing project) to begin provisioning resources for your project. This typically takes a few minutes. When the process completes, you'll be taken to the project overview. +* Now that you have a project, you can add your Android app. Click Add Firebase to your Android app and follow the setup steps. If you're importing an existing Google project, this may happen automatically, and you can [download the config file](http://support.google.com/firebase/answer/7015592). +* When prompted, enter your app's package name. It's important to enter the package name your app uses; this can only be set when you add an app to your Firebase project. +* During the process, you'll download a `google-services.json` file. You can [download this file](http://support.google.com/firebase/answer/7015592) again at any time. +* After you add the initialization code, run your app to send verification to the Firebase console that you've successfully installed Firebase + +### Configuring for iOS + +For iOS, you need a paid apple developer account. Then, follow the steps outlined in the [iOS setup guide](https://github.com/raix/push/blob/v3.x/docs/IOS.md). + +{% hint style="info" %} +You can find more information on push notifications configuration [here](https://developer.rocket.chat/mobile-app/mobile-app-white-labelling/configuring-push-notifications). +{% endhint %} + +### Configuring Rocket.Chat + +* Go to **Administration.** Then click **Push.** +* Set the **Enable Gateway** to **False**, and plug the information from Apple and Google. +* Restart the server. + +Now you should be able to send a text message. Ensure you have logged in to the server once and then closed the app. You should see a test notification after you press the send button. + +{% hint style="info" %} +Here are some important points to consider when configuring mobile push notifications + +* If you don't want notifications, you can disable the gateway and not provide keys. +* You cannot compile your applications and use the Rocket.Chat push gateway. +* For iOS, you need to [convert](https://github.com/raix/push/blob/master/docs/IOS.md) both the `.cer` and `.p12` files into `.pem` files. +* Once everything is configured on the admin settings, the server must be restarted. +{% endhint %} + +## FAQ + +
+ +I am getting, "Server notifications are misconfigured!" + +If you are getting this message and are using our push gateway, please make sure: + +* Your server version is greater or equal to 0.74.3. +* Your server is registered. (you can check this by going to `http://yourserver/admin/cloud`) + +
diff --git a/use-rocket.chat/rocket.chat-mobile/push-notifications/push-notification-security.md b/use-rocket.chat/rocket.chat-mobile/push-notifications/push-notification-security.md new file mode 100644 index 0000000000..36c2545523 --- /dev/null +++ b/use-rocket.chat/rocket.chat-mobile/push-notifications/push-notification-security.md @@ -0,0 +1,33 @@ +# Secured Push Notification + +![](<../../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (17).jpg>) + +If you are using the Enterprise edition, the Secured Push Notification sends the ID of the message rather than the entire message through a push gateway (Apple or Google). Once the ID reaches the user’s device, the message is retrieved from Rocket.Chat server and the notification is created. + +{% hint style="info" %} +This process works for both situations if the user uses Rocket.Chat’s push gateway or his own. +{% endhint %} + +## Privacy + +You can enable and configure push notifications for workspace members using mobile devices. + +### Show Channel/Group/Username in Notification + +The default is **TRUE**. Disabling this setting prevents the Channel, Group, Discussion, and Username from being sent to the push notification gateway. + +### Show Message in Notification + +The default is **TRUE**. Disabling this setting prevents the message content from being sent to the push notification gateway. + +If the above privacy settings are disabled, the user receives a push notification without contextual information, as no such contextual information is sent to the push notification gateway in the first place. Then, the user can access the contextual information by opening the Rocket.Chat application. It is helpful in compliance-sensitive requirements like HIPAA to prevent sensitive information from being disclosed via push notification. + +### **Fetch full message content from the server on the receipt** + +If this setting is enabled, the notification payload sent through the Apple Push Notification service or Firebase Cloud Messaging service contains no message content. Instead, it has only the message ID, which is used by the mobile app to fetch the message content from the [Rocket.Chat](http://rocket.chat) server to display the notification. A generic push notification message is shown if something happens and the app cannot reach the server in time. When the setting is disabled, the message content is sent via push notification payload so the mobile app can immediately display the notification. + +To update privacy for push notifications, + +* Go to **Administration > Workspace > Settings > Push** +* Go to **Privacy** and update your settings. +* Click **Save Change**s. diff --git a/use-rocket.chat/rocket.chat-mobile/push-notifications/push-notifications-user-guide.md b/use-rocket.chat/rocket.chat-mobile/push-notifications/push-notifications-user-guide.md new file mode 100644 index 0000000000..1ce3fac8c5 --- /dev/null +++ b/use-rocket.chat/rocket.chat-mobile/push-notifications/push-notifications-user-guide.md @@ -0,0 +1,17 @@ +# Push Notifications User Guide + +To enable push notifications, + +{% hint style="info" %} +Always confirm that your mobile device settings allow the Rocket.Chat app to show notifications. +{% endhint %} + +* Click your **avatar** from the sidebar to access the [user panel](https://docs.rocket.chat/use-rocket.chat/user-guides/user-panel). +* Select **My Account**. +* Click **Preferences**, then select **Notifications.** +* Select the type of messages you want to **Send Push Notifications For.** +* Click **Save Changes.** + +{% hint style="info" %} +Learn about **Idle Time Limit** and enable **Auto-away** from[ User Presence](../../../setup-and-administer-rocket.chat/advanced-workspace-management/notifications.md#user-presence). +{% endhint %} diff --git a/use-rocket.chat/rocket.chat-mobile/rooms-on-rocket.chat-mobile.md b/use-rocket.chat/rocket.chat-mobile/rooms-on-rocket.chat-mobile.md new file mode 100644 index 0000000000..0c18600b7e --- /dev/null +++ b/use-rocket.chat/rocket.chat-mobile/rooms-on-rocket.chat-mobile.md @@ -0,0 +1,49 @@ +--- +description: How to create different types of rooms from Rocket.Chat Mobile app. +--- + +# Rooms on Rocket.Chat Mobile + +### Channel + +To create a [**Channel**](../user-guides/rooms/channels/) on Rocket.Chat mobile app, + +* Tap on icon on the app bar. +* Tap **Channel**. +* Select the users you want to be part of your channel, or search for users you wish to add. +* Enter **Channel Name**. +* Turn on **Privacy** If you want only invited users to access this channel. +* Turn on the **Read Only** to let authorized users write messages while unauthorized users can only read. +* Turn on or off the **Broadcast** switch. +* Tap on **Create Channel.** + +### Team + +To create a [**Team**](../../guides/user-guides/rooms/teams/) on Rocket.Chat mobile app, + +* Tap on icon on the app bar. +* Tap **Team.** +* Select the users you want to be part of your team, or search for users you wish to add. +* Enter **Team Name**. +* Turn on **Privacy** If you want only invited users to access this team. +* Turn on or off the **Broadcast** switch. +* Tap **Create** **Team**. + +### **Direct Message** + +To create a [**Direct Message**](../user-guides/rooms/direct-messages/) on Rocket.Chat mobile app, + +* Tap on icon on the app bar. +* Tap on **Direct Message**. +* Select/Search the users you want to start a direct message with. +* Tap **Create** in the top right corner to finalize the creation. + +### Discussion + +To create a [**Discussion**](../user-guides/rooms/discussions/) on Rocket.Chat mobile app, + +* Tap on icon on the app bar. +* Select the name of the **parent channel or group** to which this discussion is linked. +* Give a meaningful name for your discussion +* Tap the **Invite users** to add users. +* Tap **Create.** diff --git a/use-rocket.chat/rocket.chat-voice-channel/README.md b/use-rocket.chat/rocket.chat-voice-channel/README.md new file mode 100644 index 0000000000..e785eca68c --- /dev/null +++ b/use-rocket.chat/rocket.chat-voice-channel/README.md @@ -0,0 +1,46 @@ +# Rocket.Chat Voice Channel + +**Omnichannel** means fulfilling customers’ needs at every touchpoint and providing the same functionality and experience across channels, no matter how a customer chooses to interact. The Voice channel is the most crucial touchpoint because it is the human connection people crave. A standalone telephony solution creates data silos with disconnected insights into customer interactions and agent performance across channels. + +To fulfill this gap and avoid fragmented experiences for agents and customers, Rocket.Chat offers a voice channel feature set. It is a key part of our Omnichannel contact center because we know your customers expect to be able to get through to your live agent on the phone when they need to. It helps you get the most out of your in-house or remote back-office teams and deliver the experience that meets your customers' expectations. + +In the following articles, we help you onboard and start using **Rocket.Chat's voice channel** as an extension to our Omnichannel feature set, with outstanding customer experience. + +*** + +### **Features** + +
+ +Inbound Calls + +\*\*\*\*[**Inbound Calls**](https://docs.rocket.chat/guides/rocket.chat-voice-channel/voice-channel-agent-guides/how-to-take-a-call-in-rocket.chat-voice-channel) are great for having local visibility in various markets around the world. These calls allow you to receive calls on your business platform initiated by your customers using their mobile or landline phones. + +
+ +
+ +Outbound Calls + +With [**outbound calls**](voice-channel-agent-guides/how-to-initiate-an-outbound-call-as-an-agent.md), you can initiate calls toward your customers. + +
+ +### Key capabilities of the Voice Channel + +| Feature | Community Edition | Enterprise Edition | +| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------: | :----------------: | +| **Inbound calls** | **✓** | **✓** | +| **Call history** | **✓** | **✓** | +| **In-App SIP** [**extension management**](https://docs.rocket.chat/guides/rocket.chat-voice-channel/getting-started-with-voice-channel/configure-with-an-active-pbx-server/associate-agents-with-extensions-in-rocket.chat)\*\*\*\* | **✓** | **✓** | +| **Call mute** | **✓** | **✓** | +| **Outbound calls** | **x** | **✓** | +| **Calls on hold** | **x** | **✓** | +| **Call Dialer** | **x** | **✓** | +| **Call notes** | **x** | **✓** | +| **Device selection** | **x** | **✓** | +| Call transfer | **x** | Coming soon | +| VoIP on mobile | **x** | Coming soon | +| Voicemail | **x** | Coming soon | + +To configure **Voice Channel** on your Rocket.Chat workspace, follow the [**administration guide**](voice-channel-admin-guide/). If you have it configured already, follow the [**agent's guide**](voice-channel-agent-guides/) to start using it. diff --git a/use-rocket.chat/rocket.chat-voice-channel/getting-started-with-voice-channel.md b/use-rocket.chat/rocket.chat-voice-channel/getting-started-with-voice-channel.md new file mode 100644 index 0000000000..eabc8d1123 --- /dev/null +++ b/use-rocket.chat/rocket.chat-voice-channel/getting-started-with-voice-channel.md @@ -0,0 +1,28 @@ +# Getting Started with Voice Channel + +To use any Rocket.Chat products, you need to sign up for an [**Enterprise Edition free trial**](https://docs.rocket.chat/guides/enterprise-edition-trial) or have [Rocket.Chat community version deployed](https://docs.rocket.chat/quick-start/deploying-rocket.chat). If you already have an account and our other solutions, please proceed. + +{% hint style="info" %} +Requirements: + +* [Asterisk](https://www.asterisk.org/) 16.19.0 or higher (We used [FreePBX](https://www.freepbx.org/) 16.0.10.40 with Asterisk 18.6.0) +* Valid SSL certificate (valid domain) +* You need Rocket.Chat version 5.0.0 or higher. +{% endhint %} + +Please note that: + +* A **private branch exchange (PBX)** is a telephone system within an enterprise that switches calls between users on local lines while enabling all users to share a certain number of external phone lines. +* **Asterisk** is an open-source software implementation of a **PBX**. +* **FreePBX** is a web-based open-source GUI (graphical user interface) that controls and manages Asterisk (PBX). + +**To set up a voice channel, you have two paths:** + +1. [**Configure without previously having a PBX server**](voice-channel-admin-guide/configure-without-previously-having-a-pbx-server/)**** +2. ****[**Configure with an active PBX server**](voice-channel-admin-guide/configure-with-an-active-pbx-server/)**** + +**Further Information:** + +* ****[**Technical Specification**](voice-channel-technical-specification.md)**** +* ****[**Admin Guides**](voice-channel-admin-guide/)**** +* ****[**Agent Guides**](voice-channel-agent-guides/)**** diff --git a/use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/README.md b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/README.md new file mode 100644 index 0000000000..5c09ee4a56 --- /dev/null +++ b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/README.md @@ -0,0 +1,11 @@ +# Voice Channel Admin Guide + +This section explains various voice channel components and settings on the admin’s console. + +{% content-ref url="configure-without-previously-having-a-pbx-server/" %} +[configure-without-previously-having-a-pbx-server](configure-without-previously-having-a-pbx-server/) +{% endcontent-ref %} + +{% content-ref url="configure-with-an-active-pbx-server/" %} +[configure-with-an-active-pbx-server](configure-with-an-active-pbx-server/) +{% endcontent-ref %} diff --git a/use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/configure-with-an-active-pbx-server/README.md b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/configure-with-an-active-pbx-server/README.md new file mode 100644 index 0000000000..082e719861 --- /dev/null +++ b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/configure-with-an-active-pbx-server/README.md @@ -0,0 +1,68 @@ +# Configure with an active PBX server + +If you have: + +1. An active [PBX server](../configure-without-previously-having-a-pbx-server/) +2. [SIP extensions](../configure-without-previously-having-a-pbx-server/sip-extensions.md) created +3. [Asterisk manager](../configure-without-previously-having-a-pbx-server/configure-asterisk-manager-interface-and-users.md) configured +4. And [Omnichannel activated](https://docs.rocket.chat/guides/omnichannel#omnichannel-activation) + +You can start to configure the voice channel Rocket.Chat workspace. + +### 1. Enable Voice Channel + +1. Navigate to **Administration** > **Workspace** > **Settings** > **Voice Channel** +2. Enable voice channel, as shown below: + +

Voice channel

+ +**Rocket.Chat establishes two connections with Asterisk, one via AMI to read configuration and list extensions, queues, and some other things, and the second one is the WebRTC SIP registration.** + +### 2. Configure AMI connection + +Go to the menu **Avatar Menu > Administration - Settings - Voice Channel**, and in the **Management Server** section under the **Settings** tab, fill the form with the FQDN of your server and the user/password that we just [here](https://docs.rocket.chat/guides/rocket.chat-voice-channel/getting-started-with-voice-channel/configure-without-previously-having-a-pbx-server) or should be provided to you by your _Asterisk manager._ + +

AMI connection

+ +### 2.1 Test AMI Connection + +To test AMI connection, turn to the **Extensions** tab. Here you should see a list of the existing extensions in Asterisk: + +

Extensions

+ +Also enabling the AMI debug you may see connections coming and the RC AMI user connected: + +```tcl +manager set debug on +manager show connected +``` + +

Rocket.Chat connected to the Asterisk’s AMI

+ +If you see it, your Rocket.Chat is connected to Asterisk’s AMI. + +## 3. Configure WebSocket Server Connection + +Rocket.Chat needs a WebSocket connection to forward calls from Asterisk to Rocket.Chat. + +The parameters for a FreePBX connection are: + +

Websocket connection

+ +Change them according to your Asterisk server conditions. Then in the Settings tab, assign at least one extension to a Rocket.Chat user. When that user logs in to Rocket.Chat the webphone will try to connect to Asterisk. + +### 3.1 Test WebSocket Connection + +To test the WebSocket Connection, you just need to log in with a user associated with an extension and check if the extension registers successfully. + +![WebSocket not connected](<../../../../.gitbook/assets/image (2) (1).png>) + +The phone icon with a slash over means that the WebSocket connection is possible, Rocket.Chat could send a SIP Options packet to Asterisk, and it was successfully answered. Click on the phone icon, and it will turn green. Now the user is ready to receive calls, and in Asterisk, you should have received a SIP register packet, and the extension should be properly registered. Validate it with: + +`pjsip show endpoints` + +

Rocket.Chat configured with Asterisk

+ +Congratulations! You have successfully configured Rocket.Chat with Asterisk! + +The next step now is to [associate your Rocket.Chat agents with Asterisk extensions.](associate-agents-with-extensions-in-rocket.chat.md)\ diff --git a/use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/configure-with-an-active-pbx-server/associate-agents-with-extensions-in-rocket.chat.md b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/configure-with-an-active-pbx-server/associate-agents-with-extensions-in-rocket.chat.md new file mode 100644 index 0000000000..efe5e7cb5c --- /dev/null +++ b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/configure-with-an-active-pbx-server/associate-agents-with-extensions-in-rocket.chat.md @@ -0,0 +1,38 @@ +# Associate agents with extensions in Rocket.Chat + +As a Rocket.Chat administrator, you can associate one agent with one extension. This extension can be part of multiple queues. + +**An extension is simply a named set of actions in Asterisk. Asterisk will perform each action in sequence when that extension number is dialed**. + +Extensions in Asterisk are assigned to queues. The extensions and queues are both created and managed in Asterisk by the Asterisk manager. An agent needs to associate with one of these extensions to be able to take calls in a queue. You, as a Rocket.Chat admin can take one of these extensions and associate it with an agent. + +{% hint style="info" %} +Both extensions and queues are managed in Asterisk by the _Asterisk manager_. +{% endhint %} + +To associate and an agent to an extension: + +* Go to **Administration** > **Workspace** > **Settings** > **Voice Channel > Extension** tab +* Click **Associate Agent** +* Select the agent name and associate it with a free extension, as shown below: + +

Agent to extension association

+ +Following are some essential points to know: + +* An extension becomes unavailable after it has been associated with an agent. +* An extension can be associated with multiple queues. + +{% hint style="info" %} +Extensions and agents have a one-to-one relationship. + +Extension and queue have a one-to-many relationship. +{% endhint %} + +Once this call center agent makes themselves available for VoIP, the incoming calls in that queue will be forwarded to them based on the routing system configured in Asterisk. + +{% hint style="info" %} +Please note that to reduce the scope of this project, the only available administration feature is the ability to connect Rocket.Chat Agent with the existing Asterisk extensions. In future releases, you'll be able to create new extensions and queues from Rocket.Chat, and many other cool administration capabilities will roll out. 😀 +{% endhint %} + +Now your [agents can start using voice-as-channel on Rocket.Chat](../../voice-channel-agent-guides/). diff --git a/use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/configure-without-previously-having-a-pbx-server/README.md b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/configure-without-previously-having-a-pbx-server/README.md new file mode 100644 index 0000000000..f3828cb1bd --- /dev/null +++ b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/configure-without-previously-having-a-pbx-server/README.md @@ -0,0 +1,153 @@ +# Configure without previously having a PBX server + +PBX is a piece of architecture that forwards incoming calls to Rocket.Chat from telephony service providers. We are using it for call bookkeeping data like how many queues there are, extension data, agents allocated to a queue, routing system, and others. + +For the purpose of this guide, we are using [FreePBX](https://www.freepbx.org/) as our call management server. You can use any Asterisk distro of your choice. + +{% hint style="info" %} +Requirements: + +* Asterisk 16.19.0 or higher (We used FreePBX 16.0.10.40 with Asterisk 18.6.0) +* Valid SSL certificate (valid domain) +* You need Rocket.Chat version 5.0.0 or higher. +{% endhint %} + +## 1. Prepare FreePBX + +\ +Install your FreePBX server, as usual (that’s out of the scope of this tutorial), and update it using your OS package manager. In such a case, it’s: + +``` +yum update -y +``` + +Enter your server web interface [http://your.domain.name](http://your.domain.name/) and set the password and update settings, and do the activation process. Do not skip the activation process, as you’ll need some features later that are only available if you activate your server instance. Complete the firewall basic configuration. + +## 2. Configure the FreePBX firewall + +Now you need to prepare the FreePBX firewall to accept AMI (Asterisk Manager Interface) and WSS (WebSocket Secure).\ + + +### 2.1 Configure custom services AMI and WSS + +\ +Navigate to **Connectivity > Firewall > Services > Enable Firewall**. Under the Services tab, search for **WebRTC** and mark **Internet** and **Other** options, **Local** is active by default. + +![Firewall - services](<../../../../.gitbook/assets/Firewall - services - FreePBX.png>) + +We want **WebRTC** in the Internet zone because the Webphone will connect from the client’s IP address, which could be anywhere. + +Navigate to the **Custom Services** tab and hit the **Create new service**, name the service AMI, select TCP, and write the port range 5038:5039. Click **Save**. + +![Create new service](<../../../../.gitbook/assets/Create new service - FreePBX.png>) + +Mark the **Other** option and **Save**. + +{% hint style="info" %} +AMI goes in the “Other” zone because only some specific endpoints should be connecting to AMI. +{% endhint %} + +![AMI service](<../../../../.gitbook/assets/AMI service-FreePBX.png>) + +### **2.2 Whitelist Rocket.Chat** + +\ +Now you don’t want your Rocket.Chat to get banned by the FreePBX firewall so you have to add it to the Whitelist List. First, you need to know the IP or IP Networks from your Rocket.Chat instance. When you have a SaaS Rocket.Chat instance you will have a URL (subdomain) like MyChosenName.rocket.chat, so just ping it. In this demo: + +![](<../../../../.gitbook/assets/image (4) (2).png>) + +Rocket.Chat will be connecting from the whole network 51.81.0.0/16\ +If you have your own Rocket.Chat instance self-hosted or similar, you should know what’s your IP address or network. + +Now, navigate to **Connectivity > Firewall >** **Networks**, and add the IP address needed or Network. Select the **Other** zone and **Save**: + +![Network definitions](<../../../../.gitbook/assets/Network Difinition PBX.png>) + +Rocket.Chat will be in the **Other** zone. + +## 3. Configure SSL + +{% hint style="info" %} +We used Letsencrypt for this demo. +{% endhint %} + +This will only work if you have your FreePBX already activated. + +Navigate to **Admin > Port Management**. Change the Admin (web portal) to another port and set Letsencrypt to port 80. Click **Update** **Now**. + +![Port management](<../../../../.gitbook/assets/Port management PBX.png>) + +Please note that until here, you have been accessing the server by HTTP (not HTTPS) on port 80. Until you finish the SSL configuration, you are going to be using the newly selected port, 8080, in this demo. + +Now navigate to **Admin > Certificate Management**, and click on **New Certificate** > **Generate Let’s Encrypt Certificate**: + +![Certificate management](<../../../../.gitbook/assets/Certificate management PBX.png>) + +Fill out the form according to your settings and click **Generate Certificate**: + +![Generate certificate](<../../../../.gitbook/assets/generate certificate PBX.png>) + +Once it’s generated, mark it as the system’s default: + +![Default certificate](<../../../../.gitbook/assets/Default certificate PBX.png>) + +Now you can start using it. Go to the **Admin > System Admin > HTTPS Setup** and then to the **Settings** tab. Here select the certificate that was just generated and click on **Install**, wait, then select the Protocols TLS 1.2 and 1.3 as others are considered deprecated or insecure: + +![HTTPS setup](<../../../../.gitbook/assets/HTTPS setup.png>) + +Finally, click on **Save and Restart Apache** (A server restart is suggested here). Test in incognito that the changes are applied and the certificate is recognized as valid. + +Additionally, you can go back to the **Admin > System Admin > Port Management** to enforce HTTPS, select your FQDN and select the force (arrow) button from HTTP (8080) to HTTPS (443), then click hit **Save**: + +![](<../../../../.gitbook/assets/Enforce HTTPS PBX.png>) + + + +Test it. Congratulations! you have an HTTPS-valid SSL FreePBX server up and running. + +## 4. Configure Asterisk to use PJSIP as the main (or only) SIP channel + +\ +We are using chan\_pjsip as the only SIP driver. Go to **Settings > Advanced** **Settings**, search for **SIP Channel Driver**, and choose **chan\_pjsip**. Hit **Submit**. + +![PJSIP ](<../../../../.gitbook/assets/PJSIP FreePBX.png>) + +## 5. Configure Asterisk HTTP/WebSocket features + +\ +Using the article [Configuring Asterisk for WebRTC Clients 1](https://wiki.asterisk.org/wiki/display/AST/Configuring+Asterisk+for+WebRTC+Clients) in Asterisk’s Wiki, we are going only for the principal parameters if you need more details, the article is a great guide.\ + + +### 5.1 Enable Asterisk’s WebSocket and mini-HTTP + +\ +First, check that you have the needed modules loaded using the command `module show like ` + +![Modules](<../../../../.gitbook/assets/Modules FreePBX.png>) + +We are reusing the Let’s Encrypt certificates for the Asterisk mini-HTTP server, WebSockets, TLS encryption, and others. Start by going to **Settings > Advanced Settings** (again), search for the _Asterisk Builtin mini-HTTP server_ section and, configure as shown, apply changes. Asterisk restart is also recommended here: + +![Asterisk Builtin mini-HTTP server](<../../../../.gitbook/assets/image (1) (2).png>) + +Using the command `http show status` verify that both HTTP and HTTPS are up and running: + +![HTTP and HTTPS status](<../../../../.gitbook/assets/HTTP and HTTPS status FreePBX.png>) + +**If HTTP does but HTTPS doesn’t check that Asterisk can read the certificate and private key files:** Add capture of file reading error. + +### 5.2 Enable the WS and WSS SIP transports + +Navigate to the **Settings > Asterisk SIP Settings**. In the **General SIP Settings** tab configure your audio codecs, enable video, and select video codecs (vp8 and vp9 needed for WebRTC), NAT, etc. Then in the **SIP Settings** (chan\_pjsip) tab, choose your valid SSL certificate for **TLS/SSL/SRTP** and enable all the desired transports, especially WS and WSS: + +![SIP transports](<../../../../.gitbook/assets/SIP transports.png>) + +Click submit and apply changes (an Asterisk restart is recommended) + +### 5.3 Test Asterisk HTTP mini-server + +\ +Navigate to [https://mysub.domainname.domain:8089/httpstatus](https://mysub.domainname.domain:8089/httpstatus) and verify that it loads, SSL Port is present, and the SSL certificate is valid: + +![Asterisk status](<../../../../.gitbook/assets/Asterisk status FreePBX.png>) + +Congratulations! you have a valid SSL Asterisk WebRTC-ready server up and running. diff --git a/use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/configure-without-previously-having-a-pbx-server/configure-asterisk-manager-interface-and-users.md b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/configure-without-previously-having-a-pbx-server/configure-asterisk-manager-interface-and-users.md new file mode 100644 index 0000000000..34f14476f8 --- /dev/null +++ b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/configure-without-previously-having-a-pbx-server/configure-asterisk-manager-interface-and-users.md @@ -0,0 +1,9 @@ +# Configure asterisk manager interface and users + +Lastly, Rocket.Chat needs an AMI connection to be able to read your Asterisk configuration and connect extensions to RC users. + +So, navigate to the **Settings > Asterisk Manager Users** menu. Here you can create a user to be used by Rocket.Chat and limit the access of this user only to the IP address or network where your Rocket.Chat is. + +![Asterisk manager](<../../../../.gitbook/assets/Asterisk manager.png>) + +You can now proceed to Rocket.Chat and [start configuring the voice channel there.](../configure-with-an-active-pbx-server/) diff --git a/use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/configure-without-previously-having-a-pbx-server/sip-extensions.md b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/configure-without-previously-having-a-pbx-server/sip-extensions.md new file mode 100644 index 0000000000..65c3616e58 --- /dev/null +++ b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-admin-guide/configure-without-previously-having-a-pbx-server/sip-extensions.md @@ -0,0 +1,12 @@ +# SIP Extensions + +Now that you have your Asterisk server up and running let's create some WebRTC-ready PJSIP extensions and configure them.\ +To create an extension: + +Navigate to **Applications > Extensions**, and click the **Advanced** tab. Configure as follows: + +![SIP Extension](<../../../../.gitbook/assets/SIP Extension.png>) + +{% hint style="success" %} +You can install the FOP2 and FOP2ś WebRTC webphone plugins in your FreePBX server, if the plugin works, your WebRTC configuration is complete and working. Is not complicated, and it could help you to diagnose any issue, but it’s out of the scope of this tutorial. +{% endhint %} diff --git a/use-rocket.chat/rocket.chat-voice-channel/voice-channel-agent-guides/README.md b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-agent-guides/README.md new file mode 100644 index 0000000000..024645ce98 --- /dev/null +++ b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-agent-guides/README.md @@ -0,0 +1,3 @@ +# Voice Channel Agent Guides + +This section explains various voice channel components on the agent’s console. diff --git a/use-rocket.chat/rocket.chat-voice-channel/voice-channel-agent-guides/how-to-initiate-an-outbound-call-as-an-agent.md b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-agent-guides/how-to-initiate-an-outbound-call-as-an-agent.md new file mode 100644 index 0000000000..6eb4501945 --- /dev/null +++ b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-agent-guides/how-to-initiate-an-outbound-call-as-an-agent.md @@ -0,0 +1,9 @@ +# How to initiate an outbound call as an agent? + +After you[ make yourself available](how-to-make-myself-available-for-accepting-voip-calls.md) to receive/make calls, you can start making outbound calls. + +To make an outbound call, you can either dial from the dial pad or navigate to the contact center and call a contact from there. + +

Initiating a call from the dialpad

+ +

Initiating a call from the Contact Center

diff --git a/use-rocket.chat/rocket.chat-voice-channel/voice-channel-agent-guides/how-to-make-myself-available-for-accepting-voip-calls.md b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-agent-guides/how-to-make-myself-available-for-accepting-voip-calls.md new file mode 100644 index 0000000000..46c076a232 --- /dev/null +++ b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-agent-guides/how-to-make-myself-available-for-accepting-voip-calls.md @@ -0,0 +1,9 @@ +# How to make myself available to accept calls? + +To make yourself available for accepting call center calls: + +* Click the phone button on your Rocket.Chat home screen, as shown below: + +![Make yourself available to take calls](<../../../.gitbook/assets/Available for accepting calls.png>) + +An incoming call will now be forwarded to you according to the [queue and the routing system](../../workspace-administration/settings/omnichannel-admins-guide/queue-types-routing-algorithm.md) being used. diff --git a/use-rocket.chat/rocket.chat-voice-channel/voice-channel-agent-guides/how-to-take-a-call-in-rocket.chat-voice-channel.md b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-agent-guides/how-to-take-a-call-in-rocket.chat-voice-channel.md new file mode 100644 index 0000000000..6aa2b5ac48 --- /dev/null +++ b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-agent-guides/how-to-take-a-call-in-rocket.chat-voice-channel.md @@ -0,0 +1,39 @@ +# How to take a call in Rocket.Chat voice channel? + +After you [make yourself available](how-to-make-myself-available-for-accepting-voip-calls.md) to receive/make calls, you can start taking inbound calls. + +## **Call Operations** + +### **Call In Progress** + +Click the **Accept** button to accept the call. The ongoing call appears as shown below: + +![Ongoing call](<../../../.gitbook/assets/Ongoing Call.png>) + +{% hint style="info" %} +Please note that messages are not available on a phone call room. +{% endhint %} + +### Mute/Unmute Call + +You have controls to mute/unmute calls. + +![Mute/Unmute](../../../.gitbook/assets/Muteunmute.png) + +### Hold/Unhold![](<../../../.gitbook/assets/enterprise blue.png>) + +If you're using Rocket.Chat's enterprise edition you can hold and unhold acording to your workflow needs. + +![Hold/Unhold](<../../../.gitbook/assets/image (1) (2) (1) (1).png>) + +### Device Settings![](<../../../.gitbook/assets/enterprise blue.png>) + +Enterprise edition also offers you the flexibilty to switch device during an ongoing call.![](<../../../.gitbook/assets/device settings button.png>) + +![Device settings](<../../../.gitbook/assets/device settings.png>) + +### Call Wrap-up![](<../../../.gitbook/assets/enterprise blue.png>) + +After the call ends you can leave your notes in the call wrap-up. It is an enterprise-only feature. + +![Call wrap-up](<../../../.gitbook/assets/all wrap-up.png>) diff --git a/use-rocket.chat/rocket.chat-voice-channel/voice-channel-faqs.md b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-faqs.md new file mode 100644 index 0000000000..f42b3679ac --- /dev/null +++ b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-faqs.md @@ -0,0 +1,31 @@ +# Voice Channel FAQs + +
+ +What are the prerequisites for using voice-as-channel on Rocket.Chat? + +For using VoIP on your Rocket.Chat instance you need: + +* WebRTC-based browser (Chrome/FF/Safari/Chromium-based edge) +* A PBX server (We used **Asterisk** Version 16.19.0 (With PJSIP stack)) +* SIP trunk provider. + +**** + +
+ +
+ +Does Rocket.Chat host a PBX server? + +No. Rocket.Chat does not host any PBX server. It's up to you to get your own PBX server. + +
+ +
+ +What call plans does Rocket.Chat provide? + +Rocket.Chat does not provide any call plans. You have to get them from your PBX provider. + +
diff --git a/use-rocket.chat/rocket.chat-voice-channel/voice-channel-technical-specification.md b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-technical-specification.md new file mode 100644 index 0000000000..3a317f757d --- /dev/null +++ b/use-rocket.chat/rocket.chat-voice-channel/voice-channel-technical-specification.md @@ -0,0 +1,54 @@ +# Voice Channel Technical Specification + +VoIP is the technology behind Rocket.Chat voice-as-channel feature. + +### **What is VoIP?** + +**Voice over Internet Protocol** refers to the standards that facilitate voice-based phone calls using an internet connection instead of a local telephone company. \ +Through VoIP technologies, Rocket.Chat is able to incorporate telephony-based communication protocols into its applications, promoting the transition between analog and digital technologies. + +### How does VoIP work? + +Voice over IP converts your voice into a digital signal, compresses it, and sends it over the internet. A VoIP service provider sets up the call between all participants. The digital data is then uncompressed into the sound that you hear through your handset on the receiving end. + +### Why is VoIP Important for the Omnichannel environment? + +In a contact center environment, Voice is an essential and influential channel. Agents using an omnichannel stack should be able to make audio/video calls to external PSTN networks, cellphone networks, and VoIP endpoints supporting SIP protocol. + +Once Rocket.Chat voice-as-channel or VoIP is in place; our Enterprise Edition provides many call center features. + +## Rocket.Chat VoIP architecture + +Here we try to describe in detail the technical and architectural aspects of bringing in a telephony protocol “**SIP**” on the client side in order to enable Voice calls on the platform. We also describe **Automatic Call Distribution**, by which the calls will be distributed to different agents. + +In a contact center environment, voice is an essential and powerful channel. Agents using Omnichannel should be able to make and receive audio/video calls from external PSTN networks, cellphone networks, and VoIP endpoints supporting SIP protocol. + +{% hint style="info" %} +SIP is an application protocol used to carry all forms of digital media, including voice messages—so SIP is a specific technology that supports VoIP calls. +{% endhint %} + +Web clients are built using browser-based WebRTC technology. This technology does not enforce any signaling protocol. SIP is chosen for the signaling because there are existing systems that support WebRTC over SIP, and hence there is no need to define any custom signaling protocol. Also, enabling SIP on the agent side would allow us to connect to enterprise telephony infrastructure. + +{% hint style="info" %} +**Asterisk** is the first PBX provider implemented. We have plans to add new providers as we go. +{% endhint %} + +### Architecture + +* The agent connects to **Opensource SIP PBX** [**Asterisk**](https://www.asterisk.org). Using the agent configuration, an agent registers to the partner’s/customer’s SIP Server. Agent endpoint operates as any SIP endpoint and is able to receive or make a call via customer PBX. +* To achieve this, there is an association made between the Rocket.Chat agent and the SIP identity. +* ACD (Automatic Call Distribution) queues, wait-treatment, etc, are managed by the customer’s/Partner’s PBX. Reaching out to external networks (PSTN/Mobile Network/Another SIP Server, is handled at the customer’s/Partner’s PBX. + +![VoIP Architecture](<../../.gitbook/assets/image (656) (1).png>) + +**ACD Queues:** + +When Omnichannel endpoints log in as SIP agents, the problem of call distribution has to be handled. You can not expect the customer to know the agent’s identity. If they happen to know the agent's identity, there is a possibility of multiple customers trying to reach the same agent. This can increase the abandonment rate (As a particular agent will remain busy serving). Which can reduce the overall effectiveness of the agents in the organization (As some agents will always be busy, and some will be relatively free). This overwhelms the agents because of the activity on their console. A typical call center solves this problem by using ACD (Automatic Call Distribution queues). + +Agents are partitioned into different queues on the PBX. These queues represent different departments in the organization. The customer does not dial the agent’s number. They dial the ACD number, and ACD forwards the call to the available agent based on the algorithm being used. + +**PBX Connectors:** + +Admins and managers use Rocket.Chat's UI to configure and monitor the customer-managed PBX. To receive real-time PBX events, Rocket.Chat’s backend has to connect to the PBX manager interface. The customer is responsible for creating the configuration on PBX so that the management APIs/interface is accessible from Rocket.Chat’s backend. + +![Connector Architecture](<../../.gitbook/assets/image (679) (1) (1) (1).png>) diff --git a/use-rocket.chat/rocket.chat-workspace-administration/settings/federation/README.md b/use-rocket.chat/rocket.chat-workspace-administration/settings/federation/README.md new file mode 100644 index 0000000000..d4a593d779 --- /dev/null +++ b/use-rocket.chat/rocket.chat-workspace-administration/settings/federation/README.md @@ -0,0 +1,18 @@ +# Federation + +Federation allows for an unlimited number of workspaces to communicate with each other. Federating a workspace makes it visible to other workspaces over the federated network, thus making communication with other Federation-enabled servers possible. + +To access Federation on your workspace, navigate to **Administration > Workspace > Settings > Federation** + +Rocket.Chat provides Federation using the [Matrix Protocol](https://matrix.org/) and the [Rocket.Chat Federation Network](../../../workspace-administration/settings/federation/rocket.chat-federation/) (Will be deprecated on 6.0.0). + +Rocket.Chat provides federation in the following ways: + +****[**Matrix Bridge**](matrix-bridge/)**:** See how to federate your Rocket.Chat workspace with the [Matrix Protocol](https://matrix.org/). + +****[**Rocket.Chat Federation**](../../../rocket.chat-federation/): Learn how to federate with Rocket.Chat basic federation. + +{% hint style="info" %} +* We strongly recommend federating using Matrix Bridge. +* The Rocket.Chat basic federation is deprecated from version `6.0.` +{% endhint %} diff --git a/use-rocket.chat/rocket.chat-workspace-administration/settings/federation/matrix-bridge/README.md b/use-rocket.chat/rocket.chat-workspace-administration/settings/federation/matrix-bridge/README.md new file mode 100644 index 0000000000..cb5e247126 --- /dev/null +++ b/use-rocket.chat/rocket.chat-workspace-administration/settings/federation/matrix-bridge/README.md @@ -0,0 +1,13 @@ +# Matrix Bridge + +Rocket.Chat Matrix Bridge is made possible through the [Matrix](https://matrix.org/docs/guides/introduction#what-is-matrix) protocol, an open standard for decentralized communication over the internet. + +It is designed to provide secure, interoperable, and decentralized real-time communication between Rocket.Chat and any Matrix-compatible applications or servers seamlessly. + +Using the Rocket.Chat Matrix Bridge integration requires you to have a [Matrix homeserver](https://matrix.org/docs/guides/introduction#how-does-it-work) available. We recommend [Synapse](https://matrix-org.github.io/synapse/latest/), which is the most stable as compared to other versions like [Dendrite](https://github.com/matrix-org/dendrite). + +{% hint style="info" %} +The Matrix Bridge feature has been verified with Synapse `v1.71.0`. +{% endhint %} + +
Matrix Admin GuideSee how to run an Matrix homeserver and setup federation with Rocket.Chat. Post Mortems
Matrix User GuideLearn how to use Rocket.Chat for federated communication.matrix-users-guide
Matrix Bridge FAQsCommon questions about Rocket.Chat Matrix Bridge implementation.
diff --git a/use-rocket.chat/rocket.chat-workspace-administration/settings/layout.md b/use-rocket.chat/rocket.chat-workspace-administration/settings/layout.md new file mode 100644 index 0000000000..d1609e40ca --- /dev/null +++ b/use-rocket.chat/rocket.chat-workspace-administration/settings/layout.md @@ -0,0 +1,120 @@ +--- +description: Customize the look of your workspace +--- + +# Layout + +The layout feature gives you the possibility to customize the look of your Rocket.Chat workspace. + +This involves aspects like specifying the content and setting custom CSS and Javascript. + +To access this setting, go to **Administration** > **Workspace** > **Settings** > **Layout**. + +{% hint style="success" %} +Remember to **Save changes** to apply any customization made. +{% endhint %} + +
+ +Colors + +This section has color settings and definitions you can edit or customize to have a different look on your UI elements. + +Colors can be set using existing **Expressions** or **Color** by specifying them from the color picker provided. + + + +#### Old Colors + +A list of pre-defined color variables for old versions of Rocket.Chat (<6.0) can be found [**here**.](https://github.com/RocketChat/Rocket.Chat/blob/b092bef8139f9db692872073ce9788c19b364780/app/theme/client/imports/general/variables.css) + +
+ +## Custom CSS + +Here, you can define custom CSS to modify how your workspace looks. + +### Example + +The simple CSS code below changes the color of your Rocket.Chat rooms and the hover color on the sidebar. + +```css +.rcx-content--main { + --rcx-color-surface-room: #5d91f7; +} +.rcx-sidebar--main { +--rcx-color-surface-hover: #e07c41; +} +``` + +

Customized Rocket.Chat UI

+ +Learn more about the classes and colors available for easy customization in the guide below. + +{% embed url="https://developer.rocket.chat/rocket.chat/white-labelling-rocket.chat/customizing-colors" %} + +## Custom Scripts + +This takes in javascript code that will be executed on specified events. + +* **Custom Script for Logout Flow**: Set a script to be run during any logout process. +* **Custom Script for Logged Out Users**: Custom Script that will run ALWAYS and to ANY user that is NOT logged in. e.g. (whenever you enter the login page). +* **Custom Script for Logged In Users**: Custom Script that will run ALWAYS and to ANY user that is logged in. e.g. (whenever you enter the chat and you are logged in) + +### Example + +Setting a custom script for logged-in users, like the example below, will alert "Welcome" whenever a user logs in and is on the `/home` page. + +``` +if(window.location.pathname == '/home'){ + alert("Welcome") +} +``` + + + +## Home page content + +The section allows you to change the content of your workspace homepage. + +* **Home Title:** The title on the header of the first screen that your users will see when they log in. +* **Show home page button on sidebar header**: When enabled, the Home button will be shown on your server's navbar. +* **Block content:** The content of the first screen that your users will see when logging in. +* **Show custom content to homepage**: Enable to show custom content on the homepage. +* **Show custom content only**: ![](<../../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (27).jpg>)Turn this on to onhide all other white blocks in the homepage. +* **Terms of Service:** Here, you can set the terms of service of your workspace. You can also redirect to YOUR-SERVER-URL/terms-of-service. This is shown by default on the links below your login page. +* **Login Terms:** Specifies the terms on which users are to accept before login in. +* **Privacy Policy:** Here you can set the privacy policy of your server. Can also be accessed via `YOUR-SERVER-URL/privacy-policy`. This is shown by default on the links below your login page. +* **Legal Notice:** By default this screen is accessed on the links under the login page, here you can set the legal notice of your server. Can also be accessed via `YOUR-SERVER-URL/legal-notice`. +* **Side navigation footer:** This is the logo or text on the bottom left of the sidebar. We recommend using the images set on your [Assets](../../../setup-and-administer-rocket.chat/basic-white-labeling.md#assets) for better consistency. + +## Login + +Customize your login page. + +{% hint style="info" %} +![](<../../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (27).jpg>)This is an Enterprise feature. +{% endhint %} + +* **Hide Logo**: Enable this to hide the Rocket.Chat. +* **Hide Title**: Turn this on to hide the title on the login page. +* **Hide "Powered by"**: Enabling this hides the "Powered by" on the login page. +* **Login Template**: Select the direction of the login page. `Horizontal`/`Vertical`. +* **Show Default Login Form**: Enable to show the default login form. + +## User Interface + +* **Display Roles:** Toggles the display of user roles shown beside the usernames on messages. + +![](<../../../.gitbook/assets/image (663) (1) (1) (1) (1) (1) (1) (1).png>) + +* **Group Channels By Type:** Enabling this separates the channels by category (**Channel**, **Private Room**, **Direct Message** or **Discussion**) on the left sidebar. +* **Use Full Name Initials to Generate Default Avatar:** This makes the default avatars are generated using the person's Full Name instead of Username. E.g. By default the user `blue.ducks` with the name `Richards Nate` will have an avatar with the letters `BD`by default but if this setting is active, it will be `RN`. +* **Use Real Name:** Enabling this changes the display of Usernames to Full Names. +* **Click to Create Direct Message:** Turn this on for workspace users to be able to create a direct message with another user when they click on thier profile. This skips the viewing of the user's profile. +* **Number of users' autocomplete suggestions**: Sets the number of autocomplete suggestions shown when you begin tagging any user with the `@` symbol. +* **Unread Counter Style**: + * **Different Style for user mentions:** Makes the notification counter differentiate normal messages from mentions + * **Same style for mentions:** Makes the count mark mentions and normal messages the same +* **Allow Special Characters in Room Names:** When enabled, it allows for the use of special characters like `! @ # $ % ^ & *` in room names +* **Show top navbar in embedded layout:** If set to true, it shows the top navbar when embedding using `?layout=embedded` at the end of the URL. diff --git a/use-rocket.chat/user-guides/README.md b/use-rocket.chat/user-guides/README.md new file mode 100644 index 0000000000..7315df71f1 --- /dev/null +++ b/use-rocket.chat/user-guides/README.md @@ -0,0 +1,17 @@ +--- +description: End-user Training Guides +--- + +# User Guides + +As a user, this guide will help you optimize your Rocket.Chat workspace. It onboards you on how to use various features of Rocket.Chat. + +****[**Access your Workspace**](access-your-workspace.md): Connect to your Rocket.Chat workspace via the web, mobile, or desktop application. + +****[**User Panel**](user-panel/): View and modify your account details, and update your workspace preference. + +****[**Rooms**](rooms/): Explore various methods of organizing conversations in your workspace. + +****[**Security Bundle**](../rocket.chat-cloud/manage-your-cloud-account/security.md): Explore security-focused features that provide enhanced security for your workspace. + +****[**Keyboard Shortcuts**](keyboard-shortcuts.md): Shortcut keys that help to optimize your workspace experience. diff --git a/use-rocket.chat/user-guides/access-your-workspace.md b/use-rocket.chat/user-guides/access-your-workspace.md new file mode 100644 index 0000000000..879d0bdd1e --- /dev/null +++ b/use-rocket.chat/user-guides/access-your-workspace.md @@ -0,0 +1,72 @@ +# Access your workspace + +## Connect to a Rocket.Chat Workspace + +Use a web browser or Rocket.Chat desktop/mobile application or your choice of [client applications](https://rocket.chat/download) to connect to a Rocket.Chat workspace. + +### Use a web browser + +To connect to a Rocket.Chat workspace through a web browser: + +* Enter the desired workspace address in the browser's address bar, such as `https://open.rocket.chat` +* After entering a valid Rocket.Chat workspace address the [registration](broken-reference) page appears. If you have already registered, enter your credentials to log in or click **Register a new account** to become a member of that workspace + +### Use the desktop app + +To connect to a Rocket.Chat workspace using the desktop app: + +* [Download](https://rocket.chat/download) the app specific to your operating system. +* Install and open the app. +* The workspace connect screen appears. Enter a valid workspace address and click **Connect.** +* After entering a valid Rocket.Chat workspace address the registration page appears. You can enter your credentials to log in or click **Register a new account** to become a member of that workspace. + +### Connect to more than one workspaces + +When you are using a Rocket.Chat desktop application you can connect to multiple Rocket.Chat workspaces. + +To add a new workspace: + +* Click the **plus** icon below the workspace list on the left sidebar and follow the [above](access-your-workspace.md#use-the-desktop-app) to connect to a Rocket.Chat workspace + +### Use the mobile app + +To connect to a Rocket.Chat workspace using a mobile client app: + +* [Download](../../deploy-rocket.chat/installing-client-apps/#mobile-apps) the app for your mobile operating system +* Open the app. If this is your first time using the mobile app, the workspace connect screen appears +* Click **Join a workspace** +* Enter a valid workspace address +* Click **Connect** +* After entering a valid Rocket.Chat workspace address, registration, and login page appear. +* Enter your credentials to log in or register to become a member of that workspace. + +## Registering an account + +To access any Rocket.Chat workspace or register an account manually or use one of the many supported OAuth services (if the desired workspace has enabled these services), after successfully registering, you can log in to the workspace. + +### Manual Registration + +You can create an account by providing your: + +* Name +* Email +* Password +* Reason to join + +A workspace can ask you to verify your email. You can do this by simply clicking on the link sent to the registered email. + +Workspaces can be configured to use custom parameters. Therefore each Rocket.Chat workspaces might ask for different information or restrict registration based on the rules set by the workspace. You can contact your workspace administrator if you are unsure how to register your account. + +### OAuth Registration + +If your workspace has configured OAuth services (i.e., GitHub or Google), use the account credentials for that supported service to register into the workspace. + +### Choosing a username and display name + +After you have successfully registered your account, you can choose your username. Your username is your unique identifier for others to use to direct message or mention you. + +{% hint style="info" %} +Your username is separate from your display name on the workspace. +{% endhint %} + +Usernames on each Rocket.Chat workspace must be unique to that workspace. However, display names can repeat on the same workspace. For example, there can be only one user with the username:`johnsmith`, but there can be more than one user with the display name :`John Smith`. diff --git a/use-rocket.chat/user-guides/keyboard-shortcuts.md b/use-rocket.chat/user-guides/keyboard-shortcuts.md new file mode 100644 index 0000000000..8e3d3067ab --- /dev/null +++ b/use-rocket.chat/user-guides/keyboard-shortcuts.md @@ -0,0 +1,19 @@ +# Keyboard Shortcuts + +You can use the following key combinations while using Rocket.Chat. + +| Shortcut | Description | +| :----------------------------------: | :-----------------------------------------: | +| `Command` (or `Ctrl`) + `k` | Open Channel / User search | +| `Control` (or `Shift`) + `ESC` | Clear all unread messages (in all channels) | +| `Up Arrow` | Edit previous message | +| `Command` (or `Alt`) + `Left Arrow` | Move to the beginning of the message | +| `Command` (or `Alt`) + `Up Arrow` | Move to the beginning of the message | +| `Command` (or `Alt`) + `Right Arrow` | Move to the end of the message | +| `Command` (or `Alt`) + `Down Arrow` | Move to the end of the message | +| `Control` (or `Shift`) + `Enter` | New line in message compose input | +| `Command` (or `Ctrl`) +`b` | Bold | +| `Command` (or `Ctrl`) + `i` | Italic | +| `Command` (or `Ctrl`) + `c` | Copy | +| `Command` (or `Ctrl`) + `v` | Paste | +| `Command` (or `Ctrl`) + `x` | Cut | diff --git a/use-rocket.chat/user-guides/messages/README.md b/use-rocket.chat/user-guides/messages/README.md new file mode 100644 index 0000000000..6a3bc63311 --- /dev/null +++ b/use-rocket.chat/user-guides/messages/README.md @@ -0,0 +1,112 @@ +# Messages + +This page explains the ins and outs of messaging in Rocket.Chat. + +{% hint style="info" %} +Make sure to go through [setting permissions for messages](https://docs.rocket.chat/guides/administration/admin-panel/settings/message) to be able to access all these features mentioned below! +{% endhint %} + +## Compose messages + +To compose a message in Rocket.Chat, go to the channel or user you want to send a message. Type message in the message box and press Enter or the **Send** Button. + +If you want to add new lines of text, press `Shift + Enter` to add a new line. + +## Cursor Movement + +While writing or editing messages, you can move the cursor using the arrow keys. Where the cursor moves depends on the wrapping of the text. + +Hold `Alt` or `Command` while pressing the right or left arrow keys to move the cursor to the beginning or end of the message. + +## Notify Other Team Members + +To get the attention of a specific team member in a channel, type `@` followed by their username, for example, `@username`. The mentioned user sees a red badge on the channel or is notified via email or their mobile device if they're not online. + +You can also notify everyone in a channel by typing `@all`. Although notifying everyone in the channel is useful for announcements, not every message requires this. We recommend using `@all` sparingly. + +## Send Attachments + +You can send a variety of attachments with your messages, like files, audio, links, videos, and many more. + +To access the attachment menu you can, click on the **plus** (+) icon on the message input. + +### Files + +You can select files using three methods: + +* By choosing the **Select Files from Computer** option from the attachment menu +* By dragging and dropping the file on Rocket.Chat +* By pasting an image from the clipboard + +After selecting the file, add a name and a description of the file and press **Send**. + +_Remember that the server administrator can block certain file types from being uploaded._ + +### Audio + +When using Rocket.Chat through a web browser, give Rocket.Chat permission to use your microphone. + +To start recording, click on **Create new Audio Message** or the option in the attachment menu or microphone icon inside the message box. To stop recording, click the green checkmark. The audio message automatically sends. You can choose to play or download the message. + +### Video + +When using Rocket.Chat through a web browser, give Rocket.Chat permission to use your webcam. + +To start recording, click on the **Create new Video Message** option in the attachment menu, then click the red circle icon. + +While recording, a stop button appears. To end the recording, press **Stop**. + +Preview the video you recorded by pressing **Ok**. A window appears where you can watch, download, and name the video. To send the video, click **Send** or click **Cancel** to discard the video. + +## Interacting with Google Drive + +_Note:_ Google Drive features available only if the server's admin has enabled Google Drive access and provided the correct API keys. For instructions to obtain these keys can see the [Administrator guides](broken-reference). + +### From Google Drive to Rocket.Chat + +Files can be uploaded from Google Drive to a room by selecting the **Select Files from Google Drive** option on the attachment menu. This opens a Google Drive file picker GUI with search and view modes. Select the required file, enter a title and description, and then click **Upload**. + +Files are upload in the same format as they are stored in Google Drive with exception of Google Docs, Google Slides, and Google Sheets which are converted to pdf upon upload. + +### From Rocket.Chat to Google Drive + +Files uploaded as a message attached to a room can be uploaded to Google Drive. Click **Save to Google Drive** above the file attachment. The file saves to Google Drive in its original format. + +### Create Google Docs, Slides and Sheets + +Create Google docs, slides, and sheets by clicking to corresponding file type in the attachments menu. The file saves to that user's Google Drive account and posts on the message or channel from which creation occurs. The sharing setting for the file shall remain default. It can be changed by the file owner via the link to collaborate with other users. + +## Links + +URLs to other sites automatically generate a preview of that site's content. Copy and paste the link into the message box to create the preview. + +## Location + +To share your location, click **Share My Location**. A message with the link to your location on Google Maps is generated. + +## Emoji + +To insert an emoji, click the **smiley face icon** in the message box. Browse through emoji using the icon categories or through the search box. + +You can also insert emojis by inputting an [emoji code](https://www.webfx.com/tools/emoji-cheat-sheet/). + +### Emoticons + +Rocket.Chat changes common emoticons, or symbols used to represent emoji, to the equivalent emoji. For example, `:)` converts to the `:smiley:` emoji. + +### Disabling emojis + +Emojis can be enabled/disabled in [Your Account](../user-panel/my-account/) settings under the **Messages** section. + +When graphical emojis are disabled, emoji keywords and shortcuts display as regular text. + +## Formatting + +Use the following symbols to format text as desired: + +* Bold: `*Lorem ipsum dolor*` +* Italic: `_Lorem ipsum dolor_` +* Strike: `~Lorem ipsum dolor~` +* Inline code: `` `Lorem ipsum dolor` `` +* Image: `![Alt text](https://rocket.chat/favicon.ico)` +* Link: `[Lorem ipsum dolor](https://www.rocket.chat/)` or `` diff --git a/guides/user-guides/messaging/message-actions.md b/use-rocket.chat/user-guides/messages/message-actions.md similarity index 77% rename from guides/user-guides/messaging/message-actions.md rename to use-rocket.chat/user-guides/messages/message-actions.md index 1298daca98..b5117d0f06 100644 --- a/guides/user-guides/messaging/message-actions.md +++ b/use-rocket.chat/user-guides/messages/message-actions.md @@ -1,14 +1,14 @@ # Message Actions -Message actions allow you to interact with messages that you've already posted. +**Message actions** allow you to interact with messages that you've already posted. ## Open message actions -To open the message actions menu, place your mouse over the message and click the **actions menu** on the left. +To open the message actions menu, place your mouse over the message and click the **Actions** menu on the left. ## Edit messages -To edit a message, click on the **edit** option on the message actions menu. You can also place your cursor in the message box and press the **Up arrow** to edit your last message. +To edit a message, click on the **Edit** option on the message actions menu. You can also place your cursor in the message box and press the **Up arrow** to edit your last message. _The administrator of the Rocket.Chat server sets the permissions for who can edit messages from other users. By default, only administrators, moderators, and channel owners can edit messages from other users._ @@ -38,13 +38,13 @@ _The administrator of a Rocket.Chat team sets the permissions for who can pin me You can react to messages with emojis. -To add a reaction to a message, go to the message, click on the **smiley face icon** on the right of the message, and then choose an emoji. +To add a reaction to a message, go to the message, click on the **Smiley Face** icon on the right of the message, and then choose an emoji. You can see other users’ emoji reactions beneath the message. To react with the same emoji as another user, click the emoji. You can also remove your reaction by clicking on your emoji. ## Permalink a message -Permalink a message to creates a URL directly to that message in the chat. +Permalink a message to create a URL directly to that message in the chat. Click on the **Permalink** option in the message actions menu. This copies the message into your clipboard. @@ -64,3 +64,12 @@ Use **Reply in Thread** to start a new thread underneath the original message. T Quote a message to respond to another user's message without notifying the user directly. Select **Quote** in the message actions menu. +## Message Info + +![](<../../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (27).jpg>) + +The message info shows a list of users that have read the message with a timestamp. + +{% hint style="info" %} +Message info is an enterprise feature and requires the message [read receipt](../../workspace-administration/settings/message.md#read-receipts) to be enabled by the workspace administrator. +{% endhint %} diff --git a/use-rocket.chat/user-guides/messages/off-the-record-otr-messaging-user-guide.md b/use-rocket.chat/user-guides/messages/off-the-record-otr-messaging-user-guide.md new file mode 100644 index 0000000000..994701a275 --- /dev/null +++ b/use-rocket.chat/user-guides/messages/off-the-record-otr-messaging-user-guide.md @@ -0,0 +1,54 @@ +# Off-the-record (OTR) Messaging User Guide + +{% hint style="info" %} +This feature is currently in beta. Search operations will not find encrypted messages of encrypted rooms. The mobile apps and multi-DMs may not support the encrypted messages (currently under implementation). File Uploads will not be encrypted in this version. +{% endhint %} + +Off-the-record (OTR) Messaging is a feature that allows users to exchange **temporary, encrypted messages directly between each other**. This happens by using the local, non-persistent session storage of their browser rather than storing messages on the Rocket.Chat server. After an OTR session ends and the session storage is cleared, the OTR messages are removed and can no longer be restored. + +{% hint style="success" %} +OTR messages can help exchange confidential information between users without creating a record of this exchange on the server. +{% endhint %} + +{% hint style="info" %} +In contrast to OTR, _end-to-end encrypted messages_ have a record on the server (in the form of the encrypted message string) and are persistent. +{% endhint %} + +## Getting started + +Prerequisites for using OTR are: + +* OTR has been enabled by your server administrator (if not, you will not be able to see OTR in the DM context menu) +* a direct message (DM) room with only one other participant +* you and your DM-partner have entered their [end-to-end encryption key](https://docs.rocket.chat/guides/user-guides/end-to-end-encryption) +* you and your DM-partner are both online + +## Starting an OTR Conversation + +_See the following steps with the sample users A and B._ + +_User A:_ Start the OTR conversation by clicking the DM context menu and selecting **OTR**. This will open the OTR-sidebar. + +![Selecting OTR-Panel](<../../../../.gitbook/assets/image (174).png>) + +**User A:** Start OTR. + +![Starting OTR-Chat](<../../../../.gitbook/assets/image (175).png>) + +_User B:_ Accept the OTR invitation. + +![Accepting the invitation](<../../../../.gitbook/assets/image (176).png>) + +The following messages will be subject to the OTR session and be marked by a key-icon. Unlike end-to-end encryption, this key icon is **bold**. + +![OTR messages visual display](<../../../../.gitbook/assets/image (178).png>) + +If User A or B breaks OTR (by clearing their local session storage, e.g., refreshing the web client), one of them needs to re-initiate the OTR session by clicking **Refresh Keys**. + +![Options during OTR conversation](<../../../../.gitbook/assets/image (179).png>) + +## Ending an OTR conversation + +In case User A or B wants to end the OTR session, one needs to click "End OTR". This ends the OTR session. The following messages will follow the normal configuration of the DM and be recorded on the server again. Refreshing his local session storage will make all **OTR messages disappear for the user.** + +![Ending OTR conversations](<../../../../.gitbook/assets/image (180).png>) diff --git a/use-rocket.chat/user-guides/rooms/README.md b/use-rocket.chat/user-guides/rooms/README.md new file mode 100644 index 0000000000..b48173b4d9 --- /dev/null +++ b/use-rocket.chat/user-guides/rooms/README.md @@ -0,0 +1,23 @@ +# Rooms + +Rooms provide different methods of conversations in your workspace. They allow a more structured and purpose-oriented workflow. + +{% hint style="info" %} +If you are an administrator, see the [**Room Workspace Administration**](../../workspace-administration/rooms.md)**.** +{% endhint %} + +## Types of Rooms in Rocket.Chat + +****[**Channels**](channels/)**:** Organize conversations across different topics. + +****[**Teams**](../../../guides/user-guides/rooms/teams/)**:** Promotes collaboration between different teams. + +****[**Discussions**](../../workspace-administration/settings/discussion.md): Allows a separate focused conversation around larger topics in a team or channel. + +****[**Direct Messages**](direct-messages/): Allows one-off conversations that do not require a channel or team. + +****[**Thread**](../../workspace-administration/settings/threads.md): Organized conversations around a particular message. + +## Mentions + +When someone mentions you with `@username`, `@all` or `@here`, a symbol or a number will appear alongside the channel name. If someone mentions `@all` or `@here` a number will show up showing the number of times the mention is specific to you. diff --git a/use-rocket.chat/user-guides/rooms/channels/README.md b/use-rocket.chat/user-guides/rooms/channels/README.md new file mode 100644 index 0000000000..d2852e451c --- /dev/null +++ b/use-rocket.chat/user-guides/rooms/channels/README.md @@ -0,0 +1,62 @@ +# Channels + +Channels are chat rooms with useful features designed to increase communication and collaboration. For example, you can have a dedicated channel for the designers in your workspace to discuss design-related topics. + +## Type Of Channels + +Teams can be made private or public. The list of channels is displayed on the sidebar of your workspace. **Public Channels** are listed first, followed by **private Channels**, in alphabetical order. + +### Public Channels + +**Public Channels** are **open for all members of a Rocket.Chat workspace** to join, and anything posted is searchable by all members. They are identified by: ![](../../../../.gitbook/assets/2021-12-23\_19-51-58.png) + +Channels make it easy to find out what's going on with your team. New members can join a channel and read all the information previously shared by other users. Public conversations help you build your organization's knowledge base with minimal effort. For example, create a channel for a company department or to discuss a specific programming language. + + + +{% hint style="success" %} +Users mentioned in a thread inside a **public channel** are automatically added to that channel. +{% endhint %} + +### Private Channels + +**Private Channels** are closed channels. They are only visible only to their members. Use private channels for sensitive, confidential subjects that are not open to all members. They are identified by: ![](../../../../.gitbook/assets/2021-12-23\_19-50-54.png) + +Private channels are joined through invitation only. The administrator sets the permissions that determine who can invite others to the channel. Only administrators, room owners, and moderators can invite others to private rooms by default. + +## Channel Privacy and Encryption + +### Read-Only Channels + +Only authorized users (users with write permissions) can send messages in **Read-Only** **channels**. All other users can react to messages on this channel. **Read-Only channels** are most suitable for announcements and voting. + +### Broadcast Channels + +Like read-only channels, broadcast channels allow authorized users with the appropriate permissions to write new messages while other users can reply to existing messages. + +However, it differs from read-only channels in the following ways: + +* All messages have a reply button that redirects you to the sender's direct message (DM), replying to the message as a quote. +* Users without permission won't be able to react to messages. +* Users without permission (the same one to post on read-only channels) inside this channel won't be able to see each other in the user list. + +### Encrypted Channels + +Encrypted channels have end-to-end encryption enabled across all messages exchanged by the Channel members. To learn more, see [End to End Encryption](../../security-bundle/end-to-end-encryption-user-guide.md). + +## Channel Information + +The room information screen gives detailed information about the current channel. These details include: + +* **Channel Name**: The channel's name, how users see the title and find the channel via search. +* **Topic**: The topic is displayed next to the title on the channel header. It is a great way to provide more channel information. +* **Announcement**: Announcements are highlighted in a bar under the channel header. +* **Description**: The description of the channel. +* **Private**: Tells whether a channel is private or public. +* **Read Only**: Tells whether a channel is read-only. +* **Archived**: Tells if a channel is archived. Nobody can post messages on an archived channel, and a channel search will not find that channel. +* **Password**: Tells whether a channel has a password and lets you set the password. If a channel has a password, users need to enter the password to become a channel member. + +{% hint style="warning" %} +If a [Retention Policy](../../../workspace-administration/settings/retention-policies.md) is active on this channel, a red warning box appears stating when messages or files are deleted. +{% endhint %} diff --git a/use-rocket.chat/user-guides/rooms/channels/channel-livestream.md b/use-rocket.chat/user-guides/rooms/channels/channel-livestream.md new file mode 100644 index 0000000000..b5c93d56d6 --- /dev/null +++ b/use-rocket.chat/user-guides/rooms/channels/channel-livestream.md @@ -0,0 +1,29 @@ +# Channel LiveStream + +The Streaming tab is displayed on the Channel **Options** menu if the [Youtube Livestream](../../../workspace-administration/settings/livestream-and-broadcasting.md) feature is enabled. Channel owners and workspace administrators can start streaming or add another stream to the channel by specifying a URL through the **Streaming** tab. + +{% hint style="warning" %} +You might only be able to link live broadcasts from YouTube, depending on the workspace settings. When in doubt, always ask the server administrator. +{% endhint %} + +## Start Streaming + +To start a stream, + +* Click **Livestream** from the **Options** menu. +* Add the **Livestream Source URL**. +* Click the **Broadcast my Camera** button. +* Login with a Google account. Note that streaming must be activated through your Youtube account. + +{% hint style="info" %} +See [Broadcast Livestream](../../../workspace-administration/settings/livestream-and-broadcasting.md) and [Live Stream on Youtube](https://support.google.com/youtube/answer/2474026?hl=en) to learn more about Channel LiveStream. +{% endhint %} + +* To add a different Livestream, get the URL for the stream, enter it into the **Livestream source** field, and hit save. +* Add a message whenever the stream is unavailable in the **Livestream not available message** field. + +Use the Enable audio-only button to add a stream that only contains audio. + +## Join a Live Stream + +If you are not a channel owner and a live stream is set to that channel, press **play** on the stream tab. A pop-up is displayed with the stream embedded. The pop-up does not close even if you change channels. diff --git a/use-rocket.chat/user-guides/rooms/channels/create-a-new-channel.md b/use-rocket.chat/user-guides/rooms/channels/create-a-new-channel.md new file mode 100644 index 0000000000..a5e0f486e7 --- /dev/null +++ b/use-rocket.chat/user-guides/rooms/channels/create-a-new-channel.md @@ -0,0 +1,30 @@ +# Create a new Channel + +To create a new channel, + +* On the Rocket.Chat menu bar, click the **Create New** icon, then select **Channel**. +* Give the channel a name and choose if the channel is [public ](https://docs.rocket.chat/use-rocket.chat/user-guides/rooms/channels#public-channels)or [private](https://docs.rocket.chat/use-rocket.chat/user-guides/rooms/channels#private-channels). +* Update your preferred [privacy and encryption settings](https://docs.rocket.chat/use-rocket.chat/user-guides/rooms/channels#channel-privacy-and-encryption) for the channel. +* Add members to the channel. Then, click **Create**. + +{% hint style="info" %} +Channels have restrictions in their naming. To update the regex responsible for channel name validation, navigate to **Administration** > **Settings** > **General** > **UTF8**. +{% endhint %} + +## Join a Channel + +You can join a channel through a search, invites, or mentions. Use the search box in the menu bar to search for channels and users. Alternatively, you can use `Ctrl/Cmd + k` to access the search bar quickly. + +Users and channels are displayed in the search results. However, private channels are not displayed. If you select a public channel that you are not a member of, click the **Join** button to join that channel. + +## Mark Channel as Favorite + +To help organize and prioritize your communications, you can **favorite** (or **star**) channels, private groups, and DMs. All channels marked as favorites are listed at the top of the sidebar so that it is easy to access. + +To mark a **channel** as favorite, + +* At the top of the channel page, click the **star** icon next to the channel name to mark a channel as **Favorite**. +* To remove the channel from **Favorites,** click the **star** icon again. + + + diff --git a/use-rocket.chat/user-guides/rooms/channels/edit-a-channel.md b/use-rocket.chat/user-guides/rooms/channels/edit-a-channel.md new file mode 100644 index 0000000000..801e0680e4 --- /dev/null +++ b/use-rocket.chat/user-guides/rooms/channels/edit-a-channel.md @@ -0,0 +1,68 @@ +# Edit A Channel + +To edit a public or private channel: + +* Click the **Room Information** icon from the menu bar to view the Channel information. (link channel info). +* Click **Edit** to edit the Channel information. +* Update the Channel information. +* Click **Save.** + +### Other Channel Edit Actions + +Some additional edit actions for a channel include: + +#### Password Access + +Secure a channel by setting up password access. It means users can only join the channel with a valid password. + +#### Hide System Messages + +Select the Rocket.Chat action alerts to hide. For example—"Hide User Joined messages" will hide the alert that displays in the chat whenever a new user joins the channel. + +## Hide or Leave a Channel + +* To **Hide** or **Leave** a channel, click the **three dots** icon next to the delete button on the **Channel Information** page. +* Select **Hide** or **Leave** from the dropdown options. +* To unhide a channel, you may search for it in your Rocket.Chat workspace. + +Alternatively, enter the command `/part` or `/leave` in the message input box to leave that channel. + +{% hint style="warning" %} +A channel owner can not leave a channel until they set someone else as the owner of that channel. +{% endhint %} + +## Prune Messages from a Channel + +If you are a server admin, or your admin has given you the **clean-channel-history** permission, the **prune messages** option allows you to delete messages from a channel swiftly. + +{% hint style="info" %} +_Pruned messages and files are deleted forever and cannot be recovered. You are advised to use this feature with extra caution._ +{% endhint %} + +To prune selected messages, fill in these fields: + +* **Newer than**: Deletes all messages posted **after** a particular date. +* **Older than**: Deletes all messages posted **before** a particular date. +* **Users**: Allows you to specify which user's message to delete. Add a username, and the user's messages are deleted. +* **Inclusive**: Deletes all messages that were sent at the specified start and end times you have specified in the `Newer than` and `Older than` fields. +* **Exclude pinned messages**: Do **not** delete pinned messages. +* **Only remove the attached files, keep messages**: Delete files but not the messages. + +## Channel Notifications + +You can update the notification preference for a channel you belong to. By default, a channel notifies you whenever someone mentions you or uses the `@all` mention. + +To update channel notification preferences, + +* Click the **three dots** icon at the menu bar of the channel. +* Select **Notification Preferences**. + +The notification options include the following: + +* **Turn ON**: Choose whether to receive alerts or not. +* **Mute @all and @here mentions:** Mute alerts whenever you are mentioned in the channel. +* **Mark As Unread:** Display the channel as unread when there are unread messages. +* **Audio**: Select whether the channel will play a sound whenever someone mentions you or post a message on the channel. The sound can also be customized. +* **Desktop**: Controls notification behavior when using any desktop app or browser. +* **Mobile**: Controls push notification behavior when using any mobile app. +* **Email**: Set whether an email is sent whenever someone mentions you or posts a message. diff --git a/use-rocket.chat/user-guides/rooms/channels/manage-channel-members.md b/use-rocket.chat/user-guides/rooms/channels/manage-channel-members.md new file mode 100644 index 0000000000..a2ab19ef41 --- /dev/null +++ b/use-rocket.chat/user-guides/rooms/channels/manage-channel-members.md @@ -0,0 +1,65 @@ +# Manage Channel Members + +## View Channel Members + +Channel members must have either one of these roles: Owner, Leader, Moderator, or User. Each channel member's [permission](../../../workspace-administration/permissions.md) members will depend on their role. The channel owner can manage all the channel members and assign any of these roles to them. + +To see the list of members in a Channel, + +* Click the **Members** icon at the top-right menu of the channel screen. At first, the list only shows currently active users. Select **All** from the dropdown option beside the search bar to see all users. +* Select a user to view their **User Info**. The user preview screen shows their name, username, any role tags they might have, and their current timezone. +* You can send a direct message or call the user from the user info. +* Click the **three dots** icon to see other user actions like ignore, mute user, or set roles ( as moderator, leader, or owner). + +## Add Members to Channel + +You can add members to a channel in two ways: + +* Send an Invite Link +* Manually Adding Users + +### Manually Adding Users + +You can use **the Add Users** option to add users already in your workspace. + +To add a new user, + +* At the bottom of the Channel members page, click **Add.** +* Search and select the users, then click **Add users.** + +{% hint style="warning" %} +Rocket.Chat notifies you if the user is already an existing channel member**.** +{% endhint %} + +### Send an Invite Link + +At the bottom of the channel members page, click **Invite Link** and copy the generated link to share with your invitees. + +#### Edit Invite Link + +Depending on how long you want an invite link to last, you can edit the invite link periodically. + +To generate a new link, + +* On the Invite Link page, Click **Edit Invite.** +* Select **Expiration (Days)** from the drop-down, select **Max number of uses,** and click **Generate New Link.** + +{% hint style="info" %} +This link will ask the invitee to sign up if they are outside your Rocket.Chat workspace before granting them access to the channel. +{% endhint %} + +#### Delete Invite Link + +\ +To delete an invite link, see [Delete an Invite Record via Admin Panel](https://docs.rocket.chat/guides/administration/admin-panel/invites#delete-a-record). This feature comes in handy when you have an invite link with an **Expiration date: Never**. To avoid abuse, you can revoke it by deleting the invite record. + +{% hint style="warning" %} +You must have the **Create Invite Link** [permission](../../../workspace-administration/permissions.md) granted for your role to use the [permission](../../../workspace-administration/permissions.md). It is turned **ON** for the Admin, Owner, and Moderator roles. However, you can always ask the workspace administrator to update it to suit your needs. +{% endhint %} + +## Remove a member from the Team + +By default, only the channel owner can remove a team member. Although, other users with appropriate [permissions ](../../../workspace-administration/permissions.md)can also remove a team member. + +* In the Channel members screen, search and select the user to view their **User Info**. +* Click the **three dots** icon, then select **Remove from room.** diff --git a/use-rocket.chat/user-guides/rooms/channels/search-messages-in-a-channel.md b/use-rocket.chat/user-guides/rooms/channels/search-messages-in-a-channel.md new file mode 100644 index 0000000000..1303cbf4fa --- /dev/null +++ b/use-rocket.chat/user-guides/rooms/channels/search-messages-in-a-channel.md @@ -0,0 +1,29 @@ +# Search Messages in a Channel + +Rocket.Chat search supports basic search commands, including the use of [regular expressions](https://en.wikipedia.org/wiki/Regular\_expression). Regular expressions provide flexibility to search chat entries in any language, even those traditionally challenging, like "CJK" languages (Chinese, Japanese, Korean). + +## Basic Search Commands + +You can use the following commands before or after entering search terms in a channel: + +* `from:me` - To search for messages only created by the current user. +* `from:user.name` - To search for messages created by a specific user. The username entered must be without spaces (i.e., "john.doe" and not "John Doe."). Search for any mentions of a user by searching for their username. +* `has:star` - Returns messages that the current user has starred. +* `is:pinned` or `has:pin` - Returns messages that have been pinned. +* `has:url` or `has:link` - Returns messages that contain a link. +* `has:location` or `has:map` - Returns messages that have a location attached. +* `before:dd/mm/yyyy`, `after:dd/mm/yyyy` and `on:dd/mm/yyyy` - Return message created before, after, or on the provided date. Dashes `dd-mm-yyyy` or dots `dd.mm.yyyy` can be used instead of slashes. +* `order:asc`, `order:ascend`, or `order:ascending` -Sorts messages by ascending timestamp. +* `order:desc`, `order:descend`, or `order:descending` - Sorts messages by descending timestamp. + +Select the **Options** icon of a message in the search result and click **Jump to message** to take you directly to the message. + +{% hint style="warning" %} +Refer to these resources to learn more about regex(regular expressions). + +* [Wikipedia ](https://en.wikipedia.org/wiki/Regular\_expression) +* [Regex 101](https://regex101.com/#javascript) +* [Regexr ](http://regexr.com/) +* [Regex Info](http://www.regular-expressions.info/javascriptexample.html) +{% endhint %} + diff --git a/use-rocket.chat/user-guides/rooms/direct-messages/README.md b/use-rocket.chat/user-guides/rooms/direct-messages/README.md new file mode 100644 index 0000000000..168fd63462 --- /dev/null +++ b/use-rocket.chat/user-guides/rooms/direct-messages/README.md @@ -0,0 +1,15 @@ +--- +description: One on one or one to many conversation +--- + +# Direct Messages + +In Rocket.Chat, you can have one-on-one conversations or one-to-many conversations with users in your workspace. They are called **Direct Messages(DMs).** Your most recent DMs are default listed under the **Direct Messages** section in your Rocket.Chat sidebar. They are identified by **** ![](<../../../../.gitbook/assets/direct-message icon.png>). + +## Types Of Direct Messages + +There are two types of DMs named **1:1 Direct Message** and **1:M Direct Message**. + +**Direct messages (DMs)** are private one-on-one conversations between members of your workspace. You can create a direct message(DM) with another user on the same workspace (or a different workspace, thanks to Rocket.Chat [Federation](../../../rocket.chat-workspace-administration/settings/federation/)) to communicate and share files privately. It exists between just two users, and no other user can join. + +**Direct Messages Between Multiple Users** allows you to chat with multiple users inside a DM. You can create direct message rooms between several users to exchange messages and files. Unlike [private channels](../channels/#private-channels), you do not need to specify the name, topic, or if the room is read-only. It works exactly like a 1:1 DM, the only difference is that multiple users are involved. diff --git a/use-rocket.chat/user-guides/rooms/direct-messages/create-a-new-direct-message.md b/use-rocket.chat/user-guides/rooms/direct-messages/create-a-new-direct-message.md new file mode 100644 index 0000000000..ff05607c72 --- /dev/null +++ b/use-rocket.chat/user-guides/rooms/direct-messages/create-a-new-direct-message.md @@ -0,0 +1,52 @@ +# Create a new Direct Message + +## Create a new Direct Message (1:1) + +You can start a 1:1 DM with another user from any room in your workspace when you open their profile and click the **Direct Message** button. You can also create a DM from the menu bar. + +### Create a Direct Message from Menu Bar + +To create a direct message from the menu bar, + +* On the Rocket.Chat menu bar, click the **Create New** icon, then select **Direct Message**. +* Select the user you want to start a DM with. Then, click **Create.** +* A new direct message is opened with the user, and you can now communicate privately. + +### Creating a Direct Message from a Room + +You can open a 1:1 **DM** with a user if you are in the same room as them by following these steps: + +* Click the **Members** icon at the top-right menu of the room screen. At first, the list only shows currently active users. Select **All** from the dropdown option beside the search bar to see all users. +* Select the user you want to start a **DM** with. Click on the **Direct Message** button below their avatar, and a direct message is opened for you and that user. + +## Create a new multi-user Direct Message (1:M) + +To create a 1:M direct message, + +* On the Rocket.Chat menu bar, click the **Create New** icon, then select **Direct Message**. +* Select the users you want to start a DM with. Then, click **Create.** +* A new direct message is opened with the users, and you can now communicate with all of them in a DM. + +{% hint style="info" %} +You can not ignore, block, mute, or remove a user for multi-user DMs. Although, you can start a call or start a 1:1 DM with them. +{% endhint %} + +Here are some important features to note about a multi-user DM: + +* You can't create a multi-user DM with the same user combination. +* Once a DM is created, the membership can't be updated. So, you can't add or remove members to the DM. +* No one is the owner, unlike [channels](../channels/). +* The DM can not be deleted. You can only hide the conversation. + +{% hint style="info" %} +We recommend a maximum of 8 users in a DM. However, contact your workspace administrator if you need to update it to suit your needs. +{% endhint %} + +## Mark Direct Message as Favorite + + All DMs marked as favorites are listed at the top of the sidebar so that it is easy to access. + +To mark a **DM** as favorite, + +* At the top of the DM screen, click the **star** icon next to the DM header to mark it as **Favorite**. +* To remove the DM from **Favorites,** click the **star** icon again. diff --git a/use-rocket.chat/user-guides/rooms/direct-messages/direct-message-actions.md b/use-rocket.chat/user-guides/rooms/direct-messages/direct-message-actions.md new file mode 100644 index 0000000000..157ef2d211 --- /dev/null +++ b/use-rocket.chat/user-guides/rooms/direct-messages/direct-message-actions.md @@ -0,0 +1,133 @@ +# Direct Message Actions + +From the menu bar of your DM screen, you can view a list of discussions, threads, files exchanged, and pinned messages. You can also search for messages using the [basic search commands](../discussions/search-messages-in-discussion.md#basic-search-commands). + +## Discussions in Direct Message + +Use discussions in direct messages to group topic-related conversations. + +### Create a Discussion in a Direct Message + +To create a **Discussion** in any direct message, + +* Click **the three-dot icon** when you hover over an existing message in the chat. +* Click **Start a Discussion.** + +### View Discussions in Direct Messages + +To view and interact with your discussions in a direct message, + +* Click on the **discussion icon** at the top right menu of the opened direct message. +* When opened, a list of all the discussions in that direct message room is seen. + +## Threads in Direct Message + +Threads in direct messages can be used to streamline the conversations. + +### Create Threads in Direct Message + +To create a thread in any direct message, + +* Click the **three-dot icon** when you hover over an existing message in the chat. +* Select **Reply in Threads.** + +### View Threads in Direct Message + +To view and interact with your threads in a direct message, + +* Click on the **Threads** icon at the top right menu of the opened direct message. +* When opened, a list of all the threads in that direct message room is seen. + +## Block user in Direct Message + +You can block any user from sending you direct messages. + +To block a user from sending DMs**,** + +* From a DM, Click the **User Info** of the member you want to block. +* Then, click on **Block.** + +{% hint style="danger" %} +Blocked users will not be able to send you direct messages unless they are unblocked. +{% endhint %} + +After blocking a user, the room will indicate blocked too. + +## Direct Messages Notifications + +You can update the notification preference for a DM you belong to. By default, you are notified of every DM you get. + +To update DM notification preferences, + +* Click the **notification** icon at the menu bar of the DM. + +The notification options include the following, + +* **Turn ON**: When set to true, enables all notification alerts for the DMs. +* **Mute @all and @here mentions:** When enabled, the notifications will not be received for `@ll` and `@here` mentions. +* **Audio**: Select whether the DM will play a sound whenever someone mentions you or send a new message. The sound can also be customized. +* **Desktop**: Controls notification behavior when using any desktop app or browser. Select the type of messages you want to receive desktop alerts for. +* **Mobile**: Controls push notification behavior when using any mobile app. Select the type of messages you want to receive push notifications for. +* **Email**: Set whether an email is sent whenever someone mentions you or posts a message. Select the type of messages you want to receive email alerts for. + +## Prune Messages from Direct Message + +If you are a server admin, or your admin has given you the **clean-channel-history** permission, the **prune messages** option allows you to delete messages from a DM swiftly. + +{% hint style="info" %} +_Pruned messages and files are deleted forever and cannot be recovered. You are advised to use this feature with extra caution._ +{% endhint %} + +To prune selected messages, fill in these fields: + +* **Newer Than**: Deletes all messages posted **after** a particular date. +* **Older than**: Deletes all messages posted **before** a particular date. +* **Users**: Allows you to specify which user's message to delete. Add a username, and the user's messages are deleted. +* **Inclusive**: Deletes all messages that were sent at the specified start and end times you have specified in the `Newer than` and `Older than` fields. +* **Exclude pinned messages**: Do **not** delete pinned messages. +* **Only remove the attached files, keep messages**: Delete files but not the messages. + +## Export Messages in a Direct Message + +You can export an entire conversation from either 1:1 DMs or 1:M DMs. You can export messages via email or as a file. + +To export messages, + +* Click on the **three-dot** icon of the **DM** menu bar and select **Export Messages.** +* Select the **export method** and update the required fields. Then, click **Export**. + +### Exporting Messages via email + +* **Method**: A dropdown to select what method the export should be done. Select **Send via Email**. +* **To Users**: Select the users to send the export email. +* **To additional emails**: Add any additional email to send the export mail. +* **Subject**: The subject of the email + +### Exporting Messages as File + +* **Method**: A dropdown to select what method the export should be done. Select **Export as File**. +* **From**: The start date of the export, +* **To**: The last date of the export. +* **Output Format**: A dropdown to select between `html` and `JSON` file format. + +{% hint style="info" %} +When exporting via email, you need to select the messages to be exported. However, when exporting as a file, you only need to specify start and end export dates. +{% endhint %} + +## Star Messages in Direct Message + +You can star important messages always to be able to come back to them. Starred messages are identified by a small star ⭐ by the side. + +To star a message, + +* Click the **three-dot icon** when you hover over the message. Then, select **Star.** + +To un-star a message, + +* Click the **three-dot icon** when you hover over the message. Then, select Remove S**tar.** + +To view all stared messages, + +* Click on the **three-dot** icon of the **DM** menu bar and select **Starred Messages.** A list of all stared messages are displayed. + +## diff --git a/use-rocket.chat/user-guides/rooms/discussions/README.md b/use-rocket.chat/user-guides/rooms/discussions/README.md new file mode 100644 index 0000000000..8b5a1f3cc9 --- /dev/null +++ b/use-rocket.chat/user-guides/rooms/discussions/README.md @@ -0,0 +1,22 @@ +# Discussions + +Rocket.Chat discussions allow you to have a separate conversation about larger topics in a [team](../../../../guides/user-guides/rooms/teams/) or [channel](../channels/). Use discussions to address specific topics and their related conversations. They are displayed under the **Discussions** section of the sidebar. They are identified by ![](../../../../.gitbook/assets/discussion-icon.png). + +{% hint style="info" %} +Discussions must belong to a parent [team ](../../../../guides/user-guides/rooms/teams/)or [channel](../channels/). +{% endhint %} + +For example, you have an **Engineering-Team** in your workspace and created a channel under that team called **Website-Development-Channel.** Let's break down the conversations about each feature of the website into discussions. Now, you can have a **Website-Landing-Page** discussion where all the conversations about the landing page occur. + +## Discussion Information + +The room information screen gives detailed information about the current discussion. These details include: + +* **Name:** The name of the discussion, how users see the title and find the discussion via search. +* **Description**: The description of the discussion. +* **Announcement**: Announcements post in a bar under the discussion header. +* **Topic**: The topic here is next to the channel header's title. It shows which channel or group the discussion is linked to. +* **Private**: When enabled, makes the discussion private. +* **Read Only**: Tells whether a discussion is read-only and toggles the read-only status on the discussion. In read-only discussions, only people with admin permissions can post messages. +* **Archived**: Enable to archive a discussion. Nobody can post messages in an archived discussion, and searching will not find the discussion. +* **Password**: Tells whether a discussion is protected with a password. The password is required before joining the discussion. diff --git a/use-rocket.chat/user-guides/rooms/discussions/create-a-new-discussion.md b/use-rocket.chat/user-guides/rooms/discussions/create-a-new-discussion.md new file mode 100644 index 0000000000..1257875468 --- /dev/null +++ b/use-rocket.chat/user-guides/rooms/discussions/create-a-new-discussion.md @@ -0,0 +1,21 @@ +# Create a new Discussion + +To create a new discussion, + +* On the Rocket.Chat menu bar, click the **Create New** icon, then select **Discussion**. +* Select the parent team or channel. +* Fill in the discussion name and message, set the encryption, and invite members. +* Then, click **Create**. + +{% hint style="success" %} +When a discussion is created, anyone from that channel or team can join the discussion. +{% endhint %} + +## **Mark Discussion as Favorite** + +All discussions marked as favorites are listed at the top of the sidebar so that it is easy to access. + +To mark a discussion as favorite, + +* At the top of the discussion screen, click the **star** icon next to the discussion name to mark that discussion as **Favorite**. +* To remove a discussion from **Favorites,** click the **star** icon again. diff --git a/use-rocket.chat/user-guides/rooms/discussions/edit-a-discussion.md b/use-rocket.chat/user-guides/rooms/discussions/edit-a-discussion.md new file mode 100644 index 0000000000..1dcd9facfe --- /dev/null +++ b/use-rocket.chat/user-guides/rooms/discussions/edit-a-discussion.md @@ -0,0 +1,42 @@ +# Edit A Discussion + +To edit a discussion, + +* Click the **Room Information** icon from the top-right menu to view **Discussion Information**. +* Click **Edit** to edit the Room information. +* Update the required details. +* Click **Save.** + +## Prune Messages from a Discussion + +If you are a server admin, or your admin has given you the **clean-discussion-history** [permission](../../../workspace-administration/permissions.md), the **prune messages** option allows you to delete messages from a discussion swiftly. + +{% hint style="info" %} +_Pruned messages and files are deleted forever and cannot be recovered. You are advised to use this feature with extra caution._ +{% endhint %} + +To prune selected messages, fill in these fields: + +* **Newer than**: Deletes all messages posted **after** a particular date. +* **Older than**: Deletes all messages posted **before** a particular date. +* **Users**: Allows you to specify which user's message to delete. Add a username, and the user's messages are deleted. +* **Inclusive**: Deletes all messages that were sent at the specified start and end times you have specified in the `Newer than` and `Older than` fields. +* **Exclude pinned messages**: Do **not** delete pinned messages. +* **Only remove the attached files, keep messages**: Delete files but not the messages. + +## Discussion Notifications + +You can update the notification preference for a discussion you belong to. By default, a discussion notifies you whenever someone mentions you or uses the `@all` mention. + +To update discussion notification preferences, + +* Click the **notification** icon at the menu bar of the discussion. + +The notification options include the following, + +* **Turn ON**: When set to true, enables all notification alerts for the discussion. +* **Mute @all and @here mentions:** When enabled, the notifications will not be received for `@ll` and `@here` mentions. +* **Audio**: Select whether the discussion will play a sound whenever someone mentions you or post a message on the discussion. The sound can also be customized. +* **Desktop**: Controls notification behavior when using any desktop app or browser. Select the type of messages you want to receive desktop alerts for. +* **Mobile**: Controls push notification behavior when using any mobile app. Select the type of messages you want to receive push notifications for. +* **Email**: Set whether an email is sent whenever someone mentions you or posts a message. Select the type of messages you want to receive email alerts for. diff --git a/use-rocket.chat/user-guides/rooms/discussions/manage-discussion-members.md b/use-rocket.chat/user-guides/rooms/discussions/manage-discussion-members.md new file mode 100644 index 0000000000..8bdfbe806f --- /dev/null +++ b/use-rocket.chat/user-guides/rooms/discussions/manage-discussion-members.md @@ -0,0 +1,58 @@ +# Manage Discussion Members + +## View Discussion Members + +Discussion members must have either one of these roles: Owner, Leader, Moderator, or User. Each discussion member's [permission](../../../workspace-administration/permissions.md) members will depend on their role. The discussion owner can manage all the members and assign any of these roles to them. + +To see the list of members in a Discussion, + +* Click the **Members** icon at the top-right menu of the discussion screen. At first, the list only shows currently active users. Select **All** from the dropdown option beside the search bar to see all users. +* Select a user to view their **User Info**. The user preview screen shows their name, username, any role tags they might have, and their current timezone. +* You can send a direct message or call the user from the user info. +* Click the **three dots** icon to see other user actions like ignore, mute user, or set roles ( as moderator, leader, or owner). + +## Add Members to Discussion + +You can add members to a discussion in two ways: + +* Manually Adding Users +* Send an Invite Link + +### Manually Adding Users + +You can use **the Add Users** option to add users who are already in your workspace. + +To add a new user, + +* At the bottom of the **Discussion** members tab, click **Add.** +* Search and select the users, then click **Add users.** + +{% hint style="warning" %} +Rocket.Chat notifies you if the user is already an existing discussion member**.** +{% endhint %} + +### Send an Invite Link + +At the bottom of the Discussion members tab, click **Invite Link** and copy the generated link to share with your invitees. + +#### Edit Invite Link + +Depending on how long you want an invite link to last, you can edit the invite link periodically. + +To generate a new link, + +* On the Invite Link page, Click **Edit Invite.** +* Select **Expiration (Days)** from the drop-down, select **Max number of uses** and click **Generate New Link.** + +{% hint style="info" %} +This link will ask the invitee to sign up if they are outside your Rocket.Chat workspace before granting them access to the discussion. +{% endhint %} + +#### Delete Invite Link + +\ +To delete an invite link, see [Delete an Invite Record via Admin Panel](https://docs.rocket.chat/guides/administration/admin-panel/invites#delete-a-record). This feature comes in handy when you have an invite link with an **Expiration date: Never**. To avoid abuse, you can revoke it by deleting the invite record. + +{% hint style="warning" %} +You must have the **Create Invite Link** [permission](../../../workspace-administration/permissions.md) granted for your role to use the [permission](../../../workspace-administration/permissions.md). It is turned **ON** for the Admin, Owner, and Moderator roles. However, you can always ask the workspace administrator to update it to suit your needs. +{% endhint %} diff --git a/use-rocket.chat/user-guides/rooms/discussions/search-messages-in-discussion.md b/use-rocket.chat/user-guides/rooms/discussions/search-messages-in-discussion.md new file mode 100644 index 0000000000..b4603544df --- /dev/null +++ b/use-rocket.chat/user-guides/rooms/discussions/search-messages-in-discussion.md @@ -0,0 +1,18 @@ +# Search Messages in Discussion + +Rocket.Chat search supports basic search commands, including the use of [regular expressions](https://en.wikipedia.org/wiki/Regular\_expression). Regular expressions provide flexibility to search chat entries in any language, even those traditionally challenging, like "CJK" languages (Chinese, Japanese, Korean). + +## Basic Search Commands + +You can use the following commands before or after entering search terms in a discussion: + +* `from:me` - To search for messages only created by the current user. +* `from:user.name -` To search for messages created by a specific user. The username entered must be the format without spaces (i.e., "john.doe" and not "John Doe.") Search for any mentions of a user by searching for their username. +* `has:star` - Returns messages that the current user stars. +* `is:pinned` or `has:pin`- Returns messages that pin in the current discussion. +* `has:url` or `has:link` - Returns messages that contain a link. +* `has:location` or `has:map` -Returns messages that have a location attached. +* `before:dd/mm/yyyy`, `after:dd/mm/yyyy` and `on:dd/mm/yyyy` - Return message created before, after, or on the provided date. Dashes `dd-mm-yyyy` or dots `dd.mm.yyyy` can be used instead of slashes. +* `order:desc`, `order:descend`, or `order:descending` - Sorts messages by descending timestamp. + + You can also jump to where a message is located by hovering the mouse over the search result and selecting `jump to message.` diff --git a/use-rocket.chat/user-guides/rooms/teams/edit-a-team.md b/use-rocket.chat/user-guides/rooms/teams/edit-a-team.md new file mode 100644 index 0000000000..c84f310df3 --- /dev/null +++ b/use-rocket.chat/user-guides/rooms/teams/edit-a-team.md @@ -0,0 +1,60 @@ +# Edit a Team + +To edit a [public or private](../../../../guides/user-guides/rooms/teams/) team: + +* From the top-right menu, Click **Team Information** icon to view Team information. +* Click **Edit** to edit the Team information. +* Update the Team information. +* Click **Save.** + +### Other Team Edit Actions + +Some additional edit actions for a team include: + +#### **Password Access** + +Secure a team by setting up password access. It means users can only join the team with a valid password. + +#### **Hide System Messages** + +Select the Rocket.Chat action alerts to hide. For example—"Hide User Joined messages" will hide the alert that shows up in the chat whenever a new user joins the team. + +#### **Allow Reacting** + +Select the options to allow authorized team members to react to messages in the team. + +{% hint style="warning" %} +The delete and reset option is also available when editing a Team. +{% endhint %} + +## Hide or Leave a Team + +* To **Hide** or **Leave** a team, click the **three dots** icon next to the delete button in the Team Information page. +* Select **Hide** or **Leave** from the dropdown options. +* To unhide a team, you may search for it in your Rocket.Chat workspace. + +{% hint style="info" %} +When leaving a team, you have the option to decide if you want to continue in the **Team** channels or not. +{% endhint %} + +## Delete A Team + +Once you delete a team, the associated chat content and configurations will also be deleted. You also have the option to keep or delete team channels. If you delete a team and decide to keep the channels, those will go to the workspace. A team can only be deleted by the team owner. + +* Click the **Team Information** icon, then click **Delete** next to **Edit.** + +{% hint style="danger" %} +hinThis action can not be undone. +{% endhint %} + +## Archive A Team + +When a team is archived, it is converted to read-only and is no longer open to any new activity. However, the message history is still accessible. A team can only be archived by the team owner. + +* From the top-right menu, Click **Team Information** icon to view Team information. +* Click **Edit** to edit the Team information. +* Toggle on the **Archive** option. + +{% hint style="info" %} +To unarchive a team, toggle off the **Archive** option. +{% endhint %} diff --git a/use-rocket.chat/user-guides/rooms/teams/manage-team-channels.md b/use-rocket.chat/user-guides/rooms/teams/manage-team-channels.md new file mode 100644 index 0000000000..0628890a32 --- /dev/null +++ b/use-rocket.chat/user-guides/rooms/teams/manage-team-channels.md @@ -0,0 +1,100 @@ +--- +description: A team may contain one or more channel(s). +--- + +# Manage Team Channels + +Here are some essential details to know about **Team Channels**. + +* Teams may have their own [channels](https://docs.rocket.chat/guides/user-guides/rooms/channels), but not all channels belong to a team. +* Teams can have both [public channels](https://docs.rocket.chat/guides/user-guides/rooms/channels#public-channels) and [private channels](https://docs.rocket.chat/guides/user-guides/rooms/channels#private-channels). +* Teams can have [Auto-join channels](broken-reference) where members are automatically added to, upon joining the team. +* It is possible to add all team members to a channel +* It’s possible to add users outside the team to the team’s channels + +{% hint style="info" %} +A team can have a maximum of 100 channels. +{% endhint %} + +## **View List of Team Channels** + +* To see the list of channels in a Team, click the **Team Channels** icon at the top-right side of the team home page. + +## Create a new Channel for a Team + +As a team owner, you can create new channels for the team. + +To create a new Team Channel: + +* Click the **Team Channels** icon at the top-right side of the team home page. +* Select **Create New** at the bottom of the Team Channels page**.** +* Name the channel, add a topic, set it as private/public, and complete other basic channel settings. +* Finally, add members from the drop-down and click **Create**. + +## Add an existing channel to a team + +To add an existing channel to a team, you must be the channel owner or have [appropriate permissions](../../../workspace-administration/permissions.md) in the team to add an existing channel. + +When adding a channel to a team, the team owner gains rights over the channel (e.g., The team owner can delete the channel). + +* Click the **Team Channels** icon at the top-right side of the team home page. +* Click **Add Existing** at the bottom of the Team Channels page. +* Search and select the channels you'll like to add to the team. +* Click **Add**. + +## Team Auto-Join Channels + +Teams can have Auto-join channels—channels where team members are added automatically. It reduces extra work with handling users and the channels they must belong to. It’s also handy for onboarding teams with many different channels. + +For instance, you can use Auto-join to quickly include new members joining the company to specific onboarding channels. You could set Auto-join to automatically include team members in company-related channels, such as channels meant to share updates and company news. You can mark a channel **Auto-join** for members to join them automatically once they join a team. + +Mark a channel as **Auto-join** by following the steps below. + +* Click the Team Channels icon to view the list of channels in the team. +* Select the **three dots** icon beside the channel name. +* Mark the **Auto-join** checkbox. + +{% hint style="info" %} +To remove a channel from Auto-join, unmark the **Auto-join** checkbox. +{% endhint %} + +## Remove a Channel from a Team + +As a team owner, you can remove channels from a Team. After a channel is removed from the team, it moves to the workspace. + +If the channel were a public channel inside a private team, the channel would become public in the workspace after removal from the team. + +**Remove** a channel from the Team by following the steps below. + +* Click the Team Channels icon to view the list of channels in the team. +* Select the **three dots** icon beside the channel name. +* Then, select **Remove from Team.** + +## Delete a Team Channel + +As a team owner, you can delete channels in your workspace from the team. + +{% hint style="warning" %} +This decision can't be reversed! Therefore, please exercise extreme caution while converting a channel into a team. +{% endhint %} + +**Delete** a Team Channel by following the steps below. + +* Click the **Team Channels** icon to view the list of channels in the team. +* Select the **three dots** icon beside the channel name. +* Then, select **Remove from Team.** + +A channel owner can transform an existing channel into a team anytime. The channel must belong to the workspace rather than already in a team. Otherwise, the option to transform into a team is not available. + +A private channel converts to a private team, and a public channel converts to a public team. + +{% hint style="warning" %} +This decision can't be reversed! Therefore, please exercise extreme caution while converting a channel into a team. +{% endhint %} + +## Transforming a Channel into a team + +To transform a channel into a team, + +* Click the **Room Information** icon at the top-right side of the channel home page. +* Click the **three dots** icon next to **Delete**, then select **Convert to Team** diff --git a/use-rocket.chat/user-guides/rooms/teams/manage-team-members.md b/use-rocket.chat/user-guides/rooms/teams/manage-team-members.md new file mode 100644 index 0000000000..2e5c7e1a7f --- /dev/null +++ b/use-rocket.chat/user-guides/rooms/teams/manage-team-members.md @@ -0,0 +1,51 @@ +# Manage Team Members + +Team members must have either one of these roles: Owner, Leader, Moderator, or User. Each team member's [permission](../../../workspace-administration/permissions.md) members will depend on their role. The team owner can manage all the team members and assign any of these roles to them. + +## View Team Members + +To see the list of members in a Team, + +* Click the **Team Members** icon at the top-right menu of the team screen. +* Select a user to view their **User Info**. +* You can send a direct message or call the user from the user info. +* Click the **three dots** icon to see other user actions like ignore, mute user, or set roles ( as moderator, leader, or owner). + +## Add Members to Team + +You can add members to a team in two ways: + +* Send an Invite Link +* Manually Adding Users + +### Send an Invite Link + +At the bottom of the team members page, click **Invite Link** and copy the generated link to send to whomever you invite. + +#### Edit Invite Link + +Depending on how long you want an invite link to last, you can edit the invite link periodically. + +* On the Invite Link page, Click **Edit Invite.** +* Select **Expiration (Days)** from the drop-down, select **Max number of uses, and** click **Generate New Link.** + +#### Delete Invite Link + +\ +To delete an invite link, see [Delete an Invite Record via Admin Panel](https://docs.rocket.chat/guides/administration/admin-panel/invites#delete-a-record). This feature comes in handy when you have an invite link with an **Expiration date: Never**. To avoid abuse, you can revoke it by deleting the invite record. + +### Manually Adding Users + +* At the bottom of the Team members page, click **Add.** +* Search and select the users, then click **Add users.** + +{% hint style="warning" %} +Rocket.Chat notifies you if the user is already an existing team member**.** +{% endhint %} + +## Remove a member from the Team + +By default, only the team owner can remove a team member. Although, other users with appropriate permissions can also remove a team member. + +* In the Team members screen, search and select the user to view their **User Info**. +* Click the **three dots** icon, then select **Remove from team.** diff --git a/use-rocket.chat/user-guides/rooms/threads/README.md b/use-rocket.chat/user-guides/rooms/threads/README.md new file mode 100644 index 0000000000..dc10cee019 --- /dev/null +++ b/use-rocket.chat/user-guides/rooms/threads/README.md @@ -0,0 +1,27 @@ +# Threads + +**Threads** help to organize conversations and enable users to discuss topics without disorganizing a [room](../). They improve the ability to process room content, find, follow, and resume conversations more efficiently, keeping threaded discussions focused. Threads are a series of replies or follow-up conversations under any message in a [Team](../../../../guides/user-guides/rooms/teams/), [Channels](../channels/), [Discussion](../../../workspace-administration/settings/discussion.md), or [Direct Message](../../../workspace-administration/settings/discussion.md). They are identified by: + +## View Threads in a Room + +To view the list of all threads in a room, click the **thread icon** in that room header. + +## Expand and Follow a Thread + +Since threads appear by the side of any room it was created in, you can expand the thread to occupy much space. + +To **expand** a thread, + +* Click on the **expand icon** on the thread header. + +To **collapse** a thread, + +* Click the **collapse icon** on the thread header. + +## Following a Thread + +You can follow and unfollow threads to get notifications on any messages sent under that thread. By default, you automatically follow any thread you belong to. + +To **follow** or **unfollow** a thread, + +* Click on the **bell icon** on the thread header. diff --git a/use-rocket.chat/user-guides/rooms/threads/create-a-new-thread.md b/use-rocket.chat/user-guides/rooms/threads/create-a-new-thread.md new file mode 100644 index 0000000000..07becbfe4a --- /dev/null +++ b/use-rocket.chat/user-guides/rooms/threads/create-a-new-thread.md @@ -0,0 +1,19 @@ +# Create a New Thread + +To create a thread, + +* Hover over the message you'd like to reply to. +* Click the **three dots icon.** +* Select **Reply in thread**. +* Type your reply. Check the **Also send to channel** box below your message if you want to send your response back to the channel. +* Click **Send**. + +{% hint style="info" %} +You can also click the **thread icon** to create a thread when you hover over a message. +{% endhint %} + +## Close Threads + +To close a thread, + +* Click the **** ![](../../../../.gitbook/assets/thread-close-icon.png)**close icon** on the thread header. diff --git a/use-rocket.chat/user-guides/security-bundle/README.md b/use-rocket.chat/user-guides/security-bundle/README.md new file mode 100644 index 0000000000..e9403e6e5a --- /dev/null +++ b/use-rocket.chat/user-guides/security-bundle/README.md @@ -0,0 +1,15 @@ +# Security Bundle + +Rocket.Chat Security Bundle is a set of security-focused features and tools aimed at providing enhanced security for your Rocket.Chat workspace and users. + +These features are intended to help organizations prevent unauthorized access to sensitive data, protect against data breaches and other security threats, and provide greater visibility into their security posture, thereby meeting their security and compliance requirements. + +The Rocket.Chat Security Bundle includes the following features and tools: + +****[**Data Loss Prevention(DLP) app**](data-loss-prevention-user-guide.md): Manage the sharing of sensitive data on your workspace. + +****[**Open-source Antivirus app**](antivirus-clamav-app.md): Secure file sharing within your workspace. + +****[**E2E Encryption**](end-to-end-encryption-user-guide.md): Secure the confidentiality of your communication with encryption. + +****[**Two Factor Authentication(2FA)**](two-factor-authentication-user-guide.md): Enforce authentication and account access with 2FA. diff --git a/use-rocket.chat/user-guides/security-bundle/antivirus-clamav-app.md b/use-rocket.chat/user-guides/security-bundle/antivirus-clamav-app.md new file mode 100644 index 0000000000..f2a73c7b48 --- /dev/null +++ b/use-rocket.chat/user-guides/security-bundle/antivirus-clamav-app.md @@ -0,0 +1,36 @@ +--- +description: >- + This app enables forwarding uploaded files to an open-source antivirus + (ClamAV) application and prevents the upload from completing in Rocket.Chat in + case of virus. +--- + +# Antivirus ClamAV App + +The ClamAV app is a simple integration with the ClamAV server, which is the antivirus. You have to install and run the ClamAV server, and then the ClamAV app connects to it. + +Please visit the ClamAV [documentation](https://www.clamav.net/documents/clam-antivirus-user-manual) for details on installing and running the server. + +This app enables forwarding uploaded files to an open-source antivirus (ClamAV) application and prevents the upload from completing in Rocket.Chat if a virus is detected. It works across web browsers, desktop apps, and mobile apps Use it to prevent users from spreading viruses and malware via Rocket.Chat ClamAV is an open-source (GPL) antivirus engine used in various situations, including email scanning, web scanning, and endpoint security. It provides several utilities, including a flexible and scalable multi-threaded daemon, a command-line scanner, and an advanced tool for automatic database updates. + +## Installing the ClamAV Integration + +To use the ClamAV app, it needs to be installed by the administrator of your workspace.\ +This can be done by + +* Open up your Rocket.Chat workspace +* Navigate to **Administration** > **Workspace** > **Apps** +* Search for ClamAV Integration +* Click and open the result, this shows you details about the app +* Hit **Install** to install the app +* Hit **Install** to install the app + +## Configure ClamAV Integration + +After installing the app, follow these instructions to set it up. + +* Open the ClamAV Integration app details page +* Switch to the **Settings** tab +* Configure the following settings as needed + * **ClamAV Server Host**: The ClamAV Server Host (where your ClamAV server is hosted) + * **ClamAV Server Port**: The port for your ClamAV server. diff --git a/use-rocket.chat/user-guides/security-bundle/data-loss-prevention-user-guide.md b/use-rocket.chat/user-guides/security-bundle/data-loss-prevention-user-guide.md new file mode 100644 index 0000000000..305ba71551 --- /dev/null +++ b/use-rocket.chat/user-guides/security-bundle/data-loss-prevention-user-guide.md @@ -0,0 +1,40 @@ +# Data Loss Prevention User Guide + +
+ +Data loss prevention (DLP), in its simplest terms, is a security mechanism that helps to ensure that sensitive data is not unduly shared, misused, lost, or accessed by unauthorized users. + +Rocket.Chat's DLP App includes several controls to prevent data loss, such as restricting access to sensitive information, monitoring data transfers, and detecting and blocking potentially dangerous activities. + +If there is any Rocket.Chat [Room](../rooms/), where sensitive information like credit card details, phone numbers, and IP addresses is being exchanged between users, you can prevent or restrict the sharing of this sensitive information using the DLP app. + +To get the DLP app functioning on your workspace, you need the workspace administrator to install and configure the app from the [Rocket.Chat marketplace](../../../extend-rocket.chat-capabilities/rocket.chat-marketplace/). + +That can be done following this guide. + +{% content-ref url="../../../extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/data-loss-prevention-dlp-app.md" %} +[data-loss-prevention-dlp-app.md](../../../extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/data-loss-prevention-dlp-app.md) +{% endcontent-ref %} + +## Data Loss Prevention App in Action + +With the app installed and fully configured, the defined rulesets now take effect. + +Say, for example, a user wants to share credit card details with a room or with another user, + +* The DLP app picks up this message and replaces the sensitive data with `###.` Clicking on **More info** gives more details about the message and its current status. + +

Sensitive message sent

+ +* The app's bot user `dlp.bot` notifies the specified channel about the sharing of sensitive details +* Channel Moderators can **Accept** or **Reject** the message from being sent or not + +

DLP Channel moderator action

+ +#### Approve + +Approving a message lets the message go through, and it is received and visible in the room. + +#### Reject + +Rejecting a message prevents it from reaching its destination, and the status gets updated to `Rejected.` diff --git a/use-rocket.chat/user-guides/security-bundle/end-to-end-encryption-user-guide.md b/use-rocket.chat/user-guides/security-bundle/end-to-end-encryption-user-guide.md new file mode 100644 index 0000000000..c9d8ad0920 --- /dev/null +++ b/use-rocket.chat/user-guides/security-bundle/end-to-end-encryption-user-guide.md @@ -0,0 +1,78 @@ +# End to End Encryption User Guide + +{% hint style="info" %} +**IMPORTANT:** **E2E encryption functionality is currently in beta** and includes notable restrictions that workspace owners should carefully consider before activating this feature for production use as follow: + +* E2E encrypted messages will not appear in search operations +* Bots or other ancillary systems interacting via webhooks or REST API will not be able to read E2EE encrypted messages +* File uploads are not encrypted +* Rocket.Chat enables users to reset their private E2EE key to avoid permanent loss of data during the beta period +{% endhint %} + +## Getting started + +To be able to use E2E Encryption, your Rocket.Chat workspace administrator must turn on the End to End Encryption feature. + +{% content-ref url="../../workspace-administration/settings/e2e-encryption.md" %} +[e2e-encryption.md](../../workspace-administration/settings/e2e-encryption.md) +{% endcontent-ref %} + +{% hint style="success" %} +With E2E enabled, users can create encrypted rooms and send encrypted messages. +{% endhint %} + +### Set E2E Encryption Password + +If E2E Encryption is enabled on your workspace, you see a banner notifying you to **Save Your Encryption Password** + +* Click on the banner +* A modal is seen with **Your password** +* Copy and store the password securely. It will be needed when using Rocket.Chat on another device +* Confirm by clicking on **I Saved My Password** + +### Changing Encryption Password + +To change your Encryption password, + +* Click on your **User Profile** +* Navigate down to **My Account** +* Click **Security** to open up the security tab +* Open E2E Encryption +* Set the **new encryption password** +* **Save changes** + +## Starting an End to End Conversation + +To create an End to End Encrypted room, + +* Follow this guide [create-a-new-channel.md](../rooms/channels/create-a-new-channel.md "mention") to create a room and switch on **Encrypted** + +## Convert an existing room to use End to End encryption + +To convert an existing room to an encrypted room, it must be a [private room](broken-reference) + +* Open the desired room +* Click on the **room info icon** by the top right +* Click on **Edit** to edit the room information +* Toggle on **Encrypted** +* **Save** to commit the changes + +## FAQ + +
+ +How can I tell if the room is encrypted? + +If the room is using End to End Encryption you should see a key icon by the channel name. + + + +
+ +
+ +How can I tell if a message is encrypted? + +You will see a key icon by the username. + +
diff --git a/use-rocket.chat/user-guides/security-bundle/two-factor-authentication-user-guide.md b/use-rocket.chat/user-guides/security-bundle/two-factor-authentication-user-guide.md new file mode 100644 index 0000000000..164eeec6c8 --- /dev/null +++ b/use-rocket.chat/user-guides/security-bundle/two-factor-authentication-user-guide.md @@ -0,0 +1,43 @@ +--- +description: Secure your account with two factor authentication. +--- + +# Two Factor Authentication User Guide + +With the ability to extensively use Rocket.Chat on multiple platforms, and there is the risk of exposing your account details. + +Rocket.Chat two-factor authentication (2FA) provides an additional layer of protection for workspace users by requiring them to provide two forms of authentication before accessing their accounts. + +With 2FA enabled, a Rocket.Chat user is required to enter not only their username and password but also a one-time code generated by an authentication app, such as Google Authenticator, when logging into their account. This code is unique to each login attempt and provides an extra layer of security, as it cannot be reused or guessed. + +{% hint style="info" %} +By default, 2FA is enabled with the email you used for signing up on the server. +{% endhint %} + +To be able to use 2FA, the Rocket.Chat workspace administrator must turn on the Two Factor Authentication feature. + +{% content-ref url="../../workspace-administration/settings/account-settings/" %} +[account-settings](../../workspace-administration/settings/account-settings/) +{% endcontent-ref %} + +## Enabling Two Factor Authentication + +{% hint style="info" %} +Before beginning the setup, download and have available any Authenticator app of your choice. Some popular Authenticators include [Google Authenticator](https://googleauthenticator.net/),[ Authy, ](https://authy.com/)and[ Duo](https://duo.com/). +{% endhint %} + +To enable 2FA on your account, + +* Click on your **User Profile** +* Navigate down to **My Account** +* Click **Security** to open up the security section +* Hit **Enable two-factor authentication via TOTP** +* Scan the QR Code provided with your Authenticator app or setup using the Authentication keys manually +* Copy the code displayed by the newly added Authentication means (`Rocket.Chat: `) and fill in the field prompting to enter the code, then **Verify** +* A list of backup codes is provided. Save them securely in case you lose access to your Authenticator app +* After that, the 2FA setup is completed + +{% hint style="info" %} +* TOTP is a Time-based One-Time Password. It is a very common form of 2FA. +* TOTP works by generating a unique numeric password with a standardized [algorithm](https://tools.ietf.org/html/rfc6238). The time-based passwords are made available and provide user-friendly, increased account security when used as a second factor. +{% endhint %} diff --git a/use-rocket.chat/user-guides/user-panel/README.md b/use-rocket.chat/user-guides/user-panel/README.md new file mode 100644 index 0000000000..d1dd865c28 --- /dev/null +++ b/use-rocket.chat/user-guides/user-panel/README.md @@ -0,0 +1,12 @@ +# User Panel + +Access the user panel by clicking your avatar. The **User Panel** is divided into the following sections: + +* **Name and Current Status:** Displays the user name and the current status selected by the user. +* **Status:** Displays the status options available for you to choose from. **Online**, **away**, **busy**, **offline**, or **meeting**. You can also set a custom status or choose from [custom status](../../workspace-administration/user-status.md#custom-status) set by your workspace administrator. +* **Theme:** Set the theme of your workspace. +* ****[**My Account**](my-account/) **and Logout:** Manage your Rocket.Chat account settings through the browser, desktop, and mobile apps. + +{% hint style="info" %} +The _Custom Status_ option allows you to customize your status by adding a custom status message. +{% endhint %} diff --git a/use-rocket.chat/user-guides/user-panel/my-account/README.md b/use-rocket.chat/user-guides/user-panel/my-account/README.md new file mode 100644 index 0000000000..ff5d8e98df --- /dev/null +++ b/use-rocket.chat/user-guides/user-panel/my-account/README.md @@ -0,0 +1,187 @@ +--- +description: >- + Manage your Rocket.Chat account settings through the browser, desktop, and + mobile apps. +--- + +# My Account + +To access and manage your Rocket.Chat account on a server, + +* Log in to your Rocket.Chat server with a valid username and password. +* Click your avatar and select **My Account**. +* You can update your **Profile**, **Preference** , **Security** and **Personal Access Tokens**. + +{% hint style="info" %} +Account settings update on a single server **do not** change settings on a different server. +{% endhint %} + +## Preference + +In the **Preferences**, you can configure and set your preferences for your server. + +To access this menu, + +* Navigate to **Avatar Menu > My Account** > **Preferences.** +* Update your preferences and click **Save Changes.** + +### Localization + +* **Language**: Set the language to use for the Rocket.Chat user interface. + +### User Presence + +* **Enable Auto-Away**: Enable the auto-away functionality, which changes the status to _away_ after an idle period. +* **Idle time limit**: Set the time in seconds it waits when status should change to away. + +### Notifications + +* **Desktop Notifications**: Click the **Test Desktop Notification** to see how notifications will be displayed on Desktop. +* **Require Interaction to Dismiss Desktop Notification**: When enabled, notifications must be attended to before they can be dismissed. i.e, they will remain in the notification panel until they are visited. +* **Show Desktop Notifications For**: Allows you select the type of messages for which the notifications have to be triggered (for both browser and desktop app notifications). +* **Send Push Notifications For**: Allows you select on what type of messages you wish to receive push notifications for. +* **Offline Email Notifications**: Allows you set what type of message notifications you want to receive by email. + +{% hint style="danger" %} +For email notifications, you must verify your email address. +{% endhint %} + +### Messages + +* **Unread Tray Icon Alert**: Toggles if the tray icon highlights when you have unread messages. +* **Show thread messages in the main thread**: When enabled, threaded messages will be displayed directly in the room. +* **Time Format**: Set the time format of your account (**12 hour clock** or **24 hour clock**). +* **Use Emojis**: Enable this to allow the use of emojis. +* **Convert ASCII to Emoji**: Toggles emoji conversion when inputting ASCII characters. +* **Auto Load Images**: Enable to autoload images and avoid clicking on them to preview. +* **Save Mobile Bandwidth**: Saves mobile data when the app is open. Commonly known as Data Saver. +* **Collapse embedded media by default**: Toggles if messages with files collapse by default. +* **Hide usernames**: Hides usernames on the channels, showing only the users avatars. +* **Hide roles**: Hides role tags from users. +* **Hide right sidebar with a click**: Automatically closes the right sidebar when clicked. +* **Display Avatars**: Hides avatars on the channels, showing only the users' usernames. +* **Enter key behavior**: Lets you configure what the enter key does. + * Normal mode (send with Enter) + * Alternative mode (send with Enter + Ctrl/Alt/Shift/CMD) + * Desktop mode (only sends with Enter on desktop) +* **View mode:** Change the amount of space messages take up on screen. + * Normal: The default spacing between messages + * Cozy: More space between messages (less on the screen) + * Compact: Less space between messages (more on the screen) + +### Highlights + +* **Highlight words**: Specify a comma-separated list of words or phrases to trigger notifications for when mentioned by anyone in public or private channels of which you are a member. + +### Sound + +* **New Room Notification**: Select the sound to play when added to a new room. +* **New Message Notification**: Select the sound to play for every new message. +* **Mute Focused Conversations**: When enabled, rooms that are opened and active will not create notifications. +* **Notifications sound volume**: Set the volume of the notification sound. + +### My Data + +Download your data as HTML or export it as JSON. Whichever option you choose, the request is processed in a queue, and a link to the exported file sent to your email. + +## Profile + +You can verify, edit and update your profile information in the user panel. + +To access profile settings, + +* Navigate to **Avatar Menu > My Account** > **Profile**. + * **Profile Picture**: Lets you upload a profile picture or use default avatar. + * **Use URL for avatar**: Takes in a URL to fetch avatar from. + * **Name**: Your name e.g. `John Doe` + * **Username**: Your username e.g. `john.doe` + * **Status Message**: Lets you specify a status update or what you are doing, along with a color. + * **Nickname**: Set your nickname. + * **Bio**: A short profile description. + * **Email**: Your email address. + * **New Password**: Update your acccount password. + * **Confirm your Password:** Re-type your new password for confirmation. + * **Resend Email Verification**: Click to request a link for email verification. + * **Logout From Other Logged In Locations**: Click to sign-out of all other devices but the current one. + +## Security + +You can enable Two Factor Authentication (2FA) for your account to enhance your account security. There are two options for 2FA in Rocket.Chat : + +* **Two-factor authentication via TOTP :** It **** requires a key code from an authenticator app. +* **Two-factor authentication via Email :** It requies a key code that was sent to your email address**.** + +To access security settings, + +* Navigate to **Avatar Menu > My Account** > **Security**. + +To enable **Two-factor authentication via TOTP**, + +* Click **Enable Two-factor authentication via TOTP**. +* Use an authentication app, such as Google Authenticator, Authy, or Duo, to scan the QR code. Scanning the QR code displays a six-digit code. Enter the code into Rocket.Chat. +* Copy your backup code somewhere safe if you need to access it in the future without the authentication app. Click **Send** to finish. + +To disable the 2FA, click **Disable Two-factor authentication via TOTP**. + +To enable **Two-factor authentication via Email**, + +* Click **Enable Two-factor authentication via Email**. + +To disable the 2FA, click **Disable Two-factor authentication via Email**. + +{% hint style="info" %} + If you can't find the 2FA setting, please contact your workspace administrator. [See a detailed guide on 2FA here](./#two-factor-authentication). +{% endhint %} + +### E2E Encryption + +You can now create encrypted private groups and direct messages. You may also update existing private groups or DMs to encrypted. It is end-to-end encryption, so the key to encode/decode your messages isn't saved on the server. For that reason, you need to store your password somewhere safe. You will be required to enter it on other devices you wish to use e2e encryption. + +#### **Change Encryption Password** + +To create an encryption password, + +* Enter a new encryption password +* Confirm new encryption password and click **Save Changes** + +#### **Reset E2E Key** + +This option will remove your current E2E key and log you out. When you log in again, Rocket.Chat will generate a new key and restore your access to any encrypted room that has one or more members online. Due to the nature of the E2E encryption, Rocket.Chat can't restore access to any encrypted room with no members online. + +{% hint style="info" %} +[Please find a detailed guide on E2E Encryption here.](https://docs.rocket.chat/guides/user-guides/security-bundle/end-to-end-encryption) +{% endhint %} + +## Personal Access Tokens + +You can create personalized access tokens to use when making API calls. + +To access **Personal Access Tokens**, + +* Navigate to **Avatar Menu > My Account** > **Personal Access Tokens**. + +## **Creating a Personal Access Token** + +To create a personal access token, + +* From the Access Token dashboard, enter the token name and hit **Add**. +* You can configure whether or not to ignore 2FA when using it by checking the **Ignore Two Factor Authentication** box. +* Enter your password or 2FA code to **Verify**. +* Your token is generated succesfully. A User Id and Token is displayed. + +{% hint style="info" %} +Remember to store the user Id and Token in a safe place since you can only view it once. +{% endhint %} + +## Delete Personal Access Token + +To delete an access token, + +* From the Personal Access Token list, click the **Delete** icon against the token you choose to delete. + +## Regenerate Personal Access Token + +To regenerate an existing access token, + +* From the Personal Access Token list, click the **Regenerate** icon against the token you choose to regenerate. + diff --git a/use-rocket.chat/user-guides/user-panel/my-account/manage-devices.md b/use-rocket.chat/user-guides/user-panel/my-account/manage-devices.md new file mode 100644 index 0000000000..ba18485afa --- /dev/null +++ b/use-rocket.chat/user-guides/user-panel/my-account/manage-devices.md @@ -0,0 +1,10 @@ +# Manage Devices + +The **Manage Devices** menu lets you monitor and log out of your devices remotely. You can see a list of all the devices you’ve used to log into your Rocket. Chat workspace here. Click on any of the devices to view the client, device operating system, your last login activity, and device id. + +## Log out of your devices + +* Navigate to **Avatar Menu > My Account** > **Manage Devices.** You will see a list of all devices linked to your workspace. +* Choose the device you want to disconnect and then click **Logout.** Your device will be logged out from the workspace and the current session will be ended. + +You can log back into your account whenever you need it. diff --git a/use-rocket.chat/workspace-administration/README.md b/use-rocket.chat/workspace-administration/README.md new file mode 100644 index 0000000000..b43042cb5e --- /dev/null +++ b/use-rocket.chat/workspace-administration/README.md @@ -0,0 +1,49 @@ +# Workspace Administration + +This guide is for people who administer an existing Rocket.Chat workspace and have an administrator role inside the workspace. + +To access this menu, go to **Administration** > **Workspace** + +{% hint style="info" %} +Only users with Administrator roles assigned to them can access this menu. If you have any role other assigned to your Rocket.Chat user, you won't be able to see this menu. +{% endhint %} + +[**Go Fully Featured**](go-fully-featured.md): An overview of all the potential of Rocket. Chat's enterprise edition. + +[**Info**](info.md): A consolidated view of basic information about your workspace. + +[**Import**](import/): Import data from other services to your Rocket.Chat workspace. + +[**Users**](users/): Learn how to manage user accounts. + +[**Rooms**](../user-guides/rooms/): Learn how to create and manage rooms. + +[**Invites**](invites.md): Under Invites, you can view and delete the invite links generated to invite users to the team/channels. + +[**Connectivity Services**](connectivity-services.md): Rocket.Chat Connectivity Services gives you access to connect your self-hosted workplace to Rocket.Chat cloud. Learn how to se create a new cloud account and use connectivity services. + +[**View Logs**](settings/logs.md): Check your workspace logs. + +[**Federation Dashboard**](federation-dashboard.md): Check statistics about the federation connection on your server. + +[**Email Inboxes**](../rocket.chat-workspace-administration/broken-reference/): Learn to manage Omnichannel email inboxes or email accounts for the email channels. + +[**Custom Emoji**](custom-emoji.md): Learn to work with custom emojis in your Rocket.Chat workspace. + +[**Integrations**](integrations/): Integrate tools and services to ease everyday workflows. + +[**OAuth Applications**](oauth-applications.md): Learn to set up custom applications to be used for Open Authentication. + +[**Mailer**](mailer.md): Use the Mailer tool to email users inside your Rocket.Chat workspace. + +[**User Status**](user-status.md): See how to manage user presence and status on your workspace. + +[**Permissions**](permissions.md): Customize which users can perform specific actions under Rocket. Chat's rich permissions system. + +[**Settings**](settings/): Rocket.Chat is very flexible thanks to the vast amount of settings that allow you to configure your workspace the way you prefer. + +[**Engagement Dashboard**](engagement-dashboard.md): Evaluate user engagement on the channels of your workspace. + +[**Device management**](device-management.md): Manage the devices linked to your workspace. + +If the information in this section doesn't solve your problem, look at these [other resources](../../setup-and-administer-rocket.chat/advanced-workspace-management/) to find something that meets your needs. Alternatively, you can [get help](../../resources/get-support/) from our community or enterprise support services. diff --git a/use-rocket.chat/workspace-administration/connectivity-services.md b/use-rocket.chat/workspace-administration/connectivity-services.md new file mode 100644 index 0000000000..8ab49f062b --- /dev/null +++ b/use-rocket.chat/workspace-administration/connectivity-services.md @@ -0,0 +1,82 @@ +# Connectivity Services + +Rocket.Chat Connectivity Services gives you access to connect your self-hosted workplace to Rocket.Chat cloud. Connecting your workplace to the cloud gives you access to interact with services like + +* Mobile push notifications gateway +* Live Chat Omnichannel proxy +* OAuth proxy for social network +* Apps Marketplace + +To access this menu: + +* Navigate to **Administration** > **Workspace** > **Connectivity Services** + +## Introduction + +Rocket.Chat Cloud provides a list of features/services, such as: + +* [Rocket.Chat Push Notification Gateway](https://docs.rocket.chat/guides/administrator-guides/notifications/push-notifications#push-gateway) +* [Rocket.Chat Marketplace](https://rocket.chat/marketplace) +* Omnichannel proxy +* Automatic license synchronization + +To use those services, Rocket.Chat server must be connected to [cloud.rocket.chat](https://cloud.rocket.chat). Below are the steps required to connect and synchronize a Rocket.Chat self-hosted server to our cloud infrastructure. + +{% hint style="info" %} +The steps below are required only for self-managed instances. Rocket.Chat SaaS workspaces are always connected to our Cloud infrastructure. +{% endhint %} + +{% hint style="info" %} +To connect your server to our Cloud, your Rocket.Chat server must be on a supported version. +{% endhint %} + +## Registration steps + +{% hint style="success" %} +If you are an enterprise customer (self-hosted Enterprise or Pro-licensed), we create a cloud account for you. Please login to your workspace, insert the cloud registration code you received in the welcome email, and then hit **Login to** [**Rocket.Chat**](http://rocket.chat) **Cloud** +{% endhint %} + +**If you don't have a cloud account yet:** + +* Go to [cloud.rocket.chat](https://cloud.rocket.chat) and +* Hit **Create account** +* Fill up the registration form and hit **Next** +* A verification email will be sent to your provided email address. Please click the verification link. It redirects you to cloud.rocket.chat. +* After the validation, you will be logged into your Cloud console. +* In order to register your self-hosted workspace: please select the **Register self-managed** under **Workspaces.** + +

Rocket.Chat cloud register self manage

+ +* A pop-up will be displayed in order to select the workspace type: + +

Cloud services

+ +1. **Internet Access**: Rocket.Chat server that has a connection to the internet (connected to the outside) +2. **No Internet Access**: Special cases where Rocket.Chat workspace is air-gapped. + +{% hint style="info" %} +See the guide on how to register an offline workspace.[air-gapped-workspace-configuration.md](../../setup-and-administer-rocket.chat/rocket.chat-air-gapped-deployment/air-gapped-workspace-configuration.md "mention") +{% endhint %} + +{% hint style="info" %} +In the following section, we are going to cover the option for **Internet Access**. +{% endhint %} + +## Apply Online License + +A registration token will be generated when selecting the "Internet Access" option. Copy the token, as this will be used to register your Rocket.Chat server. + +![](../../.gitbook/assets/c\_8.png) + +* On your Rocket.Chat workspace, navigate to **Administration** > **Workspace** > **Connectivity Services** +* Enter the **Email** linked to your Rocket.Chat Cloud account +* Paste the registration token generated in the **Token** field +* Hit **Connect** + +It will set the connection between your Rocket.Chat workspace and Rocket.Chat Cloud console. When the connection is successful, the _Connectivity Services_ panel will look like this: + +![](../../.gitbook/assets/c\_10.png) + +Finally, in order to ensure the synchronization between Rocket.Chat workspace and Rocket.Chat Cloud, hit the **Sync** button. This will trigger the synchronization framework. This is recommended right after registering your server. + +The newly registered workspace will be listed in the **Workspace** section at [cloud.rocket.chat](https://cloud.rocket.chat) diff --git a/use-rocket.chat/workspace-administration/custom-emoji.md b/use-rocket.chat/workspace-administration/custom-emoji.md new file mode 100644 index 0000000000..63563141f2 --- /dev/null +++ b/use-rocket.chat/workspace-administration/custom-emoji.md @@ -0,0 +1,28 @@ +# Custom Emoji + +Rocket.Chat allows you to add custom emoji files that can be used within Rocket.Chat. Emojis are a great way of filling emotional cues. + +{% hint style="info" %} +We recommend using no more than 100 custom emojis. A number higher than that can compromise performance. +{% endhint %} + +## Add a Custom Emoji + +To access this menu: + +1. Go to **Administration** > **Workspace** > **Custom Emoji** +2. Click the **+ New** on the top right +3. Enter a name for your custom emoji +4. Enter an alias for your custom emoji +5. Browse and choose an image file in PNG or JPEG format +6. Hit **Save** + +## Use your Custom Emoji + +To use a custom emoji that you've added, either click the emoji icon on the message input and search for your custom emoji by its name or enter **`:custom_emoji_name:`** or **`:custom_emoji_alias:`** in the message box to directly add the emoji. + +## Delete/Edit Custom Emoji + +Search and click on the custom emoji you want to delete in the `Custom Emoji` section under the `Administration` tab. + +Press **Delete** or **Edit** to delete or update the selected emoji, respectively. diff --git a/use-rocket.chat/workspace-administration/device-management.md b/use-rocket.chat/workspace-administration/device-management.md new file mode 100644 index 0000000000..66f34af4ca --- /dev/null +++ b/use-rocket.chat/workspace-administration/device-management.md @@ -0,0 +1,26 @@ +# Device Management + +As a workspace administrator, you can manage and control the devices linked to your workspace. + +* To access this menu, navigate to **Administration** > **Workspace** > **Device Management**. +* You are prompted for two-factor authentication. The two-factor authentication via email feature in Device Management ensures that only authorized users access the module and will prevent unauthorized access. +* Enter the six-digit authentication code sent to your registered email address and click **Verify**. +* After the successful verification, you will get to see the devices that are linked to your workspace. + +### **To view the linked device information:** + +Click on the device name to see details about the device, such as Client, Operating system, User, Last Login, Device Id, and IP address. + +### To search for devices: + +You can easily search for devices by username**,** device model, or device operating system. + +### **To log out of the device:** + +* Choose the device that you want to disconnect and then click **Logout**. + +If the device is logged out, the user will be notified that the workspace admin has ended the session on the device. Users can sign in again with the same devices when they want. + +{% hint style="info" %} +Follow this [guide](../workspace-administration/settings/device-management-settings.md) to configure security and access control policies for device management +{% endhint %} diff --git a/use-rocket.chat/workspace-administration/email-inboxes.md b/use-rocket.chat/workspace-administration/email-inboxes.md new file mode 100644 index 0000000000..afc97fc6e3 --- /dev/null +++ b/use-rocket.chat/workspace-administration/email-inboxes.md @@ -0,0 +1,58 @@ +--- +description: Omnichannel Integration between Rocket.Chat and email. +--- + +# Email Inboxes + +As an administrator, you can configure and manage Omnichannel email inboxes or email accounts for the email channels. + +{% hint style="warning" %} +**You must have the** [**Omnichannel**](https://docs.rocket.chat/guides/administration/settings/omnichannel-admins-guide#enable-omnichannel) **enabled as well as have** [**agents**](https://docs.rocket.chat/guides/omnichannel/agents) **and** [**managers**](https://docs.rocket.chat/guides/omnichannel/managers) **assigned in order to use this feature.** +{% endhint %} + +To set up a new email inbox: + +* Navigate to **Administration > Workspace > Email Inboxes** +* Click **+ New Email Inbox**: + +Enter the following details: + +1. Add the **Name** of the email inbox +2. Specify the **Email** address +3. Assign it to a **Department;** it is optional +4. Configure SMTP server +5. Toggle switch **Connect with SSL/TLS;** it is optional\ + **`Note`**`: For outlook accounts, disable the SSL option under SMTP.` +6. Configure IMAP server and +7. Toggle switch **Connect with SSL/TLS** for IMAP\*\*;\*\* it is optional +8. Hit **Save** + +Your email inbox is set up, and your agents can receive emails within Rocket.Chat now. + +## Configure Email Inbox with 2FA + +If you have two-factor authentication enabled on your email account, using your regular email password to connect will result in an error. + +For this, you need to generate an app password that is to be used instead of the normal password. + +Follow these guides to generate your app passwords. + +{% embed url="https://support.google.com/accounts/answer/185833?hl=en" %} +GMail +{% endembed %} + +{% embed url="https://support.microsoft.com/en-gb/account-billing/manage-app-passwords-for-two-step-verification-d6dc8c6d-4bf7-4851-ad95-6d07799387e9" %} +Outlook +{% endembed %} + +{% embed url="https://help.aol.com/articles/Create-and-manage-app-password" %} +AOL Mail +{% endembed %} + +[**Yahoo Mail**](https://help.yahoo.com/kb/generate-manage-third-party-passwords-sln15241.html) + + + +{% content-ref url="broken-reference" %} +[Broken link](broken-reference) +{% endcontent-ref %} diff --git a/use-rocket.chat/workspace-administration/engagement-dashboard.md b/use-rocket.chat/workspace-administration/engagement-dashboard.md new file mode 100644 index 0000000000..4f815f43fc --- /dev/null +++ b/use-rocket.chat/workspace-administration/engagement-dashboard.md @@ -0,0 +1,41 @@ +--- +description: This feature adds the ability to evaluate user engagement on the channels. +--- + +# Engagement Dashboard + +
+ +{% hint style="info" %} +Engagement Dashboard is [Rocket.Chat Enterprise](../../setup-and-administer-rocket.chat/enterprise-edition-trial/) feature. +{% endhint %} + +The Rocket.Chat engagement dashboard gives you great insights into users, messages, and channel activities. + +To access this menu, navigate to **Administration** > **Workspace** > **Engagement Dashboard** + +You can download the data for any matrix you want in CSV, using the download button at the top left. + +## User + +The user tab shows you the following matrices. + +**New users**: The new users matrix represents the total number of new users for a select period. You can also see the number by which users increased/decreased from the last interval of the select period. + +**Active users**: It represents the total number of users using the application daily, weekly and monthly. You can also see the number by which active users increased/decreased, as shown below: + +**Users by the time of day**: It represents the total number of users by time of the day for a select period of time. The darker the color of the brick, the more users are online at that time. You can also check the exact count of users for an hour by hovering over the mouse cursor on the respective brick. + +**When is the chat busier?**: It represents the time by day or hour when your chat is busier. + +## Messages + +The Messages tab shows you the following engagement matrices. + +**Messages Sent**: It represents the total number of messages sent for a select period of time. You can also see the number by which the sent message count increased/decreased from the last interval of a select period. + +**Where are the messages being sent?**: It represents the public, private, and top 5 most popular channels to which the most messages are being sent for a select period of time. + +## Channels + +This table shows you the count of _messages being sent_ and the _increment/decrement_ of count from the last interval for a selected period for **all** your channels. You can also download this information in a CSV file. diff --git a/use-rocket.chat/workspace-administration/federation-dashboard.md b/use-rocket.chat/workspace-administration/federation-dashboard.md new file mode 100644 index 0000000000..711f58194e --- /dev/null +++ b/use-rocket.chat/workspace-administration/federation-dashboard.md @@ -0,0 +1,15 @@ +--- +description: >- + The Federation Dashboard shows statistics about federation connection on your + server. +--- + +# Federation Dashboard + +With the Rocket.Chat [Federation Setup](../rocket.chat-workspace-administration/settings/federation/), you can configure your server to be able to communicate with other servers seamlessly. + +To access the dashboard, go to **Administration** > **Workspace** > **Federation Dashboard.** + +* **Number of events**: This shows the number of federated events that have been triggered. +* **Number of federated users**: This shows the number of federated users your server has made access to. +* **Number of federated servers**: The number of federated servers. diff --git a/use-rocket.chat/workspace-administration/go-fully-featured.md b/use-rocket.chat/workspace-administration/go-fully-featured.md new file mode 100644 index 0000000000..dd05767142 --- /dev/null +++ b/use-rocket.chat/workspace-administration/go-fully-featured.md @@ -0,0 +1,7 @@ +# Go Fully Featured + +This tab inside the administration panel of community workspaces helps you to explore and unlock all the potential of Rocket.Chat's enterprise edition. + +![Go fully featured](../../.gitbook/assets/GoFullyFeatured.png) + +The new tab has two primary states. The first is to raise awareness of existing features that could be explored free of charge through a trial. The other state provides a guide on how to get value from them. diff --git a/use-rocket.chat/workspace-administration/import/README.md b/use-rocket.chat/workspace-administration/import/README.md new file mode 100644 index 0000000000..0f6c3c5691 --- /dev/null +++ b/use-rocket.chat/workspace-administration/import/README.md @@ -0,0 +1,20 @@ +--- +description: Import data from other services to your Rocket.Chat workspace. +--- + +# Import + +Rocket.Chat lets you import all your data if you are moving from another service like Slack to Rocket.Chat + +To access this menu, navigate to **Administration** > **Workspace** > **Import**. + +To Import your data: + +* Click **Import New File** +* Select **Import Type** + +{% embed url="https://docs.rocket.chat/guides/administration/admin-panel/import/Import%20from%20slack" %} + +{% embed url="https://docs.rocket.chat/guides/administration/admin-panel/import/Import%20from%20HipChat" %} + +{% embed url="https://docs.rocket.chat/guides/administration/admin-panel/import/import%20csv" %} diff --git a/use-rocket.chat/workspace-administration/import/import-csv.md b/use-rocket.chat/workspace-administration/import/import-csv.md new file mode 100644 index 0000000000..c4ec7952e1 --- /dev/null +++ b/use-rocket.chat/workspace-administration/import/import-csv.md @@ -0,0 +1,103 @@ +# Import CSV + +The CSV importer allows you to import your own plain text files. However, it does require the zip file to be in a specific format for the importer to understand. + +## The Zip File + +The zip file must be a **flat zip**, which means there can **not** be a "root" or "sub" folder in which the items reside in the zip file. The importer looks for the files `channels.csv` and `users.csv` immediately inside the zip and not inside any folder. If you have any questions about this, please ask in the [#support channel on the Community server](https://open.rocket.chat/channel/support). + +The **directmessages** directory is a special directory name. Check the **Direct Messages** section below. + +``` +fileToImport.zip +├── channels.csv +├── users.csv +├── directmessages +│ ├── messages1.csv +│ ├── messages2.csv +│ └── messages3.csv +├── general +│ └── messages.csv +├── otherChannelName +│ ├── canBeAnyNameButHasToHave.csv +│ ├── theDotCSV.csv +│ └── asTheFileExt.csv +├── privateArea +│ └── messages.csv +└── random + ├── dateTimeStamp1.csv + ├── dateTimeStamp2.csv + └── dateTimeStamp3.csv +``` + +## channels.csv Format + +> Channels between 2 users (Direct Messages) should not be included on this file. See section **Direct Messages** for more information. + +The `channels.csv` requires a **very** specific structure and layout. Each line contains information about one channel. Each line must include the channel name, the creator, whether it is private or public, and the members in the channel separated by a semicolon `;`. Quotes are _**required**_. + +1. Channel name +2. Username of the channel creator +3. Whether the channel is public or private. If the last argument is not `private` it is assumed the channel is public +4. List of users in the channel, separated by semicolons. If only the creator is in the channel, then there must be empty quotes. + +``` +"general","bradley.hilton","public","" +"otherChannelName","billy.bob","public","" +"random","bradley.hilton","public","billy.bob;graywolf336" +"privateArea","bradley.hilton","private","graywolf336" +``` + +## users.csv Format + +The `users.csv` is a file that contains the user details, each line containing a new user, and the user details are: + +1. Username (must not contain @ and some other special characters) +2. Email +3. Name + +``` +bradley.hilton,bradley.hilton@example.com,Bradley Hilton +billy.bob, billy.bob@example.com, Billy Bob Jr. +graywolf336,graywolf336@example.com,GrayWolf336 +``` + +## Message Files + +The message CSV files require a particular format. Each line contains a new message, and every piece of information is **required** quotes to surround it, and there cannot be any spaces between the commas. The details required are: + +1. Username who sent the message +2. The timestamp in milliseconds +3. The message and quotes are highly recommended, especially if the message text contains a comma. + +``` +"bradley.hilton","1479162481336","this is a test message" +"billy.bob","1479162481654","this is another message, a test message" +``` + +## Direct Messages / Direct Channels + +Direct Channels / Direct Messages are imported from a special directory named **directmessages** with a specific format based on the **Message Files** format. The details required are: + +1. Username who sent the message +2. Username who received the message +3. The timestamp in milliseconds +4. The message and quotes are highly recommended, especially if the message text contains a comma. + +It's **required** to keep conversations in **distinct files;** for example, a conversation between user A and B compose a file (`messages1.csv`), and the conversation between user B and C compose another file (`messages2.csv`). + +``` +"bradley.hilton","billy.bob","1479162481336","this is a test message" +"billy.bob","bradley.hilton","1479162481654","this is another message, a test message" +``` + +## Importing + +Once you have that, all set up and zipped; you can start the import process. + +1. Go to `https://[your_rocketchat]/admin/import/prepare/csv` +2. Choose your `.zip` file and wait until Rocket.Chat can read it (it can take a few minutes, depending on the size of the file) +3. Deselect any items you don't want to import +4. At the top of the page, click on **Start Importing** + +When you have problems during the Import, click on "**View Logs**" in the admin section to get the detailed error messages. diff --git a/use-rocket.chat/workspace-administration/import/import-from-hipchat.md b/use-rocket.chat/workspace-administration/import/import-from-hipchat.md new file mode 100644 index 0000000000..3a41f97a56 --- /dev/null +++ b/use-rocket.chat/workspace-administration/import/import-from-hipchat.md @@ -0,0 +1,57 @@ +# Import from HipChat + +There are currently two different HipChat importers. One for HipChat Cloud and another for HipChat Enterprise. + +## HipChat Cloud + +To start importing values from HipChat you first need to have an instance of Rocket.Chat running. You can do that on [your own](https://docs.rocket.chat/developer-guides/quick-start/). + +If you already have an instance running and administration privileges, you can follow these steps: + +1. Export data from HipChat +2. Wait until your download is ready and download it (it will be a .zip file) +3. Go to `https://[your_rocket_chat].rocket.chat/admin/import` and click the "Start" button on the "HipChat" item +4. Choose your downloaded .zip file and wait until Rocket.Chat can read it (it can take a few minutes, depending on the size of your HipChat export) +5. Deselect any items you **don't** want to import +6. At the top of the page, click **Start Importing** + +## HipChat Server / Data Center + +To import your current data from HipChat Server / Data Center into Rocket.Chat, please do the following. + +### Export from HipChat Server / Data Center + +This is a copy from the HipChat Server / Data Center Documentation: + +1. Browse to the fully qualified domain name you've configured for your HipChat Server, for example `https://hipchat.yourcompany.com/` +2. Log in to the web user interface (UI) using your administrator email and password +3. Click **Server admin > Export** +4. To include files and one-to-one chat history in the export, select the checkboxes +5. Create a password to protect your archive file in the **Password** and **Confirm Password** fields. You're required to provide this password when you import your data into HipChat Server. We don't store this password, so be sure to remember it +6. Click **Export**. Depending on how much data you have, it may take a few hours to export the data. When it's finished, you'll receive an email with a link to download the file +7. When you receive the email, click the link in the email to download the archive file + +### Import into Rocket.Chat + +1. Decrypt the exported file: `openssl aes-256-cbc -d -in path_to_encrypted_file.tar.gz.aes -out path_to_decrypted_file.tar.gz -pass pass:your_password` See the table below for descriptions of the command line arguments +2. Ensure the file generated is a `tar.gz` file, otherwise Rocket.Chat won't accept it +3. Go to `https://[your_rocketchat]/admin/import/prepare/hipchatenterprise` +4. Choose your decrypted `tar.gz` file and wait until Rocket.Chat can read it (it can take a few minutes, depending on the size of your export) +5. Deselect any items you **don't** want to import +6. At the top of the page, click on **Start Importing** + +#### OpenSSL Command Arguments + +| Argument | Notes | +| ------------- | ------------------------------------------------------------------------- | +| `aes-256-cbc` | This is the cipher to use to decrypt the file. | +| `-d` | This argument is the command to decrypt the file. | +| `-in` | Use this to specify the path to the archive file you're about to decrypt. | +| `-out` | Use this to specify the path where you want to output the decrypted file. | +| `-pass pass:` | Enter the password you created when you **exported** the archive file. | + +### Troubleshooting + +1. In case you get `digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:../crypto/evp/evp_enc.c:541:` while decrypting, add the parameter `-md md5` see [https://www.openssl.org/docs/faq.html#USER3](https://www.openssl.org/docs/faq.html#USER3) +2. If the import fails for large HipChat exports, it may help not to export file attachments. see [https://github.com/RocketChat/Rocket.Chat/issues/11693](https://github.com/RocketChat/Rocket.Chat/issues/11693) +3. If you still have problems contact us at support@rocket.chat and provide your server logs if available diff --git a/use-rocket.chat/workspace-administration/import/import-from-slack/README.md b/use-rocket.chat/workspace-administration/import/import-from-slack/README.md new file mode 100644 index 0000000000..8bbdb9d30a --- /dev/null +++ b/use-rocket.chat/workspace-administration/import/import-from-slack/README.md @@ -0,0 +1,22 @@ +# Import from Slack + +To import your current Slack data into Rocket.Chat: + +1. Go to `https://[your_app].slack.com/services/export` +2. Click on **Start Export** +3. Wait until your download is ready and download it (it will be a .zip file) +4. Go to `https://[your_rocketchat]/admin/import/new/slack` +5. Select "**Slack**" as Import Type +6. Choose your downloaded .zip file and wait until Rocket.Chat can read it (it can take a few minutes, depending on the size of your Slack export) +7. Click on Import +8. Deselect any items you don't want to import +9. At the top of the page, click on Start Importing + + + +{% hint style="info" %} +* If your Slack workspace is currently set up to hide emails, they'll also be excluded from exports. You can update your workspace settings temporarily and re-run the export in order to include emails as well. +* It can be helpful to export time ranges from Slack such that the size of each import file is less than 15MB. +* If facing difficulties during the upload phase of the import process, try copying the archive directly to the uploads folder using other means such as scp. Then select Server File Path as the File Type. +* **Channel name with special character:** if you use **special character** in the channel name, it is important to enable the option _["Allow Special Characters in Room Names"](https://docs.rocket.chat/use-rocket.chat/workspace-administration/settings/layout#user-interface)_ in layout settings. An advanced option is to edit the special characters accepted in the _[UTF-8 setting](https://docs.rocket.chat/use-rocket.chat/workspace-administration/settings/general#utf8)_ in the general configuration, **example:** `[0-9a-zA-Z-_.ãÃàèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ]+$`. +{% endhint %} diff --git a/use-rocket.chat/workspace-administration/import/import-from-slack/slackbridge.md b/use-rocket.chat/workspace-administration/import/import-from-slack/slackbridge.md new file mode 100644 index 0000000000..cb03941bc3 --- /dev/null +++ b/use-rocket.chat/workspace-administration/import/import-from-slack/slackbridge.md @@ -0,0 +1,22 @@ +# SlackBridge + +SlackBridge allows you to mirror the messages received in a Slack channel or private group into Rocket.Chat in real-time. + +To enable it, you have to create a Custom Bot in Slack and add it to the desired channels / private groups. Once enabled and added to rooms, SlackBridge will clone the room in Rocket.Chat and also clone users that speak in that room. + +## To create a Custom Bot in Slack: + +1. Got to ["Set up a bot user"](https://my.slack.com/apps/A0F7YS25R-bots) +2. Click "Add Configuration" +3. Pick a username for your Bot and click **Add Bot Integration** +4. Copy the API Token. You'll need it when setting up SlackBridge in Rocket.Chat +5. Customize your bot the way you like it and click on Save Integration + +## To enable SlackBridge in Rocket.Chat: + +1. Go to `https://[your_host]/admin/SlackBridge` +2. Enable SlackBridge +3. Add your API Token, copied in step 4 above +4. Restart your Rocket.Chat server + +When done, you can now invite/add the bot to the channel or private group you want to mirror from \ No newline at end of file diff --git a/use-rocket.chat/workspace-administration/info.md b/use-rocket.chat/workspace-administration/info.md new file mode 100644 index 0000000000..4b93f43a1b --- /dev/null +++ b/use-rocket.chat/workspace-administration/info.md @@ -0,0 +1,121 @@ +--- +description: Info gives you a consolidated view of basic information about your workspace. +--- + +# Info + +Visit the **Info** section to get insight, statistics, and information on the various aspects of your server. This can help you to evaluate better and monitor the various activities. + +To access this menu, go to **Administration** > **Workspace** > **Info** + +## Deployment Info + +The deployment info card shows information related to your server deployment. + +* **Version**: The current version of your Rocket.Chat server. This can be different from the latest version if not updated. +* **Deployment ID**: Your server's deployment ID. +* **Apps Engine Version**: The version of Apps engine. It can be different from the latest if not updated. +* **Node Version**: The Node.js version your server is running on. +* **Database Migration**: The date of database migration. +* **MongoDB**: The MongoDB version +* **Commit Details**: Details on the recent commit of your server. +* **PID** + +## License Info + +This shows the information patenting to the license of your server. + +* **License**: This shows the tags of the license you have active on your server. +* **Features**: The various features supported by the license on your server. Like `Omnichannel` `Auditing`, `Canned Responses`, `Engagement Dashboard`. + +### Apply Offline License + +To apply your offline license from the **License** card of the **Info** dashboard: + +* Click **Apply Offline License** at the bottom right of the card +* A modal is presented, prompting you to paste the license you got from the[ Rocket.Chat Cloud Console](https://cloud.rocket.chat/home). +* Paste the license code and hit **Apply license** + +### Change Offline License + +To change your offline license from the **License** card of the **Info** dashboard: + +* Click on the **Change Offline License** at the bottom right of the card +* A modal is presented, prompting you to paste the new license you got from the[ Rocket.Chat Cloud Console](https://cloud.rocket.chat/home) +* Clear the old license code and paste the new license code, then hit **Apply license** + +## Usage Info + +* **Users** + * **Total**: The total number of users on the server. + * **Online**: The number of users that are currently `online`. + * **Busy**: The number of users that are in `Busy` mode. + * **Offline**: The number of users that are offline. +* **Types and Distribution** + * **Connected** + * **Activated Users**: The number of activated users on your server. + * **Activated Guests**: The number of guests that have been activated. + * **Deactivated Users**: Number of inactive users. + * **Rocket.Chat App Users**: The number of Rocket.Chat users. Example `bot users`, `app users`. +* **Uploads** + * **Total Uploads**: The number of total uploads that have been made on the server. + * **Total Uploads Size**: The total size of all uploads. +* **Rooms** + * **Total Rooms**: The total number of rooms on the server. + * **Total Channels**: Total number of channels on your server. + * **Total Private Groups**: Total number of private groups on the server + * **Total Direct Message Rooms**: Total number of Direct Messages created on the server. + * **Total Discussions**: Total number of discussions + * **Total Omnichannel Rooms**: Total number of Omnichannel rooms. +* **Messages** + * **Total Messages**: Total messages sent and received on the server. + * **Total Threads**: The total number of threads on the server. + * **Total Messages in Channels**: Total messages in all channels only + * **Total Messages in Private Groups**: Total number of messages in private groups only + * **Total Messages in Direct Messages**: Total number of messages that have been sent in all direct messages + * **Total Messages in Omnichannel**: The total number of messages in omnichannel + +More details on usage info can be seen on the [engagement-dashboard.md](engagement-dashboard.md "mention") + +## Federation Info + +[Rocket.Chat's Federation](../rocket.chat-workspace-administration/settings/federation/#introduction) lets you set up communication between Rocket.Chat workspaces. + +**Enabled**: Enables federation on your server. + +When enabled, it shows a green checkmark :white\_check\_mark: across the features well configured. And a red cross :x:across those that aren't. + +### Federation Settings + +To see more on federation settings: + +* Click on **Settings** at the bottom right of the federation card +* A modal appears. Enter the **Domain** and **Discovery Method** and hit **Next** +* **Domain**: Add the domain name that your server should be linked to. +* **Discovery Method**: A dropdown to select which discoverability mode to use e.g. `DNS` or `HUB` + +{% hint style="info" %} +We recommend using **DNS**. +{% endhint %} + +Next, continue by adding the given DNS records on your server and follow the given instructions. + +{% hint style="info" %} +More on the federation setup can be seen in [this section](../rocket.chat-workspace-administration/settings/federation/). + +We also have a guide on [talking-to-users-from-another-server.md](../rocket.chat-federation/talking-to-users-from-another-server.md "mention"). +{% endhint %} + + + +## Download Info + +To download info about your server, click the **Download Info** button at the top right of **Info** menu. + +A download is prompted with a file named `statistics.json`. + +## Refresh Info + +Refreshing info on your Rocket.Chat server will prompt for the latest stats to be pulled. + +To refresh info, click the **Refresh** button by the top right of your info panel. diff --git a/use-rocket.chat/workspace-administration/integrations/README.md b/use-rocket.chat/workspace-administration/integrations/README.md new file mode 100644 index 0000000000..d484cca180 --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/README.md @@ -0,0 +1,277 @@ +--- +description: Integrate tools and services to ease everyday workflows. +--- + +# Integrations + +Rocket.Chat supports Webhooks to integrate tools and services you like into the platform. Webhooks are simple event notifications via HTTP POST. This way, any application implementing a Webhook is able to POST a message to a Rocket.Chat instance and much more. + +With Scripts, you can point any Webhook to Rocket.Chat and process the request to print customized messages, define the username and avatar of the user of the message and change the channel where the message will be posted, or you can cancel the request to prevent undesired messages. + +**Available integrations:** + +* **Incoming Webhook**: Let an external service send a request to Rocket.Chat to be processed. +* **Outgoing Webhook**: Let Rocket.Chat trigger and optionally send a request to an external service and process the response. + +By default, Webhooks is designed to post a message only. The _message_ is part of a JSON structure, which has the same format described in the API documentation for [posting a chat message.](https://developer.rocket.chat/reference/api/rest-api/endpoints/core-endpoints/chat-endpoints/postmessage) + +{% hint style="info" %} +If you would like more power and control over various features of Rocket.Chat, aside from sending and receiving messages, take a look at [Rocket.Chat Apps.](https://rocket.chat/marketplace#apps) +{% endhint %} + +## Incoming webhook script + +Webhooks can be handled by _ES2015 / ECMAScript 6_ scripts to process the request, print customized messages, or cancel the request to prevent undesired messages. + +### Create a new incoming webhook + +To create a new incoming webhook: + +* Navigate to **Administration** > **Workspace** > **Integrations** +* Click +**New** on the top right corner +* Select **Incoming** +* **Name:** You should name it to manage your integrations easily. +* **Post to Channel**: Select the channel(or user) where you prefer to receive the alerts. It is possible to override messages. +* **Post as**: Choose the username that this integration will post as. The user must already exist. +* Set **Script Enabled** to `true.` +* Paste your script inside the **Script** field. +* Save the integration. +* Use the generated **Webhook URL** to POST messages to Rocket.Chat. + +### Script details + +The script should be in **ES2015 / ECMAScript 6**. + +The script expects a global class called `Script`. This class is instantiated once, only on the first execution, and kept in memory. + +The class has a method called, `process_incoming_request` . Your server calls this method every time it receives a new request. It is called with an Object as a parameter with the `request`property. + +The `process_incoming_request`method returns an object with a `content`property that contains a valid Rocket.Chat message or an object with an `error` property that returns as the response to the request in JSON format and Code 400 status. + +A valid Rocket.Chat message can contain a `text` field that is the body of the message. When you redirect the message to a channel other than the one indicated by the Webhook token, you can specify a `channel` field that accepts room id or, if prefixed with "#" or "@", channel name or user. + +You can use the `console` methods to log information to help debug your script. Find more information about the console [here](https://developer.mozilla.org/en-US/docs/Web/API/Console/log). To view the logs, go to `Administration > View Logs`. + +```javascript +/* exported Script */ +/* globals console, _, s */ + +/** Global Helpers + * + * console - A normal console instance + * _ - An underscore instance + * s - An underscore string instance + */ + +class Script { + /** + * @params {object} request + */ + process_incoming_request({ request }) { + // request.url.hash + // request.url.search + // request.url.query + // request.url.pathname + // request.url.path + // request.url_raw + // request.url_params + // request.headers + // request.user._id + // request.user.name + // request.user.username + // request.content_raw + // request.content + + // console is a global helper to improve debug + console.log(request.content); + + return { + content:{ + text: request.content.text + // "attachments": [{ + // "color": "#FF0000", + // "author_name": "Rocket.Cat", + // "author_link": "https://open.rocket.chat/direct/rocket.cat", + // "author_icon": "https://open.rocket.chat/avatar/rocket.cat.jpg", + // "title": "Rocket.Chat", + // "title_link": "https://rocket.chat", + // "text": "Rocket.Chat, the best open source chat", + // "fields": [{ + // "title": "Priority", + // "value": "High", + // "short": false + // }], + // "image_url": "https://rocket.chat/images/mockup.png", + // "thumb_url": "https://rocket.chat/images/mockup.png" + // }] + } + }; + + // return { + // error: { + // success: false, + // message: 'Error example' + // } + // }; + } +} +``` + +## Outgoing webhook script + +Use scripts to process all messages from a channel and change how Rocket.Chat makes or cancels the request. You can cancel the request and return a message or just do nothing. Also, you can make another request inside the script by using the HTTP global helper. + +The response to the request also executes the script, calling another method so you can process the response, just like in incoming webhooks. + +### Create a new outgoing webhook + +To create a new outgoing webhook: + +* Navigate to **Administration** > **Workspace** > **Integrations** +* Click +**New** on the top right corner +* Select **Outgoing** +* **Event TriggerMessage Sent**: Select which type of event will trigger this outgoing webhook integration +* Select the channel where you prefer to use the commands and receive the responses. +* Enter the URL you want to call in **URLs**. You can modify this URL inside the script. +* Set **Script Enabled** to `true.` +* Paste your script inside the **Script** field. +* Save your integration. + +### Script details + +The script should be in **ES2015 / ECMAScript 6**. + +The script expects a global class called **Script**. This class is instantiated once, only on the first execution, and kept in memory. + +The class has a method called `prepare_outgoing_request`, this method is called for every message in the configured channel, or it can be filtered by **Trigger Words**. It is called with an Object as parameter a that contains the `request` property. + +The `prepare_outgoing_request`method returns an object with, at least, `url`and `method` properties. You can also change the request object and return it. It is possible even to return nothing and cancel the request or return a message. + +This class has a method named `process_outgoing_response`. It is called for every response of the request, with an Object as a parameter that contains the `request` property, i.e. the object you returned in the previous method and a `response` property. + +The `process_outgoing_response` method can return nothing to proceed with the default processing, return `false` to stop it, or an object with the `content` property that contains a valid Rocket.Chat message. + +````javascript +/* exported Script */ +/* globals console, _, s, HTTP */ + +/** Global Helpers + * + * console - A normal console instance + * _ - An underscore instance + * s - An underscore string instance + * HTTP - The Meteor HTTP object to do sync http calls + */ + +class Script { + /** + * @params {object} request + */ + prepare_outgoing_request({ request }) { + // request.params {object} + // request.method {string} + // request.url {string} + // request.auth {string} + // request.headers {object} + // request.data.token {string} + // request.data.channel_id {string} + // request.data.channel_name {string} + // request.data.timestamp {date} + // request.data.user_id {string} + // request.data.user_name {string} + // request.data.text {string} + // request.data.trigger_word {string} + + let match; + + // Change the URL and method of the request + match = request.data.text.match(/^pr\s(ls|list)/); + if (match) { + return { + url: request.url + '/pulls', + headers: request.headers, + method: 'GET' + }; + } + + // Prevent the request and return a new message + match = request.data.text.match(/^help$/); + if (match) { + return { + message: { + text: [ + '**commands**', + '```', + ' pr ls [open|closed|all] List Pull Requests', + '```' + ].join('\n') + // "channel": "#name-of-channel", + // "attachments": [{ + // "color": "#FF0000", + // "author_name": "Rocket.Cat", + // "author_link": "https://open.rocket.chat/direct/rocket.cat", + // "author_icon": "https://open.rocket.chat/avatar/rocket.cat.jpg", + // "title": "Rocket.Chat", + // "title_link": "https://rocket.chat", + // "text": "Rocket.Chat, the best open source chat", + // "fields": [{ + // "title": "Priority", + // "value": "High", + // "short": false + // }], + // "image_url": "https://rocket.chat/images/mockup.png", + // "thumb_url": "https://rocket.chat/images/mockup.png" + // }] + } + }; + } + } + + /** + * @params {object} request, response + */ + process_outgoing_response({ request, response }) { + // request {object} - the object returned by prepare_outgoing_request + + // response.error {object} + // response.status_code {integer} + // response.content {object} + // response.content_raw {string/object} + // response.headers {object} + + var text = []; + response.content.forEach(function(pr) { + text.push('> '+pr.state+' [#'+pr.number+']('+pr.html_url+') - '+pr.title); + }); + + // Return false will abort the response + // return false; + + // Return empty will proceed with the default response process + // return; + + return { + content: { + text: text.join('\n'), + parseUrls: false + // "attachments": [{ + // "color": "#FF0000", + // "author_name": "Rocket.Cat", + // "author_link": "https://open.rocket.chat/direct/rocket.cat", + // "author_icon": "https://open.rocket.chat/avatar/rocket.cat.jpg", + // "title": "Rocket.Chat", + // "title_link": "https://rocket.chat", + // "text": "Rocket.Chat, the best open source chat", + // "fields": [{ + // "title": "Priority", + // "value": "High", + // "short": false + // }], + // "image_url": "https://rocket.chat/images/mockup.png", + // "thumb_url": "https://rocket.chat/images/mockup.png" + // }] + } + }; + } +} +```` diff --git a/use-rocket.chat/workspace-administration/integrations/appveyor.md b/use-rocket.chat/workspace-administration/integrations/appveyor.md new file mode 100644 index 0000000000..bc58cc0b6c --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/appveyor.md @@ -0,0 +1,5 @@ +# AppVeyor + +Add [AppVeyor](https://www.appveyor.com) notifications via a new WebHook in Rocket.Chat. See the [project's documentation](https://github.com/crazy-max/rocketchat-appveyor) for integration instructions. + +![AppVeyor Integration](../../../.gitbook/assets/AppVeyor.png) diff --git a/use-rocket.chat/workspace-administration/integrations/azure-alerts.md b/use-rocket.chat/workspace-administration/integrations/azure-alerts.md new file mode 100644 index 0000000000..3a5584e0f4 --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/azure-alerts.md @@ -0,0 +1,157 @@ +# Azure Alerts + +Add Azure Alert notifications via a new WebHook in Rocket.Chat + +1. In Rocket.Chat go to "Administration"->"Integrations" and create "New Integration" +2. Choose Incoming WebHook +3. Follow all instructions like Enable, give it a name, link to channel etc. Set "Enable Script" to true and enter the javascript in the "Script" box +4. Press Save changes and copy the _Webhook URL_ (added just below the script box) +5. Go to the azure portal and on the specific resource you want to enable Alerts for follow the steps for enabling Alerts and set the previously copied URL as the webhook URL for the Azure Alert. You can follow the steps shown here: [https://docs.microsoft.com/en-us/azure/azure-monitor/alerts/alerts-log-webhook](https://docs.microsoft.com/en-us/azure/azure-monitor/alerts/alerts-log-webhook) + +Paste this in javascript in the "Script" textarea on Rocket.Chat webhook settings + +```javascript +class Script { + process_incoming_request({ request }) { + // console is a global helper to improve debug + console.log(request.content); + + var alertColor = "warning"; + + if(request.content.status === "Resolved"){ alertColor = "good"; } + else if (request.content.status === "Activated") { alertColor = "danger"; } + + var condition = request.content.context.condition; + + return { + content:{ + username: "Azure", + text: "Azure Alert Notification", + attachments: [{ + title: request.content.context.name, + pretext: request.content.context.description, + title_link: request.content.context.portalLink, + text: condition.failureDetails, + color: alertColor, + fields: [ + { + title: "Status", + value: request.content.status + " @ " + request.content.context.timestamp + }, + { + title: "Condition", + value: condition.metricName + ": " + condition.metricValue + " " + condition.metricUnit + " for more than " + condition.windowSize + " min." + }, + { + title: "Threshold", + value: condition.operator + " " + condition.threshold + } + ] + }] + } + }; + + return { + error: { + success: false, + message: 'Error' + } + }; + } +} +``` + +This example shows basic processing of azure alerts that will give you the necessary information as to what happened and what is the current status, along with a status color to get an idea at a quick glimpse of the message. + +For newer created alerts the azure webhooks can be process by the following script: + +```javascript +class Script { + // this script was tested with AzureMonitorMetricAlert version 2.0 and should work for + // "conditionType": "MultipleResourceMultipleMetricCriteria" + process_incoming_request({ request }) { + // console is a global helper to improve debug + console.log(JSON.stringify(request.content, null, 4)); + + var alertColor = "warning"; + var condition = request.content.data.context.condition; + var conditionFields = []; + + if(request.content.data.status === "Deactivated"){ alertColor = "good"; } + else if (request.content.data.status === "Activated") { + alertColor = "danger"; + console.log(condition.allOf); + for (const cond of condition.allOf) { + console.log(cond); + conditionFields.push({ + title: "Condition: " + cond.metricName, + value: cond.metricValue + " " + cond.operator + " " + cond.threshold + " (" + + (cond.metricUnit ? cond.metricUnit + ", " : "") + + cond.timeAggregation + ")" + + " for more than " + condition.windowSize, + }); + } + } + + return { + content:{ + username: "Azure", + text: "Azure Alert Notification", + attachments: [{ + title: request.content.data.context.name, + pretext: request.content.data.context.description, + title_link: request.content.data.context.portalLink, + text: request.content.data.context.resourceGroupName + ": " + request.content.data.context.resourceName, + color: alertColor, + fields: [ + { + title: "Status", + value: request.content.data.status + " @ " + request.content.data.context.timestamp + }, + { + title: "Severity", + value: request.content.data.context.severity, + }, + ...conditionFields, + ] + }] + } + }; + } +} +``` + +The schema of the incoming message as of the official [Azure Alert Webhook Docs](https://azure.microsoft.com/en-us/documentation/articles/insights-webhooks-alerts/) is: + +```javascript +{ +"status": "Activated", +"context": { + "timestamp": "2015-08-14T22:26:41.9975398Z", + "id": "/subscriptions/s1/resourceGroups/useast/providers/microsoft.insights/alertrules/ruleName1", + "name": "ruleName1", + "description": "some description", + "conditionType": "Metric", + "condition": { + "metricName": "Requests", + "metricUnit": "Count", + "metricValue": "10", + "threshold": "10", + "windowSize": "15", + "timeAggregation": "Average", + "operator": "GreaterThanOrEqual" + }, + "subscriptionId": "s1", + "resourceGroupName": "useast", + "resourceName": "mysite1", + "resourceType": "microsoft.foo/sites", + "resourceId": "/subscriptions/s1/resourceGroups/useast/providers/microsoft.foo/sites/mysite1", + "resourceRegion": "centralus", + "portalLink": "https://portal.azure.com/#resource/subscriptions/s1/resourceGroups/useast/providers/microsoft.foo/sites/mysite1" +}, +"properties": { + "key1": "value1", + "key2": "value2" + } +} +``` diff --git a/guides/administration/administration/integrations/bitbucket.md b/use-rocket.chat/workspace-administration/integrations/bitbucket.md similarity index 100% rename from guides/administration/administration/integrations/bitbucket.md rename to use-rocket.chat/workspace-administration/integrations/bitbucket.md diff --git a/use-rocket.chat/workspace-administration/integrations/deadsimplescreensharing.md b/use-rocket.chat/workspace-administration/integrations/deadsimplescreensharing.md new file mode 100644 index 0000000000..4b076b8601 --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/deadsimplescreensharing.md @@ -0,0 +1,7 @@ +# Dead Simple Screen Sharing + +{% hint style="info" %} +The endpoint for this integration is no longer available, and the access to API is paid only. +{% endhint %} + +To know more about the service: [https://deadsimplescreensharing.com/](https://deadsimplescreensharing.com/) diff --git a/use-rocket.chat/workspace-administration/integrations/django-rocketchat-auth-1.2.md b/use-rocket.chat/workspace-administration/integrations/django-rocketchat-auth-1.2.md new file mode 100644 index 0000000000..ee64682e9c --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/django-rocketchat-auth-1.2.md @@ -0,0 +1,59 @@ +--- +description: Authenticate Rocket.Chat user with Django Framework +--- + +# django-rocketchat-auth 1.2 + +Authenticate the users with Django Web Framework. This application implements the API used by Rocket.Chat IFrame authentication. Also, it handles logout by wiring up a method on Django signals. + +{% hint style="info" %} +Tested with Django 2.0.4 and Rocket.Chat 0.62.2. If you have any problems, please open an issue. +{% endhint %} + +### Configuration + +1. Install this app in your project: + + ``` + pip install django-rocketchat-auth + ``` +2. Add “rocketchat\_auth” to your INSTALLED\_APPS setting like this: + + ``` + INSTALLED_APPS = ( + ... + 'rocketchat_auth', + ) + ``` +3. Get a [Rocket.Chat authentication token](https://docs.rocket.chat/guides/user-guides/user-panel/managing-your-account/personal-access-token#creating-a-personal-access-token), so we can use the API. +4. Update your _settings.py_: + + ``` + MONGO_DB = 'localhost:27017' + # or more verbose (e.g. for Heroku) + # MONGO_DB = ':@:/?authSource=' + + ROCKETCHAT_URL = 'http://localhost:3000' + + ROCKETCHAT_AUTH_TOKEN = '' + ROCKETCHAT_USER_ID = '' + + CORS_ORIGIN_WHITELIST = ( + 'localhost:8000', + 'localhost:3000', + ) + ``` +5. Include the rocketchat\_auth URLconf in your project urls.py like this: + + ``` + urlpatterns += [url(r'^rocketchat/', include('rocketchat_auth.urls'))] + ``` +6. Since we will put your Django app into an iframe, we have to set up some security measures that would prevent it from happening. + * Install [django-cors-headers](https://github.com/ottoyiu/django-cors-headers) and set your Rocket.Chat domain in CORS\_ORIGIN\_WHITELIST. + * Configure Django's XFrameOptionsMiddleware to exempt your login page for Rocket.Chat requests or disable it (dangerous). + * Configure Django's CsrfViewMiddleware to exempt your login page for Rocket.Chat requests or disable it (dangerous). +7. To access this settings, go to: **Administration** > **Workspace** > **Settings** > **Accounts** + * **Enabled:** Enable this option to authenticate users using your own login page in place of the Rocket. Chat's login page via the iframe integration. Please check the [Iframe integration](https://developer.rocket.chat/rocket.chat/iframe-integration) page for more information. + * **Iframe URL**: Enter **** the URL (http://localhost:8000/login/?next=/rocketchat/redirect)of the page you want to show as the login page of your Rocket.Chat instance. + * **API URL:** Enter the URL (http://localhost:8000/rocketchat/api), which refers to the endpoint on the third-party system. This will check if the user is already logged in to that system. + * **API Method:** Specify the API (POST) method that Rocket.Chat will use to submit information to the `API URL.` diff --git a/guides/administration/administration/integrations/easyredmine.md b/use-rocket.chat/workspace-administration/integrations/easyredmine.md similarity index 100% rename from guides/administration/administration/integrations/easyredmine.md rename to use-rocket.chat/workspace-administration/integrations/easyredmine.md diff --git a/guides/administration/administration/integrations/giphy.md b/use-rocket.chat/workspace-administration/integrations/giphy.md similarity index 100% rename from guides/administration/administration/integrations/giphy.md rename to use-rocket.chat/workspace-administration/integrations/giphy.md diff --git a/use-rocket.chat/workspace-administration/integrations/github.md b/use-rocket.chat/workspace-administration/integrations/github.md new file mode 100644 index 0000000000..d806ed6755 --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/github.md @@ -0,0 +1,671 @@ +# GitHub + +Setting up GitHub webhook integration with Rocket.Chat gives you the ability to + +1. Receive event notifications from GitHub directly in your specified Rocket.Chat room (**Incoming WebHook**) +2. Send commands to GitHub and optionally receive a response (**Outgoing WebHook**). + +These events include and are not limited to: + +* Comments +* Issues events +* Pull Requests +* Merge requests +* Deployment events +* Comments and discussions +* Tags, label and branch actions +* etc. + +{% hint style="info" %} +In configuring this integration, make sure your Rocket.Chat is publicly available on a URL. +{% endhint %} + +## GitHub Rocket.Chat Integration + +We are going to see how to create both incoming and outgoing webhook integration between Rocket.Chat and GitHub. + +### Rocket.Chat Incoming webhook with GitHub + +To configure an incoming webhook integration between GitHub and Rocket.Chat, you need to: + +1. [Create a new webhook integration on Rocket.Chat](github.md#creating-new-github-webhook-integration) +2. [Link the GitHub repository through webhook settings](github.md#github-webhook-setting) + +The following steps explain how to do this + +#### Creating new GitHub webhook integration + +* Go to the **Administration** -> **Workspace** -> **Integrations** settings on your Rocket.Chat workspace +* Switch to the **Incoming** tab and create a **New** Integration +* Fill in the details of your webhook including the **name** of the webhook, the **room** to post into, the **user to post as** and enable it + +

Create new GitHub incoming webhook

+ +* Enable Scripts and paste any of the following example code into the Scripts box. + +{% hint style="info" %} +You can customize your webhook integration script to suit your desire as explained [here](github.md#customizing-your-integration-scripts). +{% endhint %} + +
+ +GitHub Example Script 1 + +This script will generate notifications for the following repository events: + +* Issue events (create, edit, close, reopen, assign, label, etc) +* Issue comment events +* Push events (singular and multiple commits) + +```javascript +/* exported Script */ + +String.prototype.capitalizeFirstLetter = function() { + return this.charAt(0).toUpperCase() + this.slice(1); +} + +const getLabelsField = (labels) => { + let labelsArray = []; + labels.forEach(function(label) { + labelsArray.push(label.name); + }); + labelsArray = labelsArray.join(', '); + return { + title: 'Labels', + value: labelsArray, + short: labelsArray.length <= 40 + }; +}; + +const githubEvents = { + ping(request) { + return { + content: { + text: '_' + request.content.hook.id + '_\n' + ':thumbsup: ' + request.content.zen + } + }; + }, + + /* NEW OR MODIFY ISSUE */ + issues(request) { + const user = request.content.sender; + + if (request.content.action == "opened" || request.content.action == "reopened" || request.content.action == "edited") { + var body = request.content.issue.body; + } else if (request.content.action == "labeled") { + var body = "Current labels: " + getLabelsField(request.content.issue.labels).value; + } else if (request.content.action == "assigned" || request.content.action == "unassigned") { + // Note that the issues API only gives you one assignee. + var body = "Current assignee: " + request.content.issue.assignee.login; + } else if (request.content.action == "closed") { + if (request.content.issue.closed_by) { + var body = "Closed by: " + request.content.issue.closed_by.login; + } else { + var body = "Closed."; + } + } else { + return { + error: { + success: false, + message: 'Unsupported issue action' + } + }; + } + + const action = request.content.action.capitalizeFirstLetter(); + + const text = '_' + request.content.repository.full_name + '_\n' + + '**[' + action + ' issue ​#' + request.content.issue.number + + ' - ' + request.content.issue.title + '](' + + request.content.issue.html_url + ')**\n\n' + + body; + + return { + content: { + attachments: [ + { + thumb_url: user.avatar_url, + text: text, + fields: [] + } + ] + } + }; + }, + + /* COMMENT ON EXISTING ISSUE */ + issue_comment(request) { + const user = request.content.comment.user; + + if (request.content.action == "edited") { + var action = "Edited comment "; + } else { + var action = "Comment " + } + + const text = '_' + request.content.repository.full_name + '_\n' + + '**[' + action + ' on issue ​#' + request.content.issue.number + + ' - ' + request.content.issue.title + '](' + + request.content.comment.html_url + ')**\n\n' + + request.content.comment.body; + + return { + content: { + attachments: [ + { + thumb_url: user.avatar_url, + text: text, + fields: [] + } + ] + } + }; + }, + + /* COMMENT ON COMMIT */ +commit_comment(request) { + const user = request.content.comment.user; + + if (request.content.action == "edited") { + var action = "Edited comment "; + } else { + var action = "Comment " + } + + const text = '_' + request.content.repository.full_name + '_\n' + + '**[' + action + ' on commit id ' + request.content.comment.commit_id + + ' - ' + + '](' + + request.content.comment.html_url + ')**\n\n' + + request.content.comment.body; + + return { + content: { + attachments: [ + { + thumb_url: user.avatar_url, + text: text, + fields: [] + } + ] + } + }; + }, + /* END OF COMMENT ON COMMIT */ + + /* PUSH TO REPO */ + push(request) { + var commits = request.content.commits; + var multi_commit = "" + var is_short = true; + var changeset = 'Changeset'; + if ( commits.length > 1 ) { + var multi_commit = " [Multiple Commits]"; + var is_short = false; + var changeset = changeset + 's'; + var output = []; + } + const user = request.content.sender; + + var text = '**Pushed to ' + "["+request.content.repository.full_name+"]("+request.content.repository.url+"):" + + request.content.ref.split('/').pop() + "**\n\n"; + + for (var i = 0; i < commits.length; i++) { + var commit = commits[i]; + var shortID = commit.id.substring(0,7); + var a = '[' + shortID + '](' + commit.url + ') - ' + commit.message; + if ( commits.length > 1 ) { + output.push( a ); + } else { + var output = a; + } + } + + if (commits.length > 1) { + text += output.reverse().join('\n'); + } else { + text += output; + } + + return { + content: { + attachments: [ + { + thumb_url: user.avatar_url, + text: text, + fields: [] + } + ] + } + }; + }, // End GitHub Push + + /* NEW PULL REQUEST */ + pull_request(request) { + const user = request.content.sender; + + if (request.content.action == "opened" || request.content.action == "reopened" || request.content.action == "edited" || request.content.action == "synchronize") { + var body = request.content.pull_request.body; + } else if (request.content.action == "labeled") { + var body = "Current labels: " + getLabelsField(request.content.pull_request.labels).value; + } else if (request.content.action == "assigned" || request.content.action == "unassigned") { + // Note that the issues API only gives you one assignee. + var body = "Current assignee: " + request.content.pull_request.assignee.login; + } else if (request.content.action == "closed") { + if (request.content.pull_request.merged) { + var body = "Merged by: " + request.content.pull_request.merged_by.login; + } else { + var body = "Closed."; + } + } else { + return { + error: { + success: false, + message: 'Unsupported pull request action' + } + }; + } + + const action = request.content.action.capitalizeFirstLetter(); + + const text = '_' + request.content.repository.full_name + '_\n' + + '**[' + action + ' pull request ​#' + request.content.pull_request.number + + ' - ' + request.content.pull_request.title + '](' + + request.content.pull_request.html_url + ')**\n\n' + + body; + + return { + content: { + attachments: [ + { + thumb_url: user.avatar_url, + text: text, + fields: [] + } + ] + } + }; + }, +}; + +class Script { + process_incoming_request({ request }) { + const header = request.headers['x-github-event']; + if (githubEvents[header]) { + return githubEvents[header](request); + } + + return { + error: { + success: false, + message: 'Unsupported method' + } + }; + } +} +``` + +
+ +
+ +GitHub Example Script 2 + +This script will generate notifications for the following repository events: + +* New and closed issue events +* Comment events (issues only) +* Push events (singular and multiple commits) + +```javascript +/* exported Script */ + +// Begin embedded images +const gh_cmit_svg = ''; +const gh_pr_svg = ''; +const gh_iss_svg = ''; +const svg_inline_prefix = 'data:image/svg+xml;ascii,'; +// End embedded images + +const getLabelsField = (labels) => { + let labelsArray = []; + labels.forEach(function(label) { + labelsArray.push(label.name); + }); + labelsArray = labelsArray.join(', '); + return { + title: 'Labels', + value: labelsArray, + short: labelsArray.length <= 40 + }; +}; + +const githubEvents = { + ping(request) { + return { + content: { + text: ':thumbsup: ' + request.content.zen + } + }; + }, + + issues(request) { + const user = request.content.sender; + const attachment = { + author_icon: svg_inline_prefix + gh_iss_svg, + author_name: '#' + request.content.issue.number + ' - ' + request.content.issue.title, + author_link: request.content.issue.html_url, + fields: [] + }; + + if (request.content.issue.labels) { + attachment.fields.push(getLabelsField(request.content.issue.labels)); + } + + if (request.content.issue.assignee) { + attachment.fields.push({ + title: 'Assignee', + value: request.content.issue.assignee.login, + short: true + }); + } + + const actions = { + 'assigned': ':inbox_tray:', + 'unassigned': ':outbox_tray:', + 'opened': ':triangular_flag_on_post:', + 'closed': ':white_check_mark:', + 'reopened': ':triangular_flag_on_post:', + 'labeled': ':label:', + 'unlabeled': ':label:', + 'edited': ':pencil:' + }; + + const text = actions[request.content.action] + ' issue'; + + return { + content: { + icon_url: user.avatar_url, + alias: user.login, + text: text, + attachments: [attachment] + } + }; + }, + + issue_comment(request) { + const user = request.content.comment.user; + var attachment = { + author_icon: svg_inline_prefix + gh_iss_svg, + author_name: '#' + request.content.issue.number + ' - ' + request.content.issue.title, + author_link: request.content.comment.html_url, + fields: [] + }; + + if (request.content.issue.labels) { + attachment.fields.push(getLabelsField(request.content.issue.labels)); + } + + if (request.content.issue.assignee) { + attachment.fields.push({ + title: 'Assignee', + value: request.content.issue.assignee.login, + short: true + }); + } + + const text = ':speech_balloon: ' + request.content.comment.body; + + return { + content: { + icon_url: user.avatar_url, + alias: user.login, + text: text, + attachments: [attachment] + } + }; + }, + + pull_request(request) { + const user = request.content.sender; + const attachment = { + author_icon: svg_inline_prefix + gh_pr_svg, + author_name: '#' + request.content.pull_request.number + ' - ' + request.content.pull_request.title, + author_link: request.content.pull_request.html_url + }; + + let text = 'Pull request'; + switch (request.content.action) { + case 'assigned': + text += ' assigned to: ' + request.content.assignee.login; + break; + case 'unassigned': + text += ' unassigned of ' + request.content.assignee.login; + break; + case 'opened': + text += ' opened'; + break; + case 'closed': + if (request.content.pull_request.merged) { + text += ' merged'; + } else { + text += ' closed'; + } + break; + case 'reopened': + text += ' reopened'; + break; + case 'labeled': + text += ' added label: "' + request.content.label.name + '" '; + break; + case 'unlabeled': + text += ' removed label: "' + request.content.label.name + '" '; + break; + case 'synchronize': + text += ' synchronized'; + } + + return { + content: { + icon_url: user.avatar_url, + alias: user.login, + text: text, + attachments: [attachment] + } + }; + }, + + //// GitHub push event + push(request) { + var commits = request.content.commits; + var multi_commit = "" + var is_short = true; + var changeset = 'Changeset'; + if ( commits.length > 1 ) { + var multi_commit = " [Multiple Commits]"; + var is_short = false; + var changeset = changeset + 's'; + var output = []; + } + const user = request.content.sender; + const attachment = { + author_icon: svg_inline_prefix + gh_cmit_svg, + author_name: "Message: " + request.content.head_commit.message + multi_commit, + author_link: request.content.compare, + fields: [] + }; + + if (request.content.repository.full_name) { + attachment.fields.push({ + title: 'Repo', + value: "["+request.content.repository.full_name+"]("+request.content.repository.url+")", + short: is_short + }); + } + + for (var i = 0; i < commits.length; i++) { + var commit = commits[i]; + var shortID = commit.id.substring(0,7); + if ( commits.length > 1 ) { + output = '[' + shortID + '](' + commit.url + ') - ' + commit.message + if (i == 0){ + attachment.fields.push({ + title: changeset, + value: output, + short: is_short + }); + } else{ + attachment.fields.push({ + title: changeset, + value: output, + short: is_short + }); + } + } else { + output = "[" + shortID + "](" + commit.url + ")" + attachment.fields.push({ + title: changeset, + value: output, + short: is_short + }); + } + } + + const text = ':ballot_box_with_check: Pushed to ' + "["+request.content.ref.split('/').pop()+"]"; + + return { + content: { + icon_url: user.avatar_url, + alias: user.login, + text: text, + attachments: [attachment] + } + }; + }, // End GitHub Push +}; + +class Script { + process_incoming_request({ request }) { + const header = request.headers['x-github-event']; + if (githubEvents[header]) { + return githubEvents[header](request); + } + + return { + error: { + success: false, + message: 'Unsupported method' + } + }; + } +} +``` + +
+ +* **Save** the settings +* The **Webhook URL** and **Token** are generated after saving +* Copy these credentials, they will be used later + +

GitHub webhook url and token

+ +#### GitHub Webhook Setting + +After creating the new incoming webhook integration on Rocket.Chat, it is time to link it up with the GitHub repository. + +* Go to the GitHub project repository then navigate to **Settings** > **Webhooks** +* **Add webhook** and fill in the `URL` and `token` you copied from the Rocket.Chat setting +* Select the list of events you want to be notified on and **Add webhook** + +

GitHub webhook setting

+ +{% hint style="success" %} +After successful configuration, you can test the Webhook with any event trigger and see the notification in your specified Rocket.Chat room. +{% endhint %} + +

GitHub webhook notifications

+ +### Rocket.Chat GitHub Outgoing Webhook + +{% hint style="info" %} +Sending outgoing webhooks only works on public repositories +{% endhint %} + +* Create a new **Outgoing WebHook** +* Select the channel where you will use the commands and receive the responses +* Set **URLs** as `https://api.github.com/repos/User-Or-Org-Name/Repo-Name` like `https://api.github.com/repos/RocketChat/Rocket.Chat` +* Enable Scripts +* Use this **Script** to listen for commands `pr ls`, `pr list` and `help` + +````javascript + /* exported Script */ + /* globals Store */ + + class Script { + prepare_outgoing_request({ request }) { + let match; + + console.log('lastCmd', Store.get('lastCmd')); + + match = request.data.text.match(/^pr last$/); + if (match && Store.get('lastCmd')) { + request.data.text = Store.get('lastCmd'); + } + + match = request.data.text.match(/^pr\s(ls|list)\s*(open|closed|all)?$/); + if (match) { + Store.set('lastCmd', request.data.text); + let u = request.url + '/pulls'; + if (match[2]) { + u += '?state='+match[2]; + } + return { + url: u, + headers: request.headers, + method: 'GET' + }; + } + + match = request.data.text.match(/^help$/); + if (match) { + Store.set('lastCmd', request.data.text); + return { + message: { + text: [ + '**GitHub commands**', + '```', + ' pr ls|list [open|closed|all] List Pull Requests', + '```' + ].join('\n') + } + }; + } + } + + process_outgoing_response({ request, response }) { + var text = []; + response.content.forEach(function(pr) { + text.push('> '+pr.state+' [#'+pr.number+']('+pr.html_url+') - '+pr.title); + }); + + return { + content: { + text: text.join('\n'), + parseUrls: false + } + }; + } + } +```` + +* **Save** your integration + +## Customizing your integration scripts + +The purpose of the integration script is to transform data in one format (the format provided by your incoming service, such as GitHub) into another format (the format expected by Rocket.Chat). Therefore, should you wish to customize either of the scripts presented above, you will need two resources: + +* [GitHub API specifications](https://developer.github.com/v3/) +* [Specifications for Rocket.Chat integration message objects](./#incoming-webhook-script) + +{% hint style="info" %} +Note that data comes into your script from GitHub as the `request.content` object. +{% endhint %} diff --git a/use-rocket.chat/workspace-administration/integrations/gitlab.md b/use-rocket.chat/workspace-administration/integrations/gitlab.md new file mode 100644 index 0000000000..48598af0e1 --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/gitlab.md @@ -0,0 +1,434 @@ +# GitLab + +Setting up GitLab webhook integration gives you the ability to receive event notifications from GitLab directly in your desired Rocket.Chat room. + +These events include and are not limited to: + +* Comments +* Issues events +* Merge requests +* Deployment events + +{% hint style="info" %} +In configuring this integration, make sure your Rocket.Chat is publicly available on a URL. +{% endhint %} + +## GitLab Rocket.Chat Integration + +To configure the webhook integration between GitLab and Rocket.Chat, you need to: + +1. [Create a new webhook integration on Rocket.Chat](gitlab.md#creating-a-new-gitlab-webhook-integration) +2. [Link to the GitLab repository webhook setting](gitlab.md#gitlab-webhooks-settings) + +Follow these steps below to do that + +### Creating a new GitLab webhook integration + +* On your Rocket.Chat workspace, go to **Administration** -> **Workspace** -> **Integrations** +* Switch to the **Incoming** tab and create a **New** Integration +* Fill in the details of your webhook including the **name** of the webhook, the **room** to post into, the **user to post as** and enable it + +

GitLab new incoming Webhook

+ +* Enable Scripts and paste the following code into the Scripts box + +```javascript +/* eslint no-console:0, max-len:0 */ +// see for full json posted by GitLab +const MENTION_ALL_ALLOWED = false; // <- check that bot permission allow has mention-all before passing this to true. +const NOTIF_COLOR = '#6498CC'; +const IGNORE_CONFIDENTIAL = true; +const refParser = (ref) => ref.replace(/^refs\/(?:tags|heads)\/(.+)$/, '$1'); +const displayName = (name) => (name && name.toLowerCase().replace(/\s+/g, '.')); +const atName = (user) => (user && user.name ? '@' + displayName(user.name) : ''); +const makeAttachment = (author, text, color) => { + return { + author_name: author ? displayName(author.name) : '', + author_icon: author ? author.avatar_url : '', + text, + color: color || NOTIF_COLOR + }; +}; +const pushUniq = (array, val) => ~array.indexOf(val) || array.push(val); // eslint-disable-line + +class Script { // eslint-disable-line + process_incoming_request({ request }) { + try { + let result = null; + const channel = request.url.query.channel; + const event = request.headers['x-gitlab-event']; + switch (event) { + case 'Push Hook': + result = this.pushEvent(request.content); + break; + case 'Merge Request Hook': + result = this.mergeRequestEvent(request.content); + break; + case 'Note Hook': + result = this.commentEvent(request.content); + break; + case 'Confidential Issue Hook': + case 'Issue Hook': + result = this.issueEvent(request.content, event); + break; + case 'Tag Push Hook': + result = this.tagEvent(request.content); + break; + case 'Pipeline Hook': + result = this.pipelineEvent(request.content); + break; + case 'Build Hook': // GitLab < 9.3 + result = this.buildEvent(request.content); + break; + case 'Job Hook': // GitLab >= 9.3.0 + result = this.buildEvent(request.content); + break; + case 'Wiki Page Hook': + result = this.wikiEvent(request.content); + break; + default: + result = this.unknownEvent(request, event); + break; + } + if (result && result.content && channel) { + result.content.channel = '#' + channel; + } + return result; + } catch (e) { + console.log('gitlabevent error', e); + return this.createErrorChatMessage(e); + } + } + + createErrorChatMessage(error) { + return { + content: { + username: 'Rocket.Cat ErrorHandler', + text: 'Error occured while parsing an incoming webhook request. Details attached.', + icon_url: '', + attachments: [ + { + text: `Error: '${error}', \n Message: '${error.message}', \n Stack: '${error.stack}'`, + color: NOTIF_COLOR + } + ] + } + }; + } + + unknownEvent(data, event) { + return { + content: { + username: data.user ? data.user.name : (data.user_name || 'Unknown user'), + text: `Unknown event '${event}' occured. Data attached.`, + icon_url: data.user ? data.user.avatar_url : (data.user_avatar || ''), + attachments: [ + { + text: `${JSON.stringify(data, null, 4)}`, + color: NOTIF_COLOR + } + ] + } + }; + } + issueEvent(data, event) { + if (event === 'Confidential Issue Hook' && IGNORE_CONFIDENTIAL) { + return false; + } + const project = data.project || data.repository; + const state = data.object_attributes.state; + const action = data.object_attributes.action; + let user_action = state; + let assigned = ''; + + if (action === 'update') { + user_action = 'updated'; + } + + if (data.assignee) { + assigned = `*Assigned to*: @${data.assignee.username}\n`; + } + + return { + content: { + username: 'gitlab/' + project.name, + icon_url: project.avatar_url || data.user.avatar_url || '', + text: (data.assignee && data.assignee.name !== data.user.name) ? atName(data.assignee) : '', + attachments: [ + makeAttachment( + data.user, `${user_action} an issue _${data.object_attributes.title}_ on ${project.name}. +*Description:* ${data.object_attributes.description}. +${assigned} +See: ${data.object_attributes.url}` + ) + ] + } + }; + } + + commentEvent(data) { + const project = data.project || data.repository; + const comment = data.object_attributes; + const user = data.user; + const at = []; + let text; + if (data.merge_request) { + const mr = data.merge_request; + const lastCommitAuthor = mr.last_commit && mr.last_commit.author; + if (mr.assignee && mr.assignee.name !== user.name) { + at.push(atName(mr.assignee)); + } + if (lastCommitAuthor && lastCommitAuthor.name !== user.name) { + pushUniq(at, atName(lastCommitAuthor)); + } + text = `commented on MR [#${mr.id} ${mr.title}](${comment.url})`; + } else if (data.commit) { + const commit = data.commit; + const message = commit.message.replace(/\n[^\s\S]+/, '...').replace(/\n$/, ''); + if (commit.author && commit.author.name !== user.name) { + at.push(atName(commit.author)); + } + text = `commented on commit [${commit.id.slice(0, 8)} ${message}](${comment.url})`; + } else if (data.issue) { + const issue = data.issue; + text = `commented on issue [#${issue.id} ${issue.title}](${comment.url})`; + } else if (data.snippet) { + const snippet = data.snippet; + text = `commented on code snippet [#${snippet.id} ${snippet.title}](${comment.url})`; + } + return { + content: { + username: 'gitlab/' + project.name, + icon_url: project.avatar_url || user.avatar_url || '', + text: at.join(' '), + attachments: [ + makeAttachment(user, `${text}\n${comment.note}`) + ] + } + }; + } + + mergeRequestEvent(data) { + const user = data.user; + const mr = data.object_attributes; + const assignee = mr.assignee; + let at = []; + + if (mr.action === 'open' && assignee) { + at = '\n' + atName(assignee); + } else if (mr.action === 'merge') { + const lastCommitAuthor = mr.last_commit && mr.last_commit.author; + if (assignee && assignee.name !== user.name) { + at.push(atName(assignee)); + } + if (lastCommitAuthor && lastCommitAuthor.name !== user.name) { + pushUniq(at, atName(lastCommitAuthor)); + } + } + return { + content: { + username: `gitlab/${mr.target.name}`, + icon_url: mr.target.avatar_url || mr.source.avatar_url || user.avatar_url || '', + text: at.join(' '), + attachments: [ + makeAttachment(user, `${mr.action} MR [#${mr.iid} ${mr.title}](${mr.url})\n${mr.source_branch} into ${mr.target_branch}`) + ] + } + }; + } + + pushEvent(data) { + const project = data.project || data.repository; + const web_url = project.web_url || project.homepage; + const user = { + name: data.user_name, + avatar_url: data.user_avatar + }; + // branch removal + if (data.checkout_sha === null && !data.commits.length) { + return { + content: { + username: `gitlab/${project.name}`, + icon_url: project.avatar_url || data.user_avatar || '', + attachments: [ + makeAttachment(user, `removed branch ${refParser(data.ref)} from [${project.name}](${web_url})`) + ] + } + }; + } + // new branch + if (data.before == 0) { // eslint-disable-line + return { + content: { + username: `gitlab/${project.name}`, + icon_url: project.avatar_url || data.user_avatar || '', + attachments: [ + makeAttachment(user, `pushed new branch [${refParser(data.ref)}](${web_url}/commits/${refParser(data.ref)}) to [${project.name}](${web_url}), which is ${data.total_commits_count} commits ahead of master`) + ] + } + }; + } + return { + content: { + username: `gitlab/${project.name}`, + icon_url: project.avatar_url || data.user_avatar || '', + attachments: [ + makeAttachment(user, `pushed ${data.total_commits_count} commits to branch [${refParser(data.ref)}](${web_url}/commits/${refParser(data.ref)}) in [${project.name}](${web_url})`), + { + text: data.commits.map((commit) => ` - ${new Date(commit.timestamp).toUTCString()} [${commit.id.slice(0, 8)}](${commit.url}) by ${commit.author.name}: ${commit.message.replace(/\s*$/, '')}`).join('\n'), + color: NOTIF_COLOR + } + ] + } + }; + } + + tagEvent(data) { + const project = data.project || data.repository; + const web_url = project.web_url || project.homepage; + const tag = refParser(data.ref); + const user = { + name: data.user_name, + avatar_url: data.user_avatar + }; + let message; + if (data.checkout_sha === null) { + message = `deleted tag [${tag}](${web_url}/tags/)`; + } else { + message = `pushed tag [${tag} ${data.checkout_sha.slice(0, 8)}](${web_url}/tags/${tag})`; + } + return { + content: { + username: `gitlab/${project.name}`, + icon_url: project.avatar_url || data.user_avatar || '', + text: MENTION_ALL_ALLOWED ? '@all' : '', + attachments: [ + makeAttachment(user, message) + ] + } + }; + } + + createColor(status) { + switch (status) { + case 'success': + return '#2faa60'; + case 'pending': + return '#e75e40'; + case 'failed': + return '#d22852'; + case 'canceled': + return '#5c5c5c'; + case 'created': + return '#ffc107'; + case 'running': + return '#607d8b'; + default: + return null; + } + } + + pipelineEvent(data) { + const project = data.project || data.repository; + const commit = data.commit; + const user = { + name: data.user_name, + avatar_url: data.user_avatar + }; + const pipeline = data.object_attributes; + + return { + content: { + username: `gitlab/${project.name}`, + icon_url: project.avatar_url || data.user_avatar || '', + attachments: [ + makeAttachment(user, `pipeline returned *${pipeline.status}* for commit [${commit.id.slice(0, 8)}](${commit.url}) made by *${commit.author.name}*`, this.createColor(pipeline.status)) + ] + } + }; + } + + buildEvent(data) { + const user = { + name: data.user_name, + avatar_url: data.user_avatar + }; + + return { + content: { + username: `gitlab/${data.repository.name}`, + icon_url: '', + attachments: [ + makeAttachment(user, `build named *${data.build_name}* returned *${data.build_status}* for [${data.project_name}](${data.repository.homepage})`, this.createColor(data.build_status)) + ] + } + }; + } + + wikiPageTitle(wiki_page) { + if (wiki_page.action === 'delete') { + return wiki_page.title; + } + + return `[${wiki_page.title}](${wiki_page.url})`; + } + + wikiEvent(data) { + const user_name = data.user.name; + const project = data.project; + const project_path = project.path_with_namespace; + const wiki_page = data.object_attributes; + const wiki_page_title = this.wikiPageTitle(wiki_page); + const action = wiki_page.action; + + let user_action = 'modified'; + + if (action === 'create') { + user_action = 'created'; + } else if (action === 'update') { + user_action = 'edited'; + } else if (action === 'delete') { + user_action = 'deleted'; + } + + return { + content: { + username: project_path, + icon_url: project.avatar_url || data.user.avatar_url || '', + text: `The wiki page ${wiki_page_title} was ${user_action} by ${user_name}` + } + }; + } +} +``` + +* **Save** the settings +* The **Webhook URL** and **Token** are generated after saving +* Copy these credentials, they will be used later + +

GitLab webhook url and token

+ + + +### GitLab Webhooks settings + +After creating the new incoming webhook integration on Rocket.Chat, it is time to link it up with the GitLab repository. + +* Go to your GitLab project page then navigate to **Settings** > **Webhooks** +* Fill in the `URL` and `token` you copied from the Rocket.Chat setting +* Select the type of events you want to be notified on and **Add webhook** + +

GitLab webhook setting

+ +{% hint style="success" %} +After successful configuration, you can test the Webhook with any event trigger and see the notification in your specified Rocket.Chat room. +{% endhint %} + +

GitLab webhook test

+ +{% hint style="info" %} +More material + +* GitLab-Rocket.Chat webhook example: [https://github.com/malko/rocketchat-gitlab-hook](https://github.com/malko/rocketchat-gitlab-hook) +* GitLab webhook help: [https://docs.gitlab.com/ee/user/project/integrations/webhooks.html](https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) +{% endhint %} diff --git a/use-rocket.chat/workspace-administration/integrations/google-calendar.md b/use-rocket.chat/workspace-administration/integrations/google-calendar.md new file mode 100644 index 0000000000..714d4e987b --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/google-calendar.md @@ -0,0 +1,75 @@ +# Google Calendar + +This integration uses Rocket.Chat incoming webhook. With this integration, you'll get your event notifications right into Rocket.Chat. + +### Prerequisites + +1. A Google Cloud Platform project with the Google Calendar API enabled. To create a project and enable an API, refer to [Create a project and enable the API](https://developers.google.com/workspace/guides/create-project). +2. Prepare authorization credentials for a desktop application. To learn how to create credentials for a desktop application, refer to [Create credentials](https://developers.google.com/workspace/guides/create-credentials#desktop) (make sure you download the JSON file). +3. Create a dedicated channel for the event messages to be posted. You can use an existing channel as well. + +### Prepare Incoming Webhook + +1. Go to `Administration` then `Integration`. +2. Click the "New" button on the top right corner, then select "incoming" for the webhook type. +3. Check "Enabled". Give it an optional name. Enter the channel name where the messages are going to be posted. For the "post as" box, enter a bot username like `rocket.cat`. You can use other usernames as well, you're free to experiment. +4. Enable the incoming webhook script. For the script, copy the contents of this file - [https://github.com/debdutdeb/rocketchat-google-calendar/blob/main/script.js](https://github.com/debdutdeb/rocketchat-google-calendar/blob/main/script.js) +5. Go to the bottom of the page and click "save". + +![Initial Configuration](<../../../.gitbook/assets/screenshot0 (4) (4) (4) (4) (4) (4) (4) (4) (4) (1) (1) (1) (4) (2) (1) (1) (1) (1) (3) (3).png>) + +![Enable Script](<../../../.gitbook/assets/image (554).png>) + +![Save Webhook](<../../../.gitbook/assets/image (553).png>) + +As soon as the webhook is saved, you'll notice a webhook URL - + +![Webhook URL](<../../../.gitbook/assets/image (555).png>) + +We'll need this in the next step. + +### Run Integration Program + +The integration program runs on a server, periodically grabs the event data from your calendar and sends that data to your Rocket.Chat server to be processed and sent to the channel you set up in the previous section. + +To install the integration program, the easiest way is to first install the [go binary](https://golang.org/doc/install) and the run the following command - + +```bash +go get github.com/debdutdeb/rocketchat-google-calendar +``` + +Edit your `bashrc`, `zshrc` or `fish` config and add `$(go env GOPATH)/bin` to your `PATH`. This way you won't have to specify the whole path to the command every time. + +Use the help option to learn all the command line options and modify its execution process - `rocketchat-google-calendar -h` + +``` +Usage of ./rocketchat-google-calendar: + -calendars string + List of calendar IDs, separated by commas. (default "primary") + -credentials string + Enter path to the credentials file. (default "credentials.json") + -eventin string + The upper limit of upcoming event start time. Lower bound is the moment of API access. (default "30m") + -waitfor string + Time to wait before attempting a POST to Rocket.Chat webhook. (default "5m") + -webhook string + Enter the webhook url you got from Rocket.Chat. +``` + +Enter the appropriate values for the respective options. + +You'll then be asked to open a link. Click on it and use your Google account to authorize the app. + +![rocketchat-google-calendar](<../../../.gitbook/assets/image (558).png>) + +Once you get the token, copy and paste it on the terminal and hit enter. + +Your integration should now be running. + +### Notifying Once Every Day + +In the example command above, the event data is fetched from the Google servers every 5 minutes. You can change that behaviour however you like. + +One very common usecase is to be notified about all the meetings/events for each day, in the morning. You can achieve this by combining the two flags `-eventin` and `-waitfor`. + +Use `24h` for both of those options. This way the integration program will fetch data every 24 hours, list the events that's going to occur in those 24 hours and send them to your Rocket.Chat server. diff --git a/guides/administration/administration/integrations/graylog.md b/use-rocket.chat/workspace-administration/integrations/graylog.md similarity index 100% rename from guides/administration/administration/integrations/graylog.md rename to use-rocket.chat/workspace-administration/integrations/graylog.md diff --git a/guides/administration/administration/integrations/guggy.md b/use-rocket.chat/workspace-administration/integrations/guggy.md similarity index 100% rename from guides/administration/administration/integrations/guggy.md rename to use-rocket.chat/workspace-administration/integrations/guggy.md diff --git a/use-rocket.chat/workspace-administration/integrations/jenkins.md b/use-rocket.chat/workspace-administration/integrations/jenkins.md new file mode 100644 index 0000000000..487262a14e --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/jenkins.md @@ -0,0 +1,8 @@ +# Jenkins notifications via Rocket.Chat API + +_This plugin notify on build start, failure, success and much more per project basis._ + +1. Download [_Rocket.Chat Notifier_ Plugin](https://plugins.jenkins.io/rocketchatnotifier) via Jenkins Update Center. +2. Go to _Manage Jenkins_ -> _Configure system_ and find settings for this plugin. Setup your Rocket.Chat URL, User/Password and default channel \(recommended\). +3. In project select _Post-build Actions_ and configure plugin for your needs. + diff --git a/use-rocket.chat/workspace-administration/integrations/jfrog-xray.md b/use-rocket.chat/workspace-administration/integrations/jfrog-xray.md new file mode 100644 index 0000000000..1b52d0f475 --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/jfrog-xray.md @@ -0,0 +1,5 @@ +# JFrog Xray + +Add [JFrog Xray](https://jfrog.com/xray/) notifications via a new WebHook in Rocket.Chat. See the [project's documentation](https://github.com/crazy-max/rocketchat-xray) for integration instructions. + +![JFrog Xray Integration](../../../.gitbook/assets/Xray.png) diff --git a/use-rocket.chat/workspace-administration/integrations/jira.md b/use-rocket.chat/workspace-administration/integrations/jira.md new file mode 100644 index 0000000000..582241786f --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/jira.md @@ -0,0 +1,21 @@ +# Add Jira notifications via webhook + +N\_otify on issue creation, deletion, status, resolution, comment, or priority changes.\_ + +1. In Rocket.Chat go to **Administration > Workspace > Integrations** and create **New Integration** +2. Choose Incoming Webhook +3. Follow all instructions like **Enable**, give it a name, link to channel etc. Set **Enable Script** to true and enter the content of [_this script_](https://github.com/malko/rocketchat-jira-hook/blob/master/jira-rocketchat-hook.js) in the **Script** box +4. Hit **Save changes** and copy the _Webhook URL_ (added just below the script box) +5. Go to your jira as administrator and follow instructions on adding an outgoing webhook [here](https://developer.atlassian.com/jiradev/jira-apis/webhooks#Webhooks-configureConfiguringawebhook) + +You can tweak the content of the script to suit your needs better. + +## Add Jira integration via outgoing webhook + +_Integration for Rocket.Chat that summarizes any JIRA issues mentioned._ + +1. Go to [https://github.com/gustavkarlsson/rocketchat-jira-trigger](https://github.com/gustavkarlsson/rocketchat-jira-trigger) and follow the instructions. + +Example of Jira integration: + +![Jira integration](../../../.gitbook/assets/jira-webhook.png) diff --git a/use-rocket.chat/workspace-administration/integrations/microbadger.md b/use-rocket.chat/workspace-administration/integrations/microbadger.md new file mode 100644 index 0000000000..56971a7077 --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/microbadger.md @@ -0,0 +1,5 @@ +# MicroBadger + +Add [MicroBadger](https://microbadger.com) Docker image changes notifications via a new WebHook in Rocket.Chat. See the [project's documentation](https://github.com/crazy-max/rocketchat-microbadger) for integration instructions. + +![MicroBadger Integration](../../../.gitbook/assets/MicroBadger.png) diff --git a/use-rocket.chat/workspace-administration/integrations/microsoft-teams.md b/use-rocket.chat/workspace-administration/integrations/microsoft-teams.md new file mode 100644 index 0000000000..8637963d82 --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/microsoft-teams.md @@ -0,0 +1,133 @@ +# Microsoft Teams + +## Goal + +* Receive message from Microsoft Teams (**Incoming WebHook**) +* Send message to Microsoft Teams Channel(**Outgoing WebHook**) + +## Create Incoming WebHook in Rocket.Chat + +_**Note:** I would advise to create New Team so not all members in your organisation have access to this Integration_ + +1. **Create Incoming Webhook with Default parameters:** + * Go to **Integrations** --> Create **New integration** --> Select **Incoming WebHook** + * Assign **Name** + * Assign **Post to Channel** (This will be the Channel where you want to receive msg from Teams) + * Assign **Post as** (Create Bot user and add bot the above mentioned Channel) + * Copy and paste below script in **Script** section + +{% hint style="info" %} +The number 16 in the following script (`request.content.text.slice(16)`) should be updated to **`9 + MS Teams bot username length`**. This command is used to remove the bot tag from the text received from MS Team so that only the message is displayed in Rocket.Chat (e.g. if the bot username in MS Teams is rocket.bot, which is 10 characters long, then 16 should be updated to 19 = 9 + 10). +{% endhint %} + +```javascript +class Script { + process_incoming_request({ request }) { + // UNCOMMENT THE BELOW LINE TO DEBUG IF NEEDED. + // console.log(request.content); + if ('edited_message' in request.content) { + request.content = request.content; + } + let from = request.content.from; + let who = from.name; + let icon_url = '/avatar/' + from.name + '.jpg' + let body = request.content.text.slice(16); + + if(!body) { + if(request.content.hasOwnProperty("sticker") && request.content.sticker.emoji) { + // It's a sticker + body = request.content.sticker.emoji + } else { + return {} + } + } + + return { + content: { + username: who, + icon_url: icon_url, + text: body, + }, + response: { + type: "message", + attachments: [{ + contentType: "application/vnd.microsoft.card.adaptive", + content: { + type: "AdaptiveCard", + version: "1.4", + body: [{ + type: "TextBlock", + text: "Message received", + }], + }, + }], + } + }; + } +} +``` + +1. **Save** and then open your **Incoming WebHook** You should be able to see **Webhook URL** just **copy** that, We will need that during Creating **Outgoing WebHook** in MS Teams. + +## Create Outgoing WebHook in MS Teams: + +1. Select the appropriate team and select **Manage team** from the (**•••**) drop-down menu. +2. Choose the **Apps** tab from the navigation bar. +3. From the window's lower right corner select Create an **outgoing webhook**. +4. In the resulting popup window complete the required fields: + + * **Name** - The webhook title and @mention tap. (This will be your bot name in MS Teams) + * **Callback URL** - Paste the URL here we copied from Rocket.Chat. + * **Description** - A detailed string that will appear in the profile card and the team-level App dashboard. + * **Profile Picture** (optional) an app icon for your webhook. + * Select the **Create** button from lower right corner of the pop-up window and the outgoing webhook will be added to the current team's channels. + + _**Note :**_ _The Name We mentioned above will be the bot name so when you send message to Rocket.Chat Mention to Bot example @namebot_ + + \_\_ + +## Create Incoming WebHook in MS Teams: + +1. Navigate to the **Team** where you want to add the webhook and select (**•••**) **More Options** from the top navigation bar and Select **Apps** and select **More apps**. + * Choose **Connectors** from the drop-down menu and search for **Incoming Webhook**. + * Select the **Configure** button, provide a name, and, optionally, upload an image avatar for your webhook. + * Select appropriate **Teams** and **Channel**. + * The dialog window will present a unique URL that will map to the channel. Make sure that you **copy and save the URL**—you will need to provide it to Rocket.Chat Outgoing WebHook. + * Select the **Done** button. The webhook will be available in the team channel. + +## Create Outgoing Webhook in Rocket.Chat: + +1. Create **Outgoing WebHook** from Integration: + * Select **Message Sent** as **Event Trigger** + * Select the **Channel** (same as mentioned in Incoming Webhook) + * Paste the **URL** we copied from Microsoft Teams + * Select Bot **Post as** (same as in Incoming Webhook) + * Paste Below **Script**: + +```javascript +class Script { + prepare_outgoing_request({ request }) { + console.log(request.data); + if (request.data.bot) { + //Don't repost messages from the bot. + return { }; + } else { + return { + url: request.url, + method: 'POST', + headers: {"ContentType":"application/json","Content-type":"application/json"}, + data: { + context: 'http://schema.org/extensions', + type: 'MessageCard', + // text: '{\'' + request.data.user_name+ ':': \"Isravel - Hello World\"}'; + text: request.data.user_name.bold() + ": " + request.data.text, + // text: encodeURIComponent( request.data.user_name.bold() + request.data.text) + }, + // method: 'GET' + }; + } + } + } +``` + +## Enjoy! diff --git a/use-rocket.chat/workspace-administration/integrations/newrelic.md b/use-rocket.chat/workspace-administration/integrations/newrelic.md new file mode 100644 index 0000000000..71d4d03256 --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/newrelic.md @@ -0,0 +1,9 @@ +# NewRelic + +[NewRelic](https://newrelic.com) offers a performance management solution enabling developers to diagnose and fix application performance problems in real-time. It also provides a notification/alerting facet to their offerings. + +Full documentation/installation instruction: + +[https://github.com/kajisaap/rocketchat-newrelic](https://github.com/kajisaap/rocketchat-newrelic) + +Thanks to [**CloudFactory**](https://www.cloudfactory.com) diff --git a/use-rocket.chat/workspace-administration/integrations/nextcloud-and-webdav.md b/use-rocket.chat/workspace-administration/integrations/nextcloud-and-webdav.md new file mode 100644 index 0000000000..6b87a144e8 --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/nextcloud-and-webdav.md @@ -0,0 +1,33 @@ +# Nextcloud and WebDAV integrations + +You can integrate Nextcloud with any application that uses the WebDAV protocol. Rocket.Chat offers seamless integration between Nextcloud and the Rocket.Chat workspace. + +With this integration, you can access, browse, navigate your Nextcloud directories and share files from your Nextcloud server all within Rocket.Chat. + +{% hint style="info" %} +For the following integration to work on your Rocket.Chat workspace, contact your administrator, or follow the [webdav-integration.md](../settings/webdav-integration.md "mention") administrator guide to enable Webdav +{% endhint %} + +## Adding a new Nextcloud/WebDAV server + +Once the integration has been enabled by the admin, any user will be able to link their servers to Rocket.Chat. + +Adding a new Nextcloud server requires you to have available the; + +* **WebDAV URL**: The WebDAV URL used for the connection +* **Username**: Your Nextcloud username +* **Password**: Your Nextcloud password + +To get your Nextcloud WebDAV URL: + +* navigate to the **Files** section of your Nextcloud server, +* Click **Settings** at the bottom left, and you will see a WebDAV field with the URL that looks like this `https://EXAMPLE.COM/remote.php/dav/files/USERNAME/` +* Copy the URL and proceed +* Back on your Rocket.Chat workspace, navigate to the :heavy\_plus\_sign: button on the right side of your message composer inside any chat or room +* Click :heavy\_plus\_sign: **Add Server** +* Fill in the information on the dialogue that appears, including the Nextcloud WebDAV URL you copied earlier, Nextcloud username, and Nextcloud password +* Click **Add new WebDAV Account** +* Refresh your server +* Click the :heavy\_plus\_sign: button on the right side of your message composer inside any chat or room again, and this time, you will see the server you just added + +From here, you have the ability to access and share your Nextcloud files on Rocket.Chat diff --git a/use-rocket.chat/workspace-administration/integrations/nextcloud-rocket.chat-app.md b/use-rocket.chat/workspace-administration/integrations/nextcloud-rocket.chat-app.md new file mode 100644 index 0000000000..659838c8b9 --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/nextcloud-rocket.chat-app.md @@ -0,0 +1,75 @@ +# Nextcloud Rocket.Chat App + +The Nextcloud Rocket.Chat App integration offers a very powerful Open Source collaboration platform with a very high level of security and ownership. The flexibility to enjoy features from both solutions combined gives you a step further to use the _ultimate open-source alternative to MS 365._ + +![](<../../../../.gitbook/assets/image (642).png>) + +## Nextcloud Rocket.Chat App Setup + +### Prerequisites + +To use the Nextcloud Rocket.App, you are expected to have the following workspaces running: + +* Rocket.Chat following our [deployment guide](../../../../quick-start/deploying-rocket.chat/) +* [Nextcloud](https://nextcloud.com) + +{% hint style="warning" %} +Connecting Nextcloud with Rocket.Chat requires your Rocket.Chat sever to be on an SSL-protected domain. This is strictly for security reasons. +{% endhint %} + +{% hint style="info" %} +You need to make the following changes to your Rocket.Chat settings + +* Have two-factor Authentication disabled on your Rocket.Chat settings **Administration** > **Workspace** > **Settings** > **Accounts** > **Two Factor Authentication** +* Disable Restrict access inside any Iframe **Administration** > **Workspace** > **Settings** > **General** > **Restrict access inside any Iframe** +* Enable to send and receive data inside an iframe **Administration** > **Workspace** > **Settings** > **General** > **Iframe Integration** +{% endhint %} + +### Setup + +When that is all done, follow these procedures to get setup + +* Go to your Nextcloud Dashboard and navigate to the **Apps** section + +![](<../../../../.gitbook/assets/image (634).png>) + +* Navigate down to the **Social & Communication** category and locate the **Rocket.Chat App** then **Download and Enable** + +![](<../../../../.gitbook/assets/image (651).png>) + +* Head over to your **Nextcloud settings** section and you will find a **Rocket.Chat** menu, open it to proceed with linking your Rocket.Chat workspace + +![](<../../../../.gitbook/assets/image (648).png>) + +* Fill in the Rocket.Chat URL, admin username, and password to authenticate, click on **Connect and Save**. This will automatically generate an access token and userId to be used + +![](<../../../../.gitbook/assets/image (253) (1) (2).png>) + +![](<../../../../.gitbook/assets/image (667) (1) (1).png>) + +* After connecting, the Admin User ID and Admin Token will be automatically filled, and your app is ready for use + +![](<../../../../.gitbook/assets/image (638).png>) + +* Now along with other existing Nextcloud apps, you should see you now have Rocket.Chat included + +![](<../../../../.gitbook/assets/image (663).png>) + +* Clicking on the Rocket.Chat icon will open up the chat interface like normal, all within Nextcloud. + +![](<../../../../.gitbook/assets/image (674).png>) + +## Features + +Using this integration gives you the possibility to: + +* Extend and streamline communication with external parties using Rocket.Chat’s federation and bridges into Slack and Microsoft Teams. +* Easily collaborate on projects and documents using Rocket.Chat’s chat right in Nextcloud. +* Use a single productivity platform that integrates with other tools, including Nextcloud, and keeps all communications and notifications in one place. +* Leverage more advanced user governance features, access levels, and role-based permissions +* Easily map even the most complex organizational structure into groups, teams, and discussions. +* Securely collaborate and communicate with anyone via the world’s leading social media channels such as Whatsapp, Messenger, Twitter, Instagram, Telegram, and others. +* Turn their chats into productivity tools using integrations with various HR tools, CRM solutions, ticketing systems, project management solutions, and developer tools to build powerful workflows. +* Make digital workplaces and communities more engaging and collaborative using [Rocket.Chat’s marketplace of apps](https://rocket.chat/marketplace). +* Ensure full governance of all their communications using message audits, flexible retention policies, powerful engagement analytics and dashboards, and more. +* Send advanced message formatting like code snippets, formula syntax, message threads, and more. diff --git a/use-rocket.chat/workspace-administration/integrations/nixstats.md b/use-rocket.chat/workspace-administration/integrations/nixstats.md new file mode 100644 index 0000000000..76fb091c11 --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/nixstats.md @@ -0,0 +1,183 @@ +# Nixstats notification + +Add Nixstats notifications via a new WebHook in Rocket.Chat + +1. In Rocket.Chat go to **Administration > Workspace > Integrations** and create **New Integration**. +2. Choose Incoming WebHook. +3. Follow all instructions like Enable, give it a name, link to channel, etc. Set "Enable Script" to true and enter the javascript in the "Script" box. +4. Hit **Save changes** and copy the _Webhook URL_ (added just below the script box). +5. Go to [https://nixstats.com](https://nixstats.com) **-> Settings -> Notification Contacts -> Add** (or Edit a contact) contact. +6. Paste the Rocket.Chat URL you've copied in step 4. + +Paste this javascript in the "Script" textarea on Rocket.Chat webhook settings + +```javascript +/* exported Script */ +/* globals console, _, s */ + +/** Global Helpers + * + * console - A normal console instance + * _ - An underscore instance + * s - An underscore string instance + */ + +class Script { + /** + * @params {object} request + */ + process_incoming_request({ request }) { + var url; + var url_title; + if(request.content.domain_id) + { + url = 'https://nixstats.com/domains/'+request.content.domain_id; + url_title = request.content.name+" @ nixstats.com"; + } + else + { + url = 'https://nixstats.com/server/'+request.content.server_id; + url_title = request.content.server_name+" @ nixstats.com"; + } + return { + content:{ + text: request.content.subject, + "attachments": [ + { + "author_name": url_title, + "author_link": url, + "author_icon": "https://nixstats.com/images/favicon.png" + } + ] + } + }; + } +} +``` + +## Render nixstats graphs in Rocket.Chat + +Add Nixstats notifications via a new WebHook in Rocket.Chat + +1. In Rocket.Chat go to "Administration"->"Integrations" and create "New Integration". +2. Choose Outgoing WebHook. +3. Select **Message Sent** as Event trigger. +4. Enter **ns** as trigger word. +5. Enter `` as URLs. +6. Avatar URL ``. +7. **Token**, this is your nixstats API token, [create an API key](https://nixstats.com/settings/api). +8. Script Enabled set to **True**. + +Paste this javascript in the "Script" textarea on Rocket.Chat webhook settings + +````javascript +/* exported Script */ +/* globals Store */ + +class Script { + prepare_outgoing_request({ request }) { + let match; + + match = request.data.text.match(/^ns servers\s(ls|list)\s*(.*)?$/); + if (match) { + let u = request.url + 'servers?perpage=99&token='+request.data.token; + return { + url: u, + headers: request.headers, + method: 'GET' + }; + } + + match = request.data.text.match(/^ns graphs\s(.*)?$/); + if (match) { + var matched = false; + var options; + var serverrequest = HTTP('GET', request.url + 'servers?perpage=99&token='+request.data.token, options); + var serverlist = [] + JSON.parse(serverrequest.result.content).servers.forEach(function(pr) { + serverlist.push({'name': pr.name, 'id': pr.id}); + }); + + serverlist.forEach(function(serv) { + if(serv.id == match[1]) + { + matched = serv.id; + } + if(serv.name == match[1]) + { + matched = serv.id; + } + }); + + if(!matched){ + return { + message: { + text: 'Server not found.' + } + }; + } + else + { + let u = request.url + 'server/'+matched+'?charts=yes&token='+request.data.token; + return { + url: u, + headers: request.headers, + method: 'GET' + }; + } + } + + match = request.data.text.match(/^help$/); + if (match) { + return { + message: { + text: [ + '**Nixstats commands**', + '```', + ' ns servers ls|list', + ' ns graphs serverid|servername', + '```' + ].join('\n') + } + }; + } + } + + process_outgoing_response({ request, response }) { + var text = []; + var attach = []; + if(response.content.charts) + { + response.content.charts.forEach(function(pr) { + attach.push({ + "color": "#000000", + "text": pr.title+" on "+response.content.name, + "image_url": pr.url, + }); + }); + text.push('Performance of '+response.content.name); + } + else + { + text.push('```'); + response.content.servers.forEach(function(pr) { + text.push(''+pr.id+"\t "+pr.last_data.load.replace(",",",\t")+"\t"+pr.name+''); + }); + text.push('```'); + } + return { + content: { + text: text.join('\n'), + attachments: attach, + parseUrls: false + } + }; + } +} +```` + +After saving the data you can use the following commands to retrieve data: + +`ns servers list` to list your servers with their IDs and load average. + +`ns graphs [serverid]` to retrieve a graph of Memory, Network, Load average and Disk usage of the specified server. diff --git a/use-rocket.chat/workspace-administration/integrations/pagerduty.md b/use-rocket.chat/workspace-administration/integrations/pagerduty.md new file mode 100644 index 0000000000..9397601b3f --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/pagerduty.md @@ -0,0 +1,38 @@ +# PagerDuty + +[PagerDuty](https://pagerduty.com) is an alarm aggregation and dispatching service for system administrators and support teams. It collects the alerts from your monitoring tools, gives you an overall view of all of your monitoring alarms, and alerts an on-duty engineer if there's a problem. + +### **Admin Settings** + +Log in as an administrator and go to **Administration > Workspace > Integrations > New Integration > Incoming Webhook** and configure the following settings: + +* **Enabled:** Enable this option to integrate the PagerDuty with Rocket.Chat. +* **Name (Optional):** Enter the preferred name for your PagerDuty connection. +* **Post to Channel:** Messages that are sent to the Incoming Webhook will be posted here. Start with `@` for the user or `#` for the channel. Eg: `@john` or `#general` +* **Post as:** Choose the username that this integration will post as. The user must already exist. +* **Alias (optional):** Choose the alias that will appear before the username in messages. +* **Avatar URL (optional):** An option to override the avatar used to post from this integration. Should be a URL of an image. +* **Emoji (optional):** Use an emoji as an avatar. Example: `:ghost:` +* **Script Enabled:** Enable this option to add the script. +* **Script:** Paste contents of [rocketchat\_pagerduty\_incoming.js](https://github.com/kajisaap/rocketchat-pagerduty/blob/master/rocketchat\_pagerduty\_incoming.js) into the _Script_ field. +* **Webhook URL:** Copy the **Webhook URL** as soon as you save the integration and proceed to the configuration of generic webhook integration in PagerDuty. +* **Token:** An auto-generated token. +* **Example Payload:** Customize the payload template. + +Click **Save.** + +### PagerDuty + +**To configure your webhook:** + +1. In PagerDuty, navigate to the **Service Extensions > New Extension.** + +![New Extension](../../../../.gitbook/assets/pagerdutyConfiguration.png) + +1. For **Extension Type** select **Generic Webhooks(v3)**. +2. Enter a unique Extension Name e.g. rocketchatpage and choose the service. +3. Select the **Service** you wish to add. +4. Add the Webhook URL. + +More details:\ +[PagerDuty WebHook Docs](https://support.pagerduty.com/hc/en-us/articles/202830320-Webhooks) diff --git a/guides/administration/administration/integrations/prometheus.md b/use-rocket.chat/workspace-administration/integrations/prometheus.md similarity index 100% rename from guides/administration/administration/integrations/prometheus.md rename to use-rocket.chat/workspace-administration/integrations/prometheus.md diff --git a/use-rocket.chat/workspace-administration/integrations/reviewboard.md b/use-rocket.chat/workspace-administration/integrations/reviewboard.md new file mode 100644 index 0000000000..762998be49 --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/reviewboard.md @@ -0,0 +1,9 @@ +# Review Board + +Add ReviewBoard notifications via a new WebHook in Rocket.Chat + +1. In Rocket.Chat go to **Administration > Workspace > Integrations** and create **New Integration** +2. Choose Incoming WebHook +3. Follow all instructions like Enable, give it a name, link to channel etc. Set **Enable** **Script** to true and enter the contents of [this script](https://github.com/almonteb/rocketchat-hook-reviewboard/blob/master/src/plugin.js) +4. Press Save changes and copy the _WebHook URL_ (added just below the script box) +5. In ReviewBoard, configure a new WebHook per [these instructions](https://www.reviewboard.org/docs/manual/dev/admin/configuration/webhooks/) diff --git a/use-rocket.chat/workspace-administration/integrations/rundeck.md b/use-rocket.chat/workspace-administration/integrations/rundeck.md new file mode 100644 index 0000000000..a955aca070 --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/rundeck.md @@ -0,0 +1,13 @@ +# RunDeck Job Notifications + +_This plugin can be set to notify a channel when a job Starts, Fails or has Succeeded_ + +Rundeck is an open orchestration and scheduling platform used for operations support tasks, enterprise job scheduling, deployment, and more. + +It's commonly found in the ChatOps space due to its flexible API. + +1. Download the [rundeck-rocketchat-notifier](https://github.com/jszaszvari/rundeck-rocketchat-notifier) from GitHub. +2. Set up an Incoming Integration and take note of the URL. +3. Install the plugin on your RunDeck machine as per the instructions in the git repo linked above. + +Once configured you'll have notifications like the example below: ![image](../../../.gitbook/assets/RunDeck.png) diff --git a/use-rocket.chat/workspace-administration/integrations/sentry.md b/use-rocket.chat/workspace-administration/integrations/sentry.md new file mode 100644 index 0000000000..e7065f0508 --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/sentry.md @@ -0,0 +1,39 @@ +# Sentry + +Add Sentry notifications via a new WebHook in Rocket.Chat This script works for the sentry.com and self-hosted version. + +1. In Rocket.Chat go to **Administration > Workspace > Integrations** and create "New Integration". +2. Choose Incoming WebHook. +3. Follow all instructions like Enable, give it a name, link to channel etc. Bonus: add [https://unavatar.io/twitter/getsentry](https://unavatar.io/twitter/getsentry) as Avatar URL. +4. Set "Enable Script" to true and enter the javascript in the "Script" box. +5. Press Save changes and copy the _Webhook URL_ (added just below the script box). +6. Go to your Sentry project, ie. [https://app.getsentry.com/](https://app.getsentry.com/)< organization >/< project >/settings/plugins/ and enable the "WebHooks" integration. It's in the project "settings" under All Integrations. A WebHooks integration is added there when enabled. +7. Add a new webhook by pasting the Rocket.Chat url you've copied in step 5 in the "Callback URLs" textarea (1 URL per line) and press the Save Changes button. +8. Test the webhook with the "Test Configuration" button in Sentry, a Test Results box should appear below, with more info (success or failure). + +Paste this in javascript in the "Script" textarea on Rocket.Chat WebHook settings + +```javascript +class Script { + + process_incoming_request({ request }) { + // console is a global helper to improve debug + // console.log(request.content); + + return { + content: { + text: "Error in project *" + request.content.project_name + "* (" + request.content.project + ").\n*Message:* "+ request.content.message+"\n*Culprit:* " + request.content.culprit +".\n*Check url:* " + request.content.url, + } + }; + + return { + error: { + success: false, + message: 'Error example' + } + }; + } +} +``` + +Use the console.log(request.content) line to debug the json content, posted by Sentry. diff --git a/use-rocket.chat/workspace-administration/integrations/telegram.md b/use-rocket.chat/workspace-administration/integrations/telegram.md new file mode 100644 index 0000000000..265458cdad --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/telegram.md @@ -0,0 +1,219 @@ +# Simple Telegram Bot + +A simple relay communication between Rocket.Chat and Telegram is possible by configuring a basic bot. The guide below shows a community example of how this can be achieved with webhooks. + +This will give you the possibility of relaying messages between Telegram and Rocket.Chat in a specified room of your choice. + +{% hint style="success" %} +Rocket.Chat [Enterprise workspaces](../settings/enterprise.md) have the [Telegram App](../../../extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/) packaged with many more functionalities and other [Omnichannel](../../omnichannel/) features to use. +{% endhint %} + +{% hint style="warning" %} +Note: This integration is not designed to work for Omnichannel Conversations. Please check out the [Telegram App](../../../extend-rocket.chat-capabilities/rocket.chat-marketplace/rocket.chat-public-apps-guides/omnichannel-apps/telegram-app/) for serving your Omnichannel conversations with Telegram. +{% endhint %} + +## Getting Started + +{% hint style="info" %} +Make sure Your Rocket.Chat workspace URL is publicly available. +{% endhint %} + +1. Log in to your [Telegram](https://web.telegram.org/) account on your mobile or using a browser +2. Add and open a conversation with the user `BotFather` +3. Click **start** +4. Send `/newbot` to start creating a new bot +5. Follow the instructions to continue + * Set the bot's username + * Telegram successfully creates the bot and shows how to access it +6. Copy the token provided, it will be needed for the configuration + +![Creating new telegram bot](<../../../.gitbook/assets/Creating telegram bot.png>) + +## Configuration + +{% hint style="info" %} +Before configuring the Telegram integration, make sure you: + +* [Create a channel](../../user-guides/rooms/channels/create-a-new-channel.md) on Rocket.Chat for incoming and outgoing conversations. +* [Create a user](../users/#add-new-users) with `bot` [role ](../../../setup-and-administer-rocket.chat/roles-in-rocket.chat)to be used for the relay. +{% endhint %} + +### Creating an Incoming Telegram webhook in Rocket.Chat + +The incoming webhook is responsible for relaying messages from Telegram into Rocket.Chat into a specific [Channel](../../user-guides/rooms/channels/). + +To create an incoming webhook + +* Go to **Administration** > **Workspace** > **Integrations** in Rocket.Chat +* Create a new Incoming Webhook following this guide [#create-a-new-incoming-webhook](./#create-a-new-incoming-webhook "mention") + * Enable the integration + * Set the webhook integration name + * Set the **Post to Channel** as the channel created above + * Set **Post as**, as the user created above + * Enable the script and paste the following code + +```javascript +class Script { + addQuotePrefix(str) { + let tmp = str.split('\n'), + res = []; + + for (const frag of tmp) { + res.push(`> ${frag}`); + } + + return res.join('\n'); + } + + process_incoming_request({ request }) { + // UNCOMMENT THE BELOW LINE TO DEBUG IF NEEDED. + // console.log(request.content); + if ('edited_message' in request.content) { + request.content.message = request.content.edited_message; + } + let from = request.content.message.from; + let who = from.username + let icon_url = '/avatar/' + from.username + '.jpg' + if(!who) { + if (from.first_name && from.last_name) { + who = `${from.first_name} ${from.last_name}` + } else if (from.first_name) { + who = from.first_name + } else { + who = from.last_name + } + icon_url = `/avatar/${request.content.message.from.first_name}.jpg` + } + let body = request.content.message.text + + if(!body) { + if(request.content.message.hasOwnProperty("sticker") && request.content.message.sticker.emoji) { + // It's a sticker + body = request.content.message.sticker.emoji + } else { + return {} + } + } + + if(request.content.message.reply_to_message) { + var quotedMessage = + "*" + + request.content.message.reply_to_message.from.username + + "*\n" + + request.content.message.reply_to_message.text; + + quotedMessage = this.addQuotePrefix(quotedMessage); + body = quotedMessage + '\n' + body; + } + + return { + content: { + username: who, + icon_url: icon_url, + text: body + } + }; + } +} +``` + +* **Save** + +This creates a new incoming integration with a **webhook URL** and **token** provided. + +#### Setting Telegram webhook + +* Copy the incoming webhook URL provided by Rocket.Chat after saving +* Change the following URL with `yourTelegramBotToken` and Incoming `webhookURL` and open on your browser + +```html +https://api.telegram.org/bot/setwebhook?url= +``` + +* You see a response in this format to indicate success + +```json +{ +"ok": true, +"result": true, +"description": "Webhook was set" +} +``` + +#### Test Telegram Incoming Integration + +Test your incoming Webhook by sending a telegram message to the Telegram bot. + +The message sent gets posted in the `channel` by the `user`you specified in the incoming webhook configuration page. + +![Telegram bot webhook Rocket.Chat](<../../../.gitbook/assets/Telegram bot webhook with Rocket.Chat.png>) + +### Creating a Telegram Group with Bot access + +A Telegram group can be configured to send and receive messages to and from Rocket.Chat + +Create a Telegram group and grant bot access + +* Create a new Telegram group +* Get the group chat id. This can be gotten by + * Adding the user `RawDataBot`to the group + * On joining, a response like below is seen with the chat id + +``` +Your chat id is -873457731, your id is 1140377161 + +Also you can send me username or joinchat link in a private message + +Kisses, your bot +``` + +* Change the bot group privacy settings so it can listen to all messages by: + * Sending the message `/setprivacy` to botFather + * Choosing the bot you want to edit + * Setting the status to `Disable` + +![Change telegram bot group privacy settings](<../../../.gitbook/assets/Change telegram bot group privacy settings.png>) + +### Creating an Outgoing Telegram webhook in Rocket.Chat + +The outgoing integration is used to relay messages back from Rocket.Chat to Telegram. + +* Go to **Administration** > **Workspace** > **Integrations** in Rocket.Chat +* Create an outgoing webhook following this guide [#create-a-new-outgoing-webhook](./#create-a-new-outgoing-webhook "mention") + * Select the Message sent as the **Event Trigger** + * Enable the integration + * Set any Trigger Words in which messages must have before they get relayed if needed + * Specify the channel to listen in + * Set the URL following this format: + +```html +https://api.telegram.org/bot/sendMessage?chat_id= +``` + +* Enable Script and paste the following code + +```javascript +class Script { + prepare_outgoing_request({ request }) { + if (request.data.bot) { + //Don't repost messages from the bot. + return { }; + } else { + return { + url: request.url + '&parse_mode=HTML' + '&text=' + encodeURIComponent('' + request.data.user_name+ ': ' + request.data.text), + method: 'GET' + }; + } + } +} +``` + +* **Save** +* Add your bot to the telegram group and enjoy cross-platform communication between Rocket.Chat and Telegram. + +

Rocket.Chat X Telegram

+ +{% hint style="success" %} +* Multiple Outgoing Triggers can be configured to cover all use cases. +* The scripts can be customized as needed. Learn more here [#script-details](./#script-details "mention") +{% endhint %} diff --git a/guides/administration/administration/integrations/travis-ci.md b/use-rocket.chat/workspace-administration/integrations/travis-ci.md similarity index 100% rename from guides/administration/administration/integrations/travis-ci.md rename to use-rocket.chat/workspace-administration/integrations/travis-ci.md diff --git a/use-rocket.chat/workspace-administration/integrations/uptime-robot.md b/use-rocket.chat/workspace-administration/integrations/uptime-robot.md new file mode 100644 index 0000000000..1836245c5a --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/uptime-robot.md @@ -0,0 +1,5 @@ +# Uptime Robot + +Add [Uptime Robot](https://uptimerobot.com) notifications via a new WebHook in Rocket.Chat. See the [project's documentation](https://github.com/crazy-max/rocketchat-uptimerobot) for integration instructions. + +![Uptime Robot Integration](../../../.gitbook/assets/UptimeRobot.png) diff --git a/use-rocket.chat/workspace-administration/integrations/zapier.md b/use-rocket.chat/workspace-administration/integrations/zapier.md new file mode 100644 index 0000000000..e294bc4b02 --- /dev/null +++ b/use-rocket.chat/workspace-administration/integrations/zapier.md @@ -0,0 +1,47 @@ +# Zapier + +{% hint style="warning" %} +![](<../../../.gitbook/assets/Deprecated (1).png>)Zapier integration has been deprecated from Rocket.Chat `6.0.` + +You can install the Zapier app from Marketplace to avoid disruptions. +{% endhint %} + +[Zapier](https://zapier.com/zapbook/RocketChat/) lets you connect Rocket.Chat to hundreds of other web services. Automated connections called Zaps, set up in minutes with no coding, can automate your day-to-day tasks and build workflows between apps that otherwise wouldn't be possible. + +Before you get started, there are a few things that you have to check. + +{% hint style="info" %} +* You are required to have a Rocket.Chat server accessible publicly +* A user with the **`impersonate user`** permission to be used for authentication. +* Zapier OAuth is configured by default at `Admin -> oAuth Apps -> Zapier` +{% endhint %} + +* Log in or create a new [Zapier account](https://zapier.com) +* From your Zapier dashboard, click on **My Apps** then click on **Add Connection.** + +![](<../../../.gitbook/assets/image (693).png>) + +* Search for Rocket.Chat and choose it in the popup that shows + +![](<../../../.gitbook/assets/image (679) (1).png>) + +* A new window will open. Fill in your workspace url(_keep the trailing slash_) and continue + +![](<../../../.gitbook/assets/image (643).png>) + +* You are then redirected to your workspace to authenticate. Authenticate with any user having the `impersonate user` permission + +![](<../../../.gitbook/assets/image (668) (1).png>) + +* Accept all the privileges needed and **Authorize** + +![](<../../../.gitbook/assets/image (657).png>) + +* Your new connection is ready to be used with [other Zapier apps](https://zapier.com/apps/rocketchat/integrations) +* You can test the connection by clicking on the 3 dots by the side as seen below + +![](<../../../.gitbook/assets/image (696).png>) + +Once that is done you can start creating an automation! Use a pre-made Zap or create your own with the Zap Editor. Creating a Zap requires no coding knowledge and you'll be walked step-by-step through the setup. + +Each Zap has one app as the **Trigger**, where your information comes from and which causes one or more **Actions** in other apps, where your data gets sent automatically. diff --git a/use-rocket.chat/workspace-administration/invites.md b/use-rocket.chat/workspace-administration/invites.md new file mode 100644 index 0000000000..fe2d982485 --- /dev/null +++ b/use-rocket.chat/workspace-administration/invites.md @@ -0,0 +1,26 @@ +--- +description: >- + Under Invites, you can view and delete the invite links generated to invite + users to the team/channels. +--- + +# Invites + +To access this menu: + +Navigate to **Administration** > **Workspace** > **Invites**. + +{% hint style="info" %} +Please follow the link to find out how these[ invite links](https://docs.rocket.chat/guides/user-guides/teams/teams-members#invite-link) are created. +{% endhint %} + +## Delete a record + +If you want to delete any of these invite records: + +* Click the delete button next to it +* Hit **Yes** + +{% hint style="info" %} +This feature comes in handy when you have an invite link with an **Expiration** **date: Never**. In order to avoid abuse, you can revoke it by deleting the record. +{% endhint %} diff --git a/use-rocket.chat/workspace-administration/mailer.md b/use-rocket.chat/workspace-administration/mailer.md new file mode 100644 index 0000000000..d41fdd5073 --- /dev/null +++ b/use-rocket.chat/workspace-administration/mailer.md @@ -0,0 +1,23 @@ +--- +description: Use the Mailer tool to send emails to users inside your Rocket.Chat server. +--- + +# Mailer + +To access this menu, navigate to **Administration** > **Workspace** > **Mailer**. + +Use the **`From`** field to set the address to send the email. + +Check the **Dry Run** option to send the email only to the address defined in **`From`**. + +You can also filter who receives the email by using a valid user query in the **`Query`** field. + +Then, you can write a subject and a body for the email. When you write the body, add brackets to add dynamic data to the body. + +Add the following brackets to the email body: + +* `[unsubscribe]`: creates an unsubscribe link. The email body **must** have an unsubscribe link. +* `[name]`: uses the full name of the user that receives the email +* `[fname]`: uses the first name of the user that receives the email +* `[lname]`: uses the last name of the user that receives the email +* `[email]`: uses the email address of the user that receives the email diff --git a/use-rocket.chat/workspace-administration/oauth-applications.md b/use-rocket.chat/workspace-administration/oauth-applications.md new file mode 100644 index 0000000000..9e80c48fb7 --- /dev/null +++ b/use-rocket.chat/workspace-administration/oauth-applications.md @@ -0,0 +1,28 @@ +--- +description: >- + With Rocket.Chat OAuth Applications, you can set up custom applications to be + used for Open Authentication. +--- + +# OAuth Applications + +To access this menu, navigate to **Administration** > **Workspace** > **OAuth Applications.** + +This dashboard shows the various OAuth apps linked. + +## Adding New OAuth Application + +To add a new OAuth app from your OAuth Applications dashboard, click the +**New Application** button at the top right. + +You are presented with a screen to fill out the required information for the OAuth app. + +Fill in the information according to the app you are linking. + +1. **Active**: Enable this to set active the OAuth App. +2. **Application Name**: Takes in the name of the application. This will be seen by your users. +3. **Redirect URI**: After OAuth2 authentication, users will be redirected to an URL on this list. You can add one URL per line. +4. **Save**: When you are done filling in the information, hit **Save** to commit the changes. + +## Viewing and Editing OAuth Apps + +From the OAuth dashboard( **Administration** > **Workspace** > **OAuth Applications.** ), you can see a list of OAuth Apps created where you can click on any to view and edit the configurations made. diff --git a/use-rocket.chat/workspace-administration/permissions.md b/use-rocket.chat/workspace-administration/permissions.md new file mode 100644 index 0000000000..d1e75b1bec --- /dev/null +++ b/use-rocket.chat/workspace-administration/permissions.md @@ -0,0 +1,168 @@ +# Permissions + +Rocket.Chat has a vast and customizable permissions system. Most actions a user can make require particular permission, so you can customize what users can do and see. + +To access this menu: + +Navigate to **Administration** > **Workspace** > **Permissions** + +{% hint style="info" %} +Permission changes are immediate and transparent. Users do not need to log out, log in, or refresh for permissions to be applied. +{% endhint %} + +## Roles + +A `Role` is a set of permissions that are given to users. Rocket.Chat comes with a set of default roles that can be modified. + +{% hint style="info" %} +Roles are shown as little tags on the side of a username on messages. +{% endhint %} + +### Scope of Roles + +Roles can have different scopes. Currently, we have two scopes `Global` and `Rooms`. + +**Global scope**: A role with the `Global` scope is valid for the whole server. + +**Room scope**: A role with the `Room` scope gets applied to [rooms](rooms.md), where a user has to be elected to that role in that channel. + +An example of `Global` scope role is the `admin` role having permissions valid for the whole server, while a `moderator` role is a `Room` scope role which has permissions valid only in a [channel](../user-guides/rooms/channels/) they were elected for. + +### Creating Custom Roles + +As a workspace administrator, you can create new roles with custom permissions for your workspace. + +{% hint style="info" %} +As from Rocket.Chat `V6.0.x.x` the creating and editing of custom roles is an enterprise feature. ![](<../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (27).jpg>) +{% endhint %} + +To create a new role, + +* Navigate to **Administration** > **Workspace** > **Permissions** +* Click on **New role** +* A side panel opens, provide the details required + * **Role**: Name of the role. + * **Description**: Set a description of the role. + * **Scope**: Select what [scope](permissions.md#scope-of-roles) the role is to take effect on. +* **Save** + +You can now allocate [permissions](permissions.md#permissions-available) to the role by checking the checkbox corresponding to each permission beneath the role. + +### Default Roles + +* **admin** `(Users)` - Have access to all settings and administrator tools. +* **moderator** `(Subscriptions)` - Have moderation permissions for a channel. It has to be elected by a channel owner. +* **owner** `(Subscriptions)` - Have owner permissions for a channel. Users who create a channel become the owner of that channel. They can also elect more owners for that channel. +* **user** `(Users)` - Normal user rights. Most users receive this role when registering. +* **bot** `(Users)` - Special Role for bot users, with some permissions related to bot functionality. +* **leader** `(Subscriptions)` - it doesn't have any special permissions but is used when setting a `leader` to a channel. Leaders appear on the header of a channel. +* **anonymous** `(Users)` - unauthenticated users that access the server when the `Allow Anonymous Read` setting is activated. +* **guest** `(Users)` - anonymous users that want to write and participate in channels when the `Allow Anonymous Read` and `Allow Anonymous Write` settings are activated. +* **livechat-agent** `(Users)` - Agents of Live Chat. They can answer to Live Chat requests. +* **livechat-manager** `(Users)` - Manager of Live Chat, can manage agents and guests. +* **livechat-guest** `(Users)` - Users coming from a Live Chat channel. + +## Permissions Available + +| Permission | Purpose | +| --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `access-mailer` | Permission to use the [Mailer Tool](mailer.md). Accessible from Administration -> Mailer. | +| `access-permissions` | Permission to create and edit roles and permissions. Accessible from Administration -> Permissions. | +| `add-oauth-service` | Permission to manage different OAuth services and apps. Accessible from Administration -> OAuth Apps. | +| `add-user-to-any-c-room` | Permission to add a user to a public channel. | +| `add-user-to-any-p-room` | Permission to add a user to a private channel. | +| `add-user-to-joined-room` | Permission to add a user to a joined channel. | +| `api-bypass-rate-limit` | Permission to call api without rate limitation. See [Rate Limiter](https://docs.rocket.chat/developer-guides/rest-api/rate-limiter/). | +| `archive-room` | Permission to archive a channel. | +| `assign-admin-role` | Permission to promote user to Admin. Requires view-user-administration permission. Accessible from Administration -> Users. | +| `assign-roles` | Permission to assign roles for a user. Requires view-user-administration permission. Accessible from Administration -> Users. | +| `auto-translate` | Permission to use the [Auto Translate Tool](broken-reference). Accessible from Administration -> Message -> Auto Translate. | +| `ban-user` | Permission to ban a user. | +| `bulk-create-c` | Permission to bulk create public channels. | +| `bulk-register-user` | Permission to bulk add users. | +| `call-management` | Permission to start a meeting. Requires Video Conference -> BigBlueButton enabled. Accessible from More -> BBB Video Chat -> Start Meeting. | +| `clean-channel-history` | Permission to prune a channel's messages and/or files. | +| `clean-group-history` | Permission to prune a group's messages and/or files. | +| `clean-direct-history` | Permission to prune direct messages and/or files. | +| `close-livechat-room` | Permission to close your own Live Chat channels. | +| `close-others-livechat-room` | Permission to close other Live Chat channels. | +| `create-c` | Permission to create public channels. | +| `create-d` | Permission to start direct messages. | +| `create-p` | Permission to create private groups. | +| `create-personal-access-tokens` | Permission to create Personal Access Tokens. Accessible from My Account -> Personal Access Tokens. | +| `create-user` | Permission to create new users. Accessible from Administration -> Users. Click the + sign found on the top right hand corner of the Users list to create a new user. | +| `delete-c` | Permission to delete public channels. | +| `delete-d` | Permission to delete direct messages. | +| `delete-message` | Permission to delete a message within a channel. | +| `delete-p` | Permission to delete private channels. | +| `delete-user` | Permission to delete users. | +| `edit-message` | Permission to edit a message. | +| `edit-other-user-active-status` | Permission to enable or disable other accounts. Accessible from Administration -> Users. | +| `edit-other-user-info` | Permission to change other user's name, username or email address. Accessible from Administration -> Users. | +| `edit-other-user-password` | Permission to modify other user's passwords. Requires edit-other-user-info permission. Accessible from Administration -> Users. | +| `edit-privileged-setting` | Permission to edit privileged settings. | +| `edit-room` | Permission to edit a room's name, topic, type (private or public status) and status (active or archived). | +| `edit-room-retention-policy` | Permission to edit's a room's retention policy. | +| `force-delete-message` | Permission to forcefully delete messages, independent of any deletion blocking setting. | +| `join-without-join-code` | Permission to bypass join codes when entering a channel with a join code set. | +| `leave-c` | Permission to leave the public channel. | +| `leave-p` | Permission to leave the private channel. | +| `mail-messages` | Permission to use the "Mail Messages" tool in the channel actions menu. | +| `manage-apps` | Permission to manage all apps. Accessible from Administration -> Apps. | +| `manage-assets` | Permission to manage assets. Must also be admin Accessible from Administration -> Assets. | +| `manage-cloud` | Permission to manage cloud. Requires view-user-administration permission. Accessible from Administration -> Cloud. | +| `manage-emoji` | Permission to add custom emojis to the server. Accessible from Administration -> Custom Emoji. | +| `manage-outgoing-integrations` | Permission to manage all outgoing integrations. Accessible from Administration -> Integrations. | +| `manage-incoming-integrations` | Permission to manage all incoming integrations. Accessible from Administration -> Integrations. | +| `manage-oauth-apps` | Permission to manage OAuth apps. Accessible from Administration -> OAuth. | +| `manage-own-outgoing-integrations` | User can create and edit own outgoing integration - webhooks. | +| `manage-own-incoming-integrations` | User can create and edit own incoming integration - webhooks. | +| `manage-sounds` | Permission to manage sounds. Accessible from Administration -> Custom Sounds. | +| `mention-all` | Permission to mention everyone in a channel. | +| `mention-here` | Permission to notify active users in a channel. | +| `message-impersonate` | Permission to impersonate other users using message alias. Accessible from Administration -> Permissions. \| | +| `mute-user` | Permission to mute other users in the same channel. | +| `pin-message` | Permission to pin a message in a channel. | +| `post-readonly` | Permission to post messages on read-only channels. | +| `preview-c-room` | Permission to preview public channels. | +| `remove-closed-livechat-rooms` | Permission to close Live Chat rooms. Requires `view-livechat-rooms` permission. Accessible from **Live Chat** -> **Current** Chats. | +| `remove-user` | Permission to remove users from channels. | +| `reset-other-user-e2e-key` | Permission to set E2E key. See [End to End Encryption](https://docs.rocket.chat/user-guides/end-to-end-encryption/). | +| `run-import` | Permission to use the data importer tools. Must also be an admin. Accessible from Administration -> Import. | +| `run-migration` | Permission to run migrations. | +| `save-others-livechat-room-info` | Permission to add additional information to both the visitor and Live Chat rooms. | +| `send-many-messages` | Permission to bypasses rate limit of 5 messages per second. | +| `set-leader` | Permission to set leaders for channels | +| `set-moderator` | Permission to set moderators for channels. | +| `set-owner` | Permission to set other users as owner of a public channel. | +| `set-react-when-readonly` | Permission to react to messages in only channels. | +| `set-readonly` | Permission to set room read-only. Accessible from Room Info -> Edit. | +| `snippet-message` | Permission to create message snippets. | +| `start-discussion` | Permission to start a discussion. | +| `start-discussion-other-user` | Permission to start a discussion, which gives permission to the user to create a discussion from a message sent by another user as well. | +| `unarchive-room` | Permission to unarchive channels. | +| `user-generate-access-token` | Permission to create authorization tokens for users. | +| `view-broadcast-member-list` | Permission to view the list of users in a broadcast channel. | +| `view-c-room` | Permission to view public channels. | +| `view-d-room` | Permission to view direct messages. Does not affect the ability to begin/start a direct message with another user. | +| `view-full-other-user-info` | Permission to view full profile of other users including account creation date, last login, etc. | +| `view-history` | Permission to view the channel history. | +| `view-join-code` | Permission to view the join code of channels. | +| `view-joined-room` | Permission to view current joined channels. | +| `view-l-room` | Permission to view Live Chat channel. | +| `view-livechat-analytics` | Permission to view Live Chat analytics. Requires Live Chat feature enabled and `view-Livehat-manager` permission. | +| `view-livechat-manager` | Permission to view other Live Chat managers. | +| `view-livechat-rooms` | Permission to view a list of Live Chat channels. | +| `view-logs` | Permission to view logs. Accessible from Administration -> View Logs. | +| `View Omnichannel Contact Center` | Permission to manage access to the contact center. | +| `view-other-user-channels` | Permission to manage channels on the admin screen. | +| `view-outside-room` | Permission to find new channels and users. Users without this permission won't see channels that they are not part of when searching using the spotlight. | +| `view-p-room` | Permission to view private channels. | +| `view-privileged-setting` | Permission to view privileged settings. | +| `view-room-administration` | Enables Administration -> Channels module. Enables Permission to view public, private, and direct message statistics. Does not include permission to view conversations or archives. | +| `view-statistics` | Enables Administration -> Info module. Enables the permission to view system statistics such as number of users logged in, number of rooms, operating system information. | +| `view-user-administration` | Enables Administration -> Users module. Only includes partial, read-only list view of other user accounts currently logged into the system. No user account information is accessible with this permission. Add view-full-other-user-info to see a complete list of other users via the Administration -> Users. | +| `auditor-log` | Permission to check the details about who used the Message Auditing Panel and their search results | +| `can-audit-log` | Permission to check the details about who used the Message Auditing Panel and their search results | +| `view-engagement-dashboard` | Permission to who can view engagement dashboard | +| `Allow file download on mobile devices` | permission to allow mobile users to be able to download and upload files from and to the server | diff --git a/use-rocket.chat/workspace-administration/rooms.md b/use-rocket.chat/workspace-administration/rooms.md new file mode 100644 index 0000000000..5842445fdf --- /dev/null +++ b/use-rocket.chat/workspace-administration/rooms.md @@ -0,0 +1,35 @@ +--- +description: Here you can view room details, edit rooms and delete rooms. +--- + +# Rooms (aka Channels) + +Rocket.Chat rooms are where any communication or interaction with other users occurs. There are various types of rooms. Visit the room section to view room details, and create, edit, and delete rooms. + +{% hint style="info" %} +To find more information on Rocket.Chat rooms, please visit user guide on [rooms](../user-guides/rooms/ "mention") +{% endhint %} + +To access this room's administration menu, navigate to **Administration** > **Workspace** > **Rooms**. + +Here you can see all the rooms that currently exist in your Rocket.Chat workspace along with details like the number of users in a room, number of messages, type of room, etc. + +You are provided with a variety of filters like **Public**, **Private**, etc., available to help you sort them by type. + +## Edit Room Details + +To edit room details: + +* Navigate to **Administration** > **Workspace** > **Rooms**. +* Click the room you want to edit the details for +* Here you have options to change the room's avatar, edit room details, and configure other settings with respect to this room, like Read-Only, Private, etc. +* Click **Save** after making your desired changes. + +## Delete Room + +To delete a room: + +* Navigate to **Administration** > **Workspace** > **Rooms**. +* Search and click on the room you want to delete +* Hit **Delete** +* Click **Yes, delete it!** to confirm and delete the room. diff --git a/use-rocket.chat/workspace-administration/settings/README.md b/use-rocket.chat/workspace-administration/settings/README.md new file mode 100644 index 0000000000..3fc75d2645 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/README.md @@ -0,0 +1,89 @@ +--- +description: These are the various settings for admin users to configure their workspaces. +--- + +# Settings + +To access the settings page, go to **Administration** > **Workspace** > **Settings**. + +****[**Accounts**](account-settings/): Common Rocket.Chat user account settings such as anonymous reads, usernames, passwords, and email modifications can be configured under Accounts. + +****[**Analytics**](analytics.md): Investigate how users interact with your workspace. + +****[**Assets**](assets.md)**:** Learn how to provide scalable assets for your brand's identity. + +[**Atlassian Crowd**](broken-reference): Discover how to link Rocket.Chat with Atlassian Crowd. + +****[**Bots**](bots.md): Find out how to set the fields that can be utilized and referenced while developing bots. + +****[**CAS**](cas.md): Learn how to configure Central Authentication Service to allow members to use one set of credentials to sign in to multiple sites over multiple protocols. + +****[**Conference Call**](../../rocket.chat-conference-call/conference-call-admin-guide/): Choose Pexip or Jitsi as conference call providers for your Rocket.Chat workspace while enabling any for direct messages, private and public rooms, and teams. + +****[**Custom Emoji Filesystem**](../custom-emoji.md): Specify whether to store emojis on GridFS or your storage. + +****[**Custom Sound Filesystem**](custom-sound-filesystem.md)**:** Find out how to specify how custom sounds are saved on your workspace. + +****[**Device management**](../device-management.md): Become familiar with configuring security and access control rules for your workspace. + +****[**Discussion**](discussion.md)**:** Learn how to configure whether users can accept invitations to join particular talks from other channels. + +****[**E2E Encryption**](e2e-encryption.md): Discover how to turn on end-to-end encryption to maintain the confidentiality of user communications. + +****[**Email**](email/): Learn how to configure how broadcast email template formats are sent from your Rocket.Chat server. + +****[**Federation**](../../rocket.chat-workspace-administration/settings/federation/): Learn how to configure multiple workspaces to communicate with each other. + +****[**File Upload**](file-upload/): Configure the type of storage and turn on or off user-document upload on your workspace server. + +****[**General**](general/): Learn how to configure available workspace settings. + +****[**IRC Federation**](irc-federation.md): Learn to configure how to connect to other IRC servers. + +****[**Layout**](../../rocket.chat-workspace-administration/settings/layout.md): Under the Layout option, you can personalize the appearance of your Rocket.Chat workspace by specifying various colors or providing custom CSS. + +****[**LDAP**](ldap/): Learn how to configure Lightweight Access Directory Protocol so that no one can access or cannot access information about your server or business. + +****[**Livestream & Broadcasting (Youtube)**](livestream-and-broadcasting.md): Enable channel administrators to broadcast to Youtube Live. + +****[**Logs**](logs.md): Learn to configure how server logs are received, the log level, and other essential log settings. + +****[**Message**](message.md): Message settings such as message pinning, starring, deleting, and others can be found under the Message option. + +****[**Meta**](meta.md): Enable better search engine optimization (SEO) for your Rocket.Chat server by providing custom metadata for your instance. + +****[**Mobile**](mobile.md): Check how you can help users using Rocket.Chat mobile app to save files to the device storage while enforcing biometrics, pin, or Face ID to gain access to your workspace. + +****[**OAuth**](oauth/): Ensure that users of your workspace can connect to it using third-party authentication providers such as Facebook, GitHub, Google, Apple, and more. + +****[**Omnichannel**](omnichannel-admins-guide/): Explore the Omnichannel option to talk to your clients from Rocket.Chat without the need to install the messaging apps they are using, such as WhatsApp. + +****[**OTR**](otr.md): Under off-the-record chats, enable private, encrypted messaging in direct discussions, which are also deleted when conversations are finalized. + +****[**Push**](push.md): Customize notification behaviors for users using the Rocket.Chat mobile apps. + +****[**Rate Limiter**](rate-limiter.md): Limit network traffic and potential bot attacks on your Rocket.Chat server by limiting the number of hits on the server within a specified timeframe. + +****[**Retention Policy**](retention-policies.md): Learn to configure whether to enable the automatic removal of old messages and files across your workspace. + +****[**SAML**](saml/): Enable using the Security Assertion Markup Language standard to exchange authentication and authorization information. + +****[**Search**](search.md): Check how to select and configure your workspace's search provider. + +****[**Setup Wizard**](setup-wizard.md): Learn how to provide specific details about your Rocket.Chat workspace, such as the company name, type, and size. + +****[**SlackBridge**](slackbridge.md): Master how to set up Rocket.Chat direct communication with Slack. + +****[**Smarsh**](smarsh.md): Become familiar with setting up email communication preservation. + +****[**SMS**](sms.md): Discover how to enable, choose, and configure any SMS gateway providers, which are Twilio, Mobex, or Vortelesys, to use for your workspace. + +****[**Threads**](threads.md): You can find out how to enable message threads on specific conversations in your workspace. + +****[**Troubleshoot**](troubleshoot.md): Learn how to configure how error correction should be handled in your Rocket.Chat workspace. + +****[**User Data Download**](user-data-download.md): The ability for workspace users to download data can be controlled, and you can find it under `User Data Download.` + +****[**WebDav Integration**](webdav-integration.md): Learn how to enable your workspace users to add, edit, and delete files on a WebDAV server. + +****[**WebRTC**](webrtc.md): Discover how to enable real-time communication to ensure the transmission of audio/video data and other data among browsers. diff --git a/use-rocket.chat/workspace-administration/settings/account-settings/README.md b/use-rocket.chat/workspace-administration/settings/account-settings/README.md new file mode 100644 index 0000000000..5c55ba6759 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/account-settings/README.md @@ -0,0 +1,173 @@ +--- +description: Modify workspace member account settings. +--- + +# Accounts + +To access this setting, navigate to + +**Administration** > **Workspace** > **Settings** > **Accounts.** + +These are the basic Account configuration settings. Most of the options are either `True` or `False` depending on whether you want the setting enabled or not. + +* **Allow anonymous read**: If enabled, allows people to use the chat without having to create an account or log in. Anonymous users are only allowed to read messages on public channels. +* **Allow anonymous write**: If enabled, allows Anonymous users to post messages on public channels. +* **Allow users to delete own account**: Setting this to true allows users to delete their account. When a user is deleted, all their messages are deleted too. +* **Allow User Profile Change**: Setting this to false blocks users from changing the information on their profile. +* **Allow User Avatar Change**: Setting this to false blocks users from changing their avatar. +* **Allow Name Change**: Setting this to false blocks users from changing their names. +* **Allow Custom Status Message:** Setting this to true allows users to create the custom status message. +* **Allow Username Change**: Setting this to false blocks users from changing their usernames. +* **Allow User Email Change**: Setting this to false blocks users from changing their email. +* **Allow User Password Change**: Setting this to false blocks users from changing their password. +* **Allow Password Change for OAuth Users:** Setting this to false blocks OAuth users from changing their password. +* **Allow Email Notifications:** Setting this to true enables the users to receive email notifications. +* **Custom Fields to Show in User Info**: Other fields to be displayed in the user info. Please see more in [Custom fields](custom-fields.md). +* **Login Expiration in Days**: After this number of days of inactivity, the user is logged out. +* **Show Default Login Form**: Setting this to false removes the login form from the login screen. This setting is useful when you are using a third-party login system. +* **Placeholder for email or username login field**: This changes the placeholder for the _email or username_ field on the login screen. +* **Placeholder for password login field**: This changes the placeholder for the _password_ field on the login screen. +* **Confirm Placeholder for Password Login Field:** This confirms the placeholder for the password field on the login screen. +* **Forget user session on window close**: This logs out users when they close the window running Rocket.Chat. +* **Fields to Consider in Search**: Specifies the fields to be considered when searching for users. The default is _username, name, bio, and nickname._ +* **Default Directory Listing**: This sets the default directory to be listed. +* **Allow Invisible Status Option:** Setting this option allows users to set the invisible status. +* **Reset section to default**: Click the button to reset all these basic configurations back to their default value. + + + +## Two Factor Authentication + +* **Enable Two Factor Authentication**: Here you can enable or disable Two Factor Authentication for users, and set for how long a token is valid. +* **Maximum Delta**: Let you set the number of tokens that are valid at any given time. +* **Enable Two-Factor Authentication via TOTP**: This lets you set whether or not users can set up two-factor authentication with authentication apps like Google Authenticator. +* **Enable Two Factor Authentication via Email:** Sets whether users receive certain emails with a temporary code to authorize some actions. +* **Auto opt in new users for Two Factor via Email**: When set to true users have the Two-Factor Authentication via Email enabled by default. This can be disabled on their profile page. +* **Time to expire the code sent via email in seconds**: Receives in seconds how long the two-factor code sent to a user's email is valid. +* **Remember Two Factor for (seconds)**: This lets you set how long in seconds users won't be able to request an authorization code if it was already provided. +* **Enforce password fallback**: Turning this on forces users to enter their passwords in order to perform some important tasks. + +## Default User Preferences + +{% hint style="info" %} +Default user preferences for notifications are universal for all the users in your workspace until a user changes it for themselves. +{% endhint %} + +* **Enable Auto-Away**: When set to True, it automatically changes the User's status to **Away** they exit Rocket.Chat. +* **Idle Time Limit**: Sets how long _in milliseconds_ for a User to go idle. +* **Require Interaction to Dismiss Desktop Notification**: Enabling this sets the notification prompt active until the User interacts with it. +* **Desktop Notifications Default Alert**: This lets you set when the desktop notification alert is triggered. The default is _All messages_. This only concerns the groups and channels the user belongs to. +* **Push Notifications Default Alert**: Setting this to allow the users to set whether they want to receive push notifications or not. The default is _All messages._ +* **Mobile Notifications Default Alert**: Sets when the default notification alert plays on mobile devices. +* **Unread Tray Icon Alert**: Disabling this stops the unread tray icon from displaying. +* **Use Emojis**: Setting this to false disables the use of emojis. +* **Convert ASCII to Emoji**: When this is true, ASCII characters are converted to emojis. +* **Auto Load Images**: Turning this off prevents images from auto-loading when a room/chat is opened. +* **Save Mobile Bandwidth**: When enabled acts like a data saver. +* **Collapse Embedded Media by Default**: Setting this to true are cause embedded media cards to collapse. +* **Hide Usernames**: When enabled, it'll hide usernames in conversation rooms. +* **Hide Roles**: When set to true, user roles like _admin_, and _moderator_ are not be shown in chat rooms. +* **Hide Right Sidebar with Click**: Enabling this gives the ability for the right sidebar to be hidden. +* **Display Avatars**: Setting this to true displays the user's avatars in chat. +* **Group by Type**: This lets you group conversations by type. +* **Sidebar Channel List Mode**: This lets you choose from _Extended, Medium, and Condensed_ how the sidebar should be. +* **Display Avatars in Sidebar**: Disabling this disables avatars from showing in the sidebar. +* **Unread on top**: Turning this on displays all unread messages at the top. +* **Sort by:** This lets you sort the list by the user activity or in alphabetical order. +* **Show thread messages in the main thread:** +* **Group favorites**: Setting this to false disables favoriting groups. +* **Enter key Behavior**: Lets you configure the action of the Enter key. The available options are: Normal mode (send with Enter), Alternative mode (send with Enter+Ctrl/Alt/Shift/CMD) +* **MessageBox View Mode**: Lets you select how message boxes appear. The available options are Normal, Cozy, and Compact. +* **Offline Email Notifications**: Lets you set when users should receive email notifications. The available options are Disabled and Every Mention/DM. +* **New Room Notification**: Configures the notification when a new room is created/joined. +* **New Message Notification**: Lets you select the notification for new messages. The default options are None and Default. +* **Mute-Focused Conversations**: When set to true, no notifications are sent for focused/open conversations. +* **Notifications sound volume**: Lets you set the notification volume. +* **Enable New Message Template**: Enable this setting to allow users to create new message template. + +## Avatar + +* **Resize Avatar**: Set this to true to resize user avatars to a predefined size. You need ImageMagick or GraphicsMagick installed on your server for this feature to work. +* **Avatar Size**: The desired size after the avatar resizing. The unit is pixels (px). +* **Avatar External Provider URL**: Lets you set a URL from which avatars can be loaded. Example: https://acme.com/api/v1/{username} +* **Room Avatar External Provider URL**: The URL where the room avatar is loaded from. +* **Avatar cache time**: This sets how long _in milliseconds_ you want users avatar to be cached. +* **Block Unauthenticated Access to Avatars**: Enabling this restricts access to users avatars for those that are not authenticated. +* **Set Default Avatar**: If this setting is set to true, Rocket.Chat tries to find a default avatar based on OAuth Account or Gravatar. + +## Iframe + +* **Enabled**: Enable this option to authenticate users using your own login page in place of the Rocket.Chat's login page via the[ iframe integration](https://developer.rocket.chat/rocket.chat/iframe-integration). +* **Iframe URL:** Enter the URL of the page you want to show as the login page of your Rocket.Chat instance. The login page then communicates back to Rocket.Chat using `postMessage` API. + +{% hint style="info" %} +* The Login page can be created in any programming language and/or web framework. +* By setting `API URL` and `API Method` parameters enables Rocket.Chat to call the third-party system to either log in or verify if the user is already logged in. +{% endhint %} + +* **API URL:** Enter the URL, which refers to the endpoint on the third-party system, and this checks if the user is already logged in to that system. +* **API Method:** Specify the API (POST) method, to be used by Rocket.Chat to submit information to the `API URL.` + +{% hint style="info" %} +If the user has already logged into the third-party system, the `API URL` should communicate to Rocket.Chat and return a JSON object containing either a`token` or `loginToken` property, otherwise (if the user is not already logged in) the `API URL` should return an empty body with the status `401.` +{% endhint %} + +## Failed Login Attempts + +* **Enable collect login data**: When set to true, it allows for the collection of failed login attempts. +* **Block failed login attempts by Username**: Blocks failed login attempts with username. +* **How many failed attempts until block by User**: Lets you set how many failed login attempts before blocking the user. +* **Time to unblock User (In Minutes)**: Sets in minutes how long to unblock a user after blocking. +* **Block failed login attempts by IP**: Enables the blocking of IP addresses after failed login attempts. +* **How many failed attempts until block by IP**: Lets you set how many failed login attempts before blocking an IP address. +* **Time to unblock IP (In Minutes)**: Sets how long to unblock a blocked IP. +* **IP Whitelist**: Takes in a list of comma-separated IP addresses to be whitelisted. +* **Notify of failed login attempts**: When set true, a channel is notified of all failed login attempts. +* **Channel to send the notifications**: Specifies the channel where the failed login attempts is sent to. We recommend you create the channel first without the `#` symbol in the channel name. + +## Login Logs + +* **Log (on console) failed login attempts**: Logs all failed login attempts on the console. +* **Show Username on failed login attempts logs**: When enabled, usernames are shown on the console for all failed login attempts. +* **Show UserAgent on failed login attempts logs:** Shows the user agent on failed login attempts when enabled. +* **Show Client IP on failed login attempts logs**: When set to true, it shows the client IP address on the console on any failed login attempt. +* **Show Forwarded IP on failed login attempts logs**: Show the forwarded IP on any failed login attempts. + +## Password History + +* **Enable Password History:** When enabled, users won't be able to update their passwords to some of their most recently used passwords. +* **Password History Length**: Lets you set number of most recently used passwords to prevent users from reusing them. + +## Password Policy + +**Enable Password Policy**: When this is set to true, new passwords must follow the corresponding configured policies. + +The various settings that fall under this have simple descriptions for understanding. + +## Registration + +* **Send email to user when user is activated**: When enabled, an email is sent to the user after their account has been activated. +* **Send email to user when user is deactivated**: If set to `true`, users get an email after account deactivation. +* **Default username prefix suggestion**: This is the prefix that is suggested when a user is creating a username. Default is `user`. +* **Require Name For Signup**: If this is set to true, the name of the user is required to create an account. +* **Require Password Confirmation**: If this is set to true, the user has to input their password twice when registering. +* **Only allow verified users to login:** Enable this option only to allow the verified users only to log in. +* **Verify Email for External Accounts**: If this is set to true, users has to confirm their email via a confirmation email sent to their email. (For this setting to work, the SMTP settings must be already set up. See [Email Configuration](../email/setup.md)) +* **Manually Approve New Users**: If this is set to true, new users have to wait for a user with the `view-user-administration` permission to approve their account before using Rocket.Chat. +* **Allowed Domains List**: This blocks emails with different domains than the ones on the list. +* **Blocked Domains List**: This blocks emails with domains that are on the list. +* **Blocked Username List:** This blocks usernames that are on the list. +* **Use Default Blocked Domains List**: Blocks the email domains listed [here](https://github.com/RocketChat/Rocket.Chat/blob/develop/apps/meteor/app/lib/server/lib/defaultBlockedDomainsList.js) +* **Use DNS Domain Check**: When this is set to true, users won't be able to register with invalid domains. +* **Registration Form**: This changes how the registration form is presented. Currently, there are 3 options: + * Public: The form is made public and anyone is able to access it. + * Disabled: The form is disabled and users can not register through it. + * Secret URL: The form is only accessible using a specific URL. +* **Registration Form Secret URL**: String to be added to the secret URL. Is recommended to use a random string for that. Example: `https://open.rocket.chat/register/[secret_hash]`.You can copy this URL to share the form with anyone. +* **Invite URL Type**: URL type can either be direct or through a proxy. +* **Registration Form Link Replacement Text**: Text to be shown in place of the registration form when the registration form is disabled. +* **Registration with Authentication Services**: Set this to true to allow registration with third-party authentication services like Google or Twitter. +* **Default Roles for Authentication Services**: Default roles users are given when registering through authentication services. +* **Default Roles for Users:** Default roles users are given when registering through manual registration. +* **Password Reset**: Set this to true to allow users to reset their password. +* **Custom Fields**: A valid `JSON` of key-value pairs of additional fields to be added during user registration. diff --git a/guides/administration/administration/settings/account-settings/custom-fields.md b/use-rocket.chat/workspace-administration/settings/account-settings/custom-fields.md similarity index 100% rename from guides/administration/administration/settings/account-settings/custom-fields.md rename to use-rocket.chat/workspace-administration/settings/account-settings/custom-fields.md diff --git a/use-rocket.chat/workspace-administration/settings/analytics.md b/use-rocket.chat/workspace-administration/settings/analytics.md new file mode 100644 index 0000000000..8c445dabec --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/analytics.md @@ -0,0 +1,44 @@ +--- +description: See how users interact with your workspace. +--- + +# Analytics + +Setting up analytics allows you to see how users interact with your server and help measure the metrics and monitor the different user experience measures. + +To access analytics, navigate to **Administration > Workspace > Settings > Analytics.** + +You have access to various configurations that can be done. + +{% hint style="success" %} +Remember always to hit **Save changes** to apply any changes made. +{% endhint %} + +## Google Analytics + +Lets you set up Google Analytics. + +* **Enable**: When enabled, Google Analytics is active, and you are prompted to set a Tracking ID. +* **Tracking ID:** Takes in your Google Analytics tracking ID. + +## Features Enabled + +Lets you set various properties to analyze and track. + +* **Messages**: When set to true, actions users perform on messages are tracked. +* **Rooms**: When enabled, actions like; `create, leave, delete` on channels or groups are tracked +* **Users**: This Lets you track events related to actions on users like; `password reset times, profile picture change,` etc. + +## Piwik + +Gives you the ability to set up Matomo, formerly Piwik, for analytics. + +* **Enable**: When set to true, it enables Piwik analytics on your server. +* **URL**: The url where the Piwik resides, be sure to include the trailing slash. Example: `//piwik.rocket.chat/` +* **Client ID**: The site id to be use for identifying your site. Example: `17` +* **Additional Piwik Sites**: Takes in additional Piwik website URLs and site IDs to track the same data into different websites. Example; + + `[ { "trackerURL" : "https://my.piwik.domain2/" , "siteId" : 42 }, { "trackerURL" : "https://my.piwik.domain3/" , "siteId" : 15 } ]` +* **Prepend Domain**: Lets you set whether or not to prepend the site domain to the page title when tracking. +* **All Subdomains**: Lets you track visitors across all subdomains. +* **Hide Outgoing Links**: Takes in URLs, one domain per line without any separator to hide their clicks in the outlinks report. diff --git a/use-rocket.chat/workspace-administration/settings/assets.md b/use-rocket.chat/workspace-administration/settings/assets.md new file mode 100644 index 0000000000..718c4477e7 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/assets.md @@ -0,0 +1,29 @@ +# Assets + +Manage the assets and various resources used by your Rocket.Chat workspace. This involves logos, icons, and other images for customizing your workspace. + +Customize your workspace to have a branded look from the assets settings. + +To access the assets section, go to **Administration** > **Workspace** > **Settings** > **Assets**. + +{% hint style="info" %} +Remember to hit **Save Changes** to apply any changes made. +{% endhint %} + +* **Enable SVG favicon**: When enabled, you can set an SVG favicon. +* **logo (svg, png, jpg)**: This lets you set the logo for your server. It is visible at the bottom left of the side panel. +* **login background (svg, png, jpg)**: Set a login background image. +* **favicon (ico)**: Lets you set a favicon of `.ico` extension. +* **favicon (svg)**: Lets you set a favicon of `.svg` extension. +* **favicon 16x16 (png)**: Lets you set a favicon of size `16X16` +* **favicon 32x32 (png)**: Lets you set a favicon of size `32x32` +* **android-chrome 192x192 (png)**: Lets you set the `192x192` icon displayed on Android Chrome browser. +* **android-chrome 512x512 (png)**: Lets you set the `512x512` icon displayed on Android Chrome browser. +* **apple-touch-icon 180x180 (png)**: Lets you set the `180x180` apple icon shown on web page. +* **apple-touch-icon-precomposed 180x180 (png)**: Lets you set the precomposed`180x180`apple icon shown on web page. +* **mstile 70x70 (png)** +* **mstile 144x144 (png)** +* **mstile 150x150 (png)** +* **mstile 310x310 (png)** +* **mstile 310x150 (png)** +* **safari pinned tab (svg)**: Lets you set the icon displayed when a tab is pinned on the Safari browser. diff --git a/use-rocket.chat/workspace-administration/settings/bots.md b/use-rocket.chat/workspace-administration/settings/bots.md new file mode 100644 index 0000000000..d1ed17b598 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/bots.md @@ -0,0 +1,11 @@ +--- +description: Set the fields that can be referenced and used when developing bots. +--- + +# Bots + +Rocket.Chat Bots setting lets you specify the various fields that can be accessed by bots helper methods. These fields can be referenced and used when developing bots. + +To access this menu, navigate to **Administration** > **Workspace** > **Settings** > **Bots**. + +* **User Fields**: This takes in comma-separated fields that can be accessed by bots helper methods. diff --git a/use-rocket.chat/workspace-administration/settings/cas.md b/use-rocket.chat/workspace-administration/settings/cas.md new file mode 100644 index 0000000000..4023d20ff8 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/cas.md @@ -0,0 +1,61 @@ +--- +description: >- + Central Authentication Service allows members to use one set of credentials to + sign in to multiple sites over multiple protocols. +--- + +# CAS + +Central Authentication Service (CAS) allows users to use one set of credentials to sign in to many sites over many different protocols. + +Rocket.Chat includes a CAS plugin that allows you to use your existing CAS server for user authentication. + +{% hint style="info" %} +For more information on CAS, see [github.com/apereo/cas](https://github.com/apereo/cas). +{% endhint %} + +To access this setting, navigate to **Administration** > **Workspace** > **Settings** > **CAS**. + +{% hint style="info" %} +Remember to hit **Save Changes** in order to apply any changes made. +{% endhint %} + +Your Rocket.Chat workspace is the _CAS client_. You must provide a compatible _CAS Server_. + +Once you know your CAS server's URL, proceed with the settings below + +* **Enabled**: Enable CAS on your workspace +* **SSO Base URL**: The base URL of your external SSO service e.g [`https://sso.example.undef/sso/`](https://sso.example.undef/sso/)\`\` +* **SSO Login URL**: The login URL of your external SSO service e.g [`https://<>/cas/login`](https://sso.example.undef/sso/login)\`\` +* **CAS Version**: Only use a supported CAS version supported by your CAS SSO service e.g `(1.0|2.0)` + +The `/cas` and `/cas/login` URLs are defaults but not mandatory. Check with your CAS server provider if the defaults do not work. + +* **Trust CAS username**: When enabled, Rocket.Chat trusts that any username from CAS belongs to the same user on Rocket.Chat.\ + This may be needed if a user is renamed on CAS, but may also allow people to take over Rocket.Chat accounts by renaming their own CAS users. +* **Allow user creation**: Allows CAS User creation from data provided by the CAS ticket when enabled. + +### Attribute Handling + +* **Always Sync User Data**: When set to true, it synchronizes external CAS User data into available attributes upon login. Note: Attributes are always synced upon account creation anyway. +* **Attribute Map**: Use this JSON input to build internal attributes (key) from external attributes (value). External attribute names enclosed with '%' are interpolated in value strings. + + Example, `{"email":"%email%", "name":"%firstname%, %lastname%"}` + + The attribute map is always interpolated. In CAS 1.0, only the `username` attribute is available. Available internal attributes are: username, name, email, and rooms; rooms is a comma-separated list of rooms to join upon user creation e.g: {"rooms": "%team%,%department%"} would join CAS users on creation to their team and department channel. + +### CAS Login Layout + +* **Login Popup Width**: Lets you set the width in `px` of the popup screen during login. +* **Login Popup Height**: This lets you set the popup height in `px`. +* **Login Button Label**: Set the button's label. +* **Login Button Text Color**: Sets the login button text color from the existing variable. +* **Login Button Background Color**: Sets the background color of the login button. +* **Autoclose Login Popup**: When enabled, the popups automatically close after authenticating. + +After successful configuration, your registration and login screens have the CAS button available. + +{% hint style="info" %} +* CAS by ja-sig requires `ssl/tls` all connections. +* Any Drupal 7 or 8 sites can serve as a compatible CAS Server. See [drupal.org/project/cas](https://www.drupal.org/project/cas). +{% endhint %} diff --git a/use-rocket.chat/workspace-administration/settings/custom-emoji-filesystem.md b/use-rocket.chat/workspace-administration/settings/custom-emoji-filesystem.md new file mode 100644 index 0000000000..add9a53d60 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/custom-emoji-filesystem.md @@ -0,0 +1,12 @@ +--- +description: Specify how emojis are stored +--- + +# Custom Emoji Filesystem + +By specifying the Emoji file system, you have the flexibility of specifying how emojis are stored. + +To access this setting, navigate to **Administration** > **Workspace** > **Settings** > **Custom Emoji Filesystem**. + +* **Storage Type**: A dropdown to select the storage type for your emojis example `GridFS or FilesystemSystem` +* **Path**: Full path to emoji location. diff --git a/use-rocket.chat/workspace-administration/settings/custom-sound-filesystem.md b/use-rocket.chat/workspace-administration/settings/custom-sound-filesystem.md new file mode 100644 index 0000000000..65b4e659ae --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/custom-sound-filesystem.md @@ -0,0 +1,12 @@ +--- +description: Specify how custom sounds are stored +--- + +# Custom Sound Filesystem + +By specifying the sound file system, you have the flexibility of specifying how custom sounds are stored. + +To access this setting, navigate to **Administration** > **Workspace** > **Settings** > **Custom Sound Filesystem**. + +* **Storage Type**: A dropdown to select the storage type for your sounds example `GridFS or FilesystemSystem` +* **Path**: Full path to emoji location. diff --git a/use-rocket.chat/workspace-administration/settings/device-management-settings.md b/use-rocket.chat/workspace-administration/settings/device-management-settings.md new file mode 100644 index 0000000000..0fd97b2286 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/device-management-settings.md @@ -0,0 +1,15 @@ +--- +description: Configure security and access control policies for device management +--- + +# Device management settings + +To access this setting, + +* Navigate to **Administration** > **Workspace** > **Settings** > **Device management** +* **Enable login detection emails**: When enabled, emails are sent to workspace members each time new logins are detected on their accounts. +* **Allow workspace members to turn off login detection emails**: When enabled, individual members can set their preferences. It is useful when frequent login expirations are set, causing members to log in frequently. + +{% hint style="info" %} +Follow the [guide](../device-management.md) to manage and control the devices linked to your workspace. +{% endhint %} diff --git a/use-rocket.chat/workspace-administration/settings/discussion.md b/use-rocket.chat/workspace-administration/settings/discussion.md new file mode 100644 index 0000000000..3dc7e2a461 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/discussion.md @@ -0,0 +1,13 @@ +--- +description: >- + Discussions are an additional way to organize conversations that allows invite + users from outside channels to participate in specific conversations +--- + +# Discussion + +**Discussions** are created from parent channels or groups. Rocket.Chat **Discussions** are a way of tackling all specific topic-related conversations. + +To access this setting, go to **Administration** > **Workspace** > **Settings** > **Discussion**. + +* **Enable**: When enabled, users will be able to create discussions. diff --git a/use-rocket.chat/workspace-administration/settings/e2e-encryption.md b/use-rocket.chat/workspace-administration/settings/e2e-encryption.md new file mode 100644 index 0000000000..4f4b1f0e77 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/e2e-encryption.md @@ -0,0 +1,27 @@ +--- +description: >- + Prevent third parties from accessing your data while its transferred from one + end system to another +--- + +# E2E Encryption + +End-to-end encryption (E2EE) is a system of communication where only the communicating users can read the messages. Rocket.Chat uses this to prevent potential eavesdroppers. + +{% hint style="info" %} +**IMPORTANT:** **E2E encryption functionality is currently in beta** and includes notable restrictions that workspace owners should carefully consider before activating this feature for production use as follow: + +* E2E encrypted messages will not appear in search operations +* Bots or other ancillary systems interacting via webhooks or REST API will not be able to read E2EE encrypted messages +* File uploads are not encrypted +* Rocket.Chat enables users to reset their private E2EE key to avoid permanent data loss during the beta period. +{% endhint %} + +To access this setting, go to **Administration** > **Workspace** > **Settings** > **E2E Encryption**. + +* **Enable encryption for Direct Rooms by default**: When set to true, direct rooms will be encrypted by default. +* **Enable encryption for Private Rooms by default**: When enabled, private rooms will be encrypted by default. + +{% content-ref url="../../user-guides/security-bundle/end-to-end-encryption-user-guide.md" %} +[end-to-end-encryption-user-guide.md](../../user-guides/security-bundle/end-to-end-encryption-user-guide.md) +{% endcontent-ref %} diff --git a/use-rocket.chat/workspace-administration/settings/email/README.md b/use-rocket.chat/workspace-administration/settings/email/README.md new file mode 100644 index 0000000000..867addda6a --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/email/README.md @@ -0,0 +1,16 @@ +--- +description: Configure broadcast emails from inside Rocket.Chat. +--- + +# Email + +Configure email setting to be able to broadcast emails directly from Rocket.Chat. + +To access this menu, go to **Administration** > **Workspace** > **Settings** > **Email**. + +Here you find various Email settings and tools: + +* [Email Configuration](setup.md) +* [Edit Email Content](editing-emails-content.md) +* [Mailer](../../mailer.md) +* [Direct Email Reply](direct-reply.md) diff --git a/use-rocket.chat/workspace-administration/settings/email/direct-reply.md b/use-rocket.chat/workspace-administration/settings/email/direct-reply.md new file mode 100644 index 0000000000..aa5750a685 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/email/direct-reply.md @@ -0,0 +1,83 @@ +# Direct Email reply + +Enable this feature to allow users to reply to chat messages by directly replying to email notifications they receive. We currently use [subaddressing](https://en.wikipedia.org/wiki/Email\_address#Subaddressing) for this feature. + +To set up credentials, + +* Navigate to **Administration > Workspace > Settings > Email > Direct Reply** +* **Enable Direct Reply**: Switch on to allow direct replies through emails. +* **Debug Direct Reply**: Enables debugging for direct replies. +* **Protocol**: Select the email server protocol (`IMAP` or `POP`). +* **Host**: Your email server hostname (e.g. `imap.example.com` or `pop.example.com`). +* **Port**: The port (143 or 993 for IMAP and 110 or 995 for POP). +* **IgnoreTLS**: Ignore TLS `true` if port 143 or 110. +* **Email Check Frequency**: Email check frequency (in minutes) if POP server (>=2). +* **Delete Emails**: Delete intercepted emails. We recommend keeping `true` if you don't want to keep copies of email messages, in case IMAP server. +* **Separator**: A separator (default and recommended) is the character separating the base and tag part of the email. E.g.: `base+tag@domain` (separator: +). [More info here](https://en.wikipedia.org/wiki/Email\_address#Subaddressing) +* **Username**: The email server username. +* **Reply-To**: The reply-to email address. +* **Password**: The email server password. +* Click **Save** changes to commit. + +{% hint style="success" %} +Now, you can reply chat messages via email. It supports full formatting like inline, multiline, bold, italics, etc. +{% endhint %} + +### Switch from IMAP to POP + +* Before you switch from IMAP to POP over the same email address, you must empty all the folders. Keeping all emails results in duplicate messages, because all those messages in POP are treated as new messages. + +## Note + +* Currently, only emails in English are supported, or at least the quote `On , wrote:` is in English. + +An Email body in languages other than English may also work until and unless `On , wrote:` is in English or a copy of older email is removed manually. + +* Only text messages are supported; attachments are not supported yet. + +## Known issues + +### Quoted headers + +Quoted headers aren't picked up if the email client breaks it up into multiple lines. + +GMail breaks up any lines over 80 characters for you. + +``` +On , +wrote: +> blah +``` + +Not to mention that we are searching for `on` and `wrote`. It doesn't work with other languages. + +**Possible solution**: while replying, remove everything else than your actual message. + +### Weird signatures + +Lines starting with `-` or `_` sometimes mark the beginning of signatures: + +``` +Hello + +-- +Rick +``` + +But some users change this convention: + +``` +Hello + +Mr Rick Olson +Galactic President Superstar Mc Awesomeville +GitHub + +**********************DISCLAIMER*********************************** +* Note: blah blah blah * +**********************DISCLAIMER*********************************** +``` + +## Problem? + +Your message wasn't posted? Did you get an `Invalid Email` in the `Admin` console? This most likely means that the email format was not as expected. Maybe you were blocked or the message/room was deleted. diff --git a/use-rocket.chat/workspace-administration/settings/email/editing-emails-content.md b/use-rocket.chat/workspace-administration/settings/email/editing-emails-content.md new file mode 100644 index 0000000000..a87b4ada29 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/email/editing-emails-content.md @@ -0,0 +1,112 @@ +# Edit your Email Content + +You can customize the predefined emails sent out to users on your workspace. + +To customize email content, select the email type you want to change and modify. The email body can take in placeholder values used to set customized data e.g `[Site_Name]` is replaced with your Rocket.Chat server name. + +{% hint style="info" %} +* Available placeholder fields can be seen at the bottom of the field being edited. +* You can use Rocket.Chat internationalization engine by wrapping sentence string with `{ }`, see all internationalization strings [here](https://github.com/RocketChat/Rocket.Chat/tree/develop/apps/meteor/packages/rocketchat-i18n/i18n). +{% endhint %} + +### Device Management - Login Detected + +The email users receive when a user login is detected from a new device. + +* **Subject**: The email subject. +* **Body**: Email body. + +### Direct Reply + +{% content-ref url="direct-reply.md" %} +[direct-reply.md](direct-reply.md) +{% endcontent-ref %} + +### Email Address Changed + +Formats email to send when users change their email. + +* **Subject**: The email subject. +* **Body**: Email body. + +### Forgot Password + +The email users receive when they trigger the forget password action. + +* **Subject**: Subject of the email. +* **Body:** Email body. + +### Header and Footer + +Defines the header and footer style to use for all your emails. + +* **Header**: Header to use for all emails sent. +* **Footer**: The email footer to use for all emails. +* **Footer When Direct Reply is Enabled**: Let you define the footer for when [direct reply](direct-reply.md) is enabled. + +### Invitation + +Email format for when a user is invited to join the workspace. + +* **Subject**: The email subject. +* **Body**: Email content. + +### Offline Message + +* **Use Deep Link URL Format**: When enabled, deep linking is made possible in emails sent. + +### Password Changed + +Email format for when a user's password is changed. + +* **Subject**: The email subject. +* **Body**: Email body. + +### Privacy + +Set a level of privacy to the emails sent. + +* **Show Message in Email Notification**: Whether or not to show messages in email notifications. +* **Add Sender to Reply-To**: When enabled, message senders will be added to the `Reply-To` email header property. + +### Registration + +Email to send on new user registration. + +* **Subject**: Email subject. +* **Body**: The body of the email. + +### Registration via Admin + +Format of the email to send to a user when registered by an admin. + +* **Subject**: The email subject. +* **Body**: Email body. + +### SMPT + +{% content-ref url="setup.md" %} +[setup.md](setup.md) +{% endcontent-ref %} + +### Style + +Here you define the styling to be applied to all emails. + +* **Send only plain text emails**: When enabled, emails are sent in plain text only. +* **Email Style**: Write CSS to style every email. + +### Subject + +Let you specify email subjects for various notification types. + +* **Direct Message Email Subject**: Email subject to use for direct message notification. +* **Mention Email Subject**: Email subject for when a user is mentioned in a room. +* **Mention All Email Subject**: Email subject when a message is posted in a room. + +### Verification + +Format of email to use when sending user verification. + +* **Subject**: Email Subject. +* **Body**: The email body. diff --git a/use-rocket.chat/workspace-administration/settings/email/setup.md b/use-rocket.chat/workspace-administration/settings/email/setup.md new file mode 100644 index 0000000000..0f4549b882 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/email/setup.md @@ -0,0 +1,23 @@ +# Email Configuration + +The Rocket.Chat Emails, [Notifications](../../../../setup-and-administer-rocket.chat/advanced-workspace-management/notifications.md), [Email verification](../../../../setup-and-administer-rocket.chat/advanced-workspace-management/notifications.md#emails), and [Mailer ](../../mailer.md)features depend on this Email configuration. + +This page guides you through configuring SMTP settings for your Rocket.Chat workspace. + +{% hint style="info" %} +This configuration is only available for Self-managed workspaces. SaaS workspaces already have this pre-configured. +{% endhint %} + +## Set up your Credentials + +* Go to **Administration > Workspace > Settings > Email > SMTP.** +* **Protocol**: Select the mailing protocol to use. **SMTP**(Simple Mail Transfer Protocol) or **SMTPS** (Simple Mail Transfer Protocol Secure) protocol. +* **Host**: Your SMTP server hostname (e.g. `mail.example.com`) +* **Port**: The SMTP port (usually 587 for modern secured SMTP servers). +* **IgnoreTLS**: Enable to ignore TLS(Transport Layer Security). +* **Pool**: Enable this option to use pooled connections, otherwise a new connection is created for every mail. +* **Username**: Your SMPT username. +* **Password**: Your SMPT password. +* **From Email**: The email to be shown as the sender. +* **Save changes** +* **Send a test mail to my user** - Use this option to send a test mail to yourself. diff --git a/use-rocket.chat/workspace-administration/settings/enterprise.md b/use-rocket.chat/workspace-administration/settings/enterprise.md new file mode 100644 index 0000000000..da3c068d02 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/enterprise.md @@ -0,0 +1,18 @@ +--- +description: Manually update your Enterprise license +--- + +# Enterprise + +Use this setting to update your enterprise license manually. See this section on how to get [Enterprise License](../../../setup-and-administer-rocket.chat/enterprise-edition-trial/). + +{% hint style="info" %} +If your workspace is registered and the license is provided by Rocket.Chat Cloud, you don't need to update the license here manually. +{% endhint %} + +To access this menu, go to **Administration** > **Workspace** > **Settings** > **Enterprise**. + +* **Enterprise License**: A field to enter your enterprise license. +* **Status**: This shows the current status of your applied license, whether it is valid or invalid. + +When all your changes are done, hit the **Save changes** button to commit it. diff --git a/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-admin-guide/README.md b/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-admin-guide/README.md new file mode 100644 index 0000000000..b7f0305262 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-admin-guide/README.md @@ -0,0 +1,7 @@ +# Matrix Admin Guide + +As a workspace [Administrator](../../../../), you can set up Matrix protocol for federated communication. + +* ****[**Matrix Homeserver Setup**](matrix-homeserver-setup/): Setup a Matrix Homeserver following the automated or manual guide. +* ****[**Matrix Bridge Configuration**](matrixbridge-configuration.md): Configure the Matrix protocol settings for your workspace after manual installation. +* ****[**Matrix Allow/Block List**](matrix-homeserver-setup/matrix-allow-block-list.md): See how to create a list of allowed and blocked IP addresses from communicating with your workspace. diff --git a/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-admin-guide/matrix-homeserver-setup/README.md b/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-admin-guide/matrix-homeserver-setup/README.md new file mode 100644 index 0000000000..22722bcb55 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-admin-guide/matrix-homeserver-setup/README.md @@ -0,0 +1,126 @@ +# Matrix Homeserver Setup + +## Introduction + +In the Matrix protocol and federated architecture, Homeservers are key components that host user accounts and other data related to communication. It also facilitates communication between users on different servers by relaying messages through a network of Matrix servers until it reaches the destination. + +Rocket.Chat listens to events happening in the Homeserver and also sends events that gets relayed to other networks. + +You can choose to install a Homeserver following and of the two methods listed below: + +* ****[**Automated Installation**](./#automated-installation): Install Synapse and Rocket.Chat using a simple setup script. +* ****[**Manual Installation**](./#manual-installation): Manually install and configure your Homeserver with Rocket.Chat. + +{% hint style="success" %} +We recommend using automatic installation since this comes with some configurations done. +{% endhint %} + +### System Requirements + +* 8GB of RAM +* 2CPU +* 20GB of Storage +* [Ubuntu 20.04](https://docs.rocket.chat/quick-start/installing-and-updating/other-deployment-methods/manual-installation/debian-based-distros/ubuntu) + +{% hint style="info" %} +You are required to have a domain available to host your Matrix Homeserver. +{% endhint %} + +### Important warning about the installation + +There is an important setting you must be aware of before proceeding with the installation. + +* Enabling ephemeral events like _user typing indicator_ can affect the performance of your Matrix Homeserver and Rocket.Chat server for federated communicaation. \ + This can be enabled by adding the following property in your Application Service configuration file + +```yaml +de.sorunome.msc2409.push_ephemeral: true +``` + +* Add and enable the following properties to make public rooms visible and searchable on other Matrix networks. + +```yaml +allow_public_rooms_without_auth: true +allow_public_rooms_over_federation: true +``` + +* Following the automated installation enables everything by default and can be disabled by editing the generated configuration at `data/matrix/synapse`. + +## Automated Installation + +The Automated install makes it simple for you to install a Matrix Homeserver pre-configured with Rocket.Chat. + +#### Prerequisites + +You are required to have the following on your system before installing. + +* [Docker](https://www.docker.com/) +* [Docker compose](https://docs.docker.com/compose/) (> 2.3.3) + +#### Installation Steps + +* Open your terminal in any directory of your choice +* Download and execute the [script](https://go.rocket.chat/i/federation-setup) by running the following command. This creates a `docker-compose` and a `.env` file that can be edited as needed + +```bash +bash <(curl -L -s https://go.rocket.chat/i/federation-setup) +``` + +* Follow the instructions provided by the script to configure the workspace: + * **Server's hostname**: Add your domain when asked. + * Create `A` domain records pointing to your server's IP address as requested. + * `synapse.` + * `matrix.` + * `traefik.` + * Enter your email address, this is used to issue an SSL certificate for your domain. +* Start the container by running: + +```bash +docker compose up -d +``` + +{% hint style="success" %} +Installing with the Automated setup automatically sets the values at **Administration** > **Workspace** > **Settings** > **Federation** > **Matrix Bridge.** +{% endhint %} + +{% hint style="info" %} +Rocket.Chat Matrix setup CLI coming soon. +{% endhint %} + +#### Testing the Setup + +To test and make sure your Matrix setup is successful, + +* In the same directory where the setup was initiated, download and execute the [test script](https://go.rocket.chat/i/federation-test). + +```bash +bash <(curl -L -s https://go.rocket.chat/i/federation-test) +``` + +You get a notice about the setup status. + +## Manual installation + +Follow this guide to set up a Matrix Homeserver with Synapse manually. + +* Install [Synapse](https://matrix.org/docs/projects/server/synapse). +* Obtain [Lets Encrypt](https://letsencrypt.org/) Certificate. +* Setup [Element ](https://github.com/vector-im/element-web)(Optional). +* Configure [Nginx](https://docs.rocket.chat/quick-start/deploying-rocket.chat/rapid-deployment-methods/docker-and-docker-compose/docker-containers#5.-installing-nginx-and-ssl-certificate) using the certificates, reverse proxying the requests to Synapse. +* Point all the generated DNS records to your server's IP address (all to the same IP). +* [Configure ](https://matrix-org.github.io/synapse/latest/application\_services.html)the support for [Application Service](https://matrix.org/docs/guides/application-services) on the Matrix Homeserver: This can be done by creating a `registration.yaml` file under the `app/matrix-federation-config` directory with the content provided in **Workspace** > **Settings** > **Federation** > **Matrix Bridge** > **Registration File**. + +

App Service Registration File content

+ +* Complete Matrix Bridge Configuration following this guide + +{% content-ref url="../matrixbridge-configuration.md" %} +[matrixbridge-configuration.md](../matrixbridge-configuration.md) +{% endcontent-ref %} + +#### Testing your setup + +To test your manual installation: + +* Make sure Synapse is up and running. +* Ensure the federation setup is running, go to [Matrix Federation Tester](https://federationtester.matrix.org/), and paste your Matrix Homeserver name (only the server name, not the full link). diff --git a/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-admin-guide/matrix-homeserver-setup/matrix-allow-block-list.md b/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-admin-guide/matrix-homeserver-setup/matrix-allow-block-list.md new file mode 100644 index 0000000000..04650ba3fe --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-admin-guide/matrix-homeserver-setup/matrix-allow-block-list.md @@ -0,0 +1,35 @@ +--- +description: >- + Blocking or allowing specific domain names or IPs address to communicate with + your Matrix Homeserver +--- + +# Matrix Allow/Block List + +### Synapse + +To create allow/block lists on the Synapse installation, you need to change it directly in the configuration file (homeserver.yaml), blocking undesired communication with specific homeservers or allowing only the desired ones. + +#### Block List + +Add the following to the Synapse configuration file: + +`ip_range_blacklist`: Creates a block list by IP ranges. (List all IPs you want as a YAML array.) + +[More Info](https://matrix-org.github.io/synapse/latest/upgrade.html#blacklisting-ip-ranges) + +#### Allow List + +Add the following to the Synapse configuration file: + +`ip_range_whitelist`: Creates an allow list by IP ranges. (List all IPs you want as a YAML array.) + +`federation_domain_whitelist`: Creates an allow list by domain names. (List all domain names you want as a YAML array.) + +After creating the desired configuration, restart the Synapse server, and everything you specified should be blocked. + +[More Info](https://matrix-org.github.io/synapse/latest/usage/configuration/config\_documentation.html#federation\_domain\_whitelist) + +### Dendrite + +Dendrite does not support creating allow/block lists at this point yet. diff --git a/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-admin-guide/matrixbridge-configuration.md b/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-admin-guide/matrixbridge-configuration.md new file mode 100644 index 0000000000..6c455cc3d4 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-admin-guide/matrixbridge-configuration.md @@ -0,0 +1,31 @@ +# Matrix Bridge Configuration + +Configure the Rocket.Chat workspace to link with your Matrix Homeserver. + +{% hint style="info" %} +This configuration only applies if the Matrix Homeserver was set up following [#manual-installation](matrix-homeserver-setup/#manual-installation "mention"). This is done automatically for[#automated-installation](matrix-homeserver-setup/#automated-installation "mention"). +{% endhint %} + +To access this setting: + +* Navigate to _**Administration** > **Workspace** > **Settings** > **Federation > Matrix Bridge.**_ +* **Enable**: Turn on to enable federation with Matrix. +* **AppService ID:** A unique identifier for the Application Service. _This is automatically generated by Rocket.Chat_ +* **Homeserver Token:** A unique homeserver token to authenticate requests to Application Services. +* **App Service Token:** A unique Application Service token to authenticate requests to homeservers. _This is automatically generated by Rocket.Chat_ +* **Homeserver URL:** The URL of the Matrix server you want to use as your Proxy homeserver. e.g `http://localhost:8008` +* **Homeserver Domain:** Your Matrix homeserver's name, the same as you've configured in your Matrix configuration file. +* **Bridge URL:** The URL for the Matrix bridge. It is the location you want your bridge should run. + +{% hint style="warning" %} +* Make sure the port that you are using for the bridge is free in your host. +* We recommend a brand new Matrix Homeserver to be used as your Proxy homeserver. +* We strongly recommend not connecting to this Matrix Homeserver with other Matrix clients. +{% endhint %} + +* **AppService User Localpart:** The bot user associated with the application service (Sometimes, it's being used to execute some actions). +* **Registration**: Automatically generated and updated by Rocket.Chat based on all the values provided in the above settings (This file is used [to configure the Application Service](matrix-homeserver-setup/#manual-installation)). + +{% hint style="info" %} +After any change is made to these settings, update the `registration.yml` file for the Application Service in `pp/matrix-federation-config` see [#manual-installation](matrix-homeserver-setup/#manual-installation "mention") . Then restart your Matrix Homeserver and Rocket.Chat Server. +{% endhint %} diff --git a/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/README.md b/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/README.md new file mode 100644 index 0000000000..89f24d7b13 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/README.md @@ -0,0 +1,8 @@ +# Matrix User's Guide + +As a Rocket.Chat User, you can communicate with users of other federated platforms provided your workspace Administrator has set up and enabled Matrix federation. See this guide [matrix-admin-guide](../matrix-admin-guide/ "mention") + +* ****[**Create federated rooms**](create-a-federated-rooms.md): See how to create federated rooms. +* ****[**Invite external users**](invite-external-users-to-your-rocket.chat-server.md): Learn how to invite external users from other Matric servers to communicate in Rocket.Chat. +* ****[**Communicate with federated users**](communicate-with-a-federated-user.md): This shows how to initiate and chat with external users. +* ****[**Assign roles for users in federated rooms**](assign-roles-for-users-in-federated-rooms.md): Share roles with federated users in a room. diff --git a/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/assign-roles-for-users-in-federated-rooms.md b/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/assign-roles-for-users-in-federated-rooms.md new file mode 100644 index 0000000000..b2d6f0b917 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/assign-roles-for-users-in-federated-rooms.md @@ -0,0 +1,55 @@ +# Assign roles for users in federated rooms + +Room members are able to assign room roles for federated users within a federated room context. + +Roles in federated rooms are slightly different from the regular [Rocket.Chat Roles](../../../../permissions.md#default-roles) for the [_Room Scope_](../../../../permissions.md#scope-of-roles). + +Federated rooms support 3 roles: + +* **Owner**: Owns a room and has full control over it and its activities.\ + They can invite users, assign new owners, promote/demote moderators, remove users from the room, and edit room name and topic. +* **Moderator**: Moderators can manage user actions and details of the room.\ + They can invite users, assign new moderators, remove users from the room, and edit room name and topic. +* **User** (default): Room users are capable of sending and performing message actions in the room. Users cannot perform any room management related task + +Matrix uses the concept of power levels to define room roles with the `Owner` being the most powerful, followed by the `Moderator`and the `User`the least powerful. + +### IMPORTANT + +{% hint style="danger" %} +Rocket.Chat global roles are not supported in federated rooms, it doesn't matter if they are [_Room Scoped_](../../../../permissions.md#scope-of-roles). +{% endhint %} + +{% hint style="danger" %} +For rooms created using [Element](https://app.element.io/#/welcome) as a Matrix client, only Owners (admins) are able to assign room roles/permissions, you need to change the **Change permissions** room setting to`Moderator`, otherwise Moderators users using Rocket.Chat as their Matrix Client, will NOT be able to assign roles for other users. + +This can be done by navigating to **Room info** > **Room settings** > **Roles & Permission** on your Element client. +{% endhint %} + +

Change permissions room setting when the room was created using Element as a client

+ +{% hint style="warning" %} +Rooms that are created with Element as the client has a set of room permission possibilities. + +Changing the permissions for event-specific features can lead to unexpected behaviour for users on Rocket.Chat as their Matrix client. +{% endhint %} + +The main rules for assigning roles in federated rooms are: + +* At the moment of the room creation, only room owners (admin) are able to assign roles. +* All the users added to federated rooms have a User role by default. +* Users with the same role cannot assign roles (promote/demote) between them. +* Users with a specific role cannot demote other users from the room with the exact same role. +* Users can only demote and promote again users in the layer right below as his/her own roles. +* Whenever a user wants to promote a user to a role as powerful as his/her own role, it will not be possible to undo that change(a confirmation modal will double-check the operation). +* Whenever a user wants to demote himself/herself, it will not be possible to regain the same privileges the user has had, the only possibility is for a user with the necessary permission to give back the same role for that user(a confirmation modal will double-check the operation). + +For any applicable other rule, they are the same as regular Rocket.Chat rooms, (e.g Room owners cannot demote themselves if they are the last owner of the room). + +

Room owner possibilities for any other default user.

+ +

Room owner trying to demote (remove as an owner, switching to moderator) himself/herself confirmatio modal.

+ +

User trying to assign the same role as himself/herself confirmation modal.

+ +

View of a regular user (with no permissions to assign roles, invite users, etc)

diff --git a/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/communicate-with-a-federated-user.md b/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/communicate-with-a-federated-user.md new file mode 100644 index 0000000000..975895ff95 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/communicate-with-a-federated-user.md @@ -0,0 +1,25 @@ +--- +description: Start to communicate and collaborate accross platforms in a decentralized way +--- + +# Communicate with a federated user + +After you have configured everything and created some federated channels, you're now able to: + +* Send and receive messages. +* Send and receive messages with emojis. +* Send and receive messages using the whole [Markdown Spec](https://spec.commonmark.org/0.30/). +* Send and receive attachments (Files, audio messages, and video messages). +* Quote messages. +* React to messages. +* Edit Messages. +* Delete Messages (only your own messages). +* Mention internal and external users inside any federated room. +* Send and receive users' typing indicator ([More info](../matrix-admin-guide/matrix-homeserver-setup/#important-warning-about-the-installation)). +* Assign user roles within the room context (only applied to that room). ([More info](assign-roles-for-users-in-federated-rooms.md)) + +There are also some features not directly related to rooms: + +* Users' avatar synchronization. +* Servers' allow list/block list ([More info](../matrix-admin-guide/matrix-homeserver-setup/matrix-allow-block-list.md)). +* Search for public rooms in any external home server inside the Matrix Network (_coming soon_). diff --git a/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/create-a-federated-rooms.md b/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/create-a-federated-rooms.md new file mode 100644 index 0000000000..932b338bc2 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/create-a-federated-rooms.md @@ -0,0 +1,93 @@ +# Create federated rooms + +{% hint style="danger" %} +We don't support encrypted rooms yet. +{% endhint %} + +## Creating a channel/group + +
+ +You can create federated [Channels](../../../../../user-guides/rooms/channels/) having both Rocket.Chat and other federated users. + +To create a federated channel, + +* Start by [creating a channel](../../../../../user-guides/rooms/channels/create-a-new-channel.md) within your Rocket.Chat workspace +* Enable **Federated** +* **Add members,** if any, or keep empty +* **Create** + +{% hint style="info" %} +**Important**: + +* Federated Channels can not be _Encrypted, Read-Only, or Broadcasted_ for now_._ +* You cannot create [Threads](../../../../../user-guides/rooms/threads/) or [Discussions](../../../../../user-guides/rooms/discussions/) within federated Channels. +{% endhint %} + +Whenever your user is invited to participate in a federated room, if that room was created in an external server, you can see from which server (server name) the room is originally from. This helps the user to differentiate when there are multiple rooms with the same name but all from different servers. + +

Badge indicating from where the room is coming from (server name)

+ +## Creating a Direct Message 1:1 + +
+ +You can create a [Direct Message](../../../../../user-guides/rooms/direct-messages/) with other federated users. + +Create a federated DM with these steps: + +* Start- by [creating a 1:1 Direct Message](../../../../../user-guides/rooms/direct-messages/create-a-new-direct-message.md) +* Set the federated user you wish to message following the [syntax to invite external users](invite-external-users-to-your-rocket.chat-server.md#invite-external-users-syntax). + +## Creating a Multi-user Direct Message + +Using [Multi Direct Message](broken-reference), you can send Direct Messages to multiple users(federated or not) at once. + +To create a federated Multi Direct Message: + +* [Create a Multi-user Direct Message](broken-reference) +* Select users you want to send messages to following the [syntax to invite external users](invite-external-users-to-your-rocket.chat-server.md#invite-external-users-syntax). + +## Slash commands + +You can also use an available slash command to create and invite users for Direct Messages rooms. The general syntax for the available slash command is: + +``` +/federation dm @username:server.com +``` + +Where: + +* `/federation`: The slash command itself. +* `dm`: The command you want to execute, _dm_ is the only one available now. +* `@username:server.com`: The external user you want to invite, using the [syntax to invite external users.](invite-external-users-to-your-rocket.chat-server.md#invite-external-users-syntax) + +## Creating a Multi-user Direct Message using slash command + +
+ +To create Multi-user Direct Messages using slash commands, you need to open the message box in any channel and type the following command using the [syntax to invite external users](invite-external-users-to-your-rocket.chat-server.md#invite-external-users-syntax): + +``` +/federation dm @username1:server.com @username2:server2.com +``` + +## Creating a Direct Message 1:1 using slash command + +To create a 1:1 Direct Message using slash commands, you need to open the message box in any channel and type the following command using the [syntax to invite external users](invite-external-users-to-your-rocket.chat-server.md#invite-external-users-syntax): + +``` +/federation dm @username1:server.com +``` + +### Editing a federated room + +Currently, we support **name** and **topic** editions after a room was created. + +### Deleting a federated room + +We don't support federated room deletions at this point. + +### Invite links + +They are not supported yet. diff --git a/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/invite-external-users-to-your-rocket.chat-server.md b/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/invite-external-users-to-your-rocket.chat-server.md new file mode 100644 index 0000000000..d74e284948 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrix-users-guide/invite-external-users-to-your-rocket.chat-server.md @@ -0,0 +1,27 @@ +# Invite external users to your Rocket.Chat server + +## Invite external users' syntax + +Whenever you want to invite someone from an external server, use the following syntax to identify them + +``` +@username:server.com +``` + +

Invite external users syntax

+ +Which is represented by the following parts: + +* `@username`: The username from the external server (red part). +* `(:)`: A colon character separating the external username and the external server name. +* `server.com`: The external server name(blue part). + +Once the Matrix Bridge is well configured and running, the external users' syntax is interpreted in any _Add Members_ inputs all over the system. + +{% hint style="info" %} +After you invite an external user for the first time, a copy for that user will be created in your local Rocket.Chat instance. This means you don't need to use the external user syntax to invite that specific user anymore. You can simply invite the local user, which will appear for you as a suggestion in any _Add Members_ input. +{% endhint %} + +{% hint style="info" %} +Once the external user exists and the external server is running, the external user will auto-join the room. We are not allowing the users to decide if they want to accept an invite or not yet. +{% endhint %} diff --git a/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrixbridge-faqs.md b/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrixbridge-faqs.md new file mode 100644 index 0000000000..67bddfa5cc --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/federation/matrix-bridge/matrixbridge-faqs.md @@ -0,0 +1,94 @@ +# Matrix Bridge FAQs + + + +
+ +What is the Matrix Protocol? + +[Matrix](https://matrix.org/) is an open standard for interoperable, decentralized, real-time communication over IP. + +
+ +
+ +How does Matrix work in Rocket.Chat? + +Rocket.Chat aims to enable seamless communication and collaboration across platforms, empowering individuals and organizations to connect on their terms and fluently share information with other platforms. + +
+ +
+ +What is a homeserver? + +It's an implementation of the Matrix spec, there are some existing homeservers. The most famous are [Synapse ](https://github.com/matrix-org/synapse)and [Dendrite](https://github.com/matrix-org/dendrite). + +
+ +
+ +How do I install Synapse? + +* Installing [Synapse](https://matrix.org/docs/guides/installing-synapse). +* Configuring [federation](https://matrix-org.github.io/synapse/latest/federate.html). + +
+ +
+ +What are the prerequisites for using Matrix on Rocket.Chat? + +See how to [install and configure](matrix-admin-guide/matrix-homeserver-setup/) Rocket.Chat Matrix Bridge integration. + +
+ +
+ +How do I test my Rocket.Chat Matrix Bridge setup? + +See how to [test ](matrix-admin-guide/matrix-homeserver-setup/#testing-your-setup)your setup. + +
+ +
+ +How can I block undesired homeservers to contact me? + +See [how to create allow/block lists](matrix-admin-guide/matrix-homeserver-setup/matrix-allow-block-list.md) in your Matrix homeserver configuration. + +
+ +
+ +What happens when I invite someone from an external server? + +Whenever you invite someone to chat with you either through public, private, or DM rooms, a copy for that external user will be created in your local workspace. And a copy for your user will be created in the external (inviter) server as well. From there, every message is stored on both sides. + +
+ +
+ +Will the copies for external users created in my local workspace be counted as a valid seats (Enterprise license)? + +No, all the copies being created to support the Matrix Bridge feature will NOT be counted as valid seats. Only users you create in your local workspace are counted as valid seats. + +
+ +
+ +Can I change the Role of an federated user in my local workspace? + +No, all the external users created in your local workspace will be created as a User (user role) and without an email and password, which means they cannot log in directly to your workspace. The only way for them to communicate with your local workspace is through the open channel you have with them. + +
+ +
+ +Will I be able to see the presence status for a federated user? + +Unfortunately, not at this point. When it comes to presence status, the support from Bridges is very unstable, and due to that, we don't support it yet. + +
+ +For more information about the Matrix Protocol, visit [FAQs](https://matrix.org/faq/). diff --git a/use-rocket.chat/workspace-administration/settings/federation/rocket.chat-federation/README.md b/use-rocket.chat/workspace-administration/settings/federation/rocket.chat-federation/README.md new file mode 100644 index 0000000000..81cee8e8c6 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/federation/rocket.chat-federation/README.md @@ -0,0 +1,129 @@ +# Rocket.Chat Federation + +{% hint style="warning" %} +![](<../../../../../.gitbook/assets/Deprecated (1).png>) Rocket.Chat Federation is deprecated as from Rocket.Chat `6.0`. We recommend federating using [Matrix Bridge](../../../../rocket.chat-workspace-administration/settings/federation/matrix-bridge/). +{% endhint %} + +Rocket.Chat Federation lets your server becomes part of the Rocket.Chat Federated Network. This makes your server visible and can be found over the network, and messages, files can be exchanged with other Federation-enabled Rocket.Chat servers. + +Rocket.Chat uses industry standards, like DNS records, to keep the process seamless and seek the most hassle-free communication between servers. + +## Configuration + +The following configurations can be done + +* **Enabled**: It determines whether or not Federation is enabled on this server. +* **Status**: It is the current Federation status, which can be one of the following: + * **Could not enable, settings are not fully set:** make sure all the options are correctly filled and saved + * **Booting:** the federation is initializing + * _\[HUB Only]_ **Registering with Hub:** the federation is trying to register with the Hub + * _\[HUB Only]_ **Disabled, could not register with Hub:** the federation could not register with the Hub + * **Disabled:** the federation is disabled + * **Running:** the federation is running and ready to communicate with other servers +* **Domain**: Fill this option with your domain name, usually the one that hosts the Rocket.Chat. +* **Public Key**: All Federation communications are double-encrypted, which means messages cannot be delivered by mistake to the wrong peer. This is your public key, which is specially generated for Rocket.Chat and by Rocket.Chat, and is shared with peers you communicate with.\ + The encryption process encrypts the message using the Server A private key, and the Server B public key.\ + When a server receives the message, it uses the Server B private key and the Server A public key to decrypt it.\ + So, let's say the message ended up on Server C: this server won't have Server B private key to decrypt it, so the message can't be read at all. +* **Discovery Method**: How are you going to be found in the Rocket.Chat Federated Network? You can choose through DNS or, as a fallback, the Rocket.Chat Hub.\ + **Important:** We recommend using the DNS method. The Hub is a tool to allow users to easily adapt, try, and validate the feature or as a different way to be part of the Rocket.Chat Federated Network until DNS record changes are made. Also, the Hub requires external communication and access to a specific e-mail address owned by your domain, as explained below, which introduces extra configuration steps in some protected internal networks. + +## Adding Federation to your Server + +You have two ways to add your server to the Rocket.Chat Federated Network: + +### Recommended: Configure your DNS + +To add your server to the Federated Network using the DNS, fill in all the configuration fields required. Make sure to pick `true` on the `Enabled`, and select **DNS** as your `Discovery Method` option, save, and follow the guide below. + +Let's suppose we have a domain named `mydomain.com`, and my Rocket.Chat server is hosted at `mydomain.com`, port `443`. + +You must add two DNS records: + +#### SRV Record (2.0.0 or newer) + +* Service: `_rocketchat` +* Protocol: `_https` +* Name: `mydomain.com` +* Weight: `1` +* Priority: `1` +* TTL: `1 hour` +* Target: `mydomain.com` +* Port: `443` + +#### Public Key TXT Record + +* Host: `rocketchat-public-key.mydomain.com` +* Value: `` + +**Note**: Some DNS providers do not allow entering the full public key string. So, after saving, make sure the string is complete: it starts as `-----BEGIN PUBLIC KEY-----` and ends as `-----END PUBLIC KEY-----`. If that is not the case, follow your provider's instructions. For example, AWS Route 53 needs to split the string in two pieces, as follows: + +``` +"-----BEGIN PUBLIC KEY-----...." +"...-----END PUBLIC KEY-----" +``` + +#### If you use http instead of https + +We recommend using `HTTPS` for all kinds of communications, but sometimes that is not possible. If you need, in the SRV DNS entry replace: + +* the protocol: change `_https` to `_http` +* the port: change `443` to `80` + +#### Legacy Support: If your DNS provider does not support SRV records with `_http` or `_https` + +Some DNS providers will not allow setting `_https` or `_http` on SRV records, so we have support for those cases, using our old DNS record resolution method. + +#### Legacy Support: SRV Record + +* Service: `_rocketchat` +* Protocol: `_tcp` +* Name: `mydomain.com` +* Weight: `1` +* Priority: `1` +* TTL: `1 hour` +* Target: `mydomain.com` +* Port: `443` + +#### Legacy Support: protocol TXT Record (if not provided, HTTPS will be used) + +* Host: `rocketchat-tcp-protocol.mydomain.com` +* Value: `https` or `http` + +#### Test your configuration from CLI + +From your CLI, issue the following commands and make sure the answers look like the following: + +``` +dig srv _rocketchat._https.mydomain.com +... +;; ANSWER SECTION: +_rocketchat._https.mydomain.com. 1800 IN SRV 1 1 443 mydomain.com. +... + +dig -t txt rocketchat-public-key.mydomain.com +... +;; ANSWER SECTION: +rocketchat-public-key.mydomain.com. 1799 IN TXT "-----BEGIN PUBLIC KEY----- THEPUBLICKEY :) -----END PUBLIC KEY-----" +... +``` + +#### Conclusion + +When the SRV and the Public Key TXT records are added to the DNS records, other peers should be able to find you after the propagation. + +### Alternative: Register on Hub + +To add your server to the Federated Network using the Hub, fill in all the configuration fields needed. Make sure to pick **true** on the `Enabled` field), pick the **Hub** as your `Discovery Method` option, save, and follow the guide below. + +#### Confirm Domain Ownership + +When you click **Save** on the Federation config screen, you begin your registration process. This process takes a few seconds, and if you are not yet registered to the Hub, you should receive an email at `webmaster@mydomain.com`, where `mydomain.com` is the domain address you configured on the `Domain` field. + +Make sure the data is correct and confirm the changes. + +After that step, other peers should be able to find you in the Rocket.Chat Federated Network. + +## Using Rocket.Chat Federation + +Click [here](../../../../rocket.chat-federation/talking-to-users-from-another-server.md) to learn how to use Rocket.Chat Federation. diff --git a/use-rocket.chat/workspace-administration/settings/federation/rocket.chat-federation/cross-server-federated-channels.md b/use-rocket.chat/workspace-administration/settings/federation/rocket.chat-federation/cross-server-federated-channels.md new file mode 100644 index 0000000000..de3ad8e462 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/federation/rocket.chat-federation/cross-server-federated-channels.md @@ -0,0 +1,36 @@ +# Cross-server Federated Channels + +With [.](./ "mention") enabled and configured on your Rocket.Chat workspace, you can talk with users on other federated servers. + +{% hint style="info" %} +![](<../../../../../.gitbook/assets/Deprecated (1).png>) Rocket.Chat basic federation is deprecated as from Rocket.Chat `6.0.` + +We recommend federating with [matrix-bridge](../../../../rocket.chat-workspace-administration/settings/federation/matrix-bridge/ "mention")`` +{% endhint %} + +## Using Rocket.Chat Federation + +After enabling federation, you should be able to start chatting with other servers. + +## Inviting users from a different server + +To do so, you should go to the `Directory` section, `Users` tab, and pick `Every Workspace` from the dropdown menu. + +![Directory Search Users](../../../../../.gitbook/assets/directory.png) + +Then, you should be able to look for users on remote servers called peers. You can search using a combination of a username and a domain or an e-mail address, like: + +* Username: `myfriendsusername@anotherdomain.com` +* E-mail address: `joseph@remotedomain.com` + +If the remote server is within Rocket.Chat Federated Network; you will be able to see the users: + +![Directory Search Result](../../../../../.gitbook/assets/directory-result.png) + +## Inviting remote users and chatting + +If you click on one of those listed users, you will invite them to your server without login access. Also, you and everyone else on your server will be able to chat with that new remote user. + +![Chat](../../../../../.gitbook/assets/chat.png) + +From now on, you can invite that user only to private rooms or discussions. Those channels are going to be replicated to the remote server, without the message history. diff --git a/use-rocket.chat/workspace-administration/settings/file-upload/README.md b/use-rocket.chat/workspace-administration/settings/file-upload/README.md new file mode 100644 index 0000000000..99d74812a4 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/file-upload/README.md @@ -0,0 +1,165 @@ +--- +description: Configure file upload and storage +--- + +# File Upload + +Configure file uploads and storage on your workspace. + +To access the menu on your workspace, navigate to **Administration > Workspace > Settings > File Upload** + +{% hint style="success" %} +Remember always to hit **Save Changes** to apply any changes made. +{% endhint %} + +## General Settings + +* **File Uploads Enabled**: Use this setting to enable or restrict file uploads on your workspace +* **Maximum File Upload Size (in bytes)**: Use this setting to define the maximum allowed file size for uploads. `Set it to -1 to remove the file size limitation.` +* **Accepted Media Types**: Use this setting to define the files the users can upload. + + > Comma-separated list of media types. Leave it blank for accepting all media types. +* **Blocked Media Types**: Define what types of files are blocked on the workspace. + + > Comma-separated list of media types. This setting has priority over the Accepted Media Types. +* **Protect Uploaded Files** + * **Yes**: Only authenticated users can have access to the uploaded files. + * **No**: If in possession of the uploaded file's URL, unauthenticated users can access and download said files. +* **Rotate images on upload**: Turn on to enable image rotation. This affects the image quality. + * **Enable JSON Web Tokens protection to file uploads**: Turn on to enable JWT protection on file uploads. +* **File Upload Json Web Token Secret**: Set the JWT secret to be used. +* **Storage Type** + * **AmazonS3**: Uses the [Amazon S3](./#amazon-s3) storage type + * **Google Cloud Storage**: Uses the [Google Cloud Storage](./#google-cloud-storage) storage type + * **WebDAV**: Uses the [WebDav](./#webdav) storage type + * **FileSystem**: Uses the [FileSystem](./#filesystem) storage type +* **File Uploads Enabled in Direct Messages**: Use this setting to enable or restrict file uploads on Direct Messages + +## Amazon S3 + +You can find a more detailed guide on how to set up your Amazon S3 server [here](broken-reference). + +* **Bucket name**: The bucket name you've created on Amazon S3 +* **Acl**(Optional): A _Canned ACL_ configuration (see a complete list [here](http://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl)) +* **Access Key**: Your Amazon Access Key ID (optional) +* **Secret Key**: Your Amazon Secret Access Key (optional) + + > **Note**: If no `AWSAccessKeyId` and `AWSSecretAccessKey` are set, the underlying AWS SDK the will fallback to trying to retrieve credentials from the [usual locations](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-node.html). +* **CDN Domain for Downloads**(Optional): If you had set a CDN for your bucket, put it here +* **Region**(Optional): If you have created your bucket on region different from the US Standard, you **have** to set their code here (see a list of region codes [here](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-available-regions)) +* **Bucket URL**(Optional): Override the URL to which files are uploaded. This URL is also used for downloads unless a CDN is given +* **Signature Version**: Identifies the version of AWS Signature that you want to support for authenticated requests. +* **Force Path Style**: Enable force path style. +* **URLs Expiration Timespan**: Time after which Amazon S3 generated URLs are no longer valid (in seconds). If set to less than 5 seconds, this field is ignored. + + > If you run into issues with files not loading consistently for some users located further from server location. Increasing this time might help. +* **Proxy Avatars**: Proxy avatar file transmissions through your server instead of direct access to the asset's URL +* **Proxy Uploads**: Proxy upload file transmissions through your server instead of direct access to the asset's URL + +
+ +Amazon S3 CORS Configuration + +Set the following _CORS Configuration_ to your bucket. + +XML format (if using the old AWS console Interface): + +```markup +[ + { + "AllowedHeaders": [ + "*" + ], + "AllowedMethods": [ + "PUT", + "POST", + "GET", + "HEAD" + ], + "AllowedOrigins": [ + "*ROCKET_CHAT_DOMAIN*" + ], + "ExposeHeaders": [], + "MaxAgeSeconds": 3000 + } +] +``` + +JSON format (if using the new AWS console Interface): + +```javascript +[ + { + "AllowedHeaders": [ + "*" + ], + "AllowedMethods": [ + "PUT", + "POST", + "GET", + "HEAD" + ], + "AllowedOrigins": [ + "*ROCKET_CHAT_DOMAIN*" + ], + "ExposeHeaders": [], + "MaxAgeSeconds": 3000 + } +] +``` + +**Note**: Replace `*ROCKET_CHAT_DOMAIN*` with the domain of your Rocket.Chat installation, e.g. `https://chat.example.com`. Setting CORS to `*` posses a security risk because it allows for requests from any host on the Internet. + +
+ +## FileSystem + +* **System Path**: The local path for where the uploaded files are stored. + +## Google Cloud Storage + +The settings used when configuring a Google Cloud Storage server. You can find more details [here](broken-reference). + +* **Google Storage Bucket Name**: The bucket name to which the files should be uploaded. +* **Google Storage Access Id**: The access ID (or username) of the service account which has access to your Cloud Storage bucket. + + > The Access Id is generally in an email format, for example: "example-test@example.iam.gserviceaccount.com" +* **Google Storage Secret**: A `.pem` containing your private key and certificate. + + > You can find a guide [here](https://github.com/CulturalMe/meteor-slingshot#google-cloud) on how to get your keys. +* **Proxy Avatars**: Proxy avatar file transmissions through your server instead of direct access to the asset's URL +* **Proxy Uploads**: Proxy upload file transmissions through your server instead of direct access to the asset's URL + +### More Information + +
+ +About Google Storage Secret + +The value here takes an argument of a PEM file to connect to your Cloud Storage bucket. When you create a service account, you have the ability to download a JSON file that contains a number of variables. You need the unescaped private key, along with one of the certificates linked at the bottom of the JSON. + +Syntax then looks just like a regular PEM file: + +``` +-----BEGIN PRIVATE KEY----- +unescaped private key goes here +-----END PRIVATE KEY----- +----BEGIN CERTIFICATE----- +first certificate goes here +-----END CERTIFICATE----- +``` + +Enter this into Rocket.Chat to allow the authentication with Google and store items in the bucket. + +
+ +## WebDAV + +The settings used for WebDAV as storage server. + +* **Upload Folder Path**: WebDAV folder path to which files are uploaded to. +* **WebDAV Server Access URL**: The URL of the WebDAV server ([WebDAV URLs of Common Cloud Storage Services](https://community.cryptomator.org/t/webdav-urls-of-common-cloud-storage-services/75)). +* **WebDAV Username**: Username for the remote WebDav server. +* **WebDAV Password**: Password for the remote WebDAV server. +* **Proxy Avatars**: Proxy avatar file transmissions through your server instead of direct access to the asset's URL. +* **Proxy Uploads**: Proxy uploads file transmissions through your server instead of directly accessing the asset's URL. diff --git a/use-rocket.chat/workspace-administration/settings/file-upload/file-upload-faqs.md b/use-rocket.chat/workspace-administration/settings/file-upload/file-upload-faqs.md new file mode 100644 index 0000000000..da9bfb1417 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/file-upload/file-upload-faqs.md @@ -0,0 +1,17 @@ +# File Upload FAQs + +
+ +Why am I getting the "Request Entity Too Large" error on file upload? + +The error shown below is when the upload limit is less than the size of the file in rocket.chat. + + + +If you are using nginx as your load balancer, it could be nginx limit that is throwing the following error not your rocket.chat limit. + + + +Please follow the nginx instructions [here](https://www.cyberciti.biz/faq/linux-unix-bsd-nginx-413-request-entity-too-large/) to resolve this issue. + +
diff --git a/use-rocket.chat/workspace-administration/settings/file-upload/minio.md b/use-rocket.chat/workspace-administration/settings/file-upload/minio.md new file mode 100644 index 0000000000..daea8d0e88 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/file-upload/minio.md @@ -0,0 +1,57 @@ +# Minio + +## Introduction + +Minio is an object storage server built for cloud applications and DevOps. Minio is S3 compatible and provides an open-source alternative to AWS S3. You can [download and install](https://minio.io/downloads) Minio pretty quickly. Minio also provides an [official Docker image](https://hub.docker.com/r/minio/minio/). For further details, check out [Minio documentation website](https://docs.minio.io/). + +## AccessKey and SecretKey + +Once you install and deploy Minio server, you can get the AccessKey and SecretKey from the startup message. + +```bash +2017-01-24T19:53:21.141689279Z +2017-01-24T19:53:21.141730078Z Endpoint: http://172.17.0.2:9000 http://127.0.0.1:9000 +2017-01-24T19:53:21.141735582Z AccessKey: 5fD3434325fDaGE77BNJlSoV1xGp +2017-01-24T19:53:21.141738933Z SecretKey: Quie2teech4oofoo9Dahsoo7aithauja +2017-01-24T19:53:21.141742292Z Region: us-east-1 +2017-01-24T19:53:21.141745405Z SQS ARNs: +2017-01-24T19:53:21.141749472Z +2017-01-24T19:53:21.141752499Z Browser Access: +2017-01-24T19:53:21.141755711Z http://172.17.0.2:9000 http://127.0.0.1:9000 +2017-01-24T19:53:21.141758830Z +2017-01-24T19:53:21.141762000Z Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide +2017-01-24T19:53:21.141765638Z $ mc config host add myminio http://172.17.0.2:9000 1H2MI5BCU45990DZ3WRL flJlSoV1xGp+u2fhfDaGE77BNE6OdyvAsdI15kPq +2017-01-24T19:53:21.141768751Z +2017-01-24T19:53:21.141771631Z Object API (Amazon S3 compatible): +2017-01-24T19:53:21.141774638Z Go: https://docs.minio.io/docs/golang-client-quickstart-guide +2017-01-24T19:53:21.142003548Z Java: https://docs.minio.io/docs/java-client-quickstart-guide +2017-01-24T19:53:21.142019474Z Python: https://docs.minio.io/docs/python-client-quickstart-guide +2017-01-24T19:53:21.142024004Z JavaScript: https://docs.minio.io/docs/javascript-client-quickstart-guide +2017-01-24T19:53:21.142027614Z +2017-01-24T19:53:21.142030994Z Drive Capacity: 262 GiB Free, 303 GiB Total +``` + +To override Minio auto-generated keys, you may pass secret and access keys explicitly as environment variables. Find more details [here](https://docs.minio.io/docs/minio-docker-quickstart-guide). + +## Setup Rocket.Chat to use Minio + +To setup Minio as the file storage server in Rocket.Chat, go to `File Uploads` section under `Administration`, then set `Storage Type: GridFS (default)` to `AmazonS3`. Next, access the `AmazonS3` menu and update the following details: + +| Configuration Name | Description | +| -------------------- | --------------------------------------------------------- | +| Bucket name | Minio Bucket Name | +| Access Key | Minio server Access Key | +| Secret Key | Minio server Secret Access Key | +| Region | us-east-1 | +| Bucket URL | `http://[your.minio.domain/bucketname]` | +| Signature Version | v2 (This may not be needed if using ssl) | +| Force Path Style | true (this may not be needed if using ssl) | +| URLs expiration time | 0 (if you want that your files don't have an expiry date) | + +## Set up Production + +In production, you can use a reverse proxy with Minio server. Check out the documentation for [Nginx](https://docs.minio.io/docs/setup-nginx-proxy-with-minio#main), [Apache](https://docs.minio.io/docs/setup-apache-http-proxy-with-minio-server) and [Apache2](https://www.digitalocean.com/community/tutorials/how-to-use-apache-http-server-as-reverse-proxy-using-mod\_proxy-extension). + +You can secure access to Minio server with TLS. Check out the documentation [here](https://docs.minio.io/docs/how-to-secure-access-to-minio-server-with-tls). + +**Note**: If you specify a different region in Minio, ensure it is the same as the S3 region. Find a complete list of regions [here](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-available-regions). diff --git a/use-rocket.chat/workspace-administration/settings/file-upload/recommendations-for-file-upload.md b/use-rocket.chat/workspace-administration/settings/file-upload/recommendations-for-file-upload.md new file mode 100644 index 0000000000..4ee97afbc4 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/file-upload/recommendations-for-file-upload.md @@ -0,0 +1,29 @@ +# Recommendations for File Upload + +## GridFS + +GridFS is the MongoDB specification for storing and retrieving large files such as images, audio files, video files, etc. It is a kind of a file system to store files, but its data is stored within MongoDB collections. GridFS has the capability to store files even greater than its document size limit of 16MB. + +GridFS divides a file into chunks and stores each chunk of data in a separate document, each of maximum size 255k. + +GridFS, by default uses two collections **fs.files** and **fs.chunks,** to store the file's metadata and the chunks. Each chunk is identified by its unique \_id ObjectId field. The fs.files serves as a parent document. The **files\_id** field in the fs.chunks document links the chunk to its parent. + +Though GridFS is used in rocket.chat for file storage because MongoDB offers this functionality with zero configuration, but GridFS is not recommended for day to day file storage needs in a production environment because it puts an immense amount of load on the database. + +{% hint style="info" %} +**GridFS** is only sustainable if you are using Retention Policy and only storing a small number of files per week, which are not hefty, but it is not recommended by us because it is not scalable. +{% endhint %} + +## FileSystem + +It stores the files on the FileSystem of the server where your Rocket.Chat instance is running. It is a good option, but the problem arises when you start to scale. Because if you decide to have multiple Rocket.Chat servers to support a larger number of users, the FileSystem needs to be shared between all the Rocket.Chat servers. + +If you want to have two separate virtual/physical servers, you will somehow have to share the folder too where your files are stored using, for example NFS. It will require a lot of configurations. + +{% hint style="info" %} +We suggest **FileSystem** only when you are running a single Rocket.Chat instance. +{% endhint %} + +{% hint style="info" %} +What we recommend as the best option for the file upload system are **Amazon** **S3** and **Google Cloud Storage**. +{% endhint %} diff --git a/use-rocket.chat/workspace-administration/settings/general/README.md b/use-rocket.chat/workspace-administration/settings/general/README.md new file mode 100644 index 0000000000..e9d400a595 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/general/README.md @@ -0,0 +1,150 @@ +--- +description: Configure general settings of your workspace. +--- + +# General + +To access the general settings of your workspace, navigate to **Administration > Workspace > Settings > General** + +{% hint style="success" %} +Remember always to hit **Save Changes** to apply any changes made. +{% endhint %} + +## General Settings + +* **Show Setup Wizard**: This setting **SHOULD NOT** be altered. It is been set automatically from `Pending` -> `In Progress` -> `Completed` depending on whether your workspace's general setup procedure has been completed. Changing this manually can lock your workspace. Please refer to this [issue](https://github.com/RocketChat/Rocket.Chat/issues/13840) +* **Site URL**: This sets the URL of the workspace. Example: `https://chat.domain.com/` +* **Site Name**: This sets the name of the workspace. Example `My Rocket.Chat Server` +* **Document Domain**: Lets you set the document domain. +* **Language**: This sets the default language for the workspace. This setting is overridden if the user has changed his language preference. +* **Allow Invalid Self-Signed Certs**: Enable to allow invalid and self-signed SSL certificates for link validation and previews. +* **Enable Content-Security-Policy**: Do not disable this option unless you have a custom build and are having problems due to inline-scripts +* **Restrict access inside any Iframe**: Lets you set restrictions to load the Rocket.Chat inside any iframe +* **Options to X-Frame-Options**: Options to X-Frame-Options. [You can see all the options here.](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options#Syntax) +* **Enable Favorite Rooms**: Lets you set if users can mark a room as favorite +* **First Channel After Login**: Insert here the name of the channel that the user enters after logging in. Setting this field to empty or setting invalid name results in the user being directed to the workspace's home page. Example: `#welcome` +* **Unread Count**: This setting changes the behavior of the unread counter + * **All messages**: All messages are counted on the counter, regardless if they are mentioned or not. + * **User mentions only**: Only mentions using `@yourUsername` are counted on the counter. + * **Group mentions only**: Only group mentions using `@all` or `@here` are counted on the counter. + * **User and group mentions only**: All mentions are counted, this includes `@all`, `@here` and `@yourUsername` +* **Unread Count for Direct Messages**: This setting changes the behavior of the unread counter on Direct Messages + * **All messages**: All messages sent by another user are counted on the counter. + * **Mentions only**: Only mentions using `@yourUsername` are counted on the counter. +* **DeepLink\_Url**: Lets you set the DeepLink URL +* **CDN Prefix**: If you want to use a CDN to load the assets of your workspace, insert here your CDN Prefix. +* **Use CDN Prefix for all assets**: This defines if all assets from the workspace come from a CDN. +* **CDN Prefix for JS/CSS**: Insert here the prefix for the CDN that should load the JS/CSS assets. +* **Force SSL**: You can use this setting to force SSL on your workspace. We strongly discourage the usage of this setting, this should be done at the reverse proxy level by redirecting to HTTPS. + +{% hint style="warning" %} +_Force SSL_ should never be used with reverse proxy. If you have a reverse proxy, you should do the redirect there. This option exists for deployments like Heroku, which does not allow the redirect configuration at the reverse proxy. +{% endhint %} + +* **Google Tag Manager Id**: You can use Google Tag Manager on Rocket.Chat by setting your Id on this setting. +* **Bugsnag API Key**: If you are integrating Bugsnag with Rocket.Chat, you should put your Bugsnag API Key here. +* **Store Last Message**: Store the last message sent in each room. This enables the viewing of the last message on the left sidebar (should be on by default) +* **Robots.txt File Contents**: This sets the content of the Robots.txt file, used to help index your workspace on different search engines and crawlers +* **Default Referrer Policy**: This controls the 'referrer' header that's sent when requesting embedded media from other workspaces. For more information, refer to [MDN. ](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy'%3Ethis)Remember, a full page refresh is required for this to take effect +* **Enable second-layer encryption for data transport**: Lets you enable second-layer encryption. + +{% hint style="info" %} +This feature is currently in alpha +{% endhint %} + +* **Reset Section to Default**: Click to reset the general settings to default. + +## Apps + +* **Number of days to keep logs from apps stored**: Lets you set how long in days to keep logs from Rocket.Chat Apps. +* **Enable the App Framework**: Use this setting to enable the Rocket.Chat Apps Framework. This allows you to add Rocket.Chat Apps from our Marketplace to your workspace. +* **Enable development mode**: Development mode allows the installation of apps that are not from the Rocket.Chat's Marketplace. +* **Apps' Source Package Storage type**: Choose where all the apps' source code should be stored. Apps can have multiple megabytes in size each. +* **Directory for storing apps source package**: Absolute path in the filesystem for storing the apps' source code (in zip file format) + +## REST API + +* **Max Record Amount**: This sets the maximum number of records the REST API should return when not set to unlimited. +* **Default Count**: The default count for REST API results if the consumer did not provide any. +* **Allow Getting Everything:** This setting affects the `count` query parameter. See more at [Offset and Count Information](https://developer.rocket.chat/api/rest-api/offset-and-count-and-sort-info) + * **Yes**: Allows the usage of the number `0` as `count` parameter. Setting `count` to `0` returns **ALL** the data from that endpoint + * **No**: Setting the number `0` on `count`, returns `0` results. +* **Enable Direct Message History Endpoint**: This enables the `/api/v1/im.history.others` which allows the viewing of direct messages sent by other users that the caller is not part of. +* **Enable Shields**: Enables the usage of [Shields](https://developer.rocket.chat/api/rest-api/methods/miscellaneous/shield-svg) via API. Shields are available at `/api/v1/shield.svg` +* **Shield Types**: Types of shields to enable as a comma-separated list, choose from `online`, `channel` or `*` for all +* **Require authentication for users shields**: Let you set if user authentication is required for shields. +* **Enable CORS**: Use this setting to enable [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) for the REST API. Enabling CORS makes the workspace only accept API Calls from specific origins. + +{% hint style="info" %} +Setting this to false makes your workspace only accept requests from the same domain of the said workspace. E.g. Rocket.Chat workspace will only accept requests from the Rocket.Chat domain. +{% endhint %} + +* **CORS Origin**: Here, you can set what origins are allowed to make requests to your workspace. You can use `*` to accept from all origins. For multiple Origins, use a comma-separated list. E.g `https://domain1.com, https://domain2.com, https://domain3.com` +* **Use REST instead of WebSocket for Meteor calls**: Set if Rest is used instead of WebSocket for Meteor calls. +* **User Limit for Adding All Users to Channel**: This limits the number of users that can be added to a Channel at the same time. + +## Update + +* **Update Latest Available Version**: Updates to the specific versions available +* **Enable the Update Checker**: Checks automatically for new updates / important messages from the Rocket.Chat developers and receives notifications when available. The notification appears once per new version as a clickable banner and as a message from the Rocket.Cat bot, both visible only for administrators. + +## Notifications + +* **Always notify mobile**: Choose always to notify mobile devices regardless of presence status. +* **Max Room Members Before Disabling All Message Notifications**: Max number of members in the room when notifications for all messages get disabled. Users can still change per room setting to receive all notifications on an individual basis. (0 to disable) + +## Iframe Integration + +{% hint style="info" %} +To be able to use the microphone, camera, and geolocation in an iframe, be sure to allow [the iframe features policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Feature\_Policy/Using\_Feature\_Policy). Example + +```html + +``` +{% endhint %} + +* **Enable Send**: This setting defines if Rocket.Chat can send events to the parent window. +* **Send Target Origin**: Origin with protocol prefix, which commands are sent to e.g. `https://localhost`, or \* to allow sending to anywhere. +* **Enable Receive**: This setting defines if a parent window can send commands to Rocket.Chat. +* **Receive Origins**: Origins with protocol prefix, separated by commas, which are allowed to receive commands e.g. `https://localhost`, `http://localhost`, or \* to allow receiving from anywhere. + +## NPS + +See this section for NPS + +{% content-ref url="net-promoter-score-nps-survey.md" %} +[net-promoter-score-nps-survey.md](net-promoter-score-nps-survey.md) +{% endcontent-ref %} + +## Stream Cast + +* **Stream Cast Address**: IP or Host of your Rocket.Chat central Stream Cast. E.g. `192.168.1.1:3000` or `localhost:4000` + +## Timezone + +* **Default timezone for reporting**: Sets the default timezone that is used when showing dashboards or sending emails. +* **Custom timezone**: Let you set custom timezones + +## Translations + +* **Custom Translations**: With this setting, you can configure custom translations for your workspace. Should be a valid JSON where keys are languages containing a dictionary of keys and translations. Example: + +```json +{ + "en": { +  "Channels": "Rooms" + }, + "pt": { +  "Channels": "Salas" + } +} +``` + +## UTF8 + +* **UTF8 Names Validation**: RegExp used to validate usernames and channel names +* **UTF8 Channel Names Validation**: RegExp used to validate channel names + +{% hint style="info" %} +If you are having problems with names when creating channels (e.g., when using non-English characters), changing these values will probably fix it. For example, using `[\w_-]+` should allow any non-space character to be part of a name. +{% endhint %} diff --git a/use-rocket.chat/workspace-administration/settings/general/net-promoter-score-nps-survey.md b/use-rocket.chat/workspace-administration/settings/general/net-promoter-score-nps-survey.md new file mode 100644 index 0000000000..b0f291823a --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/general/net-promoter-score-nps-survey.md @@ -0,0 +1,51 @@ +# Net Promoter Score (NPS) survey + +NPS aims to assess user satisfaction and make the Rocket.Chat experience even more pleasant for users. + +By allowing it to run on your workspace, you are helping Rocket.Chat to: + +* Build a better product & better user experience +* Develop and prioritize features aligned with our users’ needs +* Get accurate user feedback on what needs fixing versus what needs improvements. + +## **What do the users see?** + +A banner is exhibited with the question: “**How likely are you to recommend us to a friend or colleague?**” and a scale from 0-10 to collect the answer.\ +\ +If the user clicks on a score, a modal is exhibited to collect text feedback. + +Both actions can be dismissed by the user. + +## How does NPS work? + +NPS surveys are triggered every 6 months via Rocket.Chat cloud. The workspace needs to be registered in Rocket.Chat cloud. Otherwise, the survey is never triggered. + +All users in the workspace receive the survey on the same day. + +Admins get notified one month before the NPS is rolled out via an in-app banner and alert via Rocket.Cat. That means admins can quickly turn off the NPS in case they prefer. + +## How is NPS data collected? + +All feedback received through the NPS is anonymous. It does not collect any personal data. + +The following data elements are transmitted via statistics collector: + +* Per-user who participates in the NPS + * An anonymous but unique hash value per user. The hash is created locally in form of a SHA256-hash of the combined user ID and NPS ID. + * The user ID is a local workspace value per user and is not transmitted outside of the workspace + * for the NPS campaign. + * The NPS ID is a string that identifies the NPS campaign to which the user is responding + * From the hash itself, the user ID and NPS ID cannot be reversely identified. + * The user role (e.g. guest, admin) + * The numerical NPS score of the user (a number between 1-10) + * An optional comment from the user (e.g. “I like the emojis a lot!”) +* A workspace ID, which is a unique string per workspace but does not indicate who uses it + +## How to turn off NPS survey? + +Our users have total freedom to disable the NPS survey. Simply follow the steps below to switch NPS off: + +* Within your Rocket.Chat workspace, navigate to **Administration > Workspace > Settings > General > NPS** +* Uncheck “**Enable NPS Survey**” + +Once the setting is turned off, the NPS survey stays off indefinitely. diff --git a/use-rocket.chat/workspace-administration/settings/irc-federation.md b/use-rocket.chat/workspace-administration/settings/irc-federation.md new file mode 100644 index 0000000000..257b05406e --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/irc-federation.md @@ -0,0 +1,30 @@ +--- +description: Connect to other IRC servers +--- + +# IRC Federation + +{% hint style="warning" %} +IRC Federation is in beta. Use on a production system is not recommended at this time. +{% endhint %} + +IRC Federation allows your server to connect to other IRC servers. + +Internet Relay Chat (IRC) is a text-based group communication tool. Users join uniquely named channels, or rooms, for open discussion. IRC also supports private messages between individual users and file-sharing capabilities. This package integrates these layers of functionality with Rocket.Chat. + +After configuring, you are able to communicate directly from your Rocket.Chat to any external IRC server. + +To access this setting, go to **Administration** > **Workspace** > **Settings** > **IRC Federation**. + +* **Enable**: When enabled, provides settings for IRC Federation integration. +* **Protocol**: This lets you set the protocol your IRC server uses. example `RFC2813`. +* **Host**: The host on which your IRC is running on, for example `irc.rocket.chat` +* **Port**: The port to bind to on the IRC host server. +* **Name**: What to name your IRC server as. +* **Description**: Description of your IRC server. +* **Local Password**: Set the local password if existing. +* **Peer Password**: Lets you specify the peer password. + +{% hint style="info" %} +After configuring, hit **Save Changes** and **Restart** your server. +{% endhint %} diff --git a/use-rocket.chat/workspace-administration/settings/irc.md b/use-rocket.chat/workspace-administration/settings/irc.md new file mode 100644 index 0000000000..e901a6dea2 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/irc.md @@ -0,0 +1,3 @@ +# IRC + +Internet Relay Chat (IRC) is a text-based group communication tool. Users join uniquely named channels, or rooms, for open discussion. IRC also supports private messages between individual users and file-sharing capabilities. This package integrates these layers of functionality with Rocket.Chat. diff --git a/use-rocket.chat/workspace-administration/settings/ldap/README.md b/use-rocket.chat/workspace-administration/settings/ldap/README.md new file mode 100644 index 0000000000..b9bf46c86a --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/ldap/README.md @@ -0,0 +1,43 @@ +# LDAP + +**Lightweight Directory Access Protocol (LDAP)** lets anyone locate data about your server or company. Rocket.Chat lets you connect with your Active Directory application or Identity Management System through **LDAP**. You can leverage advanced settings such as background sync, roles mapping from groups, auto-logout, and advanced user data sync. + +To configure **LDAP** authentication, + +* Go to **Administration** > **Workspace** > **Settings** > **LDAP** +* Enable **LDAP**, and [add configurations](ldap-connection-setting.md) to connect with your **LDAP** server. + +[Rocket.Chat](http://rocket.chat) supports a variety of **LDAP** capabilities and associated identity management features. For example, you can import users from an active directory into your workspace. + +{% hint style="info" %} +The LDAP features supported by community and enterprise editions are detailed in [Identity Management](../../../../setup-and-administer-rocket.chat/advanced-workspace-management/identity-management-ee-vs-ce.md). +{% endhint %} + +## LDAP Actions + +These actions are found at the top of the LDAP settings screen. + +* **Test Connection**: This will use your provided values and test for a connection. It will test the authentication and encryption but not the syncing settings. +* **Test LDAP Search**: Searches and notify if a user is found as configured in the user search page. +* **Sync Now**: Syncs your LDAP data based on the Data Sync configurations. +* **LDAP Documentation**: This will redirect you to the [Rocket.Chat LDAP Documentation](./). + +{% hint style="info" %} +If you dont get a response alert for these actions, always check the logs **Administration > Workspace > View Logs** to confirm if they were succesful or there is an error. +{% endhint %} + +{% content-ref url="ldap-connection-setting.md" %} +[ldap-connection-setting.md](ldap-connection-setting.md) +{% endcontent-ref %} + +{% content-ref url="ldap-user-search.md" %} +[ldap-user-search.md](ldap-user-search.md) +{% endcontent-ref %} + +{% content-ref url="ldap-data-sync-settings.md" %} +[ldap-data-sync-settings.md](ldap-data-sync-settings.md) +{% endcontent-ref %} + +{% content-ref url="ldap-examples.md" %} +[ldap-examples.md](ldap-examples.md) +{% endcontent-ref %} diff --git a/use-rocket.chat/workspace-administration/settings/ldap/ldap-connection-setting.md b/use-rocket.chat/workspace-administration/settings/ldap/ldap-connection-setting.md new file mode 100644 index 0000000000..4ac42b0b20 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/ldap/ldap-connection-setting.md @@ -0,0 +1,32 @@ +# LDAP Connection Setting + +Set up **Authentication**, **Timeouts**, and **Encryption** for your LDAP connection. Go to the **Connection** tab of the **LDAP** settings and set the following parameters: + +* **Enable**: Turns LDAP Authentication ON or OFF. +* **Server Type**: Allows you to select the type of server you are connecting to. +* **Host**: The LDAP connection host or domain, e.g. `ldap.example.com` or `10.0.0.30.` +* **Port**: The LDAP connection Port, usually `389` or `636.` +* **Reconnect**: Enable to try reconnecting automatically when the connection is interrupted for some reason while executing operations. +* **Login Fallback**: Enable to allow regular password users to log in on Rocket.Chat. It will also let LDAP users continue using Rocket.Chat if the LDAP server is down. + +## Authentication + +* **Enable**: Enable or disables authentication to skip binding the user DN and password. +* **User DN**: The administrative account login details or LDAP user with access to the active directory. This user can perform user lookups to authenticate other users when they sign in. This is typically a service account explicitly created for third-party integrations. Use a fully qualified name, such as `cn=Administrator,cn=Users,dc=Example,dc=com.` **DN** means **Distinguished Name**. +* **Password**: The password for the **User DN**. + +## Encryption + +* **Encryption**: The encryption method used to secure communications to the LDAP server. Examples include **No encryption**, **SSL/LDAPS** (encrypted from the start), and **StartTLS** (upgrade to encrypted communication once connected). +* **CA Cert**: The CA certificate to use in signing. +* **Reject Unauthorized**: Disable this option to allow certificates that can not be verified. Usually, Self Signed Certificates will require this option disabled to work. + +## Timeouts + +* **Timeout (ms)**: Waiting time in milliseconds after a search is initiated before returning an error. +* **Connection Timeout (ms)**: Maximum time in milliseconds before connection timeout. +* **Idle Timeout (ms)**: Waiting time in milliseconds after the latest LDAP operation until closing the connection. Each operation opens a new connection. + +{% hint style="success" %} +After completing the settings, be sure to **Save changes.** +{% endhint %} diff --git a/use-rocket.chat/workspace-administration/settings/ldap/ldap-data-sync-settings.md b/use-rocket.chat/workspace-administration/settings/ldap/ldap-data-sync-settings.md new file mode 100644 index 0000000000..75c7f40876 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/ldap/ldap-data-sync-settings.md @@ -0,0 +1,24 @@ +# LDAP Data Sync Settings + +With LDAP, you can sync your data. Here are some basic data sync settings in Rocket.Chat. + +* **Unique Identifier Field**: The field that will link the LDAP user and the Rocket.Chat user. You can include multiple values separated by a comma to get the value from the LDAP record. +* **Merge Existing Users**: Whether or not to merge existing users. When importing a user from LDAP and a user with the same username already exists, the new user data (including info and password) will merge into the existing data. +* **Update User Data on Login**: Enable to update user data on login. +* **Default Domain**: If provided, the default domain generates a unique email for users whose emails were not imported from LDAP. The mounting of the email will be `username@default domain` or `unique id@default domain`. + +## Avatar + +* **Sync User Avatar**: Enable syncing the user's avatar. +* **User Avatar Field**: The field used as an avatar for users. Leave blank to use `thumbnailPhoto` first and `jpegPhoto` as a fallback. + +## Mapping + +* **Username Field**: Usually, the `sAMAccountName` is used as a username for new users. Leave empty to let the user pick their Rocket.Chat username. You can use template tags too, for example: + +``` +#{givenName}.#{sn} +``` + +* **Email Field**: The LDAP field binds the user's email. +* **Name Field**: LDAP name filed for binding. diff --git a/use-rocket.chat/workspace-administration/settings/ldap/ldap-enterprise-settings.md b/use-rocket.chat/workspace-administration/settings/ldap/ldap-enterprise-settings.md new file mode 100644 index 0000000000..d99d6bd89a --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/ldap/ldap-enterprise-settings.md @@ -0,0 +1,72 @@ +# LDAP Enterprise Settings + +## Advanced Sync + +* **Sync User Active State**: Determine if users should be enabled or disabled on Rocket.Chat based on the LDAP status. The '`pwdAccountLockedTime`' attribute will be used to determine if the user is disabled. This setting is not yet compatible with all LDAP Servers, so if you don't use the '`pwdAccountLockedTime`' attribute, you may want to disable it completely. +* **Attributes to Query**: Specify which attributes should be returned on LDAP queries, separating them with commas. Defaults to everything. `*` represents all regular attributes and `+` represents all operational attributes. Make sure to include every attribute that is used by every Rocket.Chat sync option. + +## Auto Logout Deactivated Users + +* **Enable Auto Logout**: Set true to enable auto-logout. +* **Auto Logout Interval**: Allows you to set the interval for auto-logout. + +## Background Sync + +* **Background Sync**: Enable periodic background sync. +* **Background Sync interval**: The interval between synchronizations, using the [Cron Text](https://bunkat.github.io/later/parsers.html#text) format. +* **Background Sync Import New Users**: Will import all users (based on your filter criteria) that exist in LDAP and do not exist in Rocket.Chat. +* **Background Sync Update Existing Users**: This will sync the avatar, fields, username, etc (based on your configuration) of all users already imported from LDAP on every **Sync Interval**. +* **Avatar Background Sync**: Enable a separate background process to sync user avatars. +* **Avatar Background Sync Interval**: The interval between avatar sync, using the [Cron Text](https://bunkat.github.io/later/parsers.html#text) format. + +## Sync Channels + +* **Auto Sync LDAP Groups to Channels**: Enable this feature to automatically add users to a channel based on their LDAP group. +* **Channel Admin**: When the above setting causes a channel to be created automatically during user sync, this setting will determine what user will become the channel's admin. +* **User Group filter**: The LDAP search filter checks if a user is in a group. If the search returns any results, the user is considered to be in the group. When performing the search, the following strings, if present in the filter, will be substituted with data from the user and group whose membership status is being checked: + * `#{username}` - Replaced with the username of the user in RocketChat + * `#{groupName}` - Replaced with the name of the group in LDAP + * `#{userdn}` - Replaced with the LDAP Distinguished Name of the user +* **LDAP Group BaseDN**: The LDAP group base DN +* **LDAP Group Channel Map**: The map of LDAP groups to Rocket.Chat channels in JSON format. For example, the following objectives will add any user in the LDAP group "employee" to the general channel on Rocket.Chat. + +```json +{ + "employee": "general" +} +``` + +* **Auto Remove Users from Channels**: Enabling this will remove any users in a channel that does not have the corresponding LDAP group! This will happen in every login and background sync, so removing a group on LDAP will not instantly remove access to channels on Rocket.Chat. + +## Sync Custom Fields + +* **Sync Custom Fields**: Enable to activate custom field sync +* **Custom Fields Mapping**: A map of the custom field to sync + +## Sync Roles + +* **Sync LDAP Groups**: Enable this setting to activate role mapping from user groups on the community edition of Rocket.Chat. +* **Auto Remove User Roles**: Enable this setting to automatically remove roles from LDAP users that don't have the corresponding group. This will only remove roles automatically that are set under the user data group map below. +* **User Group Filter**: The LDAP search filter checks if a user is in a group. If the search returns any results, the user is considered to be in the group. When performing the search, the following strings, if present in the filter, will be substituted with data from the user and group whose membership status is being checked: + * `#{username}` - Replaced with the username of the user in RocketChat + * `#{groupName}` - Replaced with the name of the group in LDAP + * `#{userdn}` - Replaced with the LDAP Distinguished Name of the user +* **LDAP Group BaseDN**: The LDAP BaseDN is used to determine if users are in a group. +* **User Data Group Map**: The mapping of LDAP groups to Rocket.Chat roles in JSON format. For example, the following object will map the rocket-admin LDAP group to Rocket.Chat's "admin" role and the "tech-support" group to the "support" role. It's also possible to map one group to multiple roles ("manager" group to "leader" and "moderator" roles). + +``` +{ + "rocket-admin": "admin", + "tech-support": "support", + "manager": ["leader", "moderator"] +} +``` + +## Sync Teams + +* **Enable team mapping from LDAP to Rocket.Chat**: Enables team mapping from LDAP to Rocket.Chat +* **Team mapping from LDAP to Rocket.Chat**: Team mapping from LDAP to Rocket.Chat +* **Validate mapping for each login**: Determine if users' teams should be updated every time they log in to Rocket.Chat. The team will be loaded only on their first login if this is turned off. +* **LDAP Teams BaseDN**: The LDAP BaseDN used to look up user teams. +* **LDAP Team Name Attribute**: The LDAP attribute that Rocket.Chat should use to load the team's name. You can specify more than one attribute name by separating them with a comma. +* **LDAP query to get user groups**: LDAP query to get the LDAP groups that the user is part of diff --git a/guides/administration/administration/settings/ldap/ldap-examples.md b/use-rocket.chat/workspace-administration/settings/ldap/ldap-examples.md similarity index 75% rename from guides/administration/administration/settings/ldap/ldap-examples.md rename to use-rocket.chat/workspace-administration/settings/ldap/ldap-examples.md index 14d4b3f919..ec88226cf0 100644 --- a/guides/administration/administration/settings/ldap/ldap-examples.md +++ b/use-rocket.chat/workspace-administration/settings/ldap/ldap-examples.md @@ -1,11 +1,15 @@ # LDAP Examples +Here are some examples of the LDAP settings and their values. The examples will be based on these environments: + * `Host = ldap.domain.com` * `Group = CN=ROCKET_ACCESS,CN=Users,DC=domain,DC=com (Access Control Group)` * `Proxy User = rocket.service@domain.com or CN=rocket service,CN=Users,DC=domain,DC=com (DN or userPrincipalName)` * `Proxy User password = urpass (Proxy Users password)` -For now \(until we add more input fields to LDAP\) set it like this: \(This is based on the above assumptions, replace with your environment\) +{% hint style="warning" %} +Replace the values above with your respective environment. +{% endhint %} ## Log on with a username @@ -21,7 +25,7 @@ If you need to auth users from subgroups in LDAP use this filter: `LDAP_Bind_search = {"filter": "(&(objectCategory=person)(objectclass=user)(memberOf:1.2.840.113556.1.4.1941:=CN=ROCKET_ACCESS,CN=Users,DC=domain,DC=com)(sAMAccountName=#{username}))", "scope": "sub", "userDN": "rocket.service@domain.com", "password": "urpass"}` -## Log on with email address +## Log on with an email address * `LDAP_Enable = True` * `LDAP_Dn = dc=domain,dc=com` @@ -31,7 +35,7 @@ If you need to auth users from subgroups in LDAP use this filter: `{"filter": "(&(objectCategory=person)(objectclass=user)(memberOf=CN=ROCKET_ACCESS,CN=Users,DC=domain,DC=com)(mail=#{username}))", "scope": "sub", "userDN": "rocket.service@domain.com", "password": "urpass"}` -## Log on with either email address or username +## Log on with either an email address or username * `LDAP_Enable = True` * `LDAP_Dn = dc=domain,dc=com` @@ -43,13 +47,13 @@ If you need to auth users from subgroups in LDAP use this filter: ## Log in -When you enable LDAP the login form will login users via LDAP instead the internal account system. +When you enable LDAP, the login form will log in users via LDAP instead the internal account system. ### LDAPS - SSL Connection -Use stunnel to create a secure connection to the LDAP server. Create a new configuration file /etc/stunnel/ldaps.conf with following content: +Use stunnel to create a secure connection to the LDAP server. Create a new configuration file _/etc/stunnel/ldaps.conf_ with the following content: -```text +``` options = NO_SSLv2 [ldaps] @@ -58,15 +62,14 @@ accept = 389 connect = your_ldap_server.com:636 ``` -To enable Stunnel automatic startup change the `ENABLED` variable in /etc/default/stunnel4 to `1`: +To enable Stunnel automatic startup, change the `ENABLED` variable in _/etc/default/stunnel4_ to `1`: ```bash # Change to one to enable stunnel automatic startup ENABLED=1 ``` -Finally on the Rocket.Chat server under /admin/LDAP set +Finally, on the Rocket.Chat server under _/admin/LDAP_ set these values: * `LDAP_Url = localhost` * `LDAP_Port = 389` - diff --git a/use-rocket.chat/workspace-administration/settings/ldap/ldap-user-search.md b/use-rocket.chat/workspace-administration/settings/ldap/ldap-user-search.md new file mode 100644 index 0000000000..9b54f8fa01 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/ldap/ldap-user-search.md @@ -0,0 +1,44 @@ +# LDAP User Search + +Perform an **LDAP** user search. Go to the **User Search** tab and configure these settings: + +## **Find user after login** + +When enabled, a search to find the user's DN is performed after binding to ensure it successfully prevents login with empty passwords when allowed by the AD configuration. + +## Search Filter + +* **Base DN**: The fully qualified Distinguished Name (DN) of an LDAP subtree you want to search for users and groups. There is no limit to the number of groups you can add, but they must be defined in the same domain base as the users who belong to them. Example: `ou=Users+ou=Projects,dc=Example,dc=com`. + +{% hint style="info" %} +If you specify restricted user groups, only users that belong to those groups will be in scope. We recommend setting the top level of your LDAP directory tree as your domain base and using a search filter to control access. +{% endhint %} + +* **Filter**: If specified, only users that match this filter will be allowed to log in. If no filter is selected, all users within the scope of the defined domain base can sign in. + + E.g., for Active Directory + + ``` + memberOf=cn=ROCKET_CHAT,ou=General Groups + ``` + + E.g., for OpenLDAP (extensible match search) + + ``` + ou:dn:=ROCKET_CHAT + ``` +* **Scope**: The search scope. +* **Search Field**: The LDAP attribute that identifies the LDAP user who attempts authentication. This field should be `sAMAccountName` for most Active Directory installations, but it may be uid for other LDAP solutions, such as OpenLDAP. You can use mail to identify users by email or whatever attribute you want. You can use multiple values separated by a comma to allow users to log in using multiple identifiers like username or email. +* **Search Page Size**: The maximum number of entries each result page will return to be processed. +* **Search Size Limit**: The maximum number of entries to return. It must be greater than the Search Size. + +## Group Filter + +The group filter is for OpenLDAP as it doesnt have a _memberOf_ filter. + +* **Enable LDAP User Group Filter**: Enable to restrict users access in a LDAP group. It is useful for allowing OpenLDAP servers without a _memberOf_ filter to limit group access. +* **Group ObjectClass**: The _**objectclass** _ that identifies the groups. E.g. `OpenLDAP:groupOfUniqueNames`. +* **Group ID Attribute**: E.g. `*OpenLDAP:*cn`. +* **Group Member Attribute**: E.g. `*OpenLDAP:*uniqueMember`. +* **Group Member Format**: E.g. `*OpenLDAP:*uid=#{username},ou=users,o=Company,c=com`. +* **Group name**: Group name to which the user should belong. diff --git a/use-rocket.chat/workspace-administration/settings/livestream-and-broadcasting.md b/use-rocket.chat/workspace-administration/settings/livestream-and-broadcasting.md new file mode 100644 index 0000000000..fd308b1972 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/livestream-and-broadcasting.md @@ -0,0 +1,35 @@ +--- +description: Integration between Rocket.Chat and YouTube Live +--- + +# Livestream & Broadcasting + +{% hint style="danger" %} +_The Livestream & Broadcasting_ _integration has been deprecated, may not work as expected, and will not receive updates._ +{% endhint %} + +The integration between Rocket.Chat and YouTube Live allows channel owners to broadcast their live camera feed to Livestream inside a channel. + +To access the broadcasting settings, + +* Navigate to **Administration** > **Workspace** > **Settings** > **Livestream & Broadcasting**. + +{% hint style="info" %} +This feature is currently in beta! Kindly report any bugs [here](https://github.com/RocketChat/Rocket.Chat/issues). +{% endhint %} + +## Configuration + +The integration between Rocket and YouTube Live allows channel owners to broadcast their live camera feed to Livestream inside a channel. You can only use the Broadcasting feature with the Livestream feature. + +Users can not create live broadcasts using their webcams if you switch the **Broadcasting Enable** to **false** in your broadcast settings, but they can still link to a live stream from YouTube. + +To use YouTube Live integration, the workspace administrator needs a [Google Account](https://www.google.com/accounts/NewAccount) to access the [Google API Console](https://console.cloud.google.com/). With this, the administrator has access to a valid Client ID, API Key, and Secret, which is essential for broadcasting. + +{% hint style="info" %} +To learn more about Youtube live integration, please read [YouTube Data API Overview](https://developers.google.com/youtube/v3/getting-started). +{% endhint %} + +## Livestream + +After a correct set-up, the Livestream tab allows you to Broadcast your camera when editing the source URL. While we prepare the broadcast and live stream for your session, opening the popout can take a little while. A blinking icon and "**Preparing**" status displays in the control bar. After that initial phase, the broadcast will be ready and available to start with your click. diff --git a/use-rocket.chat/workspace-administration/settings/logs.md b/use-rocket.chat/workspace-administration/settings/logs.md new file mode 100644 index 0000000000..8210599f79 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/logs.md @@ -0,0 +1,29 @@ +--- +description: Configure server logs +--- + +# Logs + +Here you have the interface to configure how server logs are received. + +Logs are a very useful way to monitor workspace activities in detail, and they can start as a very helpful point for debugging in case of any failures or errors. + +To access this section, navigate to **Administration** > **Workspace** > **Settings** > **Logs**. + +* **Log Level**: A dropdown to select the level of logs to receive +* **Log View Limit**: The limit of logs to view +* **Trace method calls**: When enabled, it gives the ability to trace every method call +* **Trace method filter**: The text here is evaluated as RegExp (`new RegExp('text')`). Keep it empty to show a trace of every call. +* **Trace subscription calls**: If enabled, every subscription call will be traced. +* **Trace subscription filter**: The text here is evaluated as RegExp (`new RegExp('text')`). Keep it empty to show a trace of every call. +* **Log Exceptions to Channel**: A channel that receives all captured exceptions. Leave empty to ignore exceptions. + +## Prometheus + +[Prometheus](https://prometheus.io) is an open-source monitoring solution. + +* **Enable**: When enabled, Prometheus monitoring is activated. +* **Port**; The port to listen to. +* **Reset Interval (ms)**: Takes in time in milliseconds when the connection should be reset. +* **Collect NodeJS GC**: When enabled, NodeJS garbage collector is activated. +* **API: Track User Agent**: If set to true, API calls user agent are tracked. diff --git a/use-rocket.chat/workspace-administration/settings/message.md b/use-rocket.chat/workspace-administration/settings/message.md new file mode 100644 index 0000000000..457af1025c --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/message.md @@ -0,0 +1,107 @@ +--- +description: Configure message settings +--- + +# Message + +To access this menu, navigate to **Administration** > **Workspace** > **Settings** > **Message**. + +{% hint style="info" %} +Remember to hit **Save Changes** in order to apply any changes made. +{% endhint %} + +## Basic Settings + +* **Allow Message Pinning**: When enabled, allow messages to be pinned to any channel. +* **Allow Message Starring**: When enabled, users are able to star messages. +* **Video Recorder Enabled**: Requires `video/webm` files to be an accepted media type within [File Upload](file-upload/) settings. +* **Allow message Editing**: When enabled, users have the ability to edit messages. +* **Block Message Editing After (n) Minutes**: Takes in time in minutes in which users are allowed to edit messages. After that they are unable. Enter 0 to disable blocking. +* **Allow message-deleting**: Toggle on to allow users to be able to delete messages. +* **Block Message Deleting After (n) Minutes**: This lets you set a duration in minutes in which users are allowed to delete messages. +* **Allow Unrecognized Slash Commands**: When enabled, unknown Slash Commands are allowed. +* **Allow user direct messages to yourself**: When enabled, users are able to send direct messages to themselves. +* **Always Search Using RegExp**: When enabled, all searches use RegExp. We recommend setting this `True` if your language is not supported on [MongoDB text search](https://docs.mongodb.org/manual/reference/text-search-languages/#text-search-languages). +* **Show Deleted Status**: When enabled, shows `deleted` when a message is deleted. +* **Allow Message bad words filtering**: Turn on to allow filtering of blacklisted words in messages. + * **Add Bad Words to the Blacklist**: Takes in a list of comma-separated words that are to be filtered from the workspace. + * **Remove words from the Blacklist**: Takes in any word already on the Blacklist and removes it. +* **Keep Per Message Editing History**: Whether or not to keep message editing history. +* **Maximum Channel Size for ALL Message**: This lets you set the maximum size of a channel. +* **Maximum Allowed Characters Per Message**: This lets you specify the maximum number of characters a message can contain. +* **Allow converting long messages to attachments**: When enabled, long messages can be converted to attachments. +* **Grouping Period (in seconds)**: Takes in time in seconds in which messages are grouped with the previous message if both are from the same user and the elapsed time was less than the informed time in seconds. +* **Embed Link Previews**: Turn on to enable embedded link previews when links are posted in a chat. + * **Embed Request User Agent**: This lets you set a request user agent. + * **Embed Cache Expiration Days**: Set how long in days where embed cache expires. + * **Embed Ignored Hosts**: Comma-separated list of hosts or CIDR addresses, eg. `localhost`, `127.0.0.1`, `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16` + * **Safe Ports**: Comma-separated list of ports allowed for previewing. +* **Time Format**: Specify the format of time on your server. See also: [Moment.js](http://momentjs.com/docs/#/displaying/format/) +* **Date Format**: Set the format of the date in your server. +* **Time and Date Format**: This lets you set the time and date format. +* **Maximum Number of Chained Quotes**: This lets you set the maximum number of Chained quotes. +* **Hide System Messages**: Select from a dropdown which system messages are to be hidden. +* **DirectMesssage\_maxUsers**: Specifies the maximum uses for direct messages. +* **Message Erasure Type**: Select from the drop-down what to do with messages of users who removed their accounts. +* **Code highlighting languages list**: Comma-separated list of languages (all supported languages at [https://github.com/highlightjs/highlight.js/tree/9.18.5#supported-languages](https://github.com/highlightjs/highlight.js/tree/9.18.5#supported-languages) ) that are used to highlight code blocks. + +## Hex Color Preview + +**Enabled**: Set true to allow preview for hex colors. + +## Message Attachments + +* **Enable image thumbnails to save bandwidth**: When set to true, thumbnails are served instead of the original image to reduce bandwidth usage. Images at original resolution can be downloaded using the icon next to the attachment's name. + * **Thumbnail's max width (in pixels)**: Takes in the thumbnail's max width in pixels + * **Thumbnail's max height (in pixels)**: Takes in the thumbnail's max height in pixels +* **Remove EXIF metadata from supported files**: Enable to strip out EXIF metadata from image files (jpeg, tiff, etc.). This setting is not retroactive, so files uploaded while disabled will have EXIF data + +## Audio Message + +* **Audio Recorder Enabled**: When set to true, users are able to record audio. +* **Audio Message Bit Rate**: Lets you set the bit rate for audio messages. + +## Read Receipts + +![](<../../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (27).jpg>) + +* **Show Read Receipts**: Whether to show read receipts. +* **Detailed Read Receipts**: This shows each user's read receipts. + +{% hint style="info" %} +Delivered messages have a checkmark on the right. + +The checkmark turns blue when the message is read. +{% endhint %} + +

Read receipt indicator

+ +With read receipt enabled, the [message info action](../../user-guides/messages/message-actions.md#message-info) shows a list of users that have read the message. + +## Auto-Translate + +* **Enable Auto-Translate**: Enabling auto-translation allows users with `auto-translate` permission to have all messages automatically translated into their selected language. Fees may apply. +* **Service Provider**: A drop-down to select the translation service provider. + +### DeepL + +* **API Key**: Takes in DeepL API key. + +### Google + +* **API Key**: Takes in the Google API key. + +### Microsoft + +* **Ocp-Apim-Subscription-Key**: Takes in your Microsoft Ocp-Apim-Subscription-Key. + +## Google Maps + +* **Enable Mapview**: Enabling map view displays a location share button on the right of the chat input field. +* **Google Static Maps API Key**: The Google Static Maps API Key. This can be obtained from the Google Developers Console for free. + +## Katex + +* **Katex Enabled**: When enabled, allows the use of [katex](http://khan.github.io/KaTeX/) for math typesetting in messages. +* **Allow Parenthesis Syntax**: When enabled, you can use \[katex block] and (inline katex) syntaxes. +* **Allow Dollar Syntax**: When enabled, allows using `$$katex block$$` and `$inline katex$` syntaxes. diff --git a/use-rocket.chat/workspace-administration/settings/meta.md b/use-rocket.chat/workspace-administration/settings/meta.md new file mode 100644 index 0000000000..100defceab --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/meta.md @@ -0,0 +1,24 @@ +--- +description: Set custom Meta properties +--- + +# Meta + +With the Meta configuration, you can set custom meta properties for your workspace. + +Meta elements are tags used in HTML and XHTML documents to provide structured metadata about a Web page. They are very important for SEO, among other uses. + +To access this setting: + +* Navigate to **Administration** > **Workspace** > **Settings** > **Meta**. +* **Language**: This lets you set the meta language. eg `en` +* **Facebook App Id**: When provided, allows the Facebook scraper to associate the Open Graph entity with your server. +* **Robots**: Specify to tell search engines what to and what not to index or follow +* **Google Site Verification**: Input metatag to verify you own the server/site. +* **MSValidate.01**: A tag that is to be added to your site (header) to verify your site with the Bing webmaster tool. +* **Custom Meta Tags**: Any custom meta tags you wish to include. Example + +``` + + +``` diff --git a/use-rocket.chat/workspace-administration/settings/mobile.md b/use-rocket.chat/workspace-administration/settings/mobile.md new file mode 100644 index 0000000000..c4d73eac1b --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/mobile.md @@ -0,0 +1,17 @@ +--- +description: Define behaviors for connecting to your workspace from mobile devices +--- + +# Mobile + +These settings are applied to the users using Mobile App on your workspace. This gives you the flexibility to define some behaviors when connecting to your workspace from a mobile device. + +To access this setting: + +* Navigate to **Administration** > **Workspace** > **Settings** > **Mobile**. +* **Allow Save Media to Gallery**: When enabled, files shared in chats are saved on the user's device gallery. + +## Screen Lock + +* **Force screen lock**: When enabled, your users are required to use a **PIN, BIOMETRIC,** or **FACE ID** to unlock the app. +* **Force screen lock after:** The time in seconds to request the password again after the expiry of the latest section. diff --git a/use-rocket.chat/workspace-administration/settings/oauth/README.md b/use-rocket.chat/workspace-administration/settings/oauth/README.md new file mode 100644 index 0000000000..5634ed9c81 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/oauth/README.md @@ -0,0 +1,26 @@ +# OAuth + +Beyond the basic username/password authentication, Rocket.Chat supports several other authentication methods. These OAuth methods mostly require a **client ID** and a **secret**. + +**To set up your desired OAuth method**, + +* Navigate to **Administration > Workspace > Settings> OAuth.** + +You can view a list of some OAuth methods that are supported by Rocket.Chat, including Google, Github, LinkedIn, etc. + +## Add Custom OAuth + +To add a **custom OAuth**, + +* Click **Add custom OAuth.** +* Give a unique name for your custom OAuth. +* Click **Add.** +* When configuring your OAuth Provider, you must include a Callback URL. Use + + ``` + https://yourcompany.rocket.chat/_oauth/customoauth + ``` + +## Refresh OAuth Services + +To update the options shown on your workspace login page based on your saved settings, click **Refresh OAuth Services.** diff --git a/use-rocket.chat/workspace-administration/settings/oauth/facebook-oauth-setup.md b/use-rocket.chat/workspace-administration/settings/oauth/facebook-oauth-setup.md new file mode 100644 index 0000000000..510a816743 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/oauth/facebook-oauth-setup.md @@ -0,0 +1,17 @@ +# Facebook OAuth Setup + +Facebook OAuth requires you to fill in a Facebook `App Id` and `Secret.` + +To enable **Facebook OAuth** on your workspace, + +* Login to your Facebook [Developer account](http://developers.facebook.com) and navigate to **My Apps.** +* Click on **Create App.** Select the app type from the list of options and **Next.** +* Fill in the required details, then click **Create App.** +* A dashboard with various app products is displayed. Click **Set Up** under **Facebook Login.** +* Select **Web** as the platform for the app. +* Go to **Facebook Login** > **Settings** page. Fill in the **Valid OAuth Redirect URIs** field with your workspace **callback URL**. Click **Save Changes**. +* To view the OAuth credentials in your app, select **Settings** > **Basic**. Copy your **App ID** and **App Secret**. +* Switch the **App mode** from **Development** to **Live.** +* Navigate to OAuth settings (**Administration > Workspace > Settings> OAuth)** in your workspace. +* In the **Facebook** tab, fill in the OAuth credentials you copied earlier and toggle on **Facebook Login**. +* Click **Save Changes**. A **Sign in with Facebook** button appears on your workspace's login page. Users can now **sign in with Facebook** by clicking that button. diff --git a/use-rocket.chat/workspace-administration/settings/oauth/github-oauth-setup.md b/use-rocket.chat/workspace-administration/settings/oauth/github-oauth-setup.md new file mode 100644 index 0000000000..cfefe611f5 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/oauth/github-oauth-setup.md @@ -0,0 +1,19 @@ +# GitHub OAuth Setup + +GitHub OAuth requires you to fill in the GitHub **Client ID** and **Secret**`.` + +To enable **GitHub OAuth** on your workspace, + +* Go to your [GitHub Developers Settings](https://github.com/settings/developers). +* Navigate to **OAuth Apps** and click **New OAuth App**. +* Fill in the required information, including the **callback URL**, and click **Register application.** + +{% hint style="warning" %} +If your callback URL is wrong, GitHub does not display any error. Instead of logging in, you receive an error message saying, "No matching login attempt found." +{% endhint %} + +* Your **Client Id** and a button to **Generate a new client secret** are now displayed. Click the button to generate a new client secret for your OAuth credentials. +* Copy the **Application ID** and **Secret.** +* Navigate to **OAuth** settings (**Administration > Workspace > Settings> OAuth)** in your workspace. +* In the **GitHub Enterprise** tab, fill in the **OAuth credentials** you copied earlier and toggle on **OAuth Enabled**. +* Click **Save Changes**. A **Sign in with GitHub** button appears on your workspace's login page. Users can now **sign in with GitHub** by clicking that button. diff --git a/use-rocket.chat/workspace-administration/settings/oauth/gitlab-oauth-setup.md b/use-rocket.chat/workspace-administration/settings/oauth/gitlab-oauth-setup.md new file mode 100644 index 0000000000..edc2407833 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/oauth/gitlab-oauth-setup.md @@ -0,0 +1,13 @@ +# GitLab OAuth Setup + +Google OAuth requires you to fill in the Application **ID** and **Secret of** your GitLab OAuth app. + +To enable **GitLab OAuth** on your workspace, + +* Go to [GitLab Applications](https://gitlab.com/-/profile/applications). +* Fill in the Application **Name**, **redirect URI,** and **Scope**. Click **Save application.** +* After the application is created successfully, the OAuth credentials are displayed. +* Copy the **Application ID** and **Secret.** +* Navigate to **OAuth** settings (**Administration > Workspace > Settings> OAuth)** in your workspace. +* In the GitLab tab, fill in the **OAuth credentials** you copied earlier and toggle on **OAuth Enabled**. +* Click **Save Changes**. A **Sign in with GitLab** button appears on your workspace's login page. Users can now **sign in with GitLab** by clicking that button. diff --git a/use-rocket.chat/workspace-administration/settings/oauth/google-oauth-setup.md b/use-rocket.chat/workspace-administration/settings/oauth/google-oauth-setup.md new file mode 100644 index 0000000000..243c20df76 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/oauth/google-oauth-setup.md @@ -0,0 +1,22 @@ +# Google OAuth Setup + +Google OAuth requires you to fill in the `Google Id` and `Google Secret` of your Google OAuth app. + +To enable **Google OAuth** on your workspace, + +* Go to the [Google Developer Console](https://console.developers.google.com), and click **Create Project.** +* Fill in the **Project name**, **Location,** and **Organization**, then click **Create**. +* Navigate to **APIs and services**, then select **OAuth consent screen.** +* On the OAuth consent screen, set the required fields, fill in the **App name,** then click **Save and Continue.** +* After creating the new app, proceed to the **Dashboard** where the app info is displayed. +* Select the **Credentials** tab and click the **CREATE CREDENTIALS** to create the **OAuth client ID**. From the dropdown, select **OAuth client ID.** +* Set the application type to **Web Application**, then click **CREATE**. + +{% hint style="info" %} +The **Web Application** setting offers the **callback URL** option, which is necessary for configuration. +{% endhint %} + +* Your OAuth Client is created, and your Client ID and Secret are displayed in a modal box. Copy or download these credentials. +* Navigate to **OAuth** settings (**Administration > Workspace > Settings> OAuth)** in your workspace. +* In the Google tab, fill in the OAuth credentials you copied earlier and toggle on **Google Login**. +* Click **Save Changes**. A **Sign in with Google** button appears on your workspace's login page. Users can now **sign in with google** by clicking that button. diff --git a/use-rocket.chat/workspace-administration/settings/oauth/linkedin-oauth-setup.md b/use-rocket.chat/workspace-administration/settings/oauth/linkedin-oauth-setup.md new file mode 100644 index 0000000000..a313c744c1 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/oauth/linkedin-oauth-setup.md @@ -0,0 +1,14 @@ +# LinkedIn OAuth Setup + +LinkedIn OAuth requires you to fill in the LinkedIn **Client ID** and **Secret**`.` + +To enable **LinkedIn OAuth** on your workspace, + +* Go to [LinkedIn Developers Portal](https://developer.linkedin.com/). Click **Create app.** +* Fill in the required information, then hit **Create app**. +* In the **Auth** tab of the app, add the **Authorized redirect URL.** +* Copy the **LinkedIn Client ID** and **Secret.** +* Navigate to **OAuth** settings (**Administration > Workspace > Settings> OAuth)** in your workspace. +* In the **LinkedIn** tab, fill in the **OAuth credentials** you copied earlier and toggle on **LinkedIn Login**. +* Click **Save Changes**. A **Sign in with LinkedIn** button appears on your workspace's login page. Users can now **sign in with LinkedIn** by clicking that button. + diff --git a/use-rocket.chat/workspace-administration/settings/oauth/ms-office-365-oauth-setup.md b/use-rocket.chat/workspace-administration/settings/oauth/ms-office-365-oauth-setup.md new file mode 100644 index 0000000000..dcff513614 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/oauth/ms-office-365-oauth-setup.md @@ -0,0 +1,75 @@ +# MS Office 365 OAuth Setup + +This guide shows how you can set up OAuth integration between Microsoft accounts and Rocket.Chat. + +This is achieved with the use of [Azure Active Directory](https://azure.microsoft.com/en-us/services/active-directory/) which is an identity service by Microsoft that provides single sign-on and other authentication methods. + +Follow these steps to enable Office 365 OAuth on your Rocket.Chat instance. + +## Create Custom O365 OAuth + +To create a custom authentication method for your Rocket.Chat instance: + +* Navigate to **Administration** > **Workspace** > **Settings** > **OAuth** and click on **Custom OAuth** and set the new OAuth integration name + +![Create new custom OAuth](<../../../../../.gitbook/assets/Creating custom OAuth>) + +* After creating the new integration, you are given the `callback URL` followed by other fields to configure + +![365OAuth integration details page](<../../../../../.gitbook/assets/0365 OAuth RC details>) + +## Creating an Azure Active Directory App + +* Log in to your [Azure portal](https://portal.azure.com/) then navigate to the **Azure Active Directory** tab + +![Azure Portal](<../../../../../.gitbook/assets/Azure Portal>) + +* Create a new **App Registration** + +![Azure Active Directory new App Registration](<../../../../../.gitbook/assets/Azure Active Directory new App Registration>) + +* Fill in the name and other fields including the redirect URI provided by Rocket.Chat when [creating the new OAuth integration](ms-office-365-oauth-setup.md#create-custom-365-oauth) + +![Azure AD app details](<../../../../../.gitbook/assets/Azure AD App details>) + +After registering your new app, take note of `Application (client) ID` it will be needed to configure the integration later. + +* On your new app's page, navigate to **Certificates and Secret** tab to create a **New client secret** + +![AD create new app secret](<../../../../../.gitbook/assets/new clent secret>) + +* After creating, take note of the `client secret` immediately. It is only displayed once and is needed in configuring the integration back in Rocket.Chat + +![AD client secret](<../../../../../.gitbook/assets/Azure AD App secret page>) + +## Configuring O365 OAuth + +After creating the Azure Active Directory App with its secret, head over back to your Rocket.Chat O365 custom OAuth integration page and set the various fields + +* **Enable**: Set to true to enable this OAuth integration +* **URL**: `https://login.microsoftonline.com/consumers` +* **Token Path**: `/oauth2/v2.0/token` +* **Token Sent Via**: Payload +* **Identity Token Sent Via**: Header +* **Identity Path**: `/openid/userinfo` +* **Authorize Path**: `/oauth2/v2.0/authorize` +* **Scope**: openid +* **Param Name for access token**: `access_token` +* **Id**: `` +* **Secret**: `` + +Do the configurations and **Save changes** + +![OAuth 365 integration settings page](<../../../../../.gitbook/assets/OAuth 365 integration settings page>) + +* After saving, you will find the O365 Oauth button on the login and signup page. Clicking on them brings up a popup to authenticate your Microsoft account + +![O365 Button on login and sign in pages](<../../../../../.gitbook/assets/O365 Button on login and sign in pages>) + +* Simply sign in to your Office account to authenticate + +![Microsoft account sign in](<../../../../../.gitbook/assets/Microsoft account sign in>) + +* Accept the permission required to proceed + +![Microsoft login grant permision](<../../../../../.gitbook/assets/Microsoft login grant permision>) diff --git a/use-rocket.chat/workspace-administration/settings/oauth/nextcloud-oauth-setup.md b/use-rocket.chat/workspace-administration/settings/oauth/nextcloud-oauth-setup.md new file mode 100644 index 0000000000..294cde6571 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/oauth/nextcloud-oauth-setup.md @@ -0,0 +1,14 @@ +# NextCloud OAuth Setup + +NextCloud OAuth requires you to fill in the NextCloud **Client ID** and **Secret**`.` + +To enable **NextCloud OAuth** on your workspace, + +* Login to your Nextcloud server as admin +* Go to **Settings** > **Administration** > **Workspace** > **Security.** +* Locate the OAuth 2.0 clients section. +* Fill in the **client name** and the **redirect URL**. Click **Add.** +* Copy the **Client ID** and **Secret** from the new OAuth App. +* Navigate to **OAuth** settings (**Administration > Workspace > Settings> OAuth)** in your workspace. +* In the **NextCloud** tab, fill in the **OAuth credentials** you copied earlier and toggle on **OAuth Enabled.** +* Click **Save Changes**. A **Sign in with NextCloud** button appears on your workspace's login page. Users can now **sign in with NextCloud** by clicking that button. diff --git a/use-rocket.chat/workspace-administration/settings/oauth/other-oauth-setup.md b/use-rocket.chat/workspace-administration/settings/oauth/other-oauth-setup.md new file mode 100644 index 0000000000..c6f5cb1aef --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/oauth/other-oauth-setup.md @@ -0,0 +1,76 @@ +# Other OAuth Setup + +Here are some other OAuth methods supported by Rocket.Chat. + +## Apple OAuth + +Apple OAuth requires you to fill in **Accounts\_OAuth\_Apple\_id** and **Accounts\_OAuth\_Apple\_secretKey**. + +To enable **Apple OAuth** on your workspace, + +* Navigate to **OAuth** settings (**Administration > Workspace > Settings> OAuth)** in your workspace. +* In the **Apple** tab, toggle on **Sign In with Apple.** + +{% hint style="info" %} +If you want Apple login enabled only on mobile, you can leave all other fields empty. +{% endhint %} + +## Twitter OAuth + +Twitter OAuth requires you to fill in a Twitter **Client Id** and **Secret**. + +To enable **Apple OAuth** on your workspace, + +Go to the Twitter [Developer Portal](https://developer.twitter.com/en/portal/projects-and-apps). Navigate to the **Apps** page to create or view your existing apps. Copy the following credentials: + +* **Twitter Id**: The OAuth Id of your Twitter OAuth app +* **Twitter Secret**: Your Twitter OAuth app secret +* **Twitter Callback URL**: Set default to point to `/_oauth/twitter` + +## TokenPass OAuth + +Tokenpass OAuth requires you to have a **Tokenpass server URL**, **Id**, and **secret**. + +These can be gotten from the [Tokenpass developers portal](https://tokenpass.tokenly.com/auth/apps) by creating an application for OAuth integration. + +* **Tokenpass Login**: Enables Tokenpass login +* **Tokenpass Server URL**: Your server URL. Example `https://domain.com` (excluding trailing slash) +* **Tokenpass Id**: Tokenpass app Id +* **Tokenpass Secret**: Your Tokenpass app Id +* **Tokenpass Callback URL**: Set default to point to `/_oauth/tokenpassv` + +## Drupal OAuth + +Using Drupal OAuth requires you to provide a Drupal client ID and Secret. + +Drupal OAuth is made possible with the [OAuth2 Client](https://www.drupal.org/project/oauth2\_client) module. Follow [this guide](https://www.drupal.org/docs/contributed-modules/oauth2-client/oauth2-client-8x-3x) to create client credentials. + +* **Drupal Login Enabled**: This lets you enable Drupal OAuth for login +* **Drupal Server URL**: Your server URL. Example `https://domain.com` (excluding trailing slash) +* **Drupal OAuth2 Client ID**: The OAuth Id from the Drupal configuration +* **Drupal oAuth2 Client Secret**: Your Drupal OAuth secret +* **Drupal Callback URL**: Set default to point to `/_oauth/drupal` + +## Dolphin OAuth + +Setting up Dolphin OAuth requires a Dolphin connect URL, Id, and secret + +Visit this [configuration page](https://github.com/boonex/dolphin.pro/wiki/Dolphin-Connect-Setup-for-ChatPlus) to see how to get these values: + +* **URL**: Enter the URL under the Information section of the OAuth2 module +* **Enable**: This lets you enable Dolphin OAuth +* **Id**: Dolphin connect Id +* **Secret**: Dolphin connect secret +* **Login Style**: A dropdown to select the login style +* **Button Text**: Text to be displayed on the OAuth button +* **Button Text Color**: Text color of OAuth button +* **Button Color**: Color of the button + +## Okta OAuth + +To use Okta OAuth, you need to go to the OAuth section of your Rocket.Chat settings and create a custom OAuth. + +* Navigate to **OAuth** settings (**Administration > Workspace > Settings> OAuth)** in your workspace. Create a custom OAuth. +* Go to your [Okta developers panel](https://developer.okta.com) and create a new Sign in OAuth app for a web application. +* Fill in all the required information and save. +* Your new app is created with all the credentials needed for configuration. diff --git a/use-rocket.chat/workspace-administration/settings/oauth/wordpress.md b/use-rocket.chat/workspace-administration/settings/oauth/wordpress.md new file mode 100644 index 0000000000..033a80d93c --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/oauth/wordpress.md @@ -0,0 +1,47 @@ +# WordPress OAuth Setup + +The easiest way to configure Rocket.Chat using WordPress as your identity backend is to use the [MiniOrange OAuth Plugin](https://wordpress.org/plugins/miniorange-oauth-20-server/) (Version 2.5.6 or higher) + +To enable **WordPress OAuth** on your workspace, + +* Log into your WordPress site as an administrator and navigate to **Plugins**. Click **Add New**. +* Search for "**MiniOrange OAuth Server**." +* Install and activate the **WP OAuth Server ( OAuth Provider )** plugin. +* Navigate to the `MiniOrange oAuth Server` . Click **Add client** (Red). +* Fill in the required information, including the **Callback URL**, and click **Save client**. +* Copy your **Client ID** and **Secret**. +* From the **Endpoints** tab, copy the **Authorize Endpoint**, **Access Token Endpoint**, and **Get User Info Endpoint**. +* Navigate to **OAuth** settings (**Administration > Workspace > Settings> OAuth)** in your workspace. +* In the **WordPress** tab, configure the **OAuth credentials** you copied earlier in this manner: + +
+ +WordPress OAuth Configuration + +* WordPress Login => true +* **URL** = `https://your.domain.com` (omit any trailing “/”). +* **Id** = Client ID +* **Secret** = Client Secret +* **Identity Path** = Get User Info Endpoint +* **Identity Token Sent Via** = Payload +* **Token Path** = Access Token Endpoint +* **Authorize Path** = Authorize Endpoint +* **Scope** = Profile + +
+ +* Click **Save Changes**. A **Sign in with WordPress** button appears on your workspace's login page. Users can now **sign in with WordPress** by clicking that button. + +{% hint style="info" %} +For button customization, your inputted button text won't be displayed. However, the app will display your custom OAuth name at the top. +{% endhint %} + +### Troubleshooting WordPress OAuth + +Whenever you have an issue with OAuth in WordPress, enable **Level 2 Logging** to view your logs. + +* Go to **Administration > Logs > Log Level > View Logs.** +* While monitoring the log, open the login screen in an incognito browser and attempt a login. +* The log displays the OAuth response in real time, which provides helpful troubleshooting information. + +Visit this [forum ](https://wordpress.org/support/topic/rocketchat-wordpress-the-redirect-uri-provided-is-missing-or-does-not-match/)for more information on troubleshooting for "**The redirect URI provided is missing or does not match."** diff --git a/use-rocket.chat/workspace-administration/settings/omnichannel-admins-guide/README.md b/use-rocket.chat/workspace-administration/settings/omnichannel-admins-guide/README.md new file mode 100644 index 0000000000..b134c00f0f --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/omnichannel-admins-guide/README.md @@ -0,0 +1,195 @@ +--- +description: Enable and configure Omnichannel +--- + +# Omnichannel Admin's Guide + +Configure how [Omnichannel](../../../omnichannel/) can be used to streamline conversations from various mediums into Rocket.Chat. Omnichannel adds the ability to set up and receive conversations from pop-up [Live Chat widgets](../../../omnichannel/livechat-widget-installation.md) on your website or from your business Facebook. + +Enabling and using Rocket.Chat Omnichannel gives seamless, effortless, and high-quality customer experiences all within a defined channel on your Rocket.Chat workspace. + +To access this section: + + Navigate to **Administration** > **Workspace** > **Settings** > **Omnichannel** + +{% hint style="info" %} +Remember to hit **Save Changes** in order to apply any changes made here. +{% endhint %} + +* **Enable Omnichannel**: When set to true, it enables the Omnichannel feature on your Rocket.Chat instance.\ + Workspace administrators and omnichannel managers can now see the [Omnichannel ](../../../omnichannel/)section to manage, while Omnichannel [Agents ](../../../omnichannel/agents.md)have access to their respective Omnichannel features. +* **Request comment when closing conversation**: If enabled, the agent will need to set a comment before the conversation is closed. +* **Accept new omnichannel requests when the agent is idle**: Toggle true to let Omnichannel agents receive new chat requests when they are idle. +* File Uploads Enabled: Enable this to allow file uploads on Omnichannel communication channels. +* **Ask visitors if they would like a transcript after chat closed**: When enabled, Omnichannel visitors will be asked if they need a transcript of their conversation after closing. +* **Message to Show When Asking About Transcript**: This lets you set a message that will be shown to the visitor when asking if they need a transcript. + +## Canned Responses + +{% hint style="info" %} +Canned Responses is an [Enterprise](../../../../setup-and-administer-rocket.chat/enterprise-edition-trial/) feature. ![](<../../../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (27).jpg>) +{% endhint %} + +Under this section, you can enable or disable the use of Canned Responses.\ +Canned Response allows for OmnichannelAgents to use predefined message replies. + +* **Enable Canned Responses**: Turn on to enable the use of Canned Replies. + +Learn more about Canned Responses below: + +{% content-ref url="../../../omnichannel/canned-responses/" %} +[canned-responses](../../../omnichannel/canned-responses/) +{% endcontent-ref %} + +## External Frame + +Use an external frame to embed Rocket.Chat into your own solution or interact with your CRM. + +* **External frame enabled**: Turn on to enable External frame. +* **External frame URL**: Add the URL of your external frame. +* **Encryption key (JWK)**: If provided, it will encrypt the user's token with the provided key, and the external system will need to decrypt the data to access the token. + +## Live Chat + +Manage Omnichannel Live Chat settings. + +* **Livechat Title**: The title shown on your Live Chat widget. +* **Livechat title background color**: The Live Chat background color. +* **Enable message character limit**: Toggle on to enable the message character limit. +* **Livechat message character limit**: Set a limit on message characters allowed on the visitor. +* **Display Offline Form**: When enabled, the offline form will be seen by visitors when there is no available agent. +* **Clear guest session when chat ended**: Toggle on to clear guest session when a chat ends. +* **Validate Email Address**: When turned on, the visitor's email address will be validated. +* **Offline Form Unavailable Message**: A message to show when the online form is unavailable. +* **Title**: The offline form title. +* **Color**: The style color of the Live Chat widget. This also changes the color of the Live Chat icon. +* **Instructions**: Instructions to your visitor to fill out the form to send a message. +* **Email Address to Send Offline Messages**: An email address to which you want all offline messages to be sent. +* **Offline Success Message**: A message seen by the visitor after successfully sending an offline message. +* **Allow Visitor to Switch Departments**: When enabled, Live Chat visitors will be able to switch departments. +* **Show agent information**: Enable this to show information about the agent attending to a visitor in the Live Chat widget. +* **Show agent email**: When set to true, the Omnichannel Agent's email will be visible to the visitor. +* **Conversation Finished Message**: Set a message to be sent to a visitor when the conversation is finished. +* **Conversation Finished Text**: Additional text to show after a conversation is finished. +* **Show Pre-registration Form**: This lets you set whether or not to show the pre-registration form. +* **Show name field**: Toggle to show or hide the name field. +* **Show email field**: Toggle to show or hide the email field. +* **Monitor History for Changes on**: This lets you monitor history changes on Page URL or Page Title. +* **Send Visitor Navigation History as a Message**: When set to true, you can send a visitor's navigation history to them as a message. +* **Registration Form Message**: The message seen on the registration form. +* **Livechat Allowed Domains**: Comma-separated list of domains allowed to embed the Live Chat widget. Leave blank to allow all domains. +* **Send Livechat offline messages to a channel**: Whether to send Live Chat offline message to a channel. +* **Channel Name**: The channel to which Live Chat offline messages should be sent to. + +See how to [install the Live Chat widget](../../../omnichannel/livechat-widget-installation.md) and manage the [Live Chat appearance](../../../omnichannel/livechat-widget-appearance.md) on this [Omnichannel guide](../../../omnichannel/). + +## Business Hour + +Set your business hours to automatically manage when your Live Chat agents are online. + +{% hint style="info" %} +Configuring multiple business hours is an [Enterprise](../../../../setup-and-administer-rocket.chat/enterprise-edition-trial/) feature. ![](<../../../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (27).jpg>) +{% endhint %} + +* **Business hours enabled**: Toggle on to enable business hours. +* **Business Hour Type (Single or Multiple)**: Set the type of business hour. Community workspaces can only set a single business hour. + +Learn more on how to create and manage Business Hours here. + +{% content-ref url="../../../omnichannel/business-hours-managers-guide.md" %} +[business-hours-managers-guide.md](../../../omnichannel/business-hours-managers-guide.md) +{% endcontent-ref %} + +## CRM Integration + +Integrate your Rocket.Chat Live Chat events using webhooks to other external tools or CRMs. + +See more details about this below. + +{% content-ref url="../../../omnichannel/webhooks-managers-guide.md" %} +[webhooks-managers-guide.md](../../../omnichannel/webhooks-managers-guide.md) +{% endcontent-ref %} + +## Facebook + +Configure the integration between Rocket.Chat and Facebook and communicate directly with your Facebook users. + +{% hint style="info" %} +You are required to request an `OmniChannel API Key` and an `OmniChannel API Secret` from Rocket.Chat support through [omni@rocket.chat](mailto:omni@rocket.chat). This can take a few days depending on demand. +{% endhint %} + +* **Facebook integration enabled**: Set true to enable Facebook integration. +* **OmniChannel API Key**: The OmniChannel API Key provided by support. +* **OmniChannel API Secret**: The OmniChannel API Secret provided by support. + +{% content-ref url="../../../omnichannel/facebook-messenger-managers-guide.md" %} +[facebook-messenger-managers-guide.md](../../../omnichannel/facebook-messenger-managers-guide.md) +{% endcontent-ref %} + +## GDPR + +Configure GDPR data processing and consent. + +* **Allow to collect and store HTTP header information**: This lets you determine whether Live Chat is allowed to store information collected from HTTP header data, such as IP address, User-Agent, and so on. +* **Force visitors to accept data processing consent**: When toggled on, visitors are not allowed to start chatting without consent. +* **Data processing consent text**: Set the consent text that visitors see about how you process their data. + +## Queue Management + +
+ +Configure Omnichannel Queue and how simultaneous chats get managed. + +* **Waiting queue**: Turn on to enable the Omnichannel queue. +* **Waiting queue message**: A message that is displayed to the visitor when they get in the queue. +* **Max. number of simultaneous chats**: Set the maximum number of simultaneous chats that agents can tend to. +* **Calculate and dispatch Omnichannel waiting queue statistics**: Processing and dispatching queue statistics such as position and estimated waiting time. If the _Livechat channel_ is not in use, it is recommended to disable this setting and prevent the server from doing unnecessary processes. +* **Queue processing delay timeout**: Set time in seconds in which queue delay processing will timeout. +* **Number of recent chats to calculate estimate wait time**: The number of served chats to be used when calculating queue time. +* **Maximum waiting time in queue**: The maximum time in minutes for which a chat can be kept in queue, `-1 means unlimited`. + +See more about Queuing here. + +{% content-ref url="../../../omnichannel-agents-guides/omnichannel-queue.md" %} +[omnichannel-queue.md](../../../omnichannel-agents-guides/omnichannel-queue.md) +{% endcontent-ref %} + +## Routing + +Routing allows you to define the behavior of your Live Chat queues. + +* **Omnichannel Routing Method**: Select your preferred routing method. Please refer to this article [queue-types-routing-algorithm.md](queue-types-routing-algorithm.md "mention") for information on the types of routing methods used in Rocket.Chat. +* **Accept with No Online Agents**: When enabled, Omnichannel conversations will be accepted even when there are no Agents online. +* **Assign new conversations to bot agent**: Enable this, and the routing system will attempt to find a bot agent before addressing new conversations to a human agent. +* **Max number of items displayed in the queue**: Set the maximum number of items displayed in the incoming Omnichannel queue. +* **Show Queue List to All Agents**: Enable this to show the Omnichannel Queue list to all [Omnichannel Agents](../../../omnichannel/agents.md). +* **External Queue Service URL**: Set your External Queue Service URL if your _Omnichannel Routing Method_ is [External Service](queue-types-routing-algorithm.md#external-service). +* **Secret Token**: Enter the secret token. +* **Last-Chatted Agent Preferred**: Enable to allow the allocation of chats to the agent who previously interacted with the same visitor if the agent is available when the chat starts. +* **Assign new conversations to the contact manager**: This setting allocates a chat to the assigned Contact Manager as long as the Contact Manager is online when the chat starts. + +## Sessions + +The Sessions setting allows you to define how open chat sessions are to be handled. + +* **How to Handle Open Sessions When Agent Goes Offline**: Select what happens to an open chat session when an Agent goes offline. + * **None**: Nothing happens. + * **Forward**: Gets forwarded to another Agent. + * **Close**: The chat gets closed. +* **How Long to Wait After Agent Goes Offline**: Set the time in seconds before the action specified above happens. +* **Comment to Leave on Closing Session**: Set a comment to be displayed to the Visitor on closing the chat. +* **How Long to Wait to Consider Visitor Abandonment?**: This lets you set how long in seconds to wait for before considering the Visitor abandoned the chat. +* **How to handle Visitor Abandonment**: Select what to do when Visitors abandon chats. +* **Custom message when room is automatically closed by visitor inactivity**: Set a message that will be sent when a chat gets automatically closed due to the Visitor's inactivity. +* **How long to wait before closing a chat in On Hold Queue?**: Define how long in seconds the chat will remain in the On Hold queue until it's automatically closed by the system. +* **Custom message for closed chats in On Hold queue**: Custom Message to be sent when a room in On-Hold queue gets automatically closed by the system. +* **Allow agents to manually place chat On Hold**: When enabled, the agent will have the option to place a chat On Hold, provided the agent has sent the last message. +* **Timeout (in seconds) for automatic transfer of unanswered chats to another agent**: Specify the time in seconds for unanswered chats to be transferred to other agents. + +## Video and Audio Call + +Configure the provider responsible for your Video and Audio calls. + +* **Call Provider**: Select the Call provider between `Jitsi` and `Web.RTC` to use for Omnichannel Calls. + +Extend the functionality of video and audio calling with any of the available [Rocket.Chat Conference Call](../../../rocket.chat-conference-call/conference-call-admin-guide/) Apps like [Jitsi](../../../rocket.chat-conference-call/conference-call-admin-guide/jitsi-app.md), [Pexip](../../../rocket.chat-conference-call/conference-call-admin-guide/pexip-app.md), [BigBlueButton](../../../rocket.chat-conference-call/conference-call-admin-guide/bigbluebutton-bbb-app.md), and [Google Meet](../../../rocket.chat-conference-call/conference-call-admin-guide/google-meet-app.md). diff --git a/use-rocket.chat/workspace-administration/settings/omnichannel-admins-guide/queue-types-routing-algorithm.md b/use-rocket.chat/workspace-administration/settings/omnichannel-admins-guide/queue-types-routing-algorithm.md new file mode 100644 index 0000000000..0fe544d778 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/omnichannel-admins-guide/queue-types-routing-algorithm.md @@ -0,0 +1,56 @@ +# Queue Types (Routing Algorithm) + +There are the following types of queues in Rocket.Chat Omnichannel solutions: + +* [Auto Selection \[default\]](queue-types-routing-algorithm.md#auto-selection) +* [Manual Selection](queue-types-routing-algorithm.md#manual-selection) +* [External Service](queue-types-routing-algorithm.md#external-service) +* [Load Balancing](queue-types-routing-algorithm.md#load-balancing)![](<../../../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (21).jpg>) +* [Load Rotation](queue-types-routing-algorithm.md#load-rotation)![](<../../../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (24).jpg>) + +## Auto Selection + +Each new chat will be routed to the agent that are accepting chats with the lower count. If there is more than one available agent with the same count, the chat will get the first in order. + +Consider the following department configuration: + +When a new chat comes, it'll be routed to `agent-1`, because he has `0` count and is the first in order, and the `agent-1`'s count will be increased to `1`: + +A new incoming chat will be routed to `agent-2` and so on until all agents have one chat each. So the next round comes, starting with `agent-1`. + +## Manual Selection + +With this queue method active, agents will have a new `Incoming Live Chats` section: + +Each new chat will be available on the `Incoming Live Chats` section to **all** agents. So any agent can take a new incoming chat. + +When the agent clicks on the incoming Live Chat, the system will show the preview of the chat containing the messages sent by the visitor, so the agent can decide if he will take the chat or not. If the agent decides to take it, the incoming chat will be removed from the incoming chats list of the other agents. + +## External Service + +You can use an `External Service` to integrate your own agent routing rule into Live Chat. + +Once you set up the `External Service` as the Live Chat routing method, you must define the `External Queue Service URL` and `Secret Token` settings in the Omnichannel admin panel. + +Rocket.Chat will send a GET request to the `External Queue Service URL` and the setting `Secret Token` is sent as a header `X-RocketChat-Secret-Token`, so you can validate if the request came from the Rocket.Chat. + +If your endpoint returns a response status other than 200, Rocket.Chat will try 10 times until it receives a valid response. + +Here is an example of the JSON data format that Live Chat will wait for after submitting the get request: + +```javascript +{ + "_id": "CbbQkRAifP6HtDLSr", + "username": "valid.username" +} +``` + +After receiving the return from the endpoint in the format described above, Live Chat will check that the `username` the field represents a valid Live Chat agent and then follows the normal process flow. + +## Load Balancing![](<../../../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (16).jpg>) + +Load Balancing is an enterprise-only feature. It is also an auto-assignment algorithm, but it will consider the agent's online status and the time they have been chatting, contrary to auto-selection, which only considers the agent's online status. For instance, an agent was away on a short break; once he comes back, he will be assigned more chats than his fellow agent. So in this way, the algorithm will maintain a chat load balance between agents. + +## Load Rotation![](<../../../../.gitbook/assets/2021-06-10\_22-31-38 (3) (3) (3) (3) (3) (3) (3) (3) (3) (2) (3) (1) (1) (1) (1) (1) (1) (1) (11) (9).jpg>) + +Agent queues for service between online agents, without considering the previous chat's history attended or the number of open rooms in attendance. It's a mix between the Load Balancing and Auto Selection algorithms. diff --git a/use-rocket.chat/workspace-administration/settings/otr.md b/use-rocket.chat/workspace-administration/settings/otr.md new file mode 100644 index 0000000000..08c228ee7e --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/otr.md @@ -0,0 +1,20 @@ +--- +description: >- + Off-the-record chats are temporary, encrypted messages. These types of + messages are not stored even in your own workspace. +--- + +# OTR + +To try this, be sure to have users online and engaged in a conversation at the same time. + +{% hint style="info" %} +This feature is currently in beta. Search operations will not find encrypted messages of encrypted rooms. The mobile apps and multi-DMs may not support the encrypted messages (currently under implementation). File uploads will not be encrypted in this version. +{% endhint %} + +Off-the-record (OTR) Messaging is a feature that allows users to exchange **temporary, encrypted messages directly with each other**. This happens by using the local, non-persistent session storage of their browser rather than storing messages on the Rocket.Chat workspace. After an OTR session ends and the session storage is cleared, the OTR messages are removed and can no longer be restored. + +As an administrator, you can enable/disable OTR for your workspace: + +* Navigate to **Administration** > **Workspace** > **Settings** > **OTR** +* **Enable** OTR. diff --git a/use-rocket.chat/workspace-administration/settings/push.md b/use-rocket.chat/workspace-administration/settings/push.md new file mode 100644 index 0000000000..00f689ad4d --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/push.md @@ -0,0 +1,78 @@ +# Push + +Enable and configure push notifications for your workspace members using mobile devices. + +{% hint style="info" %} +By default, community workspaces come with 10,000 free monthly push notifications. If you need more, please [contact us](https://www.rocket.chat/sales-contact) to discuss upgrading to an Enterprise plan. +{% endhint %} + +## Push Notifications Configuration + +{% hint style="info" %} +To be able to use push notifications, you are required to accept the **Cloud Service Privacy Terms Agreement** in the **Administration** > **Workspace** > **Settings** > **Setup Wizard** > **Cloud Info** settings. +{% endhint %} + +To enable push notifications: + +* Go to **Administration > Workspace > Settings > Push** +* **Enable**: Turn on to enable push notifications on your Rocket.Chat instance +* **Enable Gateway**: Setting this to true allows you to use a custom push notification gateway + +{% hint style="info" %} +Rocket.Chat SaaS workspaces use the Rocket.Chat gateway by default and cannot be changed. + +On self-managed workspaces, you can either use the default Rocket.Chat gateway or set up a custom notification gateway. +{% endhint %} + +* **Gateway**: Specify the gateway to use. Multiple lines can be used to specify multiple gateways +* **Production:** Enable this for workspaces in production + +With the configuration all done, you can **Send a test push to my user** to send a test push to yourself. + +{% hint style="info" %} +To successfully send a test push to your user, you need to be logged in to the workspace on your mobile device and then close or minimize the application. +{% endhint %} + +### Privacy + +In Privacy, you can configure what information you want your push notification to have. + +* **Show Channel/Group/Username in Notification**: Toggle this on to make the channel name, group name, and username visible in notifications. +* **Show Message in Notification**: Enabling this makes messages visible in notifications. +* **Hide message content from Apple and Google (and the Gateway, if enabled)**: Turn this on to hide the content of a message from Google/Apple or any other push gateway.\ + This adds only the message id to the notification data. The mobile client dynamically fetches the content from the server and updates the notification before displaying it. + +{% hint style="info" %} +For [Enterprise workspaces](enterprise.md), failure in fetching a message using the `message id` provided in the push data results in a "You have a new message" being sent. +{% endhint %} + +With the push configuration completed, follow this guide to set the default user preferences for notifications [#default-user-preferences](account-settings/#default-user-preferences "mention"). + +Manage channel-based notifications using the + +{% content-ref url="broken-reference" %} +[Broken link](broken-reference) +{% endcontent-ref %} + +{% hint style="info" %} +On some channels, notifications can stop if the number of users exceeds the set limit. The limit is set in the **Administration** > **General** > **Notifications**. [#notifications](general/#notifications "mention") +{% endhint %} + +## Connect to cloud + +When you purchase a package for push notifications as a self-managed customer, you need to connect your workspace [Rocket.Chat Cloud](../../rocket.chat-cloud/). + +Link and sync your account in the Connectivity Services menu. + +{% content-ref url="../connectivity-services.md" %} +[connectivity-services.md](../connectivity-services.md) +{% endcontent-ref %} + +## Check the count of notifications used per month + +To check the count of notifications used per month: + +* Go to [cloud.rocket.chat](http://cloud.rocket.chat) +* Switch to the Workspaces tab +* Select the workspace you want to check the count for +* The push notifications block shows the number of used notifications per your current limit per month. diff --git a/use-rocket.chat/workspace-administration/settings/rate-limiter.md b/use-rocket.chat/workspace-administration/settings/rate-limiter.md new file mode 100644 index 0000000000..4ec4083d5f --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/rate-limiter.md @@ -0,0 +1,41 @@ +--- +description: >- + Control the rate of requests sent or received by your workspace to prevent + cyber attacks and scraping. +--- + +# Rate Limiter + +Rocket.Chat Rate Limiter is used to control the rate of requests sent or received by your Rocket.Chat workspace. It can be used to prevent cyber attacks like DoS (Denial of Service) attacks and limit web scraping. + +To access this setting, go to **Administration** > **Workspace** > **Settings** > **Rate Limiter**. + +## API Rate Limiter + +* **Enable Rate Limiter**: This lets you enable API rate limiter. +* **Enable Rate Limiter in development**: When Rate Limiter is set to`True`, the rate limiter is enabled for development. It limits the number of calls to the endpoints in the development environment. +* **Default number calls to the rate limiter**: Number of default calls for each endpoint of the REST API, allowed within the time range defined below. +* **Default time limit for the rate limiter (in ms)**: Takes time in seconds to limit the number of calls at each endpoint of the REST API (in ms). + +## DDP Rate Limiter + +Customize rate-limiting for methods and subscriptions to avoid a high load of WebSocket(A communication protocol that allows for simultaneous data transmission in one channel) messages on your workspace. + +* **Limit by IP: enabled**: Enables limit by IP. + * **Limit by IP: requests allowed**: This lets you set the number of requests allowed. + * **Limit by IP: interval time**: Takes in the interval for limiting IP. +* **Limit by User:** This lets you enable DDP rate-limiting by user + * **Limit by User: requests allowed**: The number of requests allowed + * **Limit by User: interval time**: The time interval in seconds for limiting the user +* **Limit by User per Method**: When set to true, it enables limiting user's rate per method + * **Limit by User per Method: requests allowed**: The number of requests allowed + * **Limit by User per Method: interval time**: The interval for limiting user per method +* **Limit by Connection per Method**: Lets you set connection limit by method + * **Limit by Connection per Method: requests allowed**: The number of request requests allowed + * **Limit by Connection per Method: interval time**: Interval for limiting connection per method + +## Feature Limiting + +Setting this up gets your sever full protection from email and username enumeration by brute force attack. + +* **Default number calls to the rate limiter for registering a user**: Number of default calls for user registering endpoints (REST and real-time API's), allowed within the time range defined in the API Rate Limiter section. diff --git a/use-rocket.chat/workspace-administration/settings/retention-policies.md b/use-rocket.chat/workspace-administration/settings/retention-policies.md new file mode 100644 index 0000000000..5daf6dea6a --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/retention-policies.md @@ -0,0 +1,83 @@ +--- +description: Automatically prune old messages and files across your workspace +--- + +# Retention Policy + +The Retention Policy allows you to automatically remove old messages and files with custom rules on channels and globally. + +## Permissions + +Retention policies depend on two types of permissions: + +* `edit-privileged-setting` : It is required to set a **global** policy. +* `edit-room-retention-policy`: It is required to set a **per-channel** policy. + +{% hint style="info" %} +To enable channel owners to set their policies, assign `edit-room-retention-policy` permission to channel owners. By default, it is assigned to administrators only. +{% endhint %} + +## Configuration + +Retention policies have two levels, global policies (enforced everywhere) and per-channel policies (implemented in specific channels). + +To enable retention policies, + +* Navigate to **Administration > Workspace > Settings > Retention Policy** +* Toggle on **Enabled.** + +### Global policies + +{% hint style="danger" %} +Tweaking these settings without extreme caution can **destroy** **all message history across your server**. Please read this entire section **before** you enable this feature. +{% endhint %} + +To update the **Global Policies** settings, + +* Navigate to **Administration > Workspace > Settings > Retention Policy > Global Policies** + +The policy is split into three parts: one for all channels, one for all private groups, and one for all direct messages. Each type has two options: + +* **Applies to channels/private groups/direct messages**: Enabling this option applies the global retention policy to this type of message. For example, if you only wish to prune messages in private groups, enable the option for private groups and disable the others. +* **Maximum message age in channels/private groups/direct messages**: This option establishes how old messages may be in days. For example, to make the policy automatically delete all messages older than 30 days, enter `30`; to make the policy automatically delete all messages older than a year, enter `365`, etc. + +Furthermore, other options allow you to specify how the policy works: + +* **Exclude pinned messages**: If enabled, pinned messages are not deleted. For example, when you pin a few messages with essential links, these messages stay intact. +* **Only delete files**: If enabled, messages are not deleted, but files are. They are replaced by a simple _File removed by automatic prune_ message. When used together with **Exclude pinned messages**, only unpinned files are deleted. +* **Timer Precision**: It establishes how often the deletion script should run. When your policies have a long lifetime or do not care about the policy's precision, you can lower this to save processing power. +* **Do not prune discussion messages:** If enabled, discussion messages are not deleted. All the discussions in your workspace remain intact. + +{% hint style="danger" %} +If you don't enable **Do not prune discussion messages,** all your discussion messages will be deleted irrespective of the dates. +{% endhint %} + +**Do not prune Threads:** When enabled, threads are not deleted. All the threads in your workspace remain intact. + +### Per-channel Policies + +{% hint style="info" %} +Tweaking these settings without extreme caution can **destroy** **all message history across your server**. Please read this entire section **before** you turn the feature on. +{% endhint %} + +{% hint style="info" %} +Ensure you have the `edit-room-retention-policy` permission. +{% endhint %} + +To enable retention policy in a room, + +* Navigate to the Kebab menu of the channel on the top right corner of the channel screen +* Click **Prune Messages.** Update the options. + * **Newer than**: Set a date and time to prune messages newer than the select moment. + * **Older than**: Set a date and time to prune messages older than the select moment. + * **Only prune content from these users**: Select users to delete their messages. Leave empty to prune everyone's content. + * **Inclusive**: If you check the inclusive checkbox, messages sent on and between **Newer than** and **Older than** dates are deleted (messages are deleted between and including those dates). If you don't check the inclusive checkbox, messages between **Newer than** and **Older than** dates are deleted, and the messages sent on those dates are not deleted. + * **Do not prune pinned messages**: Pinned messages are not deleted if enabled. For example, if you pinned a few messages with important links, they stay intact. + * **Do not prune discussion messages**: If enabled, messages in the discussions are not deleted. + * **Do not prune threads:** If enabled, messages in the threads are not deleted. + * **Only remove the attached files, keep messages:** If enabled, messages are not deleted, but files are. They are replaced by a simple _File removed by automatic prune_ message. When used together with **Exclude pinned messages**, only unpinned files are deleted. +* Click **Prune**. + +## Info Available to Users + +Users can see if a channel's messages will be pruned by either scrolling to the top of the message history or opening the channel info. A message is displayed if a policy (global or per-channel) is present. For example, _Messages older than 30 days are automatically pruned here,_ or _Unpinned files older than a year are automatically pruned here_. diff --git a/use-rocket.chat/workspace-administration/settings/saml/README.md b/use-rocket.chat/workspace-administration/settings/saml/README.md new file mode 100644 index 0000000000..822b990135 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/saml/README.md @@ -0,0 +1,33 @@ +--- +description: >- + Create role mapping from user groups by selecting any field you want to sync + with Rocket.Chat +--- + +# SAML + +SAML(Security Assertion Markup Language) is an XML-based format and protocol for exchanging authentication and authorization data between parties. + +This standard of authentication has significant advantages over logging in using a username/password: + +* No need to type in credentials +* No need to remember and renew passwords +* No weak passwords + +To access this setting, navigate to **Administration** > **Workspace** > **Settings** > **SAML** + +{% content-ref url="rocket.chat-server-settings.md" %} +[rocket.chat-server-settings.md](rocket.chat-server-settings.md) +{% endcontent-ref %} + +{% content-ref url="simple-saml-php.md" %} +[simple-saml-php.md](simple-saml-php.md) +{% endcontent-ref %} + +{% content-ref url="active-directory-federation-services.md" %} +[active-directory-federation-services.md](active-directory-federation-services.md) +{% endcontent-ref %} + +{% content-ref url="oracle-cloud.md" %} +[oracle-cloud.md](oracle-cloud.md) +{% endcontent-ref %} diff --git a/use-rocket.chat/workspace-administration/settings/saml/active-directory-federation-services.md b/use-rocket.chat/workspace-administration/settings/saml/active-directory-federation-services.md new file mode 100644 index 0000000000..1a2e2bdc09 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/saml/active-directory-federation-services.md @@ -0,0 +1,37 @@ +--- +description: Authenticating Rocket.Chat and Microsoft ADFS via SAML +--- + +# Active Directory Federation Services + +It is possible to set up the authentication between Rocket.Chat and Active Directory Federation Services by setting up SAML authentication scenario. + +Microsoft ADFS provides an IdP service that can be consumed by Rocket.Chat for authentication. + +{% hint style="info" %} +If you are using Active Directory _without_ Federation Services, you should perform the user synchronization via LDAP only. +{% endhint %} + +{% hint style="warning" %} +This document considers that your ADFS environment is deployed and running. For further info, please refer to [this guide](https://docs.microsoft.com/en-us/previous-versions/dynamicscrm-2016/deployment-administrators-guide/gg188612\(v=crm.8\)). +{% endhint %} + +The Rocket.Chat configuration should be done as follows: + +* Navigate to **Administration** > **Workspace** > **Settings** > **SAML** and configure the entry points and the IdP path. +* Add the private key certificate related to the ADFS server. + +{% hint style="info" %} +ADFS uses .pfx certificate extensions (widely used on Windows landscapes) and Rocket.Chat uses .pem files. So, before setting the certificate here, it must be converted. +{% endhint %} + +* Set the _Custom Authn Context_ and _User Data Field Map_ according to the scenario you have on your Active Directory Federation Services. + +{% hint style="info" %} +The Custom Authorization context fields must match the authentication methods selected on ADFS. Microsoft Federation Services provides two authentication methods: Forms authentication and Windows Authentication. +{% endhint %} + +![](<../../../../.gitbook/assets/adfs\_1 (1).png>) + +* Forms authentication: If this option is selected as 'primary', a login form provided by ADFS will be called by the SAML assertion to perform the login operation. For this method, the recommended "Custom Authn Context" in Rocket.Chat should be _**urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport**_ +* Windows authentication: if this option is selected as **'primary', ADFS will expect the login assertions on the Windows Domain level. To set a full SSO scenario between Rocket.Chat and ADFS, the recommended "Custom Authn Context" should be \_urn:federation:authentication:windows**\_ diff --git a/use-rocket.chat/workspace-administration/settings/saml/keycloak.md b/use-rocket.chat/workspace-administration/settings/saml/keycloak.md new file mode 100644 index 0000000000..1f70f06955 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/saml/keycloak.md @@ -0,0 +1,43 @@ +# Keycloak + +[https://www.keycloak.org/ ](https://www.keycloak.org/)is another popular open-source IdP that you can use in connection with Rocket.Chat. + +## Prerequisites + +* Rocket.Chat server accessible like e.g., 'https://r.example.com' +* Keycloak server accessible like e.g., 'https://sso.example.com' + +Keycloak: + +* Decide/set up a realm you want to use, e.g. `master`. The realm will be referenced by the placeholder ``. + +## Setting up Rocket.Chat + +Go to the SAML settings in Rocket.Chat administration: + +* Decide the keycloak server "nickname" - e.g. `keycloak`. +* For the custom entry point and IDP SLO Redirect URL, go for `https://sso.example.com/auth/realms//protocol/saml` +* Note the Custom Certificate - this is the Keycloak's realm certificate. Check out the realm settings, examine the Keys tab, get the RSA Certificate and paste it into the field. Don't include the `-----BEGIN/END CERTIFICATE-----` headers/footers. +* Generate the Public Certificate and Private Key if needed, or leave them as they are if they are present. + +## Setting up Keycloak + +Go to `https://r.example.com/_saml/metadata/keycloak` - you should get an XML file. Save the raw file to your disk. Go to keycloak and open the "Add Client" dialogue. Select the SAML protocol, and import the XML file from the previous step. You will be redirected to a partially pre-filled client setting page. The client ID referenced by Keycloak should be the same as the metadata URL. + +Create client, and now revisit its settings: + +* Check out Valid Redirect URIs - make sure that it is set to `https://r.example.com/_saml/validate/keycloak`. +* Set the `Name ID Format` to `email`. +* Go to the `SAML Keys` tab, and make sure that the public key (certificate) is the same as the Rocket.Chat's public key. Note that the `-----BEGIN/END CERTIFICATE-----` header/footer is not supposed to be part of the Keycloak's public key view, but the rest should be the same. If they are not the same, save the Rocket.Chat public key one into a text file, and import it from Keycloak - use the import PEM functionality. +* Go to the Mappers tab, and create mappers for the required data that Rocket.Chat expects. You shouldn't need `email` or `username`, but you probably need `cn`. + + Click Create, and choose the type `User Property` and set the `SAML Attribute NameFormat` to `basic`. For the first name, set `Name` and `Property` to `firstName`, and `SAML Attribute name` to `cn`. + +## Troubleshooting + +You should be done by now. However, you may run into some problems for various reasons: + +* Q: I keep getting the `Unable to validate response url: Error: Status is: urn:oasis:names:tc:SAML:2.0:status:Responder` error. +* A: Make sure that the respective Keycloak user has an e-mail address. This may not be the case e.g., for Keycloak admin. +* Q: How do I generate a certificate pair? +* A: Try `openssl req -newkey rsa:3072 -new -x509 -days 3652 -nodes -out saml.crt -keyout saml.pem`. Then, just copy the file contents to the respective fields. diff --git a/use-rocket.chat/workspace-administration/settings/saml/oracle-cloud.md b/use-rocket.chat/workspace-administration/settings/saml/oracle-cloud.md new file mode 100644 index 0000000000..8042d99470 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/saml/oracle-cloud.md @@ -0,0 +1,57 @@ +# Oracle Identity Cloud Service + +## Configuring the Identity Provider + +Oracle Identity Cloud Service is integrated as a SAML Identity Provider. For a detailed explanation of the SAML options on Rocket.Chat, and check the [SAML Documentation](./). + +## Step by Step configuration of Oracle Identity Cloud Service + +### Before you begin + +Before you create your IDCS application, make sure you have enabled SAML per the [SAML Documentation](./). You will need to have entered a _Custom Provider_ and a _Custom Issuer_ URL on the SAML settings page in Rocket.Chat. + +**Note:** Leave the _Custom Entry Point_ and _IDP SLO Redirect URL_ values as the default values for now. We will obtain these URLs below, but you must save the SAML settings with your _Custom Issuer_ URL so you can visit this URL and obtain values that are necessary when creating the IDCS application below. + +### Adding a new Application + +On your Oracle Cloud Applications Dashboard, find a button to add a new application. It should open the following pop-up: + +![](../../../../.gitbook/assets/addapplication.png) + +Select **SAML Application** to open the configuration wizard. + +### App Details + +![](../../../../.gitbook/assets/appdetails.png) + +The only information needed on this page is the application name and URL. The URL you need to use here is the same one that is set on the _Custom Issuer_ SAML configuration field on the Rocket.Chat settings. + +### SSO Configuration + +![](../../../../.gitbook/assets/ssoconfiguration.png) + +To get the values for those new settings, you need to access the same _Custom Issuer_ URL that you used on the previous page. It should show an XML file similar to the one below: + +![](../../../../.gitbook/assets/samplexmlconfiguration.png) + +On the **AssertionConsumerService** tag, you need to copy the value of the _Location_ attribute. Then paste this value on the _Assertion Consumer URL_ field on the Oracle Settings. On the **SingleLogoutService** tag, you need to copy the value of the _Location_ attribute, then paste it in the _Single Logout URL_ param of the Advanced Settings. On the same **SingleLogoutService** tag, you need to copy the value of the _ResponseLocation_ attribute, then paste it in the _Logout Response URL_ param of the Advanced Settings. + +Finally, the _Entity Id_ param receives the URL of the XML file itself (the same URL you used as the application URL). + +Before clicking on **Finish**, click the **Download Identity Provider Metadata** button to download another XML file. + +### Rocket.Chat Settings + +![](../../../../.gitbook/assets/rocketchatsettings.png) + +There are two Rocket.Chat settings that need to be copied from the IDP Metadata you just downloaded: _Custom Entry Point_ and _IDP SLO Redirect URL_. + +For the first one, locate the tag **md:SingleSignOnService** and copy the value of the _Location_ attribute (ends with `/idp/sso`). + +For the second param, locate the tag **md:SingleLogoutService** and copy the value of the _Location_ attribute (ends with `/idp/slo`). + +There may be multiple occurrences of those tags in the XML file, so make sure that the copied URLs end with `/idp/sso` and `/idp/slo` and not `/sp/sso` and `/sp/slo`. + +### Testing + +Everything should be properly configured now. You can now add users to your SAML Integration app on the Oracle Dashboard and then test the login on your Rocket.Chat instance. diff --git a/use-rocket.chat/workspace-administration/settings/saml/rocket.chat-server-settings.md b/use-rocket.chat/workspace-administration/settings/saml/rocket.chat-server-settings.md new file mode 100644 index 0000000000..d69eb62511 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/saml/rocket.chat-server-settings.md @@ -0,0 +1,121 @@ +# Rocket.Chat server settings + +## Connection + +* **Enable**: Enables the SAML connection +* **Custom Provider**: The SAML provider name +* **Custom Entry Point**: The custom entry point +* **IDP SLO Redirect URL**: This is the URL provided by your IdP for logging out. In SAML-terminology, it refers to the location (URL) of the SingleLogoutService with the Redirect binding (urn:oasis:names:tc:SAML:2.0:bindings: HTTP-Redirect) +* **Custom Issuer**: The URI is the unique identifier of your service. By convention, this is also the URL of your (unedited) metadata. Again, where you set Custom Provider to 'my-app', this will be: `https://my-rocketchat-domain.tld/_saml/metadata/my-app` +* **Enable Debug**: Set to true to enable debugging + +### Certification + +* **Custom Certificate**: This is the public certificate for IdP providers used to verify SAML requests. The format for this is PEM without `-----BEGIN CERTIFICATE-----` and `--` +* **Public Cert Contents**: The public part of the self-signed certificate you created for encrypting your SAML transactions. [Example of self-signed certificate on the SimpleSAMLphp website here](https://simplesamlphp.org/docs/latest/simplesamlphp-sp.html#enabling-a-certificate-for-your-service-provider). + + Format for this is PEM WITH `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----` +* **Signature Validation Type**: Select the type of signature validation. _`This setting will be ignored if no Custom Certificate is provided`**.**_ +* **Private Key Contents**: The private key matches the self-signed certificate you created as PKCS#1 PEM. Format for this is PEM WITH `-----BEGIN PRIVATE KEY-----` and `-----END PRIVATE KEY-----`. + +## Enterprise + +### Roles + +* **Sync User Roles**: Enable to sync user roles on login (overwrites local user roles). +* **Role Attribute Name**: If this attribute is found on the SAML response, its values will be used as role names for new users. + +### Advanced + +* **Identifier Format**: Format of the identifier. Leave this empty to omit the NameID Policy from the request +* **NameID Policy Template**: The NameID policy template. You can use any variable from the Authorize Request Template here. +* **Custom Authn Context**: Leave this empty to omit the authn context from the request. + + To add multiple authn contexts, add the additional ones directly to the _AuthnContext Template_ setting. +* **Authn Context Comparison**: Select the Authn context comparison method +* **AuthnContext Template**: You can use any variable from the AuthnRequest Template here. + + To add additional authn contexts, duplicate the _AuthnContextClassRef_ tag and replace the _\_\_authnContext\_\__ variable with the new context. +* **AuthnRequest Template**: The following variables are available: + * **\_\_newId\_\_**: Randomly generated id string + * **\_\_instant\_\_**: Current timestamp + * **\_\_callbackUrl\_\_**: The Rocket.Chat callback URL. + * **\_\_entryPoint\_\_**: The value of the _Custom Entry Point_ setting. + * **\_\_issuer\_\_**: The value of the _Custom Issuer_ setting. + * **\_\_identifierFormatTag\_\_**: The contents of the _NameID Policy Template_ if a valid _Identifier Format_ is configured. + * **\_\_identifierFormat\_\_**: The value of the _Identifier Format_ setting. + * **\_\_authnContextTag\_\_**: The contents of the _AuthnContext Template_ if a valid _Custom Authn Context_ is configured. + * **\_\_authnContextComparison\_\_**: The value of the _Authn Context Comparison_ setting. + * **\_\_authnContext\_\_**: The value of the _Custom Authn Context_ setting. +* **Logout Response Template**: The following variables are available: + * **\_\_newId\_\_**: Randomly generated id string + * **\_\_inResponseToId\_\_**: The ID of the Logout Request received from the IdP + * **\_\_instant\_\_**: Current timestamp + * **\_\_idpSLORedirectURL\_\_**: The IDP Single LogOut URL to redirect to. + * **\_\_issuer\_\_**: The value of the _Custom Issuer_ setting. + * **\_\_identifierFormat\_\_**: The value of the _Identifier Format_ setting. + * **\_\_nameID\_\_**: The NameID received from the IdP Logout Request. + * **\_\_sessionIndex\_\_**: The sessionIndex received from the IdP Logout Request. +* **Logout Request Template**: The following variables are available: + * **\_\_newId\_\_**: Randomly generated id string + * **\_\_instant\_\_**: Current timestamp + * **\_\_idpSLORedirectURL\_\_**: The IDP Single LogOut URL to redirect to. + * **\_\_issuer\_\_**: The value of the _Custom Issuer_ setting. + * **\_\_identifierFormat\_\_**: The value of the _Identifier Format_ setting. + * **\_\_nameID\_\_**: The NameID received from the IdP when the user logged in. + * **\_\_sessionIndex\_\_**: The sessionIndex received from the IdP when the user logged in. +* **Metadata Certificate Template**: The following variables are available: + * **\_\_certificate\_\_**: The private certificate for assertion encryption. +* **Metadata Template**: The following variables are available: + * **\_\_sloLocation\_\_**: The Rocket.Chat Single LogOut URL. + * **\_\_issuer\_\_**: The value of the _Custom Issuer_ setting. + * **\_\_identifierFormat\_\_**: The value of the _Identifier Format_ setting. + * **\_\_certificateTag\_\_**: If a private certificate is configured, this will include the _Metadata Certificate Template_, otherwise it will be ignored. + * **\_\_callbackUrl\_\_**: The Rocket.Chat callback URL. + +### Mapping + +* **User Data Custom Field Map**: Configure how user custom fields are populated from a record in SAML (once found). + +## General + +### User Interface + +* **Button Text**: Text to display on the button +* **Button Text Color**: Lets you set the button text color +* **Button Color**: The button color + +### Behavior + +* **Generate Username**: Enable to generate username +* **Normalize username**: Set the type of normalization to perform on a username +* **Immutable field name**: Select the field name to be immutable +* **Overwrite user fullname (use idp attribute)**: Enable to overwrite user fullname +* **Overwrite user mail (use idp attribute)**: Enable to overwrite user mail +* **Logout Behaviour**: Lets you set the behavior to happen on logout +* **Update Room Subscriptions on Each Login**: When enabled, room subscriptions is updated on each login. _`Ensures the user is a member of all channels in SAML assertion on every login`_. +* **Include Private Rooms in Room Subscription**: When set to true, private rooms are able to use for a subscription. Adds a user to any private rooms that exist in the SAML assertion. +* **Default User Role**: Lets you set the default user role. You can specify multiple roles, separating them with commas. +* **Allowed clock drift from Identity Provider**: The clock of the Identity Provider may drift slightly ahead of your system clocks. You can allow for a small amount of clock drift. Its value must be given in a number of milliseconds (ms). The value given is added to the current time at which the response is validated. + +### Mapping + +* **User Data Field Map**: Configure how user account fields (like email) are populated from a record in SAML (once found). As an example, `{"name":"cn", "email":"mail"}` chooses a person's human-readable name from the cn attribute, and their email from the mail attribute. Available fields in Rocket.Chat: `name`, `email` and `username`. Everything else is discarded. + +```json +"email": "mail", + "username": { + "fieldName": "mail", + "regex": "(.*)@.+$", + "template": "user-__regex__" + }, + "name": { + "fieldNames": [ + "firstName", + "lastName" + ], + "template": "__firstName__ __lastName__" + }, + "__identifier__": "uid" +} +``` diff --git a/use-rocket.chat/workspace-administration/settings/saml/simple-saml-php.md b/use-rocket.chat/workspace-administration/settings/saml/simple-saml-php.md new file mode 100644 index 0000000000..ec9a0ce082 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/saml/simple-saml-php.md @@ -0,0 +1,21 @@ +# Simple SAML php + +As a popular open-source IdP, SimpleSAMLphp can be used to provide an authentication endpoint for Rocket.Chat and the built-in SAML support. Assuming that you have a SimpleSAMLphp IdP up and running - [QuickStart instructions here](https://simplesamlphp.org/docs/latest/simplesamlphp-sp.html), you can find the metadata for the Rocket.Chat SAML Service Provider (SP) here, where 'my-app' is whatever you put in the **Custom Provider** box in the Rocket.Chat SAML admin page: + +`https://my-rocketchat-domain.tld/_saml/metadata/my-app` + +1. Copy the XML on this page +2. Open the metadata converter page in your SimpleSAMLphp admin UI found at: `/admin/metadata-converter.php` +3. Paste the XML, and submit it +4. Copy the resulting PHP output to the file in your SimpleSAMLphp installation under metadata: `/metadata/saml20-sp-remote.php` +5. You should now see your SP on the SimpleSAMLphp Federation page, listed as a trusted SAML 2.0 SP at: `module.php/core/frontpage_federation.php` + +## IdP Attribute Mapping + +Use the following attributes required to return user information to Rocket.Chat: + +| Idp Returned Attribute Name | Usage | +| --------------------------- | -------------------- | +| cn | User's Full Name | +| email | User's Email Address | +| username | User's username | diff --git a/use-rocket.chat/workspace-administration/settings/search.md b/use-rocket.chat/workspace-administration/settings/search.md new file mode 100644 index 0000000000..84b7a083ed --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/search.md @@ -0,0 +1,34 @@ +--- +description: Select workspace search provider and configure search related settings +--- + +# Search + +Here you can configure how searches work on your Rocket.Chat server. This gives you the option to select a search provider. + +To access this setting, navigate to **Administration** > **Workspace** > **Settings** > **Search**. + +* **Search Provider**: A dropdown that lets you select which search provider you wish to use. Can be `Default provider` or `Chatpal Provider`. + +## Chatpal Provider + +* **Backend Type**: Lets you choose the backend type for your Chatpal provider. Select if you want to use Chatpal as a Service or as On-Site Installation. +* **API Key**: Your Chatpal API key. Find some descriptions on how to run a local instance [on GitHub](https://github.com/chatpal/chatpal-search-standalone). The URL must be absolute and point to the Chatpal core, e.g. [`http://localhost:8983/solr/chatpal`](http://localhost:8983/solr/chatpal)\`\` +* **HTTP Headers**: List of HTTP Headers, one header per line. Format: name:value +* **Main Language**: The language that is used most in conversations. +* **Default Result Type**: Defines which result type is shown by the result. +* **Page size**: Lets you set the page size. +* **Suggestions enabled**: When enabled, suggestions are shown while searching. +* **Include All Public Channels**: When set to true, it searches in all public channels, even if you haven't joined them yet. +* **Index Batch Size**: The batch size of index documents (on bootstrapping) +* **Index Timeout**: The time between 2 index windows in ms (on bootstrapping) +* **Index Window Size**: The size of index windows in hours (on bootstrapping) + +## Default Provider + +* **Global search**: When enabled, the search is done globally. +* **Page Size**: The page size. + +{% hint style="warning" %} +**The global search feature is currently in Beta and may not function as expected.** +{% endhint %} diff --git a/use-rocket.chat/workspace-administration/settings/setup-wizard.md b/use-rocket.chat/workspace-administration/settings/setup-wizard.md new file mode 100644 index 0000000000..45bad6e886 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/setup-wizard.md @@ -0,0 +1,30 @@ +--- +description: Basic info about your workspace such as organization name and country +--- + +# Setup Wizard + +This section has basic configurations for the setup wizard of your workspace. + +To access this menu, navigate to **Administration** > **Workspace** > **Settings** > **Setup Wizard**. + +{% hint style="info" %} +Remember to hit **Save Changes** in order to apply any changes made. +{% endhint %} + +## Organization Info + +* **Organization Type**: A dropdown for you to select the type of organization. Example `Enterprise` +* **Organization Name**: The name of your organization. Example `RocketChat` +* **Industry**: The industry to which your organization belongs. Example `Technology Services` +* **Size**: The size of your organization. +* **Country**: The country your organization is based in. Example `South Africa` +* **Website**: Your organization's website. Example `https://rocket.chat` +* **Server Type**: The type of server you are running. Example `Public Community` +* **Allow Marketing Emails**: When enabled, marketing emails are sent. +* **Register Server**: Enable to register your server. +* **Organization Email**: Lets you set your organization email. + +## Cloud Info + +* **Cloud Service Privacy Terms Agreement**: Enable to agree to Cloud [terms](https://rocket.chat/terms) and [privacy policies](https://rocket.chat/privacy) diff --git a/use-rocket.chat/workspace-administration/settings/slackbridge.md b/use-rocket.chat/workspace-administration/settings/slackbridge.md new file mode 100644 index 0000000000..236f939168 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/slackbridge.md @@ -0,0 +1,24 @@ +--- +description: Enable Rocket.Chat to communicate directly with Slack +--- + +# SlackBridge + +SlackBridge lets you mirror Slack and Rocket.Chat servers in real-time. + +To access this menu, navigate to **Administration** > **Workspace** > **Settings** > **SlackBridge** + +{% hint style="info" %} +Remember to hit **Save Changes** in order to apply any changes made. +{% endhint %} + +* **Enabled**: Toggle to true to enable SlackBridge +* **API Tokens**: Takes in API tokens of your Slack servers. You can configure multiple slack servers by adding one API Token per line. +* **File Upload**: Enable to permit file uploads between servers. +* **SlackBridge Out Enabled**: Choose whether SlackBridge should also send your messages back to Slack +* **SlackBridge Out All**: Send messages from all channels that exist in Slack, and the bot has joined +* **SlackBridge Out Channels**: This lets you choose which channels will send messages back to Slack. +* **Alias Format**: Import messages from Slack with an alias; `%s` is replaced by the username of the user. If empty, no alias is used. +* **Exclude Bots**: Takes in a regular expression to not propagate messages from any bot whose name matches the regular expression. If left empty, all messages from bots are propagated. +* **Reactions**: Enable to get reactions +* **Remove channel links**: Remove the internal link between Rocket.Chat channels and Slack channels. The links are afterward recreated based on the channel names. diff --git a/use-rocket.chat/workspace-administration/settings/smarsh.md b/use-rocket.chat/workspace-administration/settings/smarsh.md new file mode 100644 index 0000000000..c5de1319c7 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/smarsh.md @@ -0,0 +1,15 @@ +--- +description: Configurations to preserve email communication +--- + +# Smarsh + +Smarsh is used to confidently and efficiently preserve email communications. + +To access this menu, navigate to **Administration** > **Workspace** > **Settings** > **Smarsh**. + +* **Smarsh Enabled**: Whether the Smarsh eml connector is enabled or not (needs 'From Email' filled in under Email -> SMTP). +* **Smarsh Email**: Smarsh Email Address to send the .eml file to. +* **Missing Email**: The email to show for a user account when their email address is missing. It generally happens with bot accounts. +* **Smarsh Timezone**: This lets you set the Smarsh timezone +* **Smarsh Interval**: The amount of time to wait before sending the chats (needs 'From Email' filled in under Email -> SMTP). diff --git a/use-rocket.chat/workspace-administration/settings/sms.md b/use-rocket.chat/workspace-administration/settings/sms.md new file mode 100644 index 0000000000..488dca094c --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/sms.md @@ -0,0 +1,38 @@ +--- +description: Enable and configure SMS gateways on your workspace. +--- + +# SMS + +This setting lets you configure various SMS gateways on your workspace. + +To access this menu, navigate to **Administration** > **Workspace** > **Settings** > **SMS**. + +* **Enabled**: This lets you enable or disable SMS service on your server. +* **Service**: Select the available SMS services e.g `Twilio`, `Mobex`, `Voxtelesys` +* **Omnichannel Department (Default)**: If set, all new incoming chats initiated by this integration are routed to this department. + +## Mobex + +Create a Mobex account at [https://mobex.biz/](https://mobex.biz) and get a plan with the needed credentials to configure your Mobex SMS integration. + +* **Mobex SMS Gateway Address**: IP or Host of your Mobex service with the specified port. E.g. `http://192.168.1.1:1401` or `https://www.example.com:1401` +* **Mobex SMS REST API Address**: IP or Host of your Mobex REST API. E.g. `http://192.168.1.1:8080` or `https://www.example.com:8080` +* **Username**: Your username +* **Password**: Your Mobex password +* **From**: Originating address/phone number when sending a new SMS to Live Chat client +* **List of numbers to send SMS from**: Comma-separated list of numbers to use in sending brand new messages, eg. `123456789`, `123456788`, `123456888` + +## Twilio + +* **Account SID**: Your account's SID. It is provided by Twilio. +* **Auth Token**: Your Twilio auth token +* **File Uploads Enabled**: When enabled, file uploads will be active in SMS +* **Accepted Media Types**: Comma-separated list of media types. Leave it blank for accepting all media types. + +## Voxtelesys + +* **Auth Token**: Your Voxtelesys auth token +* **URL**: The Voxtelesys URL e.g `https://smsapi.voxtelesys.net/api/v1/sms` +* **File Uploads Enabled**: When enabled, file uploads are made available +* **Accepted Media Types**: Comma-separated list of media types. Leave it blank for accepting all media types. diff --git a/use-rocket.chat/workspace-administration/settings/threads.md b/use-rocket.chat/workspace-administration/settings/threads.md new file mode 100644 index 0000000000..622cf0a7f9 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/threads.md @@ -0,0 +1,13 @@ +--- +description: Threads allow organized discussions around a specific message +--- + +# Threads + +Threads are a key part of the messaging experience in Rocket.Chat [rooms](../../user-guides/rooms/) and [direct messages](../../user-guides/rooms/direct-messages/). They’re used to organize conversations and enable users to discuss topics without adding noise to rooms or direct messages. + +Collapsed Reply Threads offer an improved experience for users communicating in threads and replying to messages that include a unified threads inbox to read all conversations in one view. Threads improve the ability to process room content, find, follow, and resume conversations more easily, and keep threaded conversations focused. + +To access this setting, go to **Administration** > **Workspace** > **Settings** > **Threads**. + +* **Enable**: When enabled, users are able to create threads in conversations. diff --git a/use-rocket.chat/workspace-administration/settings/troubleshoot.md b/use-rocket.chat/workspace-administration/settings/troubleshoot.md new file mode 100644 index 0000000000..b30efd80a1 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/troubleshoot.md @@ -0,0 +1,22 @@ +--- +description: Manage how troubleshooting is handled on this workspace. +--- + +# Troubleshoot + +Configure how troubleshooting is handled in your workspace + +To access this section, go to **Administration** > **Workspace** > **Settings** > **Troubleshoot**. + +{% hint style="danger" %} +We recommend these settings be altered only with the guidance of the Rocket.Chat Development or Support Teams. Do not touch them if you don't know what you are doing! +{% endhint %} + +* **Disable Notifications**: This setting completely disables the notifications system. When enabled, sounds, desktop notifications, mobile notifications, and email notifications immediately stopped. +* **Disable Presence Broadcast**: This setting prevents all instances from sending the status changes of the users to their clients, keeping all the users with their presence status from the first load. +* **Disable Instance Broadcast**: Setting this to true prevents the Rocket.Chat instances from sending events to the other instances. It may cause syncing problems and misbehavior. +* **Disable Sessions Monitor**: This setting stops the processing of user sessions, causing the statistics to stop working correctly. +* **Disable Live Chat Activity Monitor**: Activating this setting stops the processing of Live Chat contacts sessions, causing the statistics to stop working correctly. +* **Disable Statistics Generator**: This lets you stop the processing of all statistics making the info page outdated until someone clicks on the refresh button and may cause other missing information around the system. +* **Disable Data Exporter Processor**: This setting stops the processing of all export requests from users, so they will not receive the link to download their data. +* **Disable Workspace Sync**: Enabling this stops the sync of the server with Rocket.Chat's cloud may cause issues with the marketplace and enterprise licenses. diff --git a/use-rocket.chat/workspace-administration/settings/user-data-download.md b/use-rocket.chat/workspace-administration/settings/user-data-download.md new file mode 100644 index 0000000000..f38c9237e8 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/user-data-download.md @@ -0,0 +1,25 @@ +--- +description: >- + Configurations to allow or disallow workspace members from downloading + workspace data +--- + +# User Data Download + +This setting lets you configure aspects that involve users downloading their data from the server. + +Using this, users can download their entire Rocket.Chat data. + +To access this setting: + + Navigate to **Administration** > **Workspace** > **Settings** > **User Data Download**. + +* **Enable User Data Download**: When set to true, users are able to download their data. +* **System Path (Exported Files)**: Specify the path where exported files should be located. +* **System Path (Compressed File)**: This lets you set where compressed files should be. +* **Processing Frequency (Minutes)**: Takes in the frequency in minutes for processing data download. +* **Message Limit per Request**: This lets you limit the number of messages that can be downloaded per request. + +{% hint style="info" %} +Users can find where to initiate data download at **My Account** > **Preferences** > **My Data** +{% endhint %} diff --git a/use-rocket.chat/workspace-administration/settings/webdav-integration.md b/use-rocket.chat/workspace-administration/settings/webdav-integration.md new file mode 100644 index 0000000000..b4207dd78b --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/webdav-integration.md @@ -0,0 +1,16 @@ +--- +description: Configure WebDAV servers like Nextcloud +--- + +# Webdav Integration + +A framework for users to create, change and move documents on a server. Used to link WebDAV servers such as Nextcloud. + +To access this setting, + +* Navigate to **Administration** > **Workspace** > **Settings** > **Webdav Integration**. +* **Webdav Integration Enabled**: When set to true, WebDAV is available on the server, +* Navigating to the :heavy\_plus\_sign: button on the right side of your message composer inside any chat or room +* Click :heavy\_plus\_sign: **Add Server** + +To integrate a WebDAV server, follow this article on [nextcloud-and-webdav.md](../integrations/nextcloud-and-webdav.md "mention") diff --git a/use-rocket.chat/workspace-administration/settings/webrtc.md b/use-rocket.chat/workspace-administration/settings/webrtc.md new file mode 100644 index 0000000000..701610d8f9 --- /dev/null +++ b/use-rocket.chat/workspace-administration/settings/webrtc.md @@ -0,0 +1,18 @@ +--- +description: >- + Broadcast audio, and video material, as well as transmit arbitrary data + between browsers without the need for a middleman +--- + +# WebRTC + +[WebRTC](https://webrtc.org) (Web Real-Time Communication) is a technology that allows Web apps and sites to record and potentially broadcast audio and/or video material, as well as transmit arbitrary data between browsers without the need for a middleman. + +To access this setting, go to **Administration** > **Workspace** > **Settings** > **WebRTC**. + +* **Enable for Public Channels**: WebRTC will be enabled for all public channels if set to true. +* **Enable for Private Channels**: When enabled, private channels will have WebRTC. +* **Enable for Direct Messages**: If set to true, direct messages will have WebRTC. +* **STUN/TURN Servers**: A list of STUN and TURN servers separated by a comma. + + Username, password, and port are allowed in the format `username:password@stun:host:port` or `username:password@turn:host:port`. diff --git a/use-rocket.chat/workspace-administration/user-status.md b/use-rocket.chat/workspace-administration/user-status.md new file mode 100644 index 0000000000..4376899716 --- /dev/null +++ b/use-rocket.chat/workspace-administration/user-status.md @@ -0,0 +1,68 @@ +# User Status + + + +The Rocket.Chat User Status setting lets you manage users' presence and status in your workspace. + +A **Presence** is used to determine the **Status** of a user in the workspace. + +By default, Rocket.Chat has the following Presence presets. + +* **Online**: Used to indicate a user is online and available. +* **Away**: Indicates a user is idle and away from the workspace. See how to configure the Idle time limit here [Default User Preferences](settings/account-settings/#default-user-preferences) or as a user in [User Presence](../user-guides/user-panel/my-account/#user-presence). +* **Busy**: This shows a user is busy and unavailable on the workspace. +* **Offline**: Used to indicate a user is offline and not connected. + +To access this menu, + +Navigate to **Administration** > **Workspace** > **User Status** + +## Presence Service + +With the Presence service enabled, users can see the status of other users in the workspace. + +To enable the Presence service, + +* Navigate to **Administration** > **Workspace** > **User Status** > **Presence service.** The Presence service cap side panel opens up. +* Toggle the **Service status** to on. + +{% hint style="warning" %} +The Presence service automatically gets disabled when concurrent connections are up to 200 on Rocket.Chat _Free Edition(Community Edition)_. + +[Enterprise workspaces](settings/enterprise.md) have no cap on the Presence service. +{% endhint %} + +{% hint style="info" %} +When the Presence service gets disabled automatically due to the cap on concurrent connections, + +* Users see the status indicator for all users, including themselves as `disabled`. +* The workspace Administrator has to manually reactivate the Presence service when the total number of connections drops below the connection limit of 200. +* Workspace users and administrator(s) are notified that Presence is inactive because the workspace has exceeded the connection limit. +{% endhint %} + +## Custom Status + +To create a custom status, + +* Navigate to **Administration** > **Workspace** > **User Status** > **New custom status.** A side panel opens up. +* Enter a **name** for your custom status. +* Select a **presence** to tie with your custom status. +* Hit **Save** + +### Use Custom Status + +Created custom status shows up along with the default status presets to all users across your workspace. + +To set a custom status, + +* Click on your avatar by the top left of your workspace +* A dropdown is seen +* Select the custom status from the list of statuses. + +### Delete/Edit Custom Status + +To delete or edit a custom status, + +* Navigate to **Administration** > **Workspace** > **User Status** +* Search and click the custom status you want to edit or delete. +* Hit **Delete** or **Edit** to delete or update the selected status, respectively. diff --git a/use-rocket.chat/workspace-administration/users/README.md b/use-rocket.chat/workspace-administration/users/README.md new file mode 100644 index 0000000000..47c3348f00 --- /dev/null +++ b/use-rocket.chat/workspace-administration/users/README.md @@ -0,0 +1,37 @@ +--- +description: Users menu lets you view, create, edit, delete, deactivate, and, invite users. +--- + +# Users + +Now you have your Rocket.Chat workspace is up and running and maybe have some users or none. Visit this menu to view, create, edit, delete, activate, and perform other actions regarding user accounts on your server. + +To access this menu, go to **Administration** > **Workspace** > **Users**. + +## Invite users to your Rocket.Chat workspace + +To access this menu: + +* Navigation to **Administration > Workspace > Users** +* Click **Invite** on the top right +* Enter the email of the invitees +* Hit **Send**, and they’ll receive it in their email. + +{% hint style="info" %} +Note that for self-managed workspaces, you need to have [SMTP enabled](https://docs.rocket.chat/guides/administration/settings/email/setup#set-up-your-credentials) in order to be able to send emails through the workspace. If you wish not to do so, you can still [invite users by creating their credentials](https://docs.rocket.chat/guides/administration/admin-panel/users/add-new-users). +{% endhint %} + +## Add new users + +To add(create) new users: + +* Navigate to **Administration > Workspace > Users** +* Click **New** on the top right +* Enter user credentials +* Hit **Save** + +{% hint style="info" %} +The settings **Set random password and send by email** and **Send welcome email** will require [SMTP enabled](https://docs.rocket.chat/guides/administration/settings/email/setup#set-up-your-credentials) in order to successfully send emails. +{% endhint %} + +You can also [add-users-through-identity-management-and-authentication-services.md](add-users-through-identity-management-and-authentication-services.md "mention") diff --git a/use-rocket.chat/workspace-administration/users/add-users-through-identity-management-and-authentication-services.md b/use-rocket.chat/workspace-administration/users/add-users-through-identity-management-and-authentication-services.md new file mode 100644 index 0000000000..3e8bf4dae1 --- /dev/null +++ b/use-rocket.chat/workspace-administration/users/add-users-through-identity-management-and-authentication-services.md @@ -0,0 +1,29 @@ +# Add users by Identity management and authentication services + +Rocket. Chat provides you with various options for adding users to your workspace. + +### LDAP Directory + +LDAP configuration on Rocket.Chat can be used to establish connections, used for authentication, storing information about users and sync your data. + +**LDAP** (Lightweight Directory Access Protocol) enables anyone to locate data about your server or company. [https://docs.rocket.chat/guides/administration/admin-panel/settings/ldap/ldap-sync-settings#sync-import](https://docs.rocket.chat/guides/administration/admin-panel/settings/ldap/ldap-sync-settings#sync-import) + +To configure LDAP authentication, go to **Administration** > **Workspace** > **Setting** > **LDAP.** + +### SAML + +**SAML** (Security Assertion Markup Language) is used for exchanging authentication and authorization data. [https://docs.rocket.chat/guides/administration/admin-panel/settings/saml/rocket.chat-server-settings#connection](https://docs.rocket.chat/guides/administration/admin-panel/settings/saml/rocket.chat-server-settings#connection) + +To access SAML setting, go to **Administration** > **Workspace** > **Settings** > **SAML.** + +### OAuth + +You can configure authentication methods beyond just username and password. [https://docs.rocket.chat/guides/administration/admin-panel/settings/oauth](https://docs.rocket.chat/guides/administration/admin-panel/settings/oauth) + +To access OAuth setting, go to **Administration > Workspace > Settings> OAuth.** + +### CAS + +**CAS** (Central Authentication Service) allows members to use one set of credentials to sign in to multiple sites over multiple protocols. [https://docs.rocket.chat/guides/administration/admin-panel/settings/cas](https://docs.rocket.chat/guides/administration/admin-panel/settings/cas) + +To access this setting, go to **Administration** > **Workspace** > **Settings** > **CAS**. \ No newline at end of file diff --git a/use-rocket.chat/workspace-administration/users/guest-users.md b/use-rocket.chat/workspace-administration/users/guest-users.md new file mode 100644 index 0000000000..d419f4c174 --- /dev/null +++ b/use-rocket.chat/workspace-administration/users/guest-users.md @@ -0,0 +1,79 @@ +--- +description: >- + If you want to invite external users to your Rocket.Chat workspace, you can + add them as guest users. +--- + +# Guest users + +
+ +{% hint style="info" %} +Guest is a role that is available only on the Enterprise edition, and it's not possible to change the permissions for this role. +{% endhint %} + +{% hint style="success" %} +All users assigned to the guest role don't count on the cap of seats, but they count in the guest cap. +{% endhint %} + +### What can a guest user do? + +Guest users have fewer capabilities than regular users. + +As a guest user of Rocket.Chat, you can start the conversation, view direct messages, view joined rooms, and view the private room. + +{% hint style="info" %} +It's possible to set a maximum number of guest users for every license. + +It's possible to set a maximum number of channels a guest can join for every license. +{% endhint %} + +## Manage your guest users + +### **Guest Access Permissions** + +{% hint style="info" %} +Guest accounts are only available on Enterprise, and the permissions are pre-defined for this role. +{% endhint %} + +Go to **Administration > Workspace > Permissions.** You will notice that the permissions that a guest role has are: start the conversation, view direct messages, view joined the room, and view private room. + +#### Permissions Available **for the Guest Role** + +![Permissions](../../../.gitbook/assets/GuestUser\_Permissions.png) + +### Add a Guest User + +{% hint style="info" %} +You must be an administrator to add a guest to Rocket.Chat workspace. +{% endhint %} + +* Go to **Administration > Workspace > Users > New** +* On the **Add User** page\*\*,\*\* enter the guest users' information: + * **Name:** Enter the name of the guest user. + * **Username:** Enter the guest users's username. + * **Email:** Enter the guest users' email address. + * **Status Message:** Set the guest user's status message. + * **Bio:** Enter the guest user's bio information. + * **Nickname:** Enter the guest users's nickname. + * **Password:** Enter the guest users's password. + * **Require password change:** Enable or disable this option to change or reset the password. + * **Set random password and send by email:** Enable or disable this option to set a random password and send by email. + * **Roles:** Select the **guest** role from the dropdown menu. + * **Join default channels:** Set whether you want the guest user to join default channels. + * **Send welcome email:** Set whether you want to send a welcome email \*\*\*\* to the guest user. +* Click **Save**. + +{% hint style="info" %} +**Roles** - This will define what permissions a user has. +{% endhint %} + +Once the guest user is added, you can edit, activate and deactivate the guest role. + +### Activate Guest Users + +* Go to **User Info** and then click **Activate.** + +### Deactivate Guest Users + +* Go to **User Info** and then click **Deactivate.** diff --git a/use-rocket.chat/workspace-administration/view-logs.md b/use-rocket.chat/workspace-administration/view-logs.md new file mode 100644 index 0000000000..76db306ce5 --- /dev/null +++ b/use-rocket.chat/workspace-administration/view-logs.md @@ -0,0 +1,12 @@ +--- +description: This menu shows you your workspace logs. +--- + +# View Logs + +In the **View Logs** section of your Rocket.Chat server, you can see all the information configured to be logged. This can help you troubleshoot or monitor the state of your server's activity. + +Check out the [Logs Settings](settings/logs.md) for additional configurations on what to log. + +To access this menu, go to **Administration** > **Workspace** > **View Log** +