Installation

Mixeway is deployed as a docker image. Base installation contains 3 containers: MixewayBackend MixewayFrontend [PostgreSQL Database](https://hub.docker.com//postgres)

Requirements

  • docker-compose
  • wget/curl
  • unzip

Setup Mixeway

# Create project directory
mkdir mixeway && cd "$_"
# Download latest release
wget https://github.com/Mixeway/MixewayHub/releases/download/v1.6.3/MixewayHub.zip
# Unzip contents
unzip MixewayHub.zip
# Run startup script
./startup.sh
# Run application
docker-compose up

startup.sh script is preparing environment variable and create self-signed certificates. As a result file with content is created:

FRONTEND_URL=https://localhost
KEYALIAS=localhost
TRUSTPASS=changeit
P12PASS=changeit
PROFILE=prod
CERTIFICATE=/pki/cert.crt
PRIVATEKEY=/pki/private.key
VAULT_ENABLED=false

All possible values in environments file

NameRequiredDefaultDescription
FRONTEND_URLrequired-URL under which site will be avaliable to users
KEYALIASrequired-alias of the key in generated java key store
TRUSTPASSrequire-password to the truststore
P12PASSrequired-password to pkcs12 file with certificate and private key
PROFILErequiredprodprofile used, avaliable options prod and keycloak
CERTIFICATErequired-path to the certificate in container
PRIVATEKEYrequired-path to the private key in container
DB_URLrequiredjdbc:postgresql:// MixerDB:5432/mixerconnection string to DB
DB_USERrequiredmixeruserDB user
DB_PASSWORDrequiredmixerpasswordDB password
Vault configuration
VAULT_ENABLEDrequiredtruedefine if Vault will be used for password storing
VAULT_TOKENnot required-if VAULT_ENABLED=true token to authenticate in vault
VAULT_SCHEMEnot requiredhttpif VAULT_ENABLED=true protocol used to communicate with vault
VAULTAPPNAMEnot required-if VAULT_ENABLED=true Appname in vault
VAULT_HOSTnot required-if VAULT_ENABLED=true hostname of vault
VAULT_PORTnot required8200if VAULT_ENABLED=true port of vault
VAULT_PATHnot requiredsecret/if VAULT_ENABLED=true path of where secrets will be stored
VAULT_PATHnot requiredsecret/if VAULT_ENABLED=true path of where secrets will be stored
Social login configuration
FACEBOOKAPPIDnot required-APP_ID in facebook if want to use login with facebook
FACEBOOKAPPIDnot required-FACEBOOKAPPID in facebook if want to use login with facebook
GITHUBAPPIDnot required-GITHUBAPPID in github if want to use login with github
GITHUB_SECRETnot required-GITHUB_SECRET in github if want to use login with github
Keycloak login configuration
KEYCLOAK_REALMnot required-if PROFILE=keycloak realm used by keycloak
KEYCLOAK_URLnot required-if PROFILE=keycloak URL of keycloak
KEYCLOAK_SSLnot requiredexternalif PROFILE=keycloak encryption schema
KEYCLOAKCLIENTIDnot required-if PROFILE=keycloak keycloak client id
KEYCLOAK_SECRETnot required-if PROFILE=keycloak keycloak secret id

Hashicorp Vault Integration

Mixeway is orchestration platform and as such it require to be able to communicate with number of security tools. It is recommended to use Hashicorp Vault as a place where Mixeway will store passwords for security tools integrated with Mixeway. This way Mixeway will put password to vault and get it anytime it will be used. Without this integration passwords to vulnerability scanners will be stored in clear text in database. You will see notification in logs:

####################################################################################################################
#                                                   WARRNING!                                                      #
#                                         Vault Configuration is not set                                           #
#                                         Scanner passwords will be stored                                         #
#                                         in clear text. It is recommended                                         #
#                                         To use vault.                                                            #
#                                         Read Mixeway docummentation                                              #
####################################################################################################################

In order to enable such integration simply put:

VAULT_ENABLED=true
VAULT_TOKEN={token}
VAULT_SCHEME=https
VAULT_APP_NAME=mixeway
VAULT_HOST=localhost
VAULT_PORT=8200

at the end of environments file