Why You Might Need a Dedicated Cloud
- Your project has grown beyond the limits of free sandbox hosting.
- You need more performance or scaling.
- Security policies require isolated environments.
Step 1: Choose a Cloud Instance
Fractal Platform runs efficiently on low-cost instances like Amazon EC2 t2.micro. These come with 1GB RAM and Amazon Linux.
Amazon offers 750 hours free per month for the first year. After that, it costs around $0.0058/hour (~$4.18/month).
Step 2: Launch Your EC2 Instance
Go to EC2 instances section of AWS Console
Name it MyTestInstance, choose Amazon Linux and t2.micro type.
Create/select a key pair, enable HTTP/HTTPS, then click "Launch".
Step 3: Allocate a Static IP
Go to Manage IP Addresses in the AWS menu.
Click Allocate to reserve an IP.
Click Allocate Elastic IP Address.
Copy the IP and update your domain DNS settings.
Step 4: Configure the Instance
Click Connect in EC2 to open the terminal.
Install Docker
sudo yum update -y
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER
newgrp docker
Run Fractal Docker Container
sudo docker pull fraplat/image:v1.0
sudo docker run -d \
--name mycontainer \
--restart always \
-v app_databases:/app/Databases \
-v app_layouts:/app/Layouts \
-v app_deployments:/app/Deployments \
-v app_files:/app/wwwroot/files \
-p 8080:8080 \
-p 8081:8081 \
fraplat/image:v1.0
Install NGINX
sudo yum install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
Configure NGINX Proxy (replace mydomain.com on your own domain)
Save config: Ctrl+O, Enter, Ctrl+X
sudo nano /etc/nginx/conf.d/kestrel.conf
server {
listen 80;
server_name mydomain.com www.mydomain.com;
return 301 https://$host$request_uri;
}
server {
listen 80;
server_name *.mydomain.com;
return 301 https://$host$request_uri;
}
Install "Let’s Encrypt" SSL (replace mydomain.com on your own domain)
sudo yum install -y certbot python-certbot-nginx
sudo certbot --nginx -d mydomain.com -d www.mydomain.com
sudo systemctl restart nginx
Full NGINX HTTPS Config (replace mydomain.com on your own domain)
a. Remove exising config
b. Past config with replace mydomain.com on your own domain
c. Save config: Ctrl+O, Enter, Ctrl+X
sudo nano /etc/nginx/conf.d/kestrel.conf
server {
listen 443 ssl;
server_name mydomain.com www.mydomain.com;
client_max_body_size 100M;
ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 443 ssl;
server_name *.mydomain.com;
client_max_body_size 100M;
ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
if ($host ~* ^([^.]+)\.fraplat\.com$) {
set $subdomain $1;
}
proxy_pass http://127.0.0.1:8080/$subdomain/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Restart NGINX
sudo systemctl restart nginx
Configure NGINX Proxy (replace mydomain.com on your own domain)
Save config: Ctrl+O, Enter, Ctrl+X
sudo nano /etc/nginx/conf.d/kestrel.conf
server {
listen 80;
server_name mydomain.com www.mydomain.com;
return 301 https://$host$request_uri;
}
server {
listen 80;
server_name *.mydomain.com;
return 301 https://$host$request_uri;
}
Step 5: Done! (replace mydomain.com on your own domain)
Your Fractal Platform is now live on https://mydomain.com
Fractal Portal admin panel
Open Site: https://mydomain.com/FractalPortal
Login: Admin
Password: admin
Deploy your own FP web site
Open Site: https://fractal.tech/FractalStudio/?tag=MyAppName
Click "Transfer application" in the top header
BaseUrl: https://mydomain.com
DeploymentKey: sandbox
IsRecreateDatabase: true
Click Transfer button
Configure server to open default web app
Open and login to https://mydomain.com/FractalPortal
Click Environment => Environments button
Set MyAppName as DefaultAppName in the opened form
Click Save button
Your MyAppName is now live on https://mydomain.com
Step 6: Update Fractal Platform runtime to latest version (if needed)
sudo docker stop mycontainer
sudo docker rm mycontainer
sudo docker pull fraplat/image:v1.0
sudo docker run -d \
--name mycontainer \
--restart always \
-v app_databases:/app/Databases \
-v app_layouts:/app/Layouts \
-v app_deployments:/app/Deployments \
-v app_files:/app/wwwroot/files \
-p 8080:8080 \
-p 8081:8081 \
fraplat/image:v1.0