Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
2c88541
Updated Electros GUI to v3.0.5
C4lopsitta Nov 7, 2025
6f35354
Updated Electros GUI to v3.0.5
C4lopsitta Nov 7, 2025
06646c4
Updated Electros GUI to v3.0.6
C4lopsitta Nov 13, 2025
726fb48
Updated Electros GUI to v3.0.7
C4lopsitta Nov 14, 2025
f8f9c94
update egn
fvalle1 Nov 14, 2025
726194f
update 3.1.0
fvalle1 Nov 14, 2025
b9eb42c
Updated Electros GUI to v3.1.1
C4lopsitta Nov 17, 2025
c024be6
Updated Electros GUI to v3.1.2
C4lopsitta Nov 18, 2025
0e72a0b
added files
Nov 18, 2025
b53b03f
nginx routes
Nov 18, 2025
5325457
stream test | spoiler doesn't work
Nov 18, 2025
6fb4a12
revert to normal config - use beta daemons
Nov 18, 2025
b56e749
remove logs
Nov 18, 2025
955b88e
nginx reverse proxy to daemons ports
Nov 18, 2025
daedec5
edited nginx (server works - frontend give CORS error)
Nov 19, 2025
f26f051
Initial nginx config for daemons
C4lopsitta Nov 20, 2025
5d6fc02
Updated elemento-gui-new
C4lopsitta Nov 20, 2025
c2bd3ab
Modified configuration for NGinx
C4lopsitta Nov 20, 2025
3ce247e
Merge remote-tracking branch 'origin/dev-docker-instance' into dev-do…
C4lopsitta Nov 20, 2025
bd62800
Fixed duplicate entry in nginx config
C4lopsitta Nov 20, 2025
fa2206c
Added startup and dockerfile for arm64 environments
C4lopsitta Nov 20, 2025
f7bf5d9
trigger action
Nov 20, 2025
41dc251
deleting unused file
Nov 20, 2025
5b29ffa
Updated Nginx config to allow networks and targets
C4lopsitta Nov 20, 2025
f1525dc
Merge remote-tracking branch 'origin/dev-docker-instance' into dev-do…
C4lopsitta Nov 20, 2025
a4877ef
Updated GUI for Docker system
C4lopsitta Nov 20, 2025
cc80f0a
Updated GUI for Docker system
C4lopsitta Nov 20, 2025
cd0f450
Updated GUI for Docker system
C4lopsitta Nov 20, 2025
912b7d3
Updated GUI for Docker system to have new splashscreen
C4lopsitta Nov 20, 2025
b67280b
Updated logo in info settings for GUI
C4lopsitta Nov 20, 2025
bf16e15
Updated Electros GUI to v3.1.3
C4lopsitta Nov 20, 2025
deb83a0
Updated Electros GUI to v3.1.3
C4lopsitta Nov 20, 2025
f7ad493
Deleted old gui folder
Nov 26, 2025
01eabad
Added License and Author(s)
Nov 26, 2025
0307518
Fixed SSH Implementation for Electros
C4lopsitta Nov 27, 2025
ab910e7
Merge pull request #99 from Elemento-Modular-Cloud/fix-remote-windows
C4lopsitta Nov 27, 2025
d4ccbed
Updated GUI to v3.1.5 for beta test build
C4lopsitta Dec 1, 2025
41587a6
fix: update gitignore
filippo-ferrando Dec 2, 2025
ab41b38
Merge branch 'develop' into dev-docker-instance
filippo-ferrando Dec 9, 2025
d2b6256
chore: changed base branch for docker image build
filippo-ferrando Dec 9, 2025
49a6492
Merge pull request #105 from Elemento-Modular-Cloud/dev-docker-instance
filippo-ferrando Dec 11, 2025
0c0a100
Updated GUI to v3.1.5 (second build) for beta test build
C4lopsitta Dec 11, 2025
372bad8
Updated GUI to v3.1.5 (second build) for beta test build
C4lopsitta Dec 11, 2025
f56d653
Updated GUI to v3.1.5 (second build) for beta test build
C4lopsitta Dec 11, 2025
0abe035
Updated GUI to v3.1.5 (third build) for beta test build
C4lopsitta Dec 18, 2025
6595f24
Updated GUI to v3.1.5 (fourth build) for beta test build
C4lopsitta Dec 19, 2025
4321036
Updated GUI to v3.1.5 (fifth build) for beta test build
C4lopsitta Dec 22, 2025
d9f12f8
Updated GUI to v3.1.5 (sixth build) for beta test build
C4lopsitta Dec 23, 2025
fe402f0
Updated GUI to v3.1.5 (seventh build) for beta test build
C4lopsitta Dec 23, 2025
74f75e7
Updated GUI to v3.1.5 (eight build) for beta test build
C4lopsitta Dec 23, 2025
e575f82
Updated GUI to v3.1.5 (ninth build) for beta test build
C4lopsitta Dec 23, 2025
794d50a
Updated GUI to v3.1.5 (tenth build) for beta test build
C4lopsitta Dec 23, 2025
6ea5e27
Created Common utilities files to ease code maintenance
C4lopsitta Dec 30, 2025
daf120e
Created common utility for Platform and Port Handler
C4lopsitta Dec 30, 2025
19ab236
Added tray icon utility class
C4lopsitta Dec 30, 2025
3b4a448
Upgraded daemon process handling
C4lopsitta Dec 30, 2025
878375d
Upgraded daemon process handling
C4lopsitta Dec 30, 2025
771e4d6
Added `--no-daemons` flag
C4lopsitta Dec 30, 2025
e80b093
Fixed issue that forbid Electros from Closing
C4lopsitta Dec 30, 2025
23e2a3b
Fixed minor code errors
C4lopsitta Jan 5, 2026
1cbbc45
Updated GUI
C4lopsitta Jan 5, 2026
9d3d757
Moved RDP Handlers into Class
C4lopsitta Jan 5, 2026
d24c93c
Modified menubar to be in line with Apple guidelines
C4lopsitta Jan 5, 2026
936790e
Modified Daemons behaviour to die with parent app
C4lopsitta Jan 7, 2026
4bc7cce
GUI Updated for test build
C4lopsitta Jan 14, 2026
5be0a71
GUI Updated for test build
C4lopsitta Jan 15, 2026
6308afc
Merge remote-tracking branch 'origin/develop' into develop
C4lopsitta Jan 15, 2026
97d0c41
Development test build push; likely broken
C4lopsitta Jan 15, 2026
6d893c0
Fixed missing daemon launch call
C4lopsitta Jan 16, 2026
296082e
Modified daemon launch
C4lopsitta Jan 16, 2026
efdc62c
Modified Daemon Population Script
C4lopsitta Jan 16, 2026
112da65
Modified close event
C4lopsitta Jan 16, 2026
a3769d7
Added catcher for Alt+F4 on Win/Linux with focus checker
C4lopsitta Jan 16, 2026
4678132
Fixed wrong kill order for windows and daemons
C4lopsitta Jan 16, 2026
b4b6c40
Adds script to start ElectrOS Electron app
gabrielefronze Jan 16, 2026
77c4573
GUI Updated for test build
C4lopsitta Jan 19, 2026
16d99f2
Merge remote-tracking branch 'origin/develop' into develop
C4lopsitta Jan 19, 2026
bf75b00
GUI Updated for test build for latest v3.1.5 beta
C4lopsitta Jan 19, 2026
05e7662
Improved zoom factors to avoid weird scaling issues
C4lopsitta Jan 19, 2026
732ba30
Fixed Terminal visisbility
C4lopsitta Jan 20, 2026
0e192d2
Fixed terminal titlebar
C4lopsitta Jan 20, 2026
80c1032
Fixed terminal window show/hide behaviour
C4lopsitta Jan 20, 2026
18ceebd
Streamlined Terminal integration with Daemons: Added `Terminal.Write`…
C4lopsitta Jan 20, 2026
00d84e0
Fixed missing import
C4lopsitta Jan 20, 2026
f4051c7
Model and network minor fixes
C4lopsitta Jan 20, 2026
98fceac
Fixed broken import
C4lopsitta Jan 21, 2026
db4313e
Buffered Terminal writes and enhanced Daemon handling. Adjusted `devT…
C4lopsitta Jan 21, 2026
ce5919d
Fixed volume editing dialog
C4lopsitta Jan 21, 2026
08ad145
Fixed bugs:
C4lopsitta Jan 21, 2026
2026f5d
Attempted to remove Windows admin priviledges request for execution
C4lopsitta Jan 21, 2026
b1c99b6
Fixed windows daemon command
C4lopsitta Jan 21, 2026
36e2bf2
Modified daemon termination method to work on windows
C4lopsitta Jan 21, 2026
3c67017
Upgraded GUI for new minor fixes
C4lopsitta Jan 22, 2026
982e7ec
Upgraded GUI for new minor fixes to network picker modal
C4lopsitta Jan 22, 2026
9ec85d6
Merge remote-tracking branch 'origin/main' into develop
C4lopsitta Jan 22, 2026
4de3f38
Fixed missing import
C4lopsitta Jan 23, 2026
b697e96
Updated GUI fixing minor issues
C4lopsitta Jan 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions .github/workflows/docker-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Build and Push Electros docker image

on:
push:
branches: [ develop ]
workflow_dispatch:

permissions:
contents: write
packages: write

jobs:
build-and-push:
runs-on: ubuntu-latest
steps:

# build and push the docker image to ghcr.io

- name: Checkout code
uses: actions/checkout@v4
with:
token: ${{ secrets.CI_TOKEN }}
submodules: recursive
ref: ${{ github.ref }}

- name: Populate daemons folder
run: |
export CI_TOKEN=${{ secrets.CI_TOKEN }}
./populate_daemons.sh --platform linux --arch x64 --develop

- name: Login to GHCR
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.REPO_KEY }}

- name: Build and push Docker image
run: |
OWNER_NAME=$(echo "${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]')
docker build -f docker/Dockerfile -t ghcr.io/${OWNER_NAME}/elemento-electros-instance:latest .
docker push ghcr.io/${OWNER_NAME}/elemento-electros-instance:latest
408 changes: 408 additions & 0 deletions .github/workflows/nightly.yml

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,6 @@ electros-daemons
electros-nwjs/nwjs-sdk-*
.DS_Store
electros-electron/venv
.env
logs/
env/
57 changes: 57 additions & 0 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# #******************************************************************************#
# # Copyright(c) 2019-2023, Elemento srl, All rights reserved #
# # Author: Elemento srl #
# # Contributors are mentioned in the code where appropriate. #
# # Permission to use and modify this software and its documentation strictly #
# # for personal purposes is hereby granted without fee, #
# # provided that the above copyright notice appears in all copies #
# # and that both the copyright notice and this permission notice appear in the #
# # supporting documentation. #
# # Modifications to this work are allowed for personal use. #
# # Such modifications have to be licensed under a #
# # Creative Commons BY-NC-ND 4.0 International License available at #
# # http://creativecommons.org/licenses/by-nc-nd/4.0/ and have to be made #
# # available to the Elemento user community #
# # through the original distribution channels. #
# # The authors make no claims about the suitability #
# # of this software for any purpose. #
# # It is provided "as is" without express or implied warranty. #
# #******************************************************************************#
#
# #------------------------------------------------------------------------------#
# #Electros #
# #Authors: #
# #- Filippo Ferrando Damillano (fferrando at elemento.cloud) #
# #------------------------------------------------------------------------------#
#


FROM nginx:trixie

# gather daemons
# copy app code
# daemons must run in background - ./daemons
# entrypoint must run the electros app on port 80
COPY docker/nginx.conf /etc/nginx/nginx.conf
COPY electros-daemons/linux/x64/* /opt/daemons/
COPY elemento-gui-new/ /usr/share/nginx/html/
COPY elemento-gui-new/electros/configs/atomosFlags.json /usr/share/nginx/html/electros/configs/flags.json
COPY elemento-gui-new/electros/electrosOnAtomos.html /usr/share/nginx/html/electros/electros.html
COPY docker/startup.sh /opt/app/startup.sh

RUN chmod +x /opt/daemons/*
RUN chmod +x /opt/app/startup.sh

RUN mkdir -p /var/log/elemento

RUN ls -lah /usr/share/nginx/html/

EXPOSE 80

ENTRYPOINT [ "/opt/app/startup.sh" ]






57 changes: 57 additions & 0 deletions docker/arm_Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# #******************************************************************************#
# # Copyright(c) 2019-2023, Elemento srl, All rights reserved #
# # Author: Elemento srl #
# # Contributors are mentioned in the code where appropriate. #
# # Permission to use and modify this software and its documentation strictly #
# # for personal purposes is hereby granted without fee, #
# # provided that the above copyright notice appears in all copies #
# # and that both the copyright notice and this permission notice appear in the #
# # supporting documentation. #
# # Modifications to this work are allowed for personal use. #
# # Such modifications have to be licensed under a #
# # Creative Commons BY-NC-ND 4.0 International License available at #
# # http://creativecommons.org/licenses/by-nc-nd/4.0/ and have to be made #
# # available to the Elemento user community #
# # through the original distribution channels. #
# # The authors make no claims about the suitability #
# # of this software for any purpose. #
# # It is provided "as is" without express or implied warranty. #
# #******************************************************************************#
#
# #------------------------------------------------------------------------------#
# #Electros #
# #Authors: #
# #- Filippo Ferrando Damillano (fferrando at elemento.cloud) #
# #- Simone Robaldo (srobaldo at elemento.cloud) #
# #------------------------------------------------------------------------------#
#


FROM nginx:trixie

# gather daemons
# copy app code
# daemons must run in background - ./daemons
# entrypoint must run the electros app on port 80
COPY ./docker/nginx.conf /etc/nginx/nginx.conf
COPY electros-daemons/linux/arm64/* /opt/daemons/
COPY elemento-gui-new/ /usr/share/nginx/html/
COPY elemento-gui-new/electros/configs/atomosFlags.json /usr/share/nginx/html/electros/configs/flags.json
COPY ./docker/arm_startup.sh /opt/app/startup.sh

RUN chmod +x /opt/daemons/*
RUN chmod +x /opt/app/startup.sh

RUN mkdir -p /var/log/elemento

RUN ls -lah /usr/share/nginx/html/

EXPOSE 80

ENTRYPOINT [ "/opt/app/startup.sh" ]






37 changes: 37 additions & 0 deletions docker/arm_startup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#! /bin/bash
# #******************************************************************************#
# # Copyright(c) 2019-2023, Elemento srl, All rights reserved #
# # Author: Elemento srl #
# # Contributors are mentioned in the code where appropriate. #
# # Permission to use and modify this software and its documentation strictly #
# # for personal purposes is hereby granted without fee, #
# # provided that the above copyright notice appears in all copies #
# # and that both the copyright notice and this permission notice appear in the #
# # supporting documentation. #
# # Modifications to this work are allowed for personal use. #
# # Such modifications have to be licensed under a #
# # Creative Commons BY-NC-ND 4.0 International License available at #
# # http://creativecommons.org/licenses/by-nc-nd/4.0/ and have to be made #
# # available to the Elemento user community #
# # through the original distribution channels. #
# # The authors make no claims about the suitability #
# # of this software for any purpose. #
# # It is provided "as is" without express or implied warranty. #
# #******************************************************************************#
#
# #------------------------------------------------------------------------------#
# #Electros #
# #Authors: #
# #- Filippo Ferrando Damillano (fferrando at elemento.cloud) #
# #- Simone Robaldo (srobaldo at elemento.cloud) #
# #------------------------------------------------------------------------------#
#

# start background daemons

#/opt/daemons/Elemento_Daemons_linux_x86 > /var/log/elemento/elemento_daemons.log 2>&1 &
/opt/daemons/Elemento_Daemons_linux_arm >/var/log/elemento/elemento_daemons.log 2>&1 &

# run the project

nginx -g 'daemon off;'
158 changes: 158 additions & 0 deletions docker/nginx.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
# #******************************************************************************#
# # Copyright(c) 2019-2023, Elemento srl, All rights reserved #
# # Author: Elemento srl #
# # Contributors are mentioned in the code where appropriate. #
# # Permission to use and modify this software and its documentation strictly #
# # for personal purposes is hereby granted without fee, #
# # provided that the above copyright notice appears in all copies #
# # and that both the copyright notice and this permission notice appear in the #
# # supporting documentation. #
# # Modifications to this work are allowed for personal use. #
# # Such modifications have to be licensed under a #
# # Creative Commons BY-NC-ND 4.0 International License available at #
# # http://creativecommons.org/licenses/by-nc-nd/4.0/ and have to be made #
# # available to the Elemento user community #
# # through the original distribution channels. #
# # The authors make no claims about the suitability #
# # of this software for any purpose. #
# # It is provided "as is" without express or implied warranty. #
# #******************************************************************************#
#
# #------------------------------------------------------------------------------#
# #Electros #
# #Authors: #
# #- Filippo Ferrando Damillano (fferrando at elemento.cloud) #
# #- Simone Robaldo (srobaldo at elemento.cloud) #
# #------------------------------------------------------------------------------#
#


events {}

http {

include /etc/nginx/mime.types; # important
default_type application/json;

server {
set $authenticate http://127.0.0.1:47777;
set $compute http://127.0.0.1:17777;
set $storage http://127.0.0.1:27777;
set $network http://127.0.0.1:37777;
set $services http://127.0.0.1:6777;
set $targets http://127.0.0.1:57777;

listen 80;

root /usr/share/nginx/html;
index electros/electros.html;

location / {
try_files $uri $uri/ =404;
}

# Static asset aliases
location /js/ {
alias /usr/share/nginx/html/electros/js/;
}

location /css/ {
alias /usr/share/nginx/html/electros/css/;
}

location /pages/ {
alias /usr/share/nginx/html/electros/pages/;
}

location /assets/ {
alias /usr/share/nginx/html/electros/assets/;
}

location /Electros.svg {
alias /usr/share/nginx/html/electros/Electros.svg;
}

location /configs/ {
alias /usr/share/nginx/html/electros/configs/;
}

location /remotes/ {
alias /usr/share/nginx/html/electros/remotes/;
}

location /favicon/ {
alias /usr/share/nginx/html/electros/favicon/;
}

location /ecd/ {
alias /usr/share/nginx/html/electros/ecd/;
}

location /epm/ {
alias /usr/share/nginx/html/electros/epm/;
}

location /ist/ {
alias /usr/share/nginx/html/electros/ist/;
}

# Daemon statuses handlers
location /authStatus {
proxy_pass $authenticate/;
}

location /computeStatus {
proxy_pass $compute/;
}

location /storageStatus {
proxy_pass $storage/;
}

location /networksStatus {
proxy_pass $network/;
}

location /servicesStatus {
proxy_pass $services/;
}

location /targetsStatus {
proxy_pass $targets/;
}

# Daemon handlers
location /api/v1/authenticate/ {
proxy_pass $authenticate;
}

location /api/v1.0/client/backups/ {
proxy_pass $compute;
}

location /api/v1.0/client/vm/ {
proxy_pass $compute;
}

# special case for network attach/detach for a VM
location ~ ^/api/v1.0/client/network/(attach|detach) {
proxy_pass $compute;
}

location /api/v1.0/client/volume/ {
proxy_pass $storage;
}

location /api/v1.0/client/network/ {
proxy_pass $network;
}

location /api/v1.0/service/ {
proxy_pass $services;
}

location /api/v1.0/client/target/ {
proxy_pass $targets;
}
}
}
35 changes: 35 additions & 0 deletions docker/startup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#! /bin/bash
# #******************************************************************************#
# # Copyright(c) 2019-2023, Elemento srl, All rights reserved #
# # Author: Elemento srl #
# # Contributors are mentioned in the code where appropriate. #
# # Permission to use and modify this software and its documentation strictly #
# # for personal purposes is hereby granted without fee, #
# # provided that the above copyright notice appears in all copies #
# # and that both the copyright notice and this permission notice appear in the #
# # supporting documentation. #
# # Modifications to this work are allowed for personal use. #
# # Such modifications have to be licensed under a #
# # Creative Commons BY-NC-ND 4.0 International License available at #
# # http://creativecommons.org/licenses/by-nc-nd/4.0/ and have to be made #
# # available to the Elemento user community #
# # through the original distribution channels. #
# # The authors make no claims about the suitability #
# # of this software for any purpose. #
# # It is provided "as is" without express or implied warranty. #
# #******************************************************************************#
#
# #------------------------------------------------------------------------------#
# #Electros #
# #Authors: #
# #- Filippo Ferrando Damillano (fferrando at elemento.cloud) #
# #------------------------------------------------------------------------------#
#
# start background daemons

/opt/daemons/Elemento_Daemons_linux_x86 >/var/log/elemento/elemento_daemons.log 2>&1 &

# run the project

nginx -g 'daemon off;'

Loading
Loading