Skip to content

A fun sunday project: isolate is a declarative application server / reverse proxy that includes GSL (generic language support) out of the box.

Notifications You must be signed in to change notification settings

jayar95/isolate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

isolate

About

isolate is a declarative application server / reverse proxy that includes GSL (generic language support) out of the box. Similar to containers, isolate will create network namespaces for each application defined in an isolate config file which will isolate a given program to it's own network namespace with a dedicated local ip address + netlinks.

After the network namespaces are set up, the applications you configure will be launched and routed via echo's reverse proxy features.

When isolate terminates, it will clean up any lingering network namespaces / links / child processes.

This was a sunday project so it's far from production-ready.

Configuration Example

{
    "applications": [
        {
            "name": "deliveries",
            "executable": "/apps/express/deliveries",
            "port": "80",
            "route": "/deliveries",
            "scheme": "http"
        },
        {
            "name": "dashboard",
            "executable": "/apps/express/run",
            "port": "80",
            "route": "/*dashboard",
            "scheme": "http"
        }
    ]
}

You can also view an example config at isolate config file

Requirements

  • go 1.16
  • isolate requires elevate privileges to run.
  • A linux operating system (Darwin/Windows not tested)

Build

make build

The binary multi-dev should be available in the working directory

Usage

CONFIG="/var/apps/isolate-server/isolate-config.json"
./isolate $CONFIG

If $CONFIG is not specified, isolate will assume a file isolate-config.json is present in the program's directory and try to use that.

Future enhancements

  • Add NAT to provide external internet connectivity for all isolated applications / network namespaces !important
  • Unit tests
  • TLS support
  • Add port config to isolate to customize what port the server listens on

About

A fun sunday project: isolate is a declarative application server / reverse proxy that includes GSL (generic language support) out of the box.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published