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.

source .env.demo
docker run --rm \
    -u "$(id -u):$(id -g)" \
    -v $(pwd):/var/www/html \
    -w /var/www/html \
    laravelsail/php81-composer:latest \
    composer install --ignore-platform-reqs
./vendor/bin/sail up -d
./vendor/bin/sail artisan migrate
./vendor/bin/sail artisan tenant:master login youremail@example.com

The following commands are available. Prefix these commands with ./vendor/bin/sail artisan in order to run these.

tenant:delete         List all tenants (including the master tenant)
tenant:garbage        Remove expired module results and access tokens
tenant:list           List all tenants (including the master tenant)
tenant:master         Create a new master
tenant:new            Create a new tenant

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)

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

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