Coder Social home page Coder Social logo

wireapp / wire-server Goto Github PK

View Code? Open in Web Editor NEW
2.6K 2.6K 324.0 63.51 MB

🇪🇺 Wire back-end services

Home Page: https://wire.com

License: GNU Affero General Public License v3.0

Makefile 0.32% Haskell 85.29% Rust 0.34% C 0.09% Shell 0.85% HTML 9.59% Python 0.56% Dockerfile 0.01% Nix 2.38% JavaScript 0.01% Smarty 0.37% Mustache 0.11% jq 0.07% DIGITAL Command Language 0.01%
haskell rust server wire

wire-server's Introduction

Wire™

Wire logo

This repository is part of the source code of Wire. You can find more information at wire.com or by contacting [email protected].

You can find the published source code at github.com/wireapp/wire.

For licensing information, see the attached LICENSE file and the list of third-party licenses at wire.com/legal/licenses/.

No license is granted to the Wire trademark and its associated logos, all of which will continue to be owned exclusively by Wire Swiss GmbH. Any use of the Wire trademark and/or its associated logos is expressly prohibited without the express prior written consent of Wire Swiss GmbH.

Wire server

This repository contains the source code for the Wire server. It contains all libraries and services necessary to run Wire.

For documentation on how to self host your own Wire-Server see this section. Federation is on our long term roadmap.

See more in "Open sourcing Wire server code".

Contents of this repository

This repository contains the following source code:

  • services

    • nginz: Public API Reverse Proxy (Nginx with custom libzauth module)
    • galley: Conversations and Teams
    • brig: Accounts
    • gundeck: Push Notification Hub
    • cannon: WebSocket Push Notifications
    • cargohold: Asset (image, file, ...) Storage
    • proxy: 3rd Party API Integration
    • restund: STUN/TURN server for use in Audio/Video calls
    • spar: Single-Sign-On (SSO)
  • tools

    • db/: Migration tools (e.g. when new tables are added)
    • stern/: Backoffice tool (basic Swagger based interface)
  • libs: Shared libraries

It also contains

  • build: Build scripts and Dockerfiles for some platforms
  • deploy: (Work-in-progress) - how to run wire-server in an ephemeral, in-memory demo mode
  • doc: Documentation
  • hack: scripts and configuration for kuberentes helm chart development/releases mainly used by CI
  • charts: Kubernetes Helm charts. The charts are mirroed to S3 and can be used with helm repo add wire https://s3-eu-west-1.amazonaws.com/public.wire.com/charts. See the Administrator's Guide for more info.

Architecture Overview

The following diagram gives a high-level outline of the (deployment) architecture of the components that make up a Wire Server as well as the main internal and external dependencies between components.

wire-arch

Communication between internal components is currently not guarded by dedicated authentication or encryption and is assumed to be confined to a private network.

Development setup

How to build wire-server binaries

There are two options:

1. Use docker

If you don't wish to build all docker images from scratch (e.g. the ubuntu20-builder takes a very long time), ready-built images can be downloaded from here.

If you wish to build your own docker images, you need docker version >= 17.05 and make. Then,

# optionally:
# make docker-builder # if you don't run this, it pulls the ubuntu20-builder image from quay.io
make docker-deps docker-intermediate docker-services

# subsequent times, after changing code, if you wish to re-create docker images, it's sufficient to
make docker-intermediate docker-services

will, eventually, have built a range of docker images. Make sure to give Docker enough RAM; if you see make: *** [builder] Error 137, it might be a sign that the build ran out of memory. You can also mix and match – e.g. pull the ubuntu20-builder image and build the rest locally.

See the Makefiles and Dockerfiles, as well as build/ubuntu/README.md for details.

2. Use nix-provided build environment

This is suitable only for local development and testing. See build instructions in the developer documentation.

How to install and run wire-server

You have two options:

  • Option 1. (recommended) Install wire-server on kubernetes using the configuration and instructions provided in wire-server-deploy. This is the best option to run it on a server and recommended if you want to self-host wire-server.

  • Option 2. Compile everything in this repo, then you can use the dist/run-services. This option is intended as a way to try out wire-server on your local development machine and not suited for production.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.