Deployment Overview of Curiosity on Server¶
Prerequisites and Basic Requirements¶
To ensure the successful deployment of Curiosity, the following system requirements must be met:
-
Operating System: Debian or Ubuntu-based distributions.
-
Privileges: Root or sudo access is required for package installation and Docker management.
-
Dependencies: The system requires
wget,curl,libc-dev, andlibsnappy1v5. -
Network Ports:
-
Port
443(HTTPS) must be open for external traffic. -
Port
8080is used internally by the application container.
FQDN of the final panel on the hostkey.in domain¶
The application is accessible via a specific subdomain generated based on the server ID.
| Parameter | Value |
|---|---|
| Prefix | curiosity |
| Domain | hostkey.in |
| Full template | curiosity{Server_ID}.hostkey.in |
File and Directory Structure¶
The application uses the following directory structure for configuration and data persistence:
-
/root/nginx: Contains the Nginx reverse proxy configuration files (compose.yml). -
/root/curiosity: Contains the Curiosity application deployment files (compose.yml). -
/data/nginx/user_conf.d: Directory used for custom Nginx configurations. -
curiosity-data(Docker Volume): Persistent storage for application data located at/data/curiositywithin the container.
Application Installation Process¶
The installation process involves several stages to prepare the environment and deploy the services:
-
System Preparation: The system packages are updated and upgraded via
apt. Necessary libraries and utilities (wget,curl,libc-dev,libsnappy1v5) are installed. -
Docker Environment Setup: Docker is installed and configured to manage containerized services.
-
Proxy Configuration: An Nginx reverse proxy with Certbot integration is initialized in
/root/nginxusing a Docker Compose file. -
Application Deployment: The Curiosity application is deployed in
/root/curiosityvia Docker Compose, utilizing the specific imagecuriosityai/curiosity:70269.
Access Rights and Security¶
-
Firewall: Only essential ports are exposed. The Nginx container operates using
network_mode: hostto manage SSL termination and traffic routing. -
User Management: An administrative user is configured for the application (default username:
admin). -
SSL/TLS: SSL certificates are managed via Certbot and stored in a shared Docker volume named
nginx_secrets.
Docker Containers and Their Deployment¶
The deployment consists of two primary containerized services.
Nginx Proxy Container¶
This container handles incoming HTTPS requests and manages SSL certificates.
-
Image:
jonasal/nginx-certbot:latest -
Network Mode:
host -
Volumes:
-
nginx_secrets:/etc/letsencrypt -
/data/nginx/user_conf.d:/etc/nginx/user_conf.d -
Environment Variables:
-
CERTBOT_EMAIL: Set to the administrative contact email for certificate renewal notifications.
Curiosity Application Container¶
This is the main application service.
-
Image:
curiosityai/curiosity:70269 -
Container Name:
curiosity -
Restart Policy:
unless-stopped -
Ports:
127.0.0.1:8080 -> 8080(Internal access only) -
Volumes:
-
curiosity-data:/data -
Environment Variables:
-
MSK_GRAPH_STORAGE:/data/curiosity -
MSK_PUBLIC_ADDRESS: The full FQDN of the server. -
MSK_ADMIN_USER: Administrative username. -
MSK_ADMIN_EMAIL: Administrative email address. -
MSK_ADMIN_PASSWORD: Password for the administrative account.
Application Update Instructions¶
To update the Curiosity application to the latest version, execute the following commands in the application directory:
Location of Configuration Files and Data¶
-
Nginx Compose File:
/root/nginx/compose.yml -
Curiosity Compose File:
/root/curiosity/compose.yml -
Application Data Volume:
curiosity-data(managed by Docker) -
SSL Certificates: Managed via the
nginx_secretsvolume.
Available Ports for Connection¶
| Port | Service | Access Type |
|---|---|---|
| 443 | HTTPS (Nginx Proxy) | External/Public |
| 8080 | Curiosity API/Web | Internal Only |
Starting and Stopping the Application¶
The application is managed using Docker Compose.
To start the services:
To stop the services: