This is the public repository for the open source Ecstasy PaaS project, sponsored by xqiz.it.
This project is being actively developed, but is not yet considered a production-ready release.
The project is organized as a number of sub-projects, with the important ones to know about being:
The common library (./common
), contains common interfaces shared across platform modules.
The kernel library (./kernel
), contains the boot-strapping functionality. It's responsible for starting system services and introducing them to each other.
The host library (./host
), contains the manager for hosted applications.
The platformDB library (./platformDB
), contains the platform database.
The platformUI library (./platformUI
), contains the end-points for the platform web-application.
~/Development/platform/
, but you may use whatever location makes sense for your environment.Note that steps 2 and 3 are temporary, and step 3 needs to be re-executed every time after an OS reboot.
Create "xqiz.it" subdirectory under the user home directory for the platform persistent data. The subdirectory "platform" will be used to keep the platform operational information and subdirectory "users" for hosted applications.
Create a file "~/xqiz.it/platform/port-forwarding.conf" with the following content:
rdr pass on lo0 inet proto tcp from any to self port 80 -> 127.0.0.1 port 8080 rdr pass on lo0 inet proto tcp from any to self port 443 -> 127.0.0.1 port 8090
Run the following command to redirect http and https traffic to unprivileged ports:
sudo pfctl -evf ~/xqiz.it/platform/port-forwarding.conf
Make sure you can ping the local platform address:
ping xtc-platform.localhost.xqiz.it
The domain name xtc-platform.localhost.xqiz.it
should resolve to 127.0.0.1
. This allows the same xqiz.it cloud-hosted platform to be self-hosted on the localhost
loop-back address, enabling local and disconnected development.
If that address fails to resolve you may need to change the rules on you DNS server. For example, for Verizon routers you would need add an exception entry for "127.0.0.1" to your DNS Server settings: "Exceptions to DNS Rebind Protection" (Advanced - Network Settings - DNS Server)
Make sure you have the latest gradle, node, yarn and xdk-latest installed. If you are using brew
, you can simply say:
brew install gradle node yarn
Change your directory to the ./platformUI/gui
directory inside the local git repo installed above.
cd ~/Development/platform/platformUI/gui
Make sure all necessary node modules are installed within that directory using the following command:
npm install
If you plan to use quasar
dev environment, please install it globally by the following command:
npm install -g @quasar/cli
Build the platform services using the gradle command (from within the "platform" directory):
cd ~/Development/platform/ gradle clean build
Start the platform using the command (from within the "platform" directory):
xec -L lib/ lib/kernel.xtc [password]
Note: The password you choose during the very first run will be used to encrypt the platform key storage. You will need the same password for all subsequent runs.
Open the locally hosted platform web page:
https://xtc-platform.localhost.xqiz.it
Note: Using the locally-created (self-signed) certificate from step 5 above, you will receive warnings from the browser about the unverifiability of the website and its certificate.
Follow the instructions from the Examples repository to build and "upload" a web application.
Log into the "Ecstasy Cloud" platform using the pre-defined test user "admin" and the password "password".
Go to the "Modules" panel and install any of the example module (e.g. "welcome.examples.org").
Go to the "Application" panel, register a deployment (e.g. "welcome") and "start" it
Click on the URL to launch your application web page.
To stop the server cleanly, from a separate shell run this command:
curl -k -b cookies.txt -L -i -w '\n' -X POST https://xtc-platform.localhost.xqiz.it/host/shutdown
If you do not stop the server cleanly, the next start-up will be much slower, since the databases on the server will need to be recovered.
The license for source code is Apache 2.0, unless explicitly noted. We chose Apache 2.0 for its compatibility with almost every reasonable use, and its compatibility with almost every license, reasonable or otherwise.
The license for documentation (including any the embedded markdown API documentation and/or derivative forms thereof) is Creative Commons CC-BY-4.0, unless explicitly noted.
To help ensure clean IP (which will help us keep this project free and open source), pull requests for source code changes require a signed contributor agreement to be submitted in advance. We use the Apache contributor model agreements (modified to identify this specific project), which can be found in the license directory. Contributors are required to sign and submit an Ecstasy Project Individual Contributor License Agreement (ICLA), or be a named employee on an Ecstasy Project Corporate Contributor License Agreement (CCLA), both derived directly from the Apache agreements of the same name. (Sorry for the paper-work! We hate it, too!)
The Ecstasy name is a trademark owned and administered by The Ecstasy Project. Unlicensed use of the Ecstasy trademark is prohibited and will constitute infringement.
The xqiz.it name is a trademark owned and administered by Xqizit Incorporated. Unlicensed use of the xqiz.it trademark is prohibited and will constitute infringement.
All content of the project not covered by the above terms is probably an accident that we need to be made aware of, and remains (c) The Ecstasy Project, all rights reserved.