Skip to content

Installation

idaas.nl is an identity as a service solution. You do not need to install it yourself. But it is possible to run idaas.nl on premise. This section describes how.

Demo Environment

A prerequisite to start the demo environment is a system with docker and bash.

Download the source code from github.com/idaas-nl/idaas.nl.

Run the commands listed below and access your tenant via http://login.notidaas.nl

Note: notidaas.nl is a special domain. This domain and all subdomains point to localhost. You'll need to create a local (trusted) certificate. Below you'll find how.

docker-compose up
docker-compose up

After a minute or so, visit http://login.notidaas.nl and login with admin@login.notidaas.nl and password changeit.

In the demo environment, mails are intercepted by MailHog and are visible via http://localhost:8025.
The S3 server is provided by MinIO and accessible via http://localhost:8900

Production Environment

There are many possibilities to set up a production environment. Because idaas.nl is a Laravel application, you can benefit from the flexibility this framework offers. The config files in the config/ folder show what can be configured.

PHP Application server

To simplify scaling it is possible to run idaas.nl on a serverless-platform like Laravel Vapor. But is is also possible to run it on most other serverless platforms, although that may require a little extra effort.

Check Laravel's documentation for other deployment scenarios.

Database server

Use one of the following databases (or compatible).

  • MySQL 5.7+
  • PostgreSQL 9.6+
  • SQLite 3.8.8+
  • SQL Server 2017+

To simplify scaling, you may want to consider Amazon Aurora, Google's Cloud SQL or Azure SQL.

S3-Compatible Object Storage

Any S3-Compatible Object Storage can be used. Specifically, idaas.nl uses a functionality referred to as uploading objects using presigned URLs.

Use for example MinIO, DigitalOcean Spaces, or Amazon S3.

Mail provider

Either use SMTP, Mailgun, Postmark, or Amazon SES.

Idaas on Kubernetes

An example Kubernetes configuration can be found in ./kubernetes/.

This example can serve as inspiration to create a production grade Kubernetes cluster.

In order to start the Kubernetes cluster in minikube, run the following.

# Start minikube and 
minikube start --mount-string="$(pwd):/var/www/html" --mount --extra-config=apiserver.service-node-port-range=80-30000
# Build the docker images
env $(cat .env.demo | xargs) docker-compose build laravel.test node.test
# Apply the configuration
minikube kubectl apply -- -f ./kubernetes/
# Expose all services
minikube service --all
# Open a Socks5 proxy
ssh -i ~/.minikube/machines/minikube/id_rsa -D 8080 docker@$(minikube ip)
# Start minikube and 
minikube start --mount-string="$(pwd):/var/www/html" --mount --extra-config=apiserver.service-node-port-range=80-30000
# Build the docker images
env $(cat .env.demo | xargs) docker-compose build laravel.test node.test
# Apply the configuration
minikube kubectl apply -- -f ./kubernetes/
# Expose all services
minikube service --all
# Open a Socks5 proxy
ssh -i ~/.minikube/machines/minikube/id_rsa -D 8080 docker@$(minikube ip)

Use whatever method to open a shell in a pod of the idaas service and run the following.

php artisan migrate
php artisan tenant:master login youremail@example.com
php artisan migrate
php artisan tenant:master login youremail@example.com

Now configure your browser to use localhost:8080 as a SOCKS5 proxy and browse to login.notidaas.nl.