Community App Development Guide
This guide explains how to develop, package, configure, secure, and deploy applications for the Aridhia DRE. It is intended for developers creating applications that run inside a workspace.
Applications must provide an interactive web interface. Headless applications that only expose an API or run background jobs are not currently supported.
Before you begin
Applications on the Aridhia DRE run in a restricted, containerised environment. Before development begins, make sure your application can:
- Serve a browser-accessible graphical interface.
- Serve traffic over HTTP on one exposed port.
- Run from a Linux Docker image.
- Run as a non-root user with a user and group ID greater than 1000.
- Store persistent data in the workspace file volume or the workspace PostgreSQL database.
- Use the configured HTTP proxy for permitted internet access.
HTTP/2 is not supported. TLS is managed by the platform, so applications do not need to encrypt traffic themselves.
Application requirements
Web interface and traffic
Applications should serve content that browsers recognise as a website, typically using HTML, CSS, and JavaScript. You may use any suitable programming language, framework, or library.
Traffic must be served over HTTP. Only one application port can be exposed. WebSockets are supported.
The /aridhia path is reserved for internal platform use and requests to this path are not routed to the application. Do not use it for application pages or API endpoints.
Application data
Application data can be persisted in either the workspace file volume or the workspace PostgreSQL database. Blob storage is not supported.
Configuration
Application configuration is currently set by Aridhia on behalf of customers. The following settings control how an application is displayed and run.
| Setting | Description | Accepted values | Default |
|---|---|---|---|
| Display name | Name shown in the application list. | Any alphanumeric string. | — |
| Image name | Repository name that identifies the application image. | Lowercase letters, digits, periods, underscores, and hyphens. | — |
| Image tag | Tag selected when the image is pulled. | ASCII letters, digits, underscores, periods, and hyphens. Max 128 chars. | latest |
| Port to expose | Port on which the application serves HTTP traffic. | Numeric value from 1 to 65535. | 8080 |
| Logo icon | Image displayed on the application tile. | JPEG or PNG. Rendered at 251 × 185 pixels. | Aridhia template image |
| Workspace database access | Controls whether PostgreSQL connection details are provided. | true or false. |
true |
| Workspace file volume access | Controls access to the workspace file volume. | none, read-only, or read-write. |
read-write |
| Workspace file volume mount point | Path where the workspace file volume is mounted. | Any path that exists in the container. | /home/workspace/files |
Resource configuration
| Resource | Meaning | Examples | Default |
|---|---|---|---|
| CPU request | Minimum guaranteed CPU allocation. | 1, 1.5, 1000m |
750m |
| CPU limit | Maximum CPU allocation. | CPU quantity supported by Kubernetes. | 1500m |
| Memory request | Minimum guaranteed memory allocation. | 128Mi, 256Mi |
1Gb |
| Memory limit | Maximum memory allocation. | Kubernetes memory quantity. | 10Gb |
Environment variables
The platform injects the following variables into the application environment.
| Variable | Description | Example |
|---|---|---|
WORKSPACE_ID |
Numerical identifier of the workspace. | 33 |
APP_IMAGE_NAME |
Name of the Docker image used to run the application. | jupyter_notebook |
PGHOST |
PostgreSQL host address. | 192.168.1.1 |
PGDATABASE |
Workspace PostgreSQL database name. | workspace_db |
PGUSER |
PostgreSQL username. | workspace_user |
PGPASSWORD |
PostgreSQL password. | password |
http_proxy |
HTTP proxy provided by Aridhia. | http://proxy.example:1111 |
Security and network access
Applications run in a video-streaming sandbox environment designed to prevent data exfiltration. The platform applies a strict Content Security Policy.
Runtime security
- The main application process must not run as
root. - The process user and group ID must be greater than 1000.
- The container must operate within the platform security context.
Network access
Network access is restricted. Applications cannot reach other hosts on the local network. Outbound internet access is available through the Aridhia HTTP proxy for allow-listed destinations.
Integrations
PostgreSQL database
When database access is enabled, the platform provides PostgreSQL connection details through environment variables. Most PostgreSQL clients recognise these variables automatically.
Workspace file volume
A filesystem volume is mounted by default (typically at /home/workspace/files). Access is read-write by default but can be restricted.
Build and deploy an application
- Build a Linux Docker image containing the application and all required dependencies.
- Run the image locally and verify that it serves HTTP traffic on the configured port.
- Confirm that the application runs as a non-root user with a user and group ID greater than 1000.
- Tag the image using the repository and tag provided for the application.
- Push the image to the Aridhia Azure Container Registry.
- Start the application from the Aridhia DRE.
Application readiness checklist
- The application provides an interactive web interface.
- The application serves HTTP traffic on one configured port.
- The application does not use the reserved
/aridhiapath. - The Docker image is Linux-based and contains all runtime dependencies.
- The main process runs as a non-root user (UID/GID > 1000).
- Database and file volume access are configured appropriately.
- Outbound destinations are allow-listed.
- The image has been scanned, updated, tagged, and pushed.
Troubleshooting
| Issue | Possible cause | What to check |
|---|---|---|
| The application does not start | Image, tag, or runtime user mismatch. | Confirm image exists, is Linux-based, and runs as non-root (UID > 1000). |
| The application starts but the page does not load | Wrong port or unsupported protocol. | Verify HTTP traffic on the configured port. Avoid HTTP/2 and /aridhia path. |
| External web requests fail | Allow-list restriction or proxy config. | Check allow-lists and ensure application uses http_proxy variables. |
| Database connections fail | Access disabled or variables not read. | Confirm database access is enabled and client uses PG* variables. |
If these checks do not resolve the issue, contact Aridhia’s Service Desk at servicedesk@aridhia.com.
Frequently asked questions
Can I use any programming language or framework?
Yes, provided the application meets the runtime requirements and is packaged as a Linux Docker image.
Can my application expose more than one port?
No. Only one application port can be exposed.
Where should application data be stored?
Use the workspace PostgreSQL database or the mounted workspace file volume.