prep for release 4.0 (alnoda-wrk)
123
utils/README.md
|
@ -1,123 +0,0 @@
|
|||
# Utilities
|
||||
|
||||
## Running workspace on server in cloud
|
||||
|
||||
There are many benefits of using workspace in cloud, some of them:
|
||||
|
||||
- you can use workspace on any device with internet access, even on tablet
|
||||
- it is great for collaboration (anyone can work together with you)
|
||||
- you have access to more poverful machine
|
||||
- you can use workspace for long-running or periodic jobs
|
||||
|
||||
There are 2 security considerations to be taken into accont, using workspace in cloud:
|
||||
|
||||
1. encrypted https connection
|
||||
2. authentication
|
||||
|
||||
To enable https and auth for workspace, one can add reverse proxy to the workspace deployment.
|
||||
The utility `remote.py` generates all what's needed to run workspace on cloud server behind reverse proxy.
|
||||
This utility generates certificates, traefik config and docker-compose file
|
||||
|
||||
```
|
||||
python remote.py --workspace="base-workspace" --port="8020" --host="68.183.69.198" --user="user1" --password="pass1"
|
||||
```
|
||||
|
||||
**IMPORTANT: the best is to execute this python script inside worrkspace in docker, whick runs on local laptop**
|
||||
|
||||
The following 4 arguments must be provided:
|
||||
- --workspace - name of the workspace (all lowercase)
|
||||
- --port - port ofor the workspace UI. Workspace will also take N consequent ports after this one. base-docker for example,
|
||||
uses 10 ports
|
||||
- --host - IP or hostname of the server where workspace will be deployed
|
||||
- --user - any username
|
||||
- --password - any password
|
||||
|
||||
After command is executed, the new folder `remote` is created in the same directory. Copy this folder to the remote server.
|
||||
|
||||
*Hint: in order to copy folder to remote, you start base workspace on remote with local volume mounted `docker run --name space-temp -v /home/tmp:/tmp -p 8020-8030:8020-8030 -e WRK_HOST="<ip-of-your-remote-server>" alnoda/base-workspace` copy and remove this workspace right after that.*
|
||||
|
||||
On the remote server ssh to this folder, and execute
|
||||
|
||||
```
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
The workspace is running, and it is secured with https and user/password. Notice, that self-sined certificate is used, and browser will
|
||||
deisplay a warning when you try to assess the workspace UI on `https://<ip-of-your-remote-server>:8020`. Agree to the warning and proceed.
|
||||
|
||||
|
||||
## Serve Static Website
|
||||
|
||||
Web application should be deployed with domain name and over https. To have this we suggest to use docker-compose file.
|
||||
|
||||
### Example: generate and serve docs
|
||||
|
||||
Open terminal the workspace, which has UI, and build docs
|
||||
|
||||
> `cd /home/docs`
|
||||
> `mkdocs build -d /home/static-server/doc`
|
||||
|
||||
You can check that static website is served by the static web server.
|
||||
|
||||
Ssh to the server where the workspace is running, and commit workspace to a new image. Assuming, workspace name `remote_workspace_1`
|
||||
|
||||
> `docker commit remote_workspace_1 docs:0.1`
|
||||
|
||||
Now we will run container from image docs:0.1, and add traefik reverse proxy with https. But before doing it, you need to buy domain name,
|
||||
and set A record for your new domain to point to the IP of the server, where the docs are running
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```
|
||||
version: "3.3"
|
||||
services:
|
||||
traefik:
|
||||
image: "traefik:v2.4"
|
||||
container_name: "traefik"
|
||||
command:
|
||||
- "--providers.docker=true"
|
||||
- "--providers.docker.exposedbydefault=false"
|
||||
- "--entrypoints.web.address=:80"
|
||||
- "--entrypoints.websecure.address=:443"
|
||||
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
|
||||
- "--certificatesresolvers.myresolver.acme.email=blackmaster@gmail.com"
|
||||
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
|
||||
ports:
|
||||
- "443:443"
|
||||
- "80:80"
|
||||
volumes:
|
||||
- "./letsencrypt:/letsencrypt"
|
||||
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||
|
||||
workspace:
|
||||
image: "docs:0.1"
|
||||
container_name: "workspace"
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.middlewares.httprepl.redirectregex.regex=^http://(.*)"
|
||||
- "traefik.http.middlewares.httprepl.redirectregex.replacement=https://$${1}"
|
||||
|
||||
- "traefik.http.middlewares.add-context.redirectregex.regex=^https:\\/\\/([^\\/]+)\\/?$$"
|
||||
- "traefik.http.middlewares.add-context.redirectregex.replacement=https://$$1/doc/pages/home/home/"
|
||||
|
||||
- "traefik.http.services.STATICFS_URLhttp.loadbalancer.server.port=8022"
|
||||
- "traefik.http.routers.STATICFS_URLhttp.service=STATICFS_URL"
|
||||
- "traefik.http.routers.STATICFS_URLhttp.rule=PathPrefix(`/`)"
|
||||
- "traefik.http.routers.STATICFS_URLhttp.entrypoints=web"
|
||||
- "traefik.http.routers.STATICFS_URLhttp.middlewares=httprepl"
|
||||
|
||||
- "traefik.http.services.STATICFS_URL.loadbalancer.server.port=8022"
|
||||
- "traefik.http.routers.STATICFS_URL.service=STATICFS_URL"
|
||||
- "traefik.http.routers.STATICFS_URL.rule=Host(`elnoda.org`)"
|
||||
- "traefik.http.routers.STATICFS_URL.entrypoints=websecure"
|
||||
- "traefik.http.routers.STATICFS_URL.middlewares=basic-auth"
|
||||
- "traefik.http.routers.STATICFS_URL.tls=true"
|
||||
- "traefik.http.routers.STATICFS_URL.tls.certresolver=myresolver"
|
||||
- "traefik.http.routers.STATICFS_URL.middlewares=add-context"
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,106 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
while getopts o:d: flag
|
||||
do
|
||||
case "${flag}" in
|
||||
o) output_dir=${OPTARG};;
|
||||
d) docs=${OPTARG};;
|
||||
esac
|
||||
done
|
||||
|
||||
# Create out folder in /home/static-server
|
||||
if [ -z "${output_dir}" ]; then output_dir="/home/static-server/python-reports/"; fi
|
||||
project_name=${PWD##*/}
|
||||
printf '%s\n' "project name - ${project_name}"
|
||||
report_dir="${output_dir}/${project_name}/$(date +"%d-%m-%Y-%H-%M-%S")"
|
||||
mkdir -p "$report_dir"
|
||||
|
||||
if [ -z "${pytests_dir}" ]; then pytests_dir="/home/static-server/pytests/"; fi
|
||||
pytest_dir="${pytests_dir}/${project_name}"
|
||||
|
||||
##############################################################################################
|
||||
#### Linting
|
||||
##############################################################################################
|
||||
|
||||
##### Flake8
|
||||
flake8 ./ > ${report_dir}/flake8.txt || true
|
||||
|
||||
|
||||
##### Pylint
|
||||
find . -type f -name "*.py" | xargs pylint | pylint-json2html -f jsonextended -o ${report_dir}/pylint-report.html || true
|
||||
|
||||
##############################################################################################
|
||||
#### Tests
|
||||
##############################################################################################
|
||||
|
||||
##### Pytest HTML reporter
|
||||
pytest ./test --html-report=${report_dir}/pytest || true
|
||||
pytest ./tests --html-report=${report_dir}/pytest || true
|
||||
pytest ./ --html-report=${report_dir}/pytest || true
|
||||
|
||||
pytest ./test --html-report=${pytest_dir} || true
|
||||
pytest ./tests --html-report=${pytest_dir} || true
|
||||
pytest ./ --html-report=${pytest_dir} || true
|
||||
|
||||
##############################################################################################
|
||||
#### Autoddoc
|
||||
##############################################################################################
|
||||
|
||||
##### Pdoc
|
||||
mkdir -p ${report_dir}/pdoc-html
|
||||
pdoc --html --output-dir ${report_dir}/pdoc-html ./ || true
|
||||
if ls -1qA ${report_dir}/pdoc-html | grep -q .
|
||||
then
|
||||
echo "pdoc-html generated!"
|
||||
else
|
||||
echo "pdoc-html could not be generated!"
|
||||
rm -rf ${report_dir}/pdoc-html
|
||||
fi
|
||||
|
||||
mkdir -p ${report_dir}/pdoc-md
|
||||
pdoc --output-dir ${report_dir}/pdoc-md ./ || true
|
||||
if ls -1qA ${report_dir}/pdoc-md | grep -q .
|
||||
then
|
||||
echo "pdoc-md generated!"
|
||||
else
|
||||
echo "pdoc-md could not be generated!"
|
||||
rm -rf ${report_dir}/pdoc-md
|
||||
fi
|
||||
|
||||
if [ "${docs}" ]; then
|
||||
rm -rf ./docs || ture
|
||||
mkdir -p ./docs
|
||||
pdoc --output-dir ./docs ./
|
||||
fi
|
||||
|
||||
|
||||
##### Portray
|
||||
portray as_html --output_dir ${report_dir}/portray-site -m ./ || true
|
||||
|
||||
|
||||
##############################################################################################
|
||||
#### Profiling
|
||||
##############################################################################################
|
||||
|
||||
##### Pyinstrument
|
||||
mkdir -p ${report_dir}/pyinstrument
|
||||
ls | grep '.py' | grep -v 'pyc' | grep -v '__' | xargs -I{} pyinstrument -t -r html -o ${report_dir}/pyinstrument/{}.html {} || true
|
||||
|
||||
|
||||
##### cProfile
|
||||
mkdir -p ./cProfile
|
||||
mkdir -p ${report_dir}/cProfile
|
||||
find . -type f -name "*.py" | xargs -I{} python -m cProfile -o ./cProfile/{}.stats {} || true
|
||||
find ./cProfile/ -type f -name "*.stats" | xargs -I{} gprof2dot {} -f pstats -o {}.dot || true
|
||||
find ./cProfile/ -type f -name "*.dot" | xargs -I{} dot -Tpng -o {}.png {} || true
|
||||
|
||||
for file in ./cProfile/*.png; do
|
||||
mv ${file} ${report_dir}/cProfile/${file##*/}
|
||||
done
|
||||
|
||||
for file in ./cProfile/*.stats; do
|
||||
flameprof $file > ${file}.svg || true
|
||||
mv ${file}.svg ${report_dir}/cProfile/${file##*/}.svg
|
||||
done
|
||||
|
||||
rm -rf ./cProfile
|
237
utils/remote.py
|
@ -1,237 +0,0 @@
|
|||
"""
|
||||
Mini-utility to generate docker-compose.yaml file to launch
|
||||
workspace on remote server with auth and https (self-signed)
|
||||
|
||||
python remote.py --workspace="base-workspace" --port="8020" --host="68.183.69.198" --user="user1" --password="pass1"
|
||||
"""
|
||||
import os
|
||||
import yaml
|
||||
import shutil
|
||||
import argparse
|
||||
import textwrap
|
||||
import subprocess
|
||||
|
||||
# How much tool port is away from the start_port
|
||||
port_increments = {
|
||||
"DOCS_URL": 0,
|
||||
"FILEBROWSER_URL": 1,
|
||||
"STATICFS_URL": 2,
|
||||
"CRONICLE_URL": 3,
|
||||
"UNGIT_URL": 4,
|
||||
"IDE_URL": 5,
|
||||
"TERMINAL_URL": 6,
|
||||
"MC_URL": 7,
|
||||
"HTOP_URL": 8,
|
||||
"ANSIBLE_ARA": 9,
|
||||
"OCTANT": 11,
|
||||
"PORT_8038": 18,
|
||||
"PORT_8039": 19,
|
||||
"PORT_8040": 20
|
||||
}
|
||||
|
||||
workspace_meta = {
|
||||
"ubuntu-workspace": {
|
||||
"port-range": 10,
|
||||
"entrypoints": []
|
||||
},
|
||||
"base-workspace": {
|
||||
"port-range": 20,
|
||||
"entrypoints": ["DOCS_URL", "FILEBROWSER_URL", "STATICFS_URL", "CRONICLE_URL", "UNGIT_URL", "TERMINAL_URL", "MC_URL", "HTOP_URL", "PORT_8038", "PORT_8039", "PORT_8040"]
|
||||
},
|
||||
"workspace-in-docker": {
|
||||
"port-range": 20,
|
||||
"entrypoints": ["DOCS_URL", "FILEBROWSER_URL", "STATICFS_URL", "CRONICLE_URL", "UNGIT_URL", "IDE_URL", "TERMINAL_URL", "MC_URL", "HTOP_URL", "PORT_8038", "PORT_8039", "PORT_8040"]
|
||||
},
|
||||
"codeserver-workspace": {
|
||||
"port-range": 20,
|
||||
"entrypoints": ["DOCS_URL", "FILEBROWSER_URL", "STATICFS_URL", "CRONICLE_URL", "UNGIT_URL", "IDE_URL", "TERMINAL_URL", "MC_URL", "HTOP_URL", "PORT_8038", "PORT_8039", "PORT_8040"]
|
||||
},
|
||||
"python-workspace": {
|
||||
"port-range": 20,
|
||||
"entrypoints": ["DOCS_URL", "FILEBROWSER_URL", "STATICFS_URL", "CRONICLE_URL", "UNGIT_URL", "IDE_URL", "TERMINAL_URL", "MC_URL", "HTOP_URL", "PORT_8038", "PORT_8039", "PORT_8040"]
|
||||
},
|
||||
"mkdocs-magicspace": {
|
||||
"port-range": 20,
|
||||
"entrypoints": ["DOCS_URL", "FILEBROWSER_URL", "STATICFS_URL", "CRONICLE_URL", "UNGIT_URL", "IDE_URL", "TERMINAL_URL", "MC_URL", "HTOP_URL", "PORT_8038", "PORT_8039", "PORT_8040"]
|
||||
},
|
||||
"ansible-terraform-workspace": {
|
||||
"port-range": 20,
|
||||
"entrypoints": ["DOCS_URL", "FILEBROWSER_URL", "STATICFS_URL", "CRONICLE_URL", "UNGIT_URL", "IDE_URL", "TERMINAL_URL", "MC_URL", "HTOP_URL", "ANSIBLE_ARA", "PORT_8038", "PORT_8039", "PORT_8040"]
|
||||
},
|
||||
"kubespray-workspace": {
|
||||
"port-range": 20,
|
||||
"entrypoints": ["DOCS_URL", "FILEBROWSER_URL", "STATICFS_URL", "CRONICLE_URL", "UNGIT_URL", "IDE_URL", "TERMINAL_URL", "MC_URL", "HTOP_URL", "ANSIBLE_ARA", "OCTANT", "PORT_8038", "PORT_8039", "PORT_8040"]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def gen_certs():
|
||||
""" Generate self-signed TLS certtificate
|
||||
"""
|
||||
os.mkdir("./remote/certs")
|
||||
cmd = 'cd ./remote/certs && openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=workspace.com" -keyout cert.key -out cert.crt'
|
||||
subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE).stdout.read()
|
||||
return
|
||||
|
||||
|
||||
def traefik_config():
|
||||
conconf = """
|
||||
tls:
|
||||
certificates:
|
||||
- certFile: /tools/certs/cert.crt
|
||||
keyFile: /tools/certs/cert.key
|
||||
"""
|
||||
with open("./remote/config.yml", "a") as f:
|
||||
f.write(textwrap.dedent(conconf))
|
||||
return
|
||||
|
||||
|
||||
def calc_entypoints(workspace_name, start_port):
|
||||
""" identify which of the port ranges are taken by the internal
|
||||
applications, and which are free. Return list of all entrypoints
|
||||
"""
|
||||
try:
|
||||
workspace_entrypoints = workspace_meta[workspace_name]["entrypoints"]
|
||||
except:
|
||||
workspace_entrypoints = workspace_meta['workspace-in-docker']["entrypoints"]
|
||||
try:
|
||||
workspace_port_range = workspace_meta[workspace_name]["port-range"]
|
||||
except:
|
||||
workspace_port_range = workspace_meta['workspace-in-docker']["port-range"]
|
||||
end_port = start_port + workspace_port_range
|
||||
internal_end_port = 8020 + workspace_port_range
|
||||
# Dict of entrypoints of entrypoint name and port
|
||||
ep = {entrypoint:port+start_port for entrypoint,port in port_increments.items() if entrypoint in workspace_entrypoints}
|
||||
free_ports_start = 8020 + len(ep) + 1
|
||||
free_range = list(range(free_ports_start, 8020 + workspace_port_range + 1))
|
||||
free_ep = {"PORT_"+str(port):port for port in free_range}
|
||||
ep.update(free_ep)
|
||||
port_mapping = f"{start_port}-{end_port}:{8020}-{internal_end_port}"
|
||||
return ep, port_mapping
|
||||
|
||||
|
||||
|
||||
def get_workspace_labels(ep, auth_mid_name="basic-auth"):
|
||||
""" Create list of Traefik labels for the Workspace service
|
||||
"""
|
||||
labels = [
|
||||
"traefik.enable=true",
|
||||
"traefik.http.middlewares.httprepl.redirectregex.regex=^http://(.*)",
|
||||
"traefik.http.middlewares.httprepl.redirectregex.replacement=https://$${1}"
|
||||
]
|
||||
for e,p in ep.items():
|
||||
eplabs = [
|
||||
f"traefik.http.services.{e}http.loadbalancer.server.port={p}",
|
||||
f"traefik.http.routers.{e}http.service={e}",
|
||||
f"traefik.http.routers.{e}http.rule=PathPrefix(`/`)",
|
||||
f"traefik.http.routers.{e}http.entrypoints={e}",
|
||||
f"traefik.http.routers.{e}http.middlewares=httprepl",
|
||||
|
||||
f"traefik.http.services.{e}.loadbalancer.server.port={p}",
|
||||
f"traefik.http.routers.{e}.service={e}",
|
||||
f"traefik.http.routers.{e}.rule=PathPrefix(`/`)",
|
||||
f"traefik.http.routers.{e}.entrypoints={e}",
|
||||
f"traefik.http.routers.{e}.middlewares={auth_mid_name}",
|
||||
f"traefik.http.routers.{e}.tls=true"
|
||||
]
|
||||
labels.extend(eplabs)
|
||||
return labels
|
||||
|
||||
|
||||
def make_authlabels(user, password, auth_mid_name="basic-auth"):
|
||||
""" Create Traefik label for authentication
|
||||
"""
|
||||
auth_type = "basicauth"
|
||||
cmd = f"echo $(echo '{password}' | htpasswd -nB -i {user}) | sed -e s/\\\$/\\\$\\\$/g"
|
||||
result = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE).stdout.read()
|
||||
auth = result.decode("utf-8").replace("\n", "")
|
||||
authlabel = f"traefik.http.middlewares.{auth_mid_name}.{auth_type}.users={auth}"
|
||||
authlabels = [authlabel]
|
||||
return authlabels
|
||||
|
||||
|
||||
def get_compose_dict(workspace_name, host_ip, start_port, user, password, custom_image=None):
|
||||
""" Create dict of values for docker-compose. This dict is
|
||||
to be transformed into docker-compose.yaml
|
||||
"""
|
||||
# Dict of entrypoints of entrypoint name and port
|
||||
ep, port_mapping = calc_entypoints(workspace_name, start_port)
|
||||
traefik_command = [f"--entrypoints.{entrypoint}.address=:{port}" for entrypoint,port in ep.items()]
|
||||
traefik_command += [
|
||||
"--providers.docker",
|
||||
"--providers.file.directory=/etc/traefik/dynamic_conf"
|
||||
]
|
||||
# Create dict with Traefik values
|
||||
y = {}
|
||||
y["version"] = "3.3"
|
||||
y["services"] = {}
|
||||
y["services"]["traefik"] = {}
|
||||
y["services"]["traefik"]["image"] = "traefik:v2.4"
|
||||
y["services"]["traefik"]["container_name"] = "container_name"
|
||||
y["services"]["traefik"]["command"] = traefik_command
|
||||
y["services"]["traefik"]["ports"] = [port_mapping]
|
||||
y["services"]["traefik"]["volumes"] = [
|
||||
"/var/run/docker.sock:/var/run/docker.sock:ro",
|
||||
"./certs:/tools/certs",
|
||||
"./config.yml:/etc/traefik/dynamic_conf/conf.yml:ro"
|
||||
]
|
||||
# Add Workspace values to the dict
|
||||
full_image = f"alnoda/{workspace_name}"
|
||||
if custom_image is not None:
|
||||
full_image = custom_image
|
||||
y["services"]["workspace"] = {}
|
||||
y["services"]["workspace"]["image"] = full_image
|
||||
y["services"]["workspace"]["environment"] = {
|
||||
"WRK_HOST": host_ip,
|
||||
"ENTRY_PORT": start_port,
|
||||
"WRK_PROTO": "https",
|
||||
"ARA_API_SERVER": f"http://{host_ip}:{start_port + port_increments['ANSIBLE_ARA']}",
|
||||
"ARA_API_CLIENT": "https",
|
||||
"ARA_CORS_ORIGIN_WHITELIST": f"['https://{host_ip}', 'http://{host_ip}']",
|
||||
"ARA_ALLOWED_HOSTS": f"['127.0.0.', 'localhost', '::1', '{host_ip}']",
|
||||
"ARA_EXTERNAL_AUTH": "True",
|
||||
"OCTANT_ACCEPTED_HOSTS": f"{host_ip}",
|
||||
}
|
||||
y["services"]["workspace"]["labels"] = get_workspace_labels(ep)
|
||||
# Add auth
|
||||
authlabels = make_authlabels(user, password)
|
||||
y["services"]["workspace"]["labels"].extend(authlabels)
|
||||
return y
|
||||
|
||||
|
||||
def main(cmd_args):
|
||||
""" Create folder with everything needed to
|
||||
spin up workspace with auth and TLS on remote server
|
||||
"""
|
||||
workspace_name = cmd_args.workspace
|
||||
host_ip = cmd_args.host
|
||||
start_port = int(cmd_args.port)
|
||||
user = cmd_args.user
|
||||
password = cmd_args.password
|
||||
custom_image = cmd_args.image
|
||||
try:
|
||||
shutil.rmtree("./remote")
|
||||
except:
|
||||
pass
|
||||
os.mkdir("./remote")
|
||||
# Generate certificate
|
||||
gen_certs()
|
||||
# Create Traefik config
|
||||
traefik_config()
|
||||
# Create docker-compose file
|
||||
comp_dict = get_compose_dict(workspace_name, host_ip, start_port, user, password, custom_image)
|
||||
with open("./remote/docker-compose.yaml", "a") as y:
|
||||
y.write(yaml.dump(comp_dict, default_style='"'))
|
||||
return
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--workspace", default="workspace-in-docker")
|
||||
parser.add_argument("--port", default=8020)
|
||||
parser.add_argument("--host")
|
||||
parser.add_argument("--user")
|
||||
parser.add_argument("--password")
|
||||
parser.add_argument("--image", default=None)
|
||||
cmd_args = parser.parse_args()
|
||||
main(cmd_args)
|
|
@ -1,107 +0,0 @@
|
|||
"""
|
||||
Utility to generate docker-compose.yaml file to launch
|
||||
static file server using built-in static fileserver tool
|
||||
|
||||
python staticserver.py --image="docs:0.1" --domain="elnoda.org" --email="blackmaster@gmail.com" --homepage="doc/pages/home/home/"
|
||||
"""
|
||||
import os
|
||||
import yaml
|
||||
import shutil
|
||||
import argparse
|
||||
import textwrap
|
||||
import subprocess
|
||||
|
||||
|
||||
def get_workspace_labels(domain, homepage):
|
||||
""" Create list of Traefik labels for the Workspace service
|
||||
"""
|
||||
labels = [
|
||||
"traefik.enable=true",
|
||||
"traefik.http.middlewares.httprepl.redirectregex.regex=^http://(.*)",
|
||||
"traefik.http.middlewares.httprepl.redirectregex.replacement=https://$${1}",
|
||||
"traefik.http.services.STATICFS_URLhttp.loadbalancer.server.port=8022",
|
||||
|
||||
"traefik.http.routers.STATICFS_URLhttp.service=STATICFS_URL",
|
||||
"traefik.http.routers.STATICFS_URLhttp.rule=PathPrefix(`/`)",
|
||||
"traefik.http.routers.STATICFS_URLhttp.entrypoints=web",
|
||||
"traefik.http.routers.STATICFS_URLhttp.middlewares=httprepl",
|
||||
|
||||
"traefik.http.services.STATICFS_URL.loadbalancer.server.port=8022",
|
||||
"traefik.http.routers.STATICFS_URL.service=STATICFS_URL",
|
||||
"traefik.http.routers.STATICFS_URL.entrypoints=websecure",
|
||||
"traefik.http.routers.STATICFS_URL.middlewares=basic-auth",
|
||||
"traefik.http.routers.STATICFS_URL.tls=true",
|
||||
"traefik.http.routers.STATICFS_URL.tls.certresolver=myresolver",
|
||||
"traefik.http.routers.STATICFS_URL.middlewares=add-context"
|
||||
]
|
||||
varlab = [
|
||||
f"traefik.http.routers.STATICFS_URL.rule=Host(`{domain}`)",
|
||||
f"traefik.http.middlewares.add-context.redirectregex.replacement=https://$$1/{homepage}",
|
||||
"traefik.http.middlewares.add-context.redirectregex.regex=^https:\\/\\/([^\\/]+)\\/?$$"
|
||||
]
|
||||
labels.extend(varlab)
|
||||
return labels
|
||||
|
||||
|
||||
def get_compose_dict(image, domain, homepage, email):
|
||||
""" Create dict of values for docker-compose. This dict is
|
||||
to be transformed into docker-compose.yaml
|
||||
"""
|
||||
traefik_command = [
|
||||
"--providers.docker=true",
|
||||
"--providers.docker.exposedbydefault=false",
|
||||
"--entrypoints.web.address=:80",
|
||||
"--entrypoints.websecure.address=:443",
|
||||
"--certificatesresolvers.myresolver.acme.tlschallenge=true",
|
||||
f"--certificatesresolvers.myresolver.acme.email={email}",
|
||||
"--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
|
||||
]
|
||||
# Create dict with Traefik values
|
||||
y = {}
|
||||
y["version"] = "3.3"
|
||||
y["services"] = {}
|
||||
y["services"]["traefik"] = {}
|
||||
y["services"]["traefik"]["image"] = "traefik:v2.4"
|
||||
#y["services"]["traefik"]["container_name"] = "trafik_container"
|
||||
y["services"]["traefik"]["command"] = traefik_command
|
||||
y["services"]["traefik"]["ports"] = [
|
||||
"443:443",
|
||||
"80:80"
|
||||
]
|
||||
y["services"]["traefik"]["volumes"] = [
|
||||
"./letsencrypt:/letsencrypt",
|
||||
"/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||
]
|
||||
y["services"]["workspace"] = {}
|
||||
y["services"]["workspace"]["image"] = f"{image}"
|
||||
y["services"]["workspace"]["labels"] = get_workspace_labels(domain, homepage)
|
||||
return y
|
||||
|
||||
|
||||
def main(cmd_args):
|
||||
""" Create YAML file for deployment of static website using
|
||||
static web server
|
||||
"""
|
||||
image = cmd_args.image
|
||||
domain = cmd_args.domain
|
||||
homepage = cmd_args.homepage
|
||||
email = cmd_args.email
|
||||
try:
|
||||
os.remove("./docker-compose.yaml")
|
||||
except:
|
||||
pass
|
||||
comp_dict = get_compose_dict(image, domain, homepage, email)
|
||||
with open("./docker-compose.yaml", "a") as y:
|
||||
y.write(yaml.dump(comp_dict, default_style='"'))
|
||||
return
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--image")
|
||||
parser.add_argument("--domain")
|
||||
parser.add_argument("--email")
|
||||
parser.add_argument("--homepage")
|
||||
cmd_args = parser.parse_args()
|
||||
main(cmd_args)
|
||||
|
|
@ -1,30 +1,6 @@
|
|||
ARG BUILD_IMAGE=node:16.17.0
|
||||
ARG MAIN_IMAGE=alnoda/extended-workspace:4.0
|
||||
################################################################################ BUILD THEIA
|
||||
FROM ${BUILD_IMAGE}
|
||||
RUN apt-get update \
|
||||
&& apt-get upgrade -y \
|
||||
&& apt-get install -y apt-utils \
|
||||
&& apt-get install -y git \
|
||||
&& apt-get install -y libsecret-1-dev \
|
||||
&& mkdir /opt/theia
|
||||
WORKDIR /opt/theia
|
||||
ADD theia_package.json ./package.json
|
||||
ARG GITHUB_TOKEN
|
||||
RUN yarn --pure-lockfile && \
|
||||
NODE_OPTIONS="--max_old_space_size=4096" yarn theia build && \
|
||||
yarn theia download:plugins && \
|
||||
yarn --production && \
|
||||
yarn autoclean --init && \
|
||||
echo *.ts >> .yarnclean && \
|
||||
echo *.ts.map >> .yarnclean && \
|
||||
echo *.spec.* >> .yarnclean && \
|
||||
yarn autoclean --force && \
|
||||
yarn cache clean
|
||||
################################################################################ WORKSPACE IMAGE
|
||||
FROM ${MAIN_IMAGE}
|
||||
FROM alnoda/extended-workspace:4.0
|
||||
|
||||
# Actions for which root escalation is reuired
|
||||
# Actions for which root escalation is needed
|
||||
USER root
|
||||
# Fix issue with timezone for Ara
|
||||
RUN echo "UTC" > /etc/timezone
|
||||
|
@ -33,19 +9,9 @@ RUN echo "------------------------------------------------------ terraform" \
|
|||
&& cd /tmp && wget https://releases.hashicorp.com/terraform/1.2.8/terraform_1.2.8_linux_amd64.zip \
|
||||
&& unzip terraform_1.2.8_linux_amd64.zip -d /usr/local/bin \
|
||||
&& rm /tmp/terraform_1.2.8_linux_amd64.zip
|
||||
|
||||
# Continue as usual non-root user
|
||||
USER abc
|
||||
|
||||
# Replace Theia with the new build, which includes additional pre-installed extensions
|
||||
# To do this, the existing Theia folder will be deleted, and new copied from the build stage
|
||||
ENV THEIA_DIR="/home/abc/apps/theia"
|
||||
RUN rm -rf $THEIA_DIR \
|
||||
&& mkdir "$THEIA_DIR" \
|
||||
&& cd $THEIA_DIR && nodeenv --node=16.17.0 env && . env/bin/activate \
|
||||
# Copy built Theia from the build image
|
||||
COPY --from=0 --chown=abc:abc /opt/theia $THEIA_DIR
|
||||
# Copy new Theia settings to set another theme for the code editor
|
||||
COPY --chown=abc:abc theia_settings.json /home/abc/.theia/settings.json
|
||||
|
||||
# Ansible apps & tools
|
||||
RUN sudo apt-get update \
|
||||
&& echo "------------------------------------------------------ ansible" \
|
||||
|
@ -109,9 +75,6 @@ RUN echo "------------------------------------------------------ blast-radius" \
|
|||
&& mv /tmp/rover/rover /home/abc/.local/bin/rover \
|
||||
&& rm -rf /tmp/rover
|
||||
|
||||
# # Rover configuration
|
||||
# ENV TERRAFORM_ROVER="http://localhost:9000"
|
||||
|
||||
# Copy Ansible & Terraform report scripts
|
||||
COPY --chown=abc:abc extra/ansible-report.sh /home/abc/.local/bin/
|
||||
COPY --chown=abc:abc extra/terraform-report.sh /home/abc/.local/bin/
|
||||
|
@ -119,6 +82,15 @@ COPY --chown=abc:abc extra/terraform-report.sh /home/abc/.local/bin/
|
|||
# Copy Ansible & Terraform examples
|
||||
COPY --chown=abc:abc ./examples/ /home/examples/
|
||||
|
||||
# Install additional codeserver extensions
|
||||
RUN echo "------------------------------------------------------ extensions" \
|
||||
&& code-server --install-extension hashicorp.terraform \
|
||||
&& code-server --install-extension redhat.ansible \
|
||||
&& code-server --install-extension samuelcolvin.jinjahtml
|
||||
|
||||
# Change default codeserver theme
|
||||
COPY --chown=abc:abc settings.json /home/abc/.local/share/code-server/User/settings.json
|
||||
|
||||
# Build Alnoda workspace
|
||||
COPY --chown=abc:abc workspace /tmp/workspace
|
||||
RUN pipx uninstall alnoda-wrk; pipx install alnoda-wrk; alnoda-wrk build /tmp/workspace && rm -rf /tmp/workspace
|
3
workspaces/ansible-terraform-workspace/settings.json
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"workbench.colorTheme": "SynthWave '84"
|
||||
}
|
|
@ -9,6 +9,8 @@ description: |
|
|||
Containerized development, execution and admin environment for Ansible and Terraform.
|
||||
Create, provision, visualize and manage infrastructures, schedule maintenance tasks.
|
||||
|
||||
tags: terraform, ansible, infra-visualisation, playbook-monitoring
|
||||
|
||||
# UI icons
|
||||
logo: terraform-circle-white.svg
|
||||
favicon: terraform-circle.svg
|
||||
|
@ -23,14 +25,12 @@ styles:
|
|||
accent: "#5C41E2"
|
||||
background: "#FFFFFF"
|
||||
title: "#604270"
|
||||
subtitle: "#7747A7"
|
||||
dark:
|
||||
primary: "#7747A7"
|
||||
accent: "#DF736A"
|
||||
background: "#171520"
|
||||
title: "#83698E"
|
||||
text: "#FFFFFF"
|
||||
subtitle: "#604270"
|
||||
common_colors:
|
||||
header: "#FFFFFF"
|
||||
nav: "#eab676"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
FROM alnoda/ubuntu-workspace:20.04-4.0
|
||||
FROM alnoda/ubuntu-workspace:4.0-20.04
|
||||
|
||||
# Make image Alnoda-compatible - add dir for logs
|
||||
USER root
|
||||
|
@ -9,7 +9,6 @@ USER abc
|
|||
|
||||
# Install workspace tools and applications
|
||||
RUN sudo apt-get -y update \
|
||||
&& mkdir /home/abc/apps \
|
||||
&& sudo apt-get install -y socat \
|
||||
&& echo "------------------------------------------------------ install filebrowser" \
|
||||
&& cd /tmp && wget https://github.com/filebrowser/filebrowser/releases/download/v2.21.1/linux-amd64-filebrowser.tar.gz \
|
||||
|
@ -32,6 +31,6 @@ COPY --chown=abc:abc filebrowser.json /home/abc/apps/filebrowser/.filebrowser.js
|
|||
# Build Alnoda workspace
|
||||
COPY --chown=abc:abc workspace /tmp/workspace
|
||||
RUN echo "------------------------------------------------------ build workspace" \
|
||||
&& pipx install alnoda-wrk \
|
||||
&& pipx install alnoda-wrk==0.2.17 \
|
||||
&& alnoda-wrk build /tmp/workspace \
|
||||
&& rm -rf /tmp/workspace
|
|
@ -8,6 +8,8 @@ description: |
|
|||
# Base devspace
|
||||
Basis for other workspaces. This workspace has UI, but does not have code editor (or IDE) up & running.
|
||||
|
||||
tags: workspace-ui, filebrowser, ungit
|
||||
|
||||
# optional:
|
||||
# (Quickstart UI appearance)
|
||||
styles:
|
||||
|
@ -23,7 +25,6 @@ styles:
|
|||
background: "#1E1E1E"
|
||||
title: "#9CDCFE"
|
||||
text: "#9CDCFE"
|
||||
subtitle: "#eab676"
|
||||
common_colors:
|
||||
header: "#FFFFFF"
|
||||
nav: "#eab676"
|
||||
|
|
|
@ -1,20 +1,51 @@
|
|||
FROM alnoda/base-devspace:4.0
|
||||
|
||||
# Set environmental variables for Code-server
|
||||
ENV CODESERVER_DIR="/home/abc/apps/code-server"
|
||||
ENV VSCODE_CONFIG_DIR="/home/abc/.config/vscode"
|
||||
ARG CODESERVER_VERSION="4.7.0"
|
||||
|
||||
# Install Code-server and create folders for data & extensions
|
||||
# Install Code-server
|
||||
RUN echo "------------------------------------------------------ code-server" \
|
||||
&& sudo apt-get install -y build-essential pkg-config \
|
||||
&& mkdir -p "$CODESERVER_DIR" \
|
||||
&& cd $CODESERVER_DIR && nodeenv --node=16.15.0 --npm=1.0.10 env \
|
||||
&& cd $CODESERVER_DIR && . env/bin/activate && npm install -g yarn && yarn global add code-server@4.4.0 \
|
||||
&& mkdir -p $VSCODE_CONFIG_DIR/data \
|
||||
&& mkdir -p $VSCODE_CONFIG_DIR/extensions
|
||||
&& cd \tmp \
|
||||
&& curl -fOL https://github.com/coder/code-server/releases/download/v$CODESERVER_VERSION/code-server_${CODESERVER_VERSION}_amd64.deb \
|
||||
&& sudo dpkg -i code-server_${CODESERVER_VERSION}_amd64.deb \
|
||||
&& rm /tmp/code-server_${CODESERVER_VERSION}_amd64.deb
|
||||
|
||||
# Copy Code-server startup script
|
||||
COPY --chown=abc:abc code-server-run.sh $CODESERVER_DIR/code-server-run.sh
|
||||
# Install codeserver extensions
|
||||
RUN echo "------------------------------------------------------ common extensions" \
|
||||
&& code-server --install-extension mhutchie.git-graph \
|
||||
&& code-server --install-extension redhat.vscode-yaml \
|
||||
&& code-server --install-extension redhat.vscode-xml \
|
||||
&& code-server --install-extension mechatroner.rainbow-csv \
|
||||
&& code-server --install-extension formulahendry.auto-close-tag \
|
||||
&& code-server --install-extension anteprimorac.html-end-tag-labels \
|
||||
&& code-server --install-extension abusaidm.html-snippets \
|
||||
&& code-server --install-extension sndst00m.vscode-native-svg-preview \
|
||||
&& code-server --install-extension pranaygp.vscode-css-peek \
|
||||
&& code-server --install-extension anseki.vscode-color \
|
||||
&& echo "------------------------------------------------------ themes" \
|
||||
&& code-server --install-extension armandphilippot.coldark \
|
||||
&& code-server --install-extension RobbOwen.synthwave-vscode \
|
||||
&& code-server --install-extension nadim-vscode.infinity-dark-theme \
|
||||
&& code-server --install-extension emroussel.atomize-atom-one-dark-theme \
|
||||
&& code-server --install-extension teabyii.ayu \
|
||||
&& code-server --install-extension wesbos.theme-cobalt2 \
|
||||
&& code-server --install-extension github.github-vscode-theme \
|
||||
&& code-server --install-extension armandphilippot.coldark \
|
||||
&& code-server --install-extension radiolevity.search-lights \
|
||||
&& code-server --install-extension vladeeg.vscode-theme-vlight \
|
||||
&& code-server --install-extension akamud.vscode-theme-onelight \
|
||||
&& code-server --install-extension akamud.vscode-theme-onedark \
|
||||
&& code-server --install-extension rubjo.ultimate-dark-neo \
|
||||
&& code-server --install-extension sainnhe.edge \
|
||||
&& echo "------------------------------------------------------ icons" \
|
||||
&& code-server --install-extension emroussel.atom-icons \
|
||||
&& code-server --install-extension laurenttreguier.vscode-simple-icons
|
||||
|
||||
# Set default codeserver terminal
|
||||
ENV SHELL=/bin/zsh
|
||||
|
||||
# Set default codeserver theme
|
||||
COPY --chown=abc:abc settings.json /home/abc/.local/share/code-server/User/settings.json
|
||||
|
||||
# Build Alnoda workspace
|
||||
COPY --chown=abc:abc workspace /tmp/workspace
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
#!/usr/bin/bash
|
||||
|
||||
if [ -n "${PASSWORD}" ] || [ -n "${HASHED_PASSWORD}" ]; then
|
||||
AUTH="password"
|
||||
else
|
||||
AUTH="none"
|
||||
echo "starting with no password"
|
||||
fi
|
||||
|
||||
if [ -z ${PROXY_DOMAIN+x} ]; then
|
||||
PROXY_DOMAIN_ARG=""
|
||||
else
|
||||
PROXY_DOMAIN_ARG="--proxy-domain=${PROXY_DOMAIN}"
|
||||
fi
|
||||
|
||||
export SHELL=/bin/zsh
|
||||
|
||||
code-server \
|
||||
--bind-addr 0.0.0.0:8021 \
|
||||
--user-data-dir $VSCODE_CONFIG_DIR/data \
|
||||
--extensions-dir $VSCODE_CONFIG_DIR/extensions \
|
||||
--disable-telemetry \
|
||||
--auth "${AUTH}" \
|
||||
"${PROXY_DOMAIN_ARG}" \
|
||||
/home/project
|
4
workspaces/codeserver-workspace/settings.json
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"workbench.colorTheme": "Atom One Dark",
|
||||
"git-graph.maxDepthOfRepoSearch": 3
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="g10" transform="matrix(3, 0, 0, -3, 0.000095, 900)" style="">
|
||||
<g id="g12" transform="scale(0.1)">
|
||||
<path d="M 1500 3000 C 671.57 3000 0 2328.43 0 1500 C 0 671.57 671.57 0 1500 0 C 2328.43 0 3000 671.57 3000 1500 C 3000 2328.43 2328.43 3000 1500 3000 Z M 2454.59 545.41 C 2199.61 290.422 1860.6 150 1500 150 C 1139.4 150 800.387 290.422 545.406 545.41 C 290.426 800.391 150 1139.4 150 1500 C 150 1860.6 290.426 2199.61 545.406 2454.59 C 800.387 2709.57 1139.4 2850 1500 2850 C 1860.6 2850 2199.61 2709.57 2454.59 2454.59 C 2709.57 2199.61 2850 1860.6 2850 1500 C 2850 1139.4 2709.57 800.391 2454.59 545.41" style="fill-opacity: 1; fill-rule: nonzero; stroke: none; fill: rgb(255, 255, 255);" id="path14"/>
|
||||
</g>
|
||||
</g>
|
||||
<path d="M 750.13 417.241 C 735.976 417.241 726.548 409.051 726.548 392.237 L 726.548 295.688 C 726.548 234.047 700.815 200 634.352 200 L 603.48 200 L 603.48 265.085 L 612.915 265.085 C 639.072 265.085 651.51 279.308 651.51 304.739 L 651.51 390.082 C 651.51 427.153 662.654 442.238 687.094 449.999 C 662.654 457.329 651.51 472.842 651.51 509.912 C 651.51 531.029 651.51 552.157 651.51 573.275 C 651.51 590.95 651.51 608.19 646.789 625.857 C 642.075 642.237 634.352 657.756 623.633 671.119 C 617.628 678.882 610.771 685.344 603.054 691.376 L 603.054 700 L 633.925 700 C 700.391 700 726.114 665.946 726.114 604.306 L 726.114 507.756 C 726.114 490.515 735.124 482.759 749.703 482.759 L 767.28 482.759 L 767.28 417.667 L 750.13 417.667 L 750.13 417.241 Z" style="fill: rgb(255, 255, 255);" transform="matrix(1, 0, 0, 1, 32.719971, 0)"/>
|
||||
<path d="M 540.018 298.285 L 444.828 298.285 C 442.683 298.285 440.965 296.562 440.965 294.407 L 440.965 287.078 C 440.965 284.921 442.683 283.201 444.828 283.201 L 540.444 283.201 C 542.588 283.201 544.307 284.921 544.307 287.078 L 544.307 294.407 C 544.307 296.562 542.163 298.285 540.018 298.285 Z" style="fill: rgb(255, 255, 255);" transform="matrix(1, 0, 0, 1, 32.719971, 0)"/>
|
||||
<path d="M 556.309 391.382 L 486.85 391.382 C 484.707 391.382 482.988 389.662 482.988 387.505 L 482.988 380.176 C 482.988 378.028 484.707 376.298 486.85 376.298 L 556.309 376.298 C 558.455 376.298 560.171 378.028 560.171 380.176 L 560.171 387.505 C 560.171 389.234 558.455 391.382 556.309 391.382 Z" style="fill: rgb(255, 255, 255);" transform="matrix(1, 0, 0, 1, 32.719971, 0)"/>
|
||||
<path d="M 583.754 344.834 L 444.828 344.834 C 442.683 344.834 440.965 343.111 440.965 340.956 L 440.965 333.627 C 440.965 331.478 442.683 329.748 444.828 329.748 L 583.327 329.748 C 585.47 329.748 587.182 331.478 587.182 333.627 L 587.182 340.956 C 587.182 342.685 585.898 344.834 583.754 344.834 Z" style="fill: rgb(255, 255, 255);" transform="matrix(1, 0, 0, 1, 32.719971, 0)"/>
|
||||
<path d="M 334.628 319.397 C 344.056 319.397 353.49 320.257 362.498 322.414 L 362.498 304.739 C 362.498 279.741 375.36 265.085 401.085 265.085 L 410.52 265.085 L 410.52 200 L 379.648 200 C 313.184 200 287.458 234.047 287.458 295.688 L 287.458 327.587 C 302.465 322.414 318.329 319.397 334.628 319.397 Z" style="fill: rgb(255, 255, 255);" transform="matrix(1, 0, 0, 1, 32.719971, 0)"/>
|
||||
<path d="M 612.915 553.865 C 606.05 499.125 564.033 453.438 510 443.091 C 494.993 440.075 479.986 439.641 465.404 442.23 C 464.98 442.23 464.98 441.797 464.554 441.797 C 440.965 392.231 390.367 359.471 335.48 359.471 C 280.595 359.471 230.429 391.37 206.413 440.937 C 205.988 440.937 205.988 441.37 205.555 441.37 C 190.123 439.641 174.684 440.502 159.251 444.387 C 106.075 457.315 65.771 502.144 58.48 556.455 C 57.62 562.054 57.195 567.661 57.195 572.834 C 57.195 589.214 68.347 604.298 84.638 606.455 C 104.791 609.471 122.375 593.953 121.941 574.129 C 121.941 571.105 121.941 567.661 122.375 564.645 C 125.804 537.058 146.814 513.784 174.256 507.316 C 182.832 505.159 191.408 504.732 199.558 506.02 C 225.716 509.471 251.439 496.108 262.584 472.833 C 270.735 455.593 283.597 440.502 300.754 432.313 C 319.615 423.261 341.06 421.973 360.779 428.868 C 381.366 436.198 396.799 451.708 406.232 471.105 C 416.099 490.075 420.812 503.437 441.824 506.02 C 450.398 507.316 474.413 506.882 483.415 506.455 C 500.998 506.455 518.582 512.488 531.01 524.99 C 539.161 533.607 545.164 544.388 547.734 556.455 C 551.596 575.851 546.877 595.248 535.299 609.898 C 527.156 620.245 516.005 628.008 503.568 631.451 C 497.569 633.179 491.563 633.608 485.558 633.608 C 482.13 633.608 477.416 633.608 471.837 633.608 C 454.687 633.608 418.242 633.608 390.8 633.608 C 371.932 633.608 356.925 618.522 356.925 599.553 L 356.925 535.764 L 356.925 473.262 C 356.925 468.088 352.638 463.783 347.491 463.783 L 334.197 463.783 C 308.038 464.21 287.032 493.525 287.032 524.557 C 287.032 555.592 287.032 637.919 287.032 637.919 C 287.032 671.539 314.043 698.692 347.491 698.692 C 347.491 698.692 496.284 698.266 498.428 698.266 C 532.728 694.815 564.46 677.146 585.898 649.986 C 607.342 623.696 617.201 589.214 612.915 553.865 Z" style="fill: rgb(255, 255, 255);" transform="matrix(1, 0, 0, 1, 32.719971, 0)"/>
|
||||
</svg>
|
After Width: | Height: | Size: 5 KiB |
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="g10" transform="matrix(3, 0, 0, -3, 0.000095, 900)" style="">
|
||||
<g id="g12" transform="scale(0.1)">
|
||||
<path d="M 1500 3000 C 671.57 3000 0 2328.43 0 1500 C 0 671.57 671.57 0 1500 0 C 2328.43 0 3000 671.57 3000 1500 C 3000 2328.43 2328.43 3000 1500 3000 Z M 2454.59 545.41 C 2199.61 290.422 1860.6 150 1500 150 C 1139.4 150 800.387 290.422 545.406 545.41 C 290.426 800.391 150 1139.4 150 1500 C 150 1860.6 290.426 2199.61 545.406 2454.59 C 800.387 2709.57 1139.4 2850 1500 2850 C 1860.6 2850 2199.61 2709.57 2454.59 2454.59 C 2709.57 2199.61 2850 1860.6 2850 1500 C 2850 1139.4 2709.57 800.391 2454.59 545.41" style="fill-opacity: 1; fill-rule: nonzero; stroke: none;" id="path14"/>
|
||||
</g>
|
||||
</g>
|
||||
<path d="M 750.13 417.241 C 735.976 417.241 726.548 409.051 726.548 392.237 L 726.548 295.688 C 726.548 234.047 700.815 200 634.352 200 L 603.48 200 L 603.48 265.085 L 612.915 265.085 C 639.072 265.085 651.51 279.308 651.51 304.739 L 651.51 390.082 C 651.51 427.153 662.654 442.238 687.094 449.999 C 662.654 457.329 651.51 472.842 651.51 509.912 C 651.51 531.029 651.51 552.157 651.51 573.275 C 651.51 590.95 651.51 608.19 646.789 625.857 C 642.075 642.237 634.352 657.756 623.633 671.119 C 617.628 678.882 610.771 685.344 603.054 691.376 L 603.054 700 L 633.925 700 C 700.391 700 726.114 665.946 726.114 604.306 L 726.114 507.756 C 726.114 490.515 735.124 482.759 749.703 482.759 L 767.28 482.759 L 767.28 417.667 L 750.13 417.667 L 750.13 417.241 Z" style="" transform="matrix(1, 0, 0, 1, 32.719971, 0)"/>
|
||||
<path d="M 540.018 298.285 L 444.828 298.285 C 442.683 298.285 440.965 296.562 440.965 294.407 L 440.965 287.078 C 440.965 284.921 442.683 283.201 444.828 283.201 L 540.444 283.201 C 542.588 283.201 544.307 284.921 544.307 287.078 L 544.307 294.407 C 544.307 296.562 542.163 298.285 540.018 298.285 Z" style="" transform="matrix(1, 0, 0, 1, 32.719971, 0)"/>
|
||||
<path d="M 556.309 391.382 L 486.85 391.382 C 484.707 391.382 482.988 389.662 482.988 387.505 L 482.988 380.176 C 482.988 378.028 484.707 376.298 486.85 376.298 L 556.309 376.298 C 558.455 376.298 560.171 378.028 560.171 380.176 L 560.171 387.505 C 560.171 389.234 558.455 391.382 556.309 391.382 Z" style="" transform="matrix(1, 0, 0, 1, 32.719971, 0)"/>
|
||||
<path d="M 583.754 344.834 L 444.828 344.834 C 442.683 344.834 440.965 343.111 440.965 340.956 L 440.965 333.627 C 440.965 331.478 442.683 329.748 444.828 329.748 L 583.327 329.748 C 585.47 329.748 587.182 331.478 587.182 333.627 L 587.182 340.956 C 587.182 342.685 585.898 344.834 583.754 344.834 Z" style="" transform="matrix(1, 0, 0, 1, 32.719971, 0)"/>
|
||||
<path d="M 334.628 319.397 C 344.056 319.397 353.49 320.257 362.498 322.414 L 362.498 304.739 C 362.498 279.741 375.36 265.085 401.085 265.085 L 410.52 265.085 L 410.52 200 L 379.648 200 C 313.184 200 287.458 234.047 287.458 295.688 L 287.458 327.587 C 302.465 322.414 318.329 319.397 334.628 319.397 Z" style="" transform="matrix(1, 0, 0, 1, 32.719971, 0)"/>
|
||||
<path d="M 612.915 553.865 C 606.05 499.125 564.033 453.438 510 443.091 C 494.993 440.075 479.986 439.641 465.404 442.23 C 464.98 442.23 464.98 441.797 464.554 441.797 C 440.965 392.231 390.367 359.471 335.48 359.471 C 280.595 359.471 230.429 391.37 206.413 440.937 C 205.988 440.937 205.988 441.37 205.555 441.37 C 190.123 439.641 174.684 440.502 159.251 444.387 C 106.075 457.315 65.771 502.144 58.48 556.455 C 57.62 562.054 57.195 567.661 57.195 572.834 C 57.195 589.214 68.347 604.298 84.638 606.455 C 104.791 609.471 122.375 593.953 121.941 574.129 C 121.941 571.105 121.941 567.661 122.375 564.645 C 125.804 537.058 146.814 513.784 174.256 507.316 C 182.832 505.159 191.408 504.732 199.558 506.02 C 225.716 509.471 251.439 496.108 262.584 472.833 C 270.735 455.593 283.597 440.502 300.754 432.313 C 319.615 423.261 341.06 421.973 360.779 428.868 C 381.366 436.198 396.799 451.708 406.232 471.105 C 416.099 490.075 420.812 503.437 441.824 506.02 C 450.398 507.316 474.413 506.882 483.415 506.455 C 500.998 506.455 518.582 512.488 531.01 524.99 C 539.161 533.607 545.164 544.388 547.734 556.455 C 551.596 575.851 546.877 595.248 535.299 609.898 C 527.156 620.245 516.005 628.008 503.568 631.451 C 497.569 633.179 491.563 633.608 485.558 633.608 C 482.13 633.608 477.416 633.608 471.837 633.608 C 454.687 633.608 418.242 633.608 390.8 633.608 C 371.932 633.608 356.925 618.522 356.925 599.553 L 356.925 535.764 L 356.925 473.262 C 356.925 468.088 352.638 463.783 347.491 463.783 L 334.197 463.783 C 308.038 464.21 287.032 493.525 287.032 524.557 C 287.032 555.592 287.032 637.919 287.032 637.919 C 287.032 671.539 314.043 698.692 347.491 698.692 C 347.491 698.692 496.284 698.266 498.428 698.266 C 532.728 694.815 564.46 677.146 585.898 649.986 C 607.342 623.696 617.201 589.214 612.915 553.865 Z" style="" transform="matrix(1, 0, 0, 1, 32.719971, 0)"/>
|
||||
</svg>
|
After Width: | Height: | Size: 4.8 KiB |
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="g10" transform="matrix(3, 0, 0, -3, 0.000095, 900)" style="">
|
||||
<g id="g12" transform="scale(0.1)">
|
||||
<path d="M 1500 3000 C 671.57 3000 0 2328.43 0 1500 C 0 671.57 671.57 0 1500 0 C 2328.43 0 3000 671.57 3000 1500 C 3000 2328.43 2328.43 3000 1500 3000 Z M 2454.59 545.41 C 2199.61 290.422 1860.6 150 1500 150 C 1139.4 150 800.387 290.422 545.406 545.41 C 290.426 800.391 150 1139.4 150 1500 C 150 1860.6 290.426 2199.61 545.406 2454.59 C 800.387 2709.57 1139.4 2850 1500 2850 C 1860.6 2850 2199.61 2709.57 2454.59 2454.59 C 2709.57 2199.61 2850 1860.6 2850 1500 C 2850 1139.4 2709.57 800.391 2454.59 545.41" style="fill-opacity: 1; fill-rule: nonzero; stroke: none; fill: rgb(255, 255, 255);" id="path14"/>
|
||||
</g>
|
||||
</g>
|
||||
<path d="M 577.733 100 L 413.29 283.961 L 300.781 409.808 L 138.716 263.28 L 100 287.767 L 100 617.463 L 134.754 644.256 L 303.122 491.866 L 577.733 800 L 700 740.967 L 700 161.752 L 577.733 100 Z M 153.123 539.593 L 153.123 359.989 L 228.031 450.002 L 153.123 539.593 Z M 554.503 577.9 L 400.001 450.002 L 554.503 321.68 L 554.503 577.9 Z" style="fill: rgb(255, 255, 255);"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.2 KiB |
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="g10" transform="matrix(3, 0, 0, -3, 0.000095, 900)" style="">
|
||||
<g id="g12" transform="scale(0.1)">
|
||||
<path d="M 1500 3000 C 671.57 3000 0 2328.43 0 1500 C 0 671.57 671.57 0 1500 0 C 2328.43 0 3000 671.57 3000 1500 C 3000 2328.43 2328.43 3000 1500 3000 Z M 2454.59 545.41 C 2199.61 290.422 1860.6 150 1500 150 C 1139.4 150 800.387 290.422 545.406 545.41 C 290.426 800.391 150 1139.4 150 1500 C 150 1860.6 290.426 2199.61 545.406 2454.59 C 800.387 2709.57 1139.4 2850 1500 2850 C 1860.6 2850 2199.61 2709.57 2454.59 2454.59 C 2709.57 2199.61 2850 1860.6 2850 1500 C 2850 1139.4 2709.57 800.391 2454.59 545.41" style="fill-opacity: 1; fill-rule: nonzero; stroke: none;" id="path14"/>
|
||||
</g>
|
||||
</g>
|
||||
<path d="M 577.733 100 L 413.29 283.961 L 300.781 409.808 L 138.716 263.28 L 100 287.767 L 100 617.463 L 134.754 644.256 L 303.122 491.866 L 577.733 800 L 700 740.967 L 700 161.752 L 577.733 100 Z M 153.123 539.593 L 153.123 359.989 L 228.031 450.002 L 153.123 539.593 Z M 554.503 577.9 L 400.001 450.002 L 554.503 321.68 L 554.503 577.9 Z" style=""/>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.1 KiB |
|
@ -6,30 +6,25 @@ author: bluxmit
|
|||
version: 4.0
|
||||
description: |
|
||||
# Code-server workspace
|
||||
General-purpose portable containerized browser-based development environment.
|
||||
Browser-based portable and containerized general-purpose development environment.
|
||||
Includes code editor, terminal, file browser and git manager.
|
||||
|
||||
# UI icons
|
||||
logo: vscode-circle-white.svg
|
||||
favicon: vscode-circle.svg
|
||||
tags: web-ide, codeserver
|
||||
|
||||
# UI icons
|
||||
logo: codeserver-circle-white.svg
|
||||
favicon: codeserver-circle.svg
|
||||
|
||||
# (Homepage UI appearance)
|
||||
styles:
|
||||
colors:
|
||||
light:
|
||||
primary: "#271647"
|
||||
accent: "#44DA88"
|
||||
subtitle: "#271647"
|
||||
code_text: "#EAB676"
|
||||
code_background: "#252525"
|
||||
dark:
|
||||
primary: "#2b3ac4"
|
||||
accent: "#44DA88"
|
||||
background: "#2E303E"
|
||||
title: "#E9EBFC"
|
||||
subtitle: "#E9EBFC"
|
||||
text: "#E9EBFC"
|
||||
code_text: "#EAB676"
|
||||
code_background: "#3C3C3C"
|
||||
|
||||
# add applications and services to the start command
|
||||
start:
|
||||
- name: Code-server
|
||||
folder: $CODESERVER_DIR
|
||||
cmd: . env/bin/activate; bash code-server-run.sh
|
||||
cmd: code-server --bind-addr 0.0.0.0:8021 --auth "none" --disable-telemetry /home
|
|
@ -8,9 +8,9 @@ RUN echo "------------------------------------------------------ nodejs-18" \
|
|||
&& npm install -g npm@8.7.0 \
|
||||
&& echo "------------------------------------------------------ elasticsearch-dump" \
|
||||
&& npm install elasticdump@6.88.0 -g
|
||||
|
||||
# Switch back to abc user and continue
|
||||
USER abc
|
||||
|
||||
RUN sudo apt-get -y update \
|
||||
&& echo "------------------------------------------------------ esbulk" \
|
||||
&& cd /tmp && wget https://github.com/miku/esbulk/releases/download/v0.7.5/esbulk_0.7.5_amd64.deb \
|
||||
|
@ -23,8 +23,8 @@ RUN sudo apt-get -y update \
|
|||
&& mv /tmp/vulcanizer /home/abc/.local/bin/vulcanizer \
|
||||
&& rm /tmp/vulcanizer_0.8.0_Linux_i386.tar.gz
|
||||
|
||||
# Copy new theia configuration (set another default theme)
|
||||
COPY --chown=abc:abc settings.json /home/abc/.theia/settings.json
|
||||
# Change default codeserver theme
|
||||
COPY --chown=abc:abc settings.json /home/abc/.local/share/code-server/User/settings.json
|
||||
|
||||
# Build Alnoda workspace
|
||||
COPY --chown=abc:abc workspace /tmp/workspace
|
||||
|
|
|
@ -9,6 +9,8 @@ description: |
|
|||
Browser-based containerized environment to interact,
|
||||
manage and administer Opensearch and Elasticsearch clusters.
|
||||
|
||||
tags: elasticsearch, opensearch, data-loading, data-backup, nodejs
|
||||
|
||||
# UI icons
|
||||
logo: osearch-circle-white.svg
|
||||
favicon: osearch-circle.svg
|
||||
|
@ -20,12 +22,10 @@ styles:
|
|||
light:
|
||||
primary: "#003B5C"
|
||||
accent: "#00A3E0"
|
||||
subtitle: "#003B5C"
|
||||
background: "#F5F7F7"
|
||||
dark:
|
||||
primary: "#176655"
|
||||
accent: "#FEC514"
|
||||
background: "#343741"
|
||||
title: "#9CDCFE"
|
||||
subtitle: "#9CDCFE"
|
||||
text: "#9CDCFE"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
ARG BUILD_IMAGE=node:12.18.3
|
||||
ARG BUILD_IMAGE=node:16.17.0
|
||||
ARG MAIN_IMAGE=alnoda/java-workspace:4.0-17
|
||||
################################################################################ BUILD THEIA
|
||||
FROM ${BUILD_IMAGE}
|
||||
|
@ -9,7 +9,7 @@ RUN apt-get update \
|
|||
&& apt-get install -y libsecret-1-dev \
|
||||
&& mkdir /opt/theia
|
||||
WORKDIR /opt/theia
|
||||
ADD theia_package.json ./package.json
|
||||
ADD elixir_theia_package.json ./package.json
|
||||
ARG GITHUB_TOKEN
|
||||
RUN yarn --pure-lockfile && \
|
||||
NODE_OPTIONS="--max_old_space_size=4096" yarn theia build && \
|
||||
|
@ -29,7 +29,7 @@ FROM ${MAIN_IMAGE}
|
|||
ENV THEIA_DIR="/home/abc/apps/theia"
|
||||
RUN rm -rf $THEIA_DIR \
|
||||
&& mkdir "$THEIA_DIR" \
|
||||
&& cd $THEIA_DIR && nodeenv --node=12.18.3 env && . env/bin/activate
|
||||
&& cd $THEIA_DIR && nodeenv --node=16.17.0 env && . env/bin/activate
|
||||
# Copy built Theia from the build image
|
||||
COPY --from=0 --chown=abc:abc /opt/theia $THEIA_DIR
|
||||
|
||||
|
|
|
@ -8,6 +8,8 @@ description: |
|
|||
# Erlang & Elixir workspace
|
||||
Browser-based portable and containerized development environment for Erlang and Elixir projects.
|
||||
|
||||
tags: erlang, elixir, kerl, kiex
|
||||
|
||||
# UI icons
|
||||
logo: elixir-circle-white.svg
|
||||
favicon: elixir-circle.svg
|
||||
|
@ -29,3 +31,5 @@ styles:
|
|||
title: "#83698E"
|
||||
subtitle: "#604270"
|
||||
text: "#FFFFFF"
|
||||
code_text: "#000000"
|
||||
code_background: "#F0F0F0"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
FROM alnoda/theia-workspace:4.0
|
||||
FROM alnoda/codeserver-workspace:4.0
|
||||
|
||||
# Set env variables for Cronicle and Static file server
|
||||
ENV CRONICLE_VERSION="v0.9.10" \
|
||||
|
|
|
@ -9,6 +9,8 @@ description: |
|
|||
General-purpose portable containerized browser-based environment for code development and execution.
|
||||
Includes code editor, terminal, file browser, Git manager and visual jobs scheduler.
|
||||
|
||||
tags: task-scheduler, static-file-server
|
||||
|
||||
# UI icons
|
||||
logo: extended-workspace-white.svg
|
||||
favicon: extended-workspace.svg
|
||||
|
@ -19,14 +21,14 @@ styles:
|
|||
light:
|
||||
primary: "#2A2D2E"
|
||||
accent: "#E77260"
|
||||
subtitle: "#2A2D2E"
|
||||
dark:
|
||||
primary: "#3C3C3C"
|
||||
accent: "#E77260"
|
||||
background: "#1E1E1E"
|
||||
title: "#9CDCFE"
|
||||
subtitle: "#9CDCFE"
|
||||
text: "#9CDCFE"
|
||||
code_text: "#EAB676"
|
||||
code_background: "#3C3C3C"
|
||||
common_colors:
|
||||
nav: "#eab676"
|
||||
|
||||
|
|
40
workspaces/fancy-nodejs-workspace/Dockerfile
Normal file
|
@ -0,0 +1,40 @@
|
|||
FROM alnoda/codeserver-workspace:4.0
|
||||
|
||||
USER root
|
||||
RUN sudo apt-get -y update \
|
||||
&& echo "------------------------------------------------------ system nodejs-18" \
|
||||
&& curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \
|
||||
&& sudo apt-get install -y nodejs \
|
||||
&& npm install --global yarn \
|
||||
&& echo "------------------------------------------------------ user" \
|
||||
&& chown abc /usr/lib/node_modules \
|
||||
&& find /usr/lib/node_modules -type f | xargs -I{} chown abc {}
|
||||
USER abc
|
||||
|
||||
RUN echo "------------------------------------------------------ nvm" \
|
||||
&& wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash \
|
||||
&& echo 'export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"' >> /home/abc/.zshrc \
|
||||
&& echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> /home/abc/.zshrc
|
||||
|
||||
# Create node environment & install Static file server
|
||||
ENV STATIC_FILESERVER_DIR="/home/abc/apps/static-file-server"
|
||||
RUN echo "------------------------------------------------------ Static file server" \
|
||||
&& mkdir /home/static-server \
|
||||
&& mkdir -p $STATIC_FILESERVER_DIR \
|
||||
&& cd $STATIC_FILESERVER_DIR && nodeenv --node=16.17.0 --npm=6.0.0 env \
|
||||
&& cd $STATIC_FILESERVER_DIR && . env/bin/activate && npm install -g serve@14.0.1
|
||||
|
||||
# Install additional codeserver extensions
|
||||
RUN echo "------------------------------------------------------ extensions" \
|
||||
&& code-server --install-extension bradlc.vscode-tailwindcss \
|
||||
&& code-server --install-extension anseki.vscode-color \
|
||||
&& code-server --install-extension christian-kohler.npm-intellisense \
|
||||
&& code-server --install-extension xabikos.JavaScriptSnippets \
|
||||
&& code-server --install-extension kumar-harsh.graphql-for-vscode
|
||||
|
||||
# Change default codeserver theme
|
||||
COPY --chown=abc:abc settings.json /home/abc/.local/share/code-server/User/settings.json
|
||||
|
||||
# Build Alnoda workspace
|
||||
COPY --chown=abc:abc workspace /tmp/workspace
|
||||
RUN pipx uninstall alnoda-wrk; pipx install alnoda-wrk; alnoda-wrk build /tmp/workspace && rm -rf /tmp/workspace
|
62
workspaces/fancy-nodejs-workspace/README.md
Normal file
|
@ -0,0 +1,62 @@
|
|||
<p align="center">
|
||||
<img src="./img/nodejs-circle.svg" alt="Nodejs logo" width="150">
|
||||
</p>
|
||||
|
||||
# Node.js workspace
|
||||
|
||||
Containerized isolated development environment for Javascript and Node.js
|
||||
|
||||
<p align="center">
|
||||
<img src="https://raw.githubusercontent.com/bluxmit/alnoda-workspaces/main/workspaces/codeserver-workspace/img/codeserver-collage-sm.jpg" alt="Collage" width="750">
|
||||
</p>
|
||||
|
||||
## Why this images
|
||||
|
||||
1. If you need self-hosted development environment.
|
||||
2. If you want to be one terminal command away from coding in JavaScript.
|
||||
|
||||
## Start
|
||||
|
||||
```
|
||||
docker run --name space-1 -d -p 8020-8040:8020-8040 alnoda/nodejs-workspace
|
||||
```
|
||||
|
||||
open [localhost:8020](http://localhost:8020) in browser.
|
||||
|
||||
## Features
|
||||
|
||||
- Node
|
||||
- Npm
|
||||
- Yarn
|
||||
- [Nvm](https://github.com/nvm-sh/nvm)
|
||||
- [Nodeenv](https://pypi.org/project/nodeenv/)
|
||||
|
||||
**Dev tools:**
|
||||
|
||||
- [**Eclipse Theia**](https://theia-ide.org/docs/) - open source version of popular Visual Studio Code IDE. Theia is trully open-source, has
|
||||
VS-Code extensions and works in browser. This means it can run inside a docker container on local machine or in cloud. A lot of beautiful color themes and many common plugins are already installed to save time.
|
||||
- [**Terminal**](https://github.com/tsl0922/ttyd) - secure browser-based terminal.
|
||||
- [**FileBrowser**](https://github.com/filebrowser/filebrowser) - manage files and folders inside the workspace, and exchange data between local environment and the workspace
|
||||
- [**Ungit**](https://github.com/FredrikNoren/ungit) - rings user friendliness to git without sacrificing the versatility of it.
|
||||
- **Ubuntu 20.4** with the following CLI apps
|
||||
- [Zsh](https://www.zsh.org/), [Oh my Zsh](https://ohmyz.sh/)
|
||||
- Python 3, Pip
|
||||
- Node/nodeenv
|
||||
- curl, wget, telnet, jq
|
||||
- **Git:** git, git-flow, lazygit
|
||||
- **File browsers:** mc
|
||||
- **Text editors:** nano, vim, mcedit
|
||||
- **System monitors:** ncdu, htop, glances, vizex
|
||||
- **Process Control:** supervisord
|
||||
- **Job scheduler:** cron
|
||||
- **Terminal multiplexer:** tmux
|
||||
|
||||
|
||||
## Docs
|
||||
|
||||
See our guides on
|
||||
|
||||
- [**getting started**](https://docs.alnoda.org/get-started/common-features/)
|
||||
- [**workspace tutorial**](https://docs.alnoda.org/nodejs-workspace/)
|
||||
- [**project docs**](https://docs.alnoda.org/)
|
||||
|
4
workspaces/fancy-nodejs-workspace/settings.json
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"workbench.colorTheme": "Edge Dark",
|
||||
"git-graph.maxDepthOfRepoSearch": 3
|
||||
}
|
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 2 KiB |
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 2 KiB |
After Width: | Height: | Size: 51 KiB |
49
workspaces/fancy-nodejs-workspace/workspace/workspace.yaml
Normal file
|
@ -0,0 +1,49 @@
|
|||
---
|
||||
# mandatory
|
||||
name: Node.js workspace
|
||||
doc_url: https://docs.alnoda.org/workspaces/nodejs-workspace/
|
||||
author: bluxmit
|
||||
version: 4.0
|
||||
description: |
|
||||
# Node.js workspace
|
||||
Browser-based portable and containerized development environment for Javascript and Node.js projects
|
||||
|
||||
tags: javascript, nodejs, npm, yarn, nvm
|
||||
|
||||
# UI icons
|
||||
logo: nodejs-circle-white.svg
|
||||
favicon: nodejs-circle.svg
|
||||
|
||||
# Homepage UI appearance
|
||||
styles:
|
||||
font: Open Sans # chose any from https://fonts.google.com/
|
||||
colors:
|
||||
light:
|
||||
primary: "#3E863D"
|
||||
accent: "#C53635"
|
||||
title: "#233056"
|
||||
text: "#233056"
|
||||
dark:
|
||||
primary: "#3E863D"
|
||||
accent: "#3E863D"
|
||||
background: "#233056"
|
||||
title: "#FFFFFF"
|
||||
text: "#FFFFFF"
|
||||
common_colors:
|
||||
nav: "#eab676"
|
||||
|
||||
# Add Static file server tab to the Home page
|
||||
pages:
|
||||
home:
|
||||
- name: Static file server
|
||||
port: 8028
|
||||
path: /
|
||||
title: Static File Server
|
||||
description: "Serve any static websites like a breeze"
|
||||
image: static-file-server.png
|
||||
|
||||
# start Static file server
|
||||
start:
|
||||
- name: Static file server
|
||||
folder: $STATIC_FILESERVER_DIR
|
||||
cmd: . env/bin/activate; serve -p 8028 /home/static-server
|
|
@ -1,4 +1,4 @@
|
|||
FROM alnoda/theia-workspace:4.0
|
||||
FROM alnoda/codeserver-workspace:4.0
|
||||
|
||||
# Istall Golang
|
||||
RUN cd /tmp && curl -LO https://go.dev/dl/go1.18.2.linux-amd64.tar.gz \
|
||||
|
@ -7,10 +7,19 @@ RUN cd /tmp && curl -LO https://go.dev/dl/go1.18.2.linux-amd64.tar.gz \
|
|||
|
||||
# Set environmental variables
|
||||
ENV PATH="$PATH:/home/abc/go/bin"
|
||||
ENV GOPATH="/home/abc/go"
|
||||
|
||||
# Build Alnoda workspace UI
|
||||
RUN go install -v github.com/ramya-rao-a/go-outline@latest \
|
||||
&& go install -v golang.org/x/tools/gopls@latest
|
||||
|
||||
# Install additional codeserver extensions
|
||||
RUN echo "------------------------------------------------------ extensions" \
|
||||
&& code-server --install-extension golang.go \
|
||||
&& code-server --install-extension tonsky.theme-alabaster
|
||||
|
||||
# Change default codeserver theme
|
||||
COPY --chown=abc:abc settings.json /home/abc/.local/share/code-server/User/settings.json
|
||||
|
||||
# Build Alnoda workspace
|
||||
COPY --chown=abc:abc workspace /tmp/workspace
|
||||
RUN alnoda-wrk build /tmp/workspace && rm -rf /tmp/workspace
|
||||
|
||||
# Copy new Theia settings to set another theme for the code editor
|
||||
COPY --chown=abc:abc theia_settings.json /home/abc/.theia/settings.json
|
||||
RUN pipx uninstall alnoda-wrk; pipx install alnoda-wrk; alnoda-wrk build /tmp/workspace && rm -rf /tmp/workspace
|
7
workspaces/go-workspace/settings.json
Normal file
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"workbench.colorTheme": "Alabaster",
|
||||
"git-graph.maxDepthOfRepoSearch": 3,
|
||||
"gopls": {
|
||||
"experimentalWorkspaceModule": true
|
||||
}
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
"terminal.integrated.shell.linux": "/bin/zsh",
|
||||
"workbench.colorTheme": "GitHub Light",
|
||||
"git-graph.maxDepthOfRepoSearch": 3
|
||||
}
|
|
@ -6,7 +6,9 @@ author: bluxmit
|
|||
version: 4.0
|
||||
description: |
|
||||
# Go (golang) workspace
|
||||
Portable containerized isolated development environment for Go programming language.
|
||||
Browser-based portable containerized and completely isolated development environment for Go programming language projects.
|
||||
|
||||
tags: go
|
||||
|
||||
# UI icons
|
||||
logo: go-circle-white.svg
|
||||
|
@ -20,14 +22,12 @@ styles:
|
|||
primary: "#007D9C"
|
||||
accent: "#c9af06"
|
||||
title: "#007D9C"
|
||||
subtitle: "#c9af06"
|
||||
background: "#FFFFFF"
|
||||
dark:
|
||||
primary: "#007D9C"
|
||||
accent: "#c9af06"
|
||||
background: "#010d14"
|
||||
title: "#79D4FD"
|
||||
subtitle: "#c9af06"
|
||||
text: "#FFFFFF"
|
||||
common_colors:
|
||||
nav: "#eab676"
|
|
@ -1,81 +0,0 @@
|
|||
|
||||
ARG docker_registry=docker.io/alnoda
|
||||
ARG image_tag=3.0
|
||||
|
||||
## Images used:
|
||||
ARG BUILD_IMAGE=node:12.18.3
|
||||
ARG DEPLOY_IMAGE=${docker_registry}/base-workspace:${image_tag}
|
||||
|
||||
|
||||
################################################################################ BUILD
|
||||
|
||||
ARG THEIA_VERSION=1.15.0
|
||||
#ARG THEIA_VERSION=latest
|
||||
#ARG THEIA_VERSION=next
|
||||
FROM ${BUILD_IMAGE}
|
||||
|
||||
ARG THEIA_VERSION
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get upgrade -y \
|
||||
&& apt-get install -y apt-utils \
|
||||
&& apt-get install -y git \
|
||||
&& apt-get install -y libsecret-1-dev \
|
||||
&& mkdir /opt/theia
|
||||
|
||||
WORKDIR /opt/theia
|
||||
ADD ${THEIA_VERSION}.package.json ./package.json
|
||||
ARG GITHUB_TOKEN
|
||||
RUN yarn --pure-lockfile && \
|
||||
NODE_OPTIONS="--max_old_space_size=4096" yarn theia build && \
|
||||
yarn theia download:plugins && \
|
||||
yarn --production && \
|
||||
yarn autoclean --init && \
|
||||
echo *.ts >> .yarnclean && \
|
||||
echo *.ts.map >> .yarnclean && \
|
||||
echo *.spec.* >> .yarnclean && \
|
||||
yarn autoclean --force && \
|
||||
yarn cache clean
|
||||
|
||||
|
||||
################################################################################ IMAGE
|
||||
|
||||
FROM ${DEPLOY_IMAGE}
|
||||
|
||||
USER root
|
||||
|
||||
RUN mkdir /opt/theia \
|
||||
&& cd /opt/theia && nodeenv --node=12.18.3 env && . env/bin/activate \
|
||||
&& apt-get install -y libsecret-1-dev
|
||||
|
||||
COPY --from=0 /opt/theia /opt/theia
|
||||
COPY settings.json /home/abc/.theia/settings.json
|
||||
COPY supervisord-theia.conf /etc/supervisord/
|
||||
|
||||
COPY ./mkdocs/mkdocs.yml /home/docs/mkdocs.yml
|
||||
COPY ./mkdocs/helpers.py /home/docs/macros
|
||||
COPY ./mkdocs/IDE.jpg /home/docs/docs/assets/home/
|
||||
COPY ./mkdocs/README.md /home/docs/docs/README.md
|
||||
|
||||
ENV SHELL=/bin/bash \
|
||||
THEIA_DEFAULT_PLUGINS=local-dir:/opt/theia/plugins \
|
||||
USE_LOCAL_GIT=true \
|
||||
HOME=/home/abc \
|
||||
PATH="/home/abc/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" \
|
||||
NVM_DIR=/home/abc/.nvm
|
||||
|
||||
RUN echo "------------------------------------------------------ utils" \
|
||||
&& rm -rf /home/abc/utils || true \
|
||||
&& git clone https://github.com/bluxmit/alnoda-workspaces /tmp/alnoda-workspaces \
|
||||
&& mv /tmp/alnoda-workspaces/utils /home/abc/ \
|
||||
&& rm -rf /tmp/alnoda-workspaces \
|
||||
&& echo "------------------------------------------------------ user" \
|
||||
&& chown -R abc /opt/theia \
|
||||
&& mkdir -p /var/log/theia && chown -R abc /var/log/theia \
|
||||
&& chown -R abc /home/docs \
|
||||
&& chown -R abc /home/abc/utils \
|
||||
&& chown -R abc /home/abc/installed-python-packages \
|
||||
&& find /home -type d | xargs -I{} chown -R abc {} \
|
||||
&& find /home -type f | xargs -I{} chown abc {}
|
||||
|
||||
USER abc
|
|
@ -1,67 +0,0 @@
|
|||
<p align="center">
|
||||
<img src="./img/laptop-circle.svg" alt="Workspace logo" width="150">
|
||||
</p>
|
||||
|
||||
# IDE-workspace
|
||||
General-purpose, fully isolated containerized development environment.
|
||||
Includes code editor, terminal, filebrowser, git manager, static file server and job scheduler.
|
||||
|
||||
<p align="center">
|
||||
<img src="https://raw.githubusercontent.com/bluxmit/alnoda-workspaces/main/workspaces/ide-workspace/img/wid-collage-sm.jpg" alt="Collage" width="750">
|
||||
</p>
|
||||
|
||||
## Why this images
|
||||
|
||||
1. If you need isolated dev environment where you can code and install packages and apps without affecting the base operating system.
|
||||
2. If you want self-hosted remote development environment.
|
||||
|
||||
## Start
|
||||
|
||||
```
|
||||
docker run --name space-1 -d -p 8020-8040:8020-8040 alnoda/ide-workspace
|
||||
```
|
||||
|
||||
and open [localhost:8020](http://localhost:8020) in browser.
|
||||
|
||||
## Features
|
||||
|
||||
- [**Eclipse Theia**](https://theia-ide.org/docs/) - open source version of popular Visual Studio Code IDE. Theia is trully open-source, has
|
||||
VS-Code extensions and works in browser. This means it can run inside a docker container on local machine or in cloud. A lot of beautiful color themes and many common plugins are already installed to save time.
|
||||
- [**Terminal**](https://github.com/tsl0922/ttyd) - secure browser-based terminal.
|
||||
- [**FileBrowser**](https://github.com/filebrowser/filebrowser) - manage files and folders inside the workspace, and exchange data between local environment and the workspace
|
||||
- [**Cronicle**](https://github.com/jhuckaby/Cronicle) - task scheduler and runner, with a web based front-end UI. It handles both scheduled, repeating and on-demand jobs, targeting any number of worker servers, with real-time stats and live log viewer.
|
||||
- [**Static File Server**](https://github.com/vercel/serve) - view any static html sites as easy as if you do it on your local machine. Serve static websites easily.
|
||||
- [**Ungit**](https://github.com/FredrikNoren/ungit) - rings user friendliness to git without sacrificing the versatility of it.
|
||||
- [**MkDocs**](https://squidfunk.github.io/mkdocs-material/) - create awesome documentation for your project with only markdown.
|
||||
- [**Midnight Commander**](https://midnight-commander.org/) - Feature rich visual file manager with internal text viewer and editor.
|
||||
- [**Process Monitor**](https://htop.dev/) - Monitor running process and resource utilization.
|
||||
- Quicklaunch UI with getting started tutorial
|
||||
- **Ubuntu 20.4** with the following CLI apps
|
||||
- [Zsh](https://www.zsh.org/), [Oh my Zsh](https://ohmyz.sh/)
|
||||
- Python 3, Pip
|
||||
- Node/nodeenv
|
||||
- curl, wget, telnet, jq
|
||||
- **Git:** git, git-flow
|
||||
- **File browsers:** mc
|
||||
- **Text editors:** nano, vim, mcedit
|
||||
- **System monitors:** ncdu, htop, glances, vizex
|
||||
- **Process Control:** supervisord
|
||||
- **Job scheduler:** cron
|
||||
- **Terminal multiplexer:** tmux
|
||||
|
||||
## Docs
|
||||
|
||||
See our guides
|
||||
|
||||
- [**project docs**](https://docs.alnoda.org/)
|
||||
- [**getting started**](https://docs.alnoda.org/get-started/common-features/)
|
||||
|
||||
## Demo
|
||||
|
||||
<div align="center" style="font-style: italic;">
|
||||
Demo: IDE workspace
|
||||
</div>
|
||||
|
||||
<p align="center">
|
||||
<img src="https://raw.githubusercontent.com/bluxmit/alnoda-workspaces/main/workspaces/ide-workspace/img/wid-demo.gif" alt="WID demo" width="900">
|
||||
</p>
|
|
@ -1,75 +0,0 @@
|
|||
## Workspace in cloud with auth
|
||||
|
||||
This is a demonstration how Traefik reverse proxy, and its middlewares are used in order to deploy workspace to the cloud server with
|
||||
basic authentication.
|
||||
|
||||
***This doc is just for training. The method described here does not provide enought security when running workspace on the remote server,
|
||||
because it is based on HTTP, and not on encrypted HTTPS. This method should not be used, unless running workspaces in the internal network.
|
||||
Check out instructions on the workspace doc to know how to run workspaces securely on the cloud servers***
|
||||
|
||||
When running workspace-in-docker on the remote server, it is useful to add authentication mechanism, otherwise anyone in the world
|
||||
who gets to know the IP of the remote server will be able to use your workspace.
|
||||
|
||||
Workspace includes several tools, some of them have their own auth features. We turn them off because wit is tedious to configure
|
||||
auth for every separate tool. You probably would want one auth mechanism applied to all tools in the workspace. To make this possible
|
||||
we put the whole workspace behind the reverse proxy and use [Traefik basic auth](https://doc.traefik.io/traefik/middlewares/basicauth/)
|
||||
|
||||
Here is [the docker-compose file](../docker-compose/remote-workspace-auth.yaml) that will let you add auth to your workspace.
|
||||
|
||||
**In order to launch workspace with authentication, you'll need to do the following 3 steps:**
|
||||
|
||||
#### 1. Get any cloud server, and install docker on it
|
||||
There are even cloud virtual servers that already coming with docker installed, for example
|
||||
DigitalOcean docker droplets from the Marketplace.
|
||||
|
||||
#### 2. Copy [docker compose file](../docker-compose/remote-workspace-auth.yaml) and update 2 configurations for the service called 'workspace'
|
||||
The places you need to change are marked on this picture:
|
||||
|
||||
![Change configs here](../img/auth-yaml.png)
|
||||
|
||||
- environmental variable `WRK_HOST` - set it to be the public IP of the server you've got
|
||||
- update authentication. The default user/pass is admin/admin, you might want to change it to your own user/pass.
|
||||
|
||||
The password for the traefik basic auth must be encrypted with the **htpasswd**. For connvenience,
|
||||
it is installed in every workspace-in-docker, and the easiest way is to generate the password
|
||||
is to launch workspace locally first, use its terminal to create a password, and then start
|
||||
workspace on remote server.
|
||||
|
||||
To encrypt password open terminal of the local workspace and execute
|
||||
|
||||
> ```echo $(htpasswd -nB <userName>) | sed -e s/\\$/\\$\\$/g```
|
||||
|
||||
substitute `<userName>` with the new user name, and prowide password on prompt. After this htpasswd will output encrypted password.
|
||||
|
||||
Don't forget to change this line in the docker-compose file with the new user:encpypted_pass
|
||||
|
||||
```
|
||||
- "traefik.http.middlewares.basic-auth.basicauth.users=admin:$$2y$$05$$eub6CV.CwUYCCQjNBvSf5uZnzdRmVwGZ/ncxecb9O7WxCR8aLuM3K"
|
||||
```
|
||||
|
||||
|
||||
ssh to the remote server and create file `remote-workspace-auth.yaml`. For example `nano remote-workspace-auth.yaml`, paste the content of the
|
||||
modified file and save changes.
|
||||
|
||||
#### 3. Start workspace with docker-compose
|
||||
|
||||
```
|
||||
docker-compose -f remote-workspace-auth.yaml up -d
|
||||
```
|
||||
|
||||
***Open in browser `<IP-of-new-server>:8020`*** and use user/path to access the workspace UI. All the tools in the workspace will be
|
||||
protected by the same authentication as well.
|
||||
|
||||
Workspace will be running as daemon. You can exit ssh terminal, and close the connection with the remote server.
|
||||
The workspace will keep unning and will be accessible via the Internet for anyone who knows user and password.
|
||||
|
||||
> You can now use the remote workspace to collaborate with your friends and colleagues. Let them know the URL of the workspace UI and user/pass.
|
||||
|
||||
## Stop workspace
|
||||
|
||||
In order to stop workspace ssh to the remote server, go to the folder where you saved the file `remote-workspace-auth.yaml` and execute
|
||||
|
||||
```
|
||||
docker-compose -f remote-workspace-auth.yaml down
|
||||
```
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
|
||||
version: "3.3"
|
||||
|
||||
services:
|
||||
|
||||
traefik:
|
||||
image: "traefik:v2.4"
|
||||
container_name: "traefik"
|
||||
command:
|
||||
- "--api"
|
||||
- "--api.dashboard"
|
||||
- "--api.insecure"
|
||||
- "--providers.docker"
|
||||
- "--entrypoints.docs.address=:8020"
|
||||
- "--entrypoints.filebrowser.address=:8021"
|
||||
- "--entrypoints.staticfs.address=:8022"
|
||||
- "--entrypoints.cronicle.address=:8023"
|
||||
- "--entrypoints.ungit.address=:8024"
|
||||
- "--entrypoints.ide.address=:8025"
|
||||
ports:
|
||||
- 8080:8080
|
||||
- "8020-8030:8020-8030"
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||
|
||||
workspace:
|
||||
image: alnoda/workspace-in-docker
|
||||
environment:
|
||||
- WRK_HOST="68.183.218.233"
|
||||
labels:
|
||||
# To create user:password pair, it's possible to use this command:
|
||||
# In any workspace-in-docker execute in terminal: echo $(htpasswd -nB <userName>) | sed -e s/\\$/\\$\\$/g
|
||||
# (csubstitute <userName> with the user name of your choice)
|
||||
# and enter password (twice)
|
||||
# by default the user:pass is admin:admin
|
||||
# You can have multiple <user:pass> separated with ","
|
||||
- "traefik.http.middlewares.basic-auth.basicauth.users=admin:$$2y$$05$$eub6CV.CwUYCCQjNBvSf5uZnzdRmVwGZ/ncxecb9O7WxCR8aLuM3K"
|
||||
- "traefik.enable=true"
|
||||
# docs
|
||||
- "traefik.http.services.docs.loadbalancer.server.port=8020"
|
||||
- "traefik.http.routers.docs.service=docs"
|
||||
- "traefik.http.routers.docs.rule=PathPrefix(`/`)"
|
||||
- "traefik.http.routers.docs.entrypoints=docs"
|
||||
- "traefik.http.routers.docs.middlewares=basic-auth"
|
||||
# filebrowser
|
||||
- "traefik.http.services.filebrowser.loadbalancer.server.port=8021"
|
||||
- "traefik.http.routers.filebrowser.service=filebrowser"
|
||||
- "traefik.http.routers.filebrowser.rule=PathPrefix(`/`)"
|
||||
- "traefik.http.routers.filebrowser.entrypoints=filebrowser"
|
||||
- "traefik.http.routers.filebrowser.middlewares=basic-auth"
|
||||
# static file server
|
||||
- "traefik.http.services.staticfs.loadbalancer.server.port=8022"
|
||||
- "traefik.http.routers.staticfs.service=staticfs"
|
||||
- "traefik.http.routers.staticfs.rule=PathPrefix(`/`)"
|
||||
- "traefik.http.routers.staticfs.entrypoints=staticfs"
|
||||
- "traefik.http.routers.staticfs.middlewares=basic-auth"
|
||||
# cronicle
|
||||
- "traefik.http.services.cronicle.loadbalancer.server.port=8023"
|
||||
- "traefik.http.routers.cronicle.service=cronicle"
|
||||
- "traefik.http.routers.cronicle.rule=PathPrefix(`/`)"
|
||||
- "traefik.http.routers.cronicle.entrypoints=cronicle"
|
||||
- "traefik.http.routers.cronicle.middlewares=basic-auth"
|
||||
# ungit
|
||||
- "traefik.http.services.ungit.loadbalancer.server.port=8024"
|
||||
- "traefik.http.routers.ungit.service=ungit"
|
||||
- "traefik.http.routers.ungit.rule=PathPrefix(`/`)"
|
||||
- "traefik.http.routers.ungit.entrypoints=ungit"
|
||||
- "traefik.http.routers.ungit.middlewares=basic-auth"
|
||||
# ide
|
||||
- "traefik.http.services.ide.loadbalancer.server.port=8025"
|
||||
- "traefik.http.routers.ide.service=ide"
|
||||
- "traefik.http.routers.ide.rule=PathPrefix(`/`)"
|
||||
- "traefik.http.routers.ide.entrypoints=ide"
|
||||
- "traefik.http.routers.ide.middlewares=basic-auth"
|
||||
|
Before Width: | Height: | Size: 510 KiB |
Before Width: | Height: | Size: 1.9 MiB |
|
@ -1,8 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="g10" transform="matrix(3, 0, 0, -3, 0.000095, 900)" style="">
|
||||
<g id="g12" transform="scale(0.1)">
|
||||
<path d="M 865.406,1290.7 H 2134.6 c 59.53,0.02 107.74,48.23 107.78,107.78 v 856.11 c -0.04,59.54 -48.25,107.75 -107.78,107.77 H 865.406 c -59.547,0 -107.765,-48.23 -107.773,-107.77 v -856.11 c 0.008,-59.55 48.246,-107.76 107.773,-107.78 z m 44.539,932.28 H 2090.06 v -792.9 H 909.945 Z M 2243.95,1224.92 c -7.1,21.62 -50.95,38.81 -98.06,38.81 H 854.117 c -47.109,0 -90.976,-17.19 -98.058,-38.81 L 594.824,734.219 c -10.738,-32.676 28.688,-96.582 88.266,-96.582 h 1633.82 c 59.59,0 99.02,63.906 88.26,96.582 z m -61.7,-277.342 h -84.36 l -12.18,45.957 h 82 z m -33.88,107.072 13.7,-43.3 H 2081 l -11.48,43.3 z m -68.91,-107.072 h -99.42 l -9.74,45.957 h 96.99 z m 48.74,170.822 14.53,-45.94 h -77.93 l -12.16,45.94 z m -65.64,-107.05 h -96.03 l -9.17,43.3 h 93.73 z m -100.72,-63.772 h -99.61 l -7.32,45.957 h 97.18 z m 72.37,170.822 12.16,-45.94 h -92.8 l -9.73,45.94 z m -85.89,-107.05 h -96.23 l -6.89,43.3 h 93.93 z m -22.69,107.05 9.73,-45.94 h -92.98 l -7.31,45.94 z m -81.45,-170.822 h -99.75 l -4.88,45.957 h 97.34 z m -10.14,63.772 h -96.37 l -4.6,43.3 h 94.09 z m -17.01,107.05 7.31,-45.94 h -93.14 l -4.87,45.94 z m -90.51,-170.822 h -99.86 l -2.44,45.957 h 97.43 z m -14.74,-204.961 h -423.55 l 33,115.84 h 357.55 z m 7.98,268.733 h -96.49 l -2.29,43.3 h 94.19 z m -11.34,107.05 4.86,-45.94 h -93.24 l -2.44,45.94 z m -199.51,0 h 90.86 l 2.43,-45.94 h -93.29 z m 0,-63.75 h 94.23 l 2.3,-43.3 h -96.53 z m 0,-61.115 h 97.48 l 2.42,-45.957 h -99.9 z M 1400.25,1118.4 h 90.86 v -45.94 h -93.3 z m -3.39,-63.75 h 94.25 l -0.01,-43.3 h -96.53 z m -3.23,-61.115 h 97.47 v -45.957 h -99.91 z M 1291.6,1118.4 h 90.81 l -2.44,-45.94 h -93.24 z m -6.76,-63.75 h 94.19 l -2.3,-43.3 h -96.48 z m 90.95,-61.115 -2.44,-45.957 h -99.85 l 4.86,45.957 z M 1182.98,1118.4 h 90.71 l -4.87,-45.94 h -93.14 z m -10.13,-63.75 h 94.08 l -4.59,-43.3 h -96.38 z m 87.6,-61.115 -4.87,-45.957 h -99.76 l 7.31,45.957 z M 1074.38,1118.4 h 90.56 l -7.3,-45.94 h -93 z m 80.42,-63.75 -6.88,-43.3 h -96.23 l 9.18,43.3 z m -9.71,-61.115 -7.31,-45.957 h -99.6 l 9.73,45.957 z M 965.813,1118.4 h 90.357 l -9.73,-45.94 h -92.803 z m 76.847,-63.75 -9.18,-43.3 h -96.039 l 11.481,43.3 z m -12.95,-61.115 -9.75,-45.957 h -99.413 l 12.18,45.957 z M 871.801,1118.4 h 75.578 l -12.176,-45.94 h -77.937 z m -20.164,-63.75 h 78.855 l -11.476,-43.3 H 837.93 Z m -19.34,-61.115 h 81.996 l -12.18,-45.957 H 817.758 Z M 2316.91,686.797 H 683.09 c -20.805,0 -35.766,19.394 -39.766,30.703 H 2356.68 c -3.98,-11.309 -18.95,-30.703 -39.77,-30.703 z M 1500,3000 C 671.57,3000 0,2328.43 0,1500 0,671.57 671.57,0 1500,0 c 828.43,0 1500,671.57 1500,1500 0,828.43 -671.57,1500 -1500,1500 z M 2454.59,545.41 C 2199.61,290.422 1860.6,150 1500,150 1139.4,150 800.387,290.422 545.406,545.41 290.426,800.391 150,1139.4 150,1500 c 0,360.6 140.426,699.61 395.406,954.59 C 800.387,2709.57 1139.4,2850 1500,2850 c 360.6,0 699.61,-140.43 954.59,-395.41 C 2709.57,2199.61 2850,1860.6 2850,1500 2850,1139.4 2709.57,800.391 2454.59,545.41" style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path14"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 2.6 MiB |
Before Width: | Height: | Size: 18 MiB |
Before Width: | Height: | Size: 597 KiB |
Before Width: | Height: | Size: 319 KiB |
Before Width: | Height: | Size: 1.7 MiB |
Before Width: | Height: | Size: 16 MiB |
Before Width: | Height: | Size: 1.8 MiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 12 MiB |
|
@ -1,112 +0,0 @@
|
|||
{
|
||||
"private": true,
|
||||
"theia": {
|
||||
"frontend": {
|
||||
"config": {
|
||||
"applicationName": "Theia IDE",
|
||||
"warnOnPotentiallyInsecureHostPattern": false,
|
||||
"preferences": {
|
||||
"files.enableTrash": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@theia/editor-preview": "latest",
|
||||
"@theia/file-search": "latest",
|
||||
"@theia/getting-started": "latest",
|
||||
"@theia/git": "latest",
|
||||
"@theia/markers": "latest",
|
||||
"@theia/messages": "latest",
|
||||
"@theia/monaco": "latest",
|
||||
"@theia/navigator": "latest",
|
||||
"@theia/outline-view": "latest",
|
||||
"@theia/plugin-ext-vscode": "latest",
|
||||
"@theia/preferences": "latest",
|
||||
"@theia/preview": "latest",
|
||||
"@theia/search-in-workspace": "latest",
|
||||
"@theia/terminal": "latest",
|
||||
"@theia/vsx-registry": "latest"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@theia/cli": "latest"
|
||||
},
|
||||
"scripts": {
|
||||
"preinstall": "node-gyp install"
|
||||
},
|
||||
"theiaPluginsDir": "plugins",
|
||||
"theiaPlugins": {
|
||||
"vscode-builtin-bat": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/bat-1.39.1-prel.vsix",
|
||||
"vscode-builtin-clojure": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/clojure-1.39.1-prel.vsix",
|
||||
"vscode-builtin-coffeescript": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/coffeescript-1.39.1-prel.vsix",
|
||||
"vscode-builtin-configuration-editing": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/configuration-editing-1.39.1-prel.vsix",
|
||||
"vscode-builtin-cpp": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/cpp-1.39.1-prel.vsix",
|
||||
"vscode-builtin-csharp": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/csharp-1.39.1-prel.vsix",
|
||||
"vscode-builtin-css": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/css-1.39.1-prel.vsix",
|
||||
"vscode-builtin-debug-auto-launch": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/debug-auto-launch-1.39.1-prel.vsix",
|
||||
"vscode-builtin-docker": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/docker-1.39.1-prel.vsix",
|
||||
"vscode-builtin-emmet": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/emmet-1.39.1-prel.vsix",
|
||||
"vscode-builtin-fsharp": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/fsharp-1.39.1-prel.vsix",
|
||||
"vscode-builtin-go": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/go-1.39.1-prel.vsix",
|
||||
"vscode-builtin-groovy": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/groovy-1.39.1-prel.vsix",
|
||||
"vscode-builtin-grunt": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/grunt-1.39.1-prel.vsix",
|
||||
"vscode-builtin-gulp": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/gulp-1.39.1-prel.vsix",
|
||||
"vscode-builtin-handlebars": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/handlebars-1.39.1-prel.vsix",
|
||||
"vscode-builtin-hlsl": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/hlsl-1.39.1-prel.vsix",
|
||||
"vscode-builtin-html": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/html-1.39.1-prel.vsix",
|
||||
"vscode-builtin-html-language-features": "https://open-vsx.org/api/vscode/html-language-features/1.49.0/file/vscode.html-language-features-1.49.0.vsix",
|
||||
"vscode-builtin-ini": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/ini-1.39.1-prel.vsix",
|
||||
"vscode-builtin-jake": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/jake-1.39.1-prel.vsix",
|
||||
"vscode-builtin-java": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/java-1.39.1-prel.vsix",
|
||||
"vscode-builtin-javascript": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/javascript-1.39.1-prel.vsix",
|
||||
"vscode-builtin-json": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/json-1.39.1-prel.vsix",
|
||||
"vscode-builtin-json-language-features": "https://open-vsx.org/api/vscode/json-language-features/1.46.1/file/vscode.json-language-features-1.46.1.vsix",
|
||||
"vscode-builtin-less": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/less-1.39.1-prel.vsix",
|
||||
"vscode-builtin-log": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/log-1.39.1-prel.vsix",
|
||||
"vscode-builtin-lua": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/lua-1.39.1-prel.vsix",
|
||||
"vscode-builtin-make": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/make-1.39.1-prel.vsix",
|
||||
"vscode-builtin-markdown": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/markdown-1.39.1-prel.vsix",
|
||||
"vscode-builtin-merge-conflicts": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/merge-conflict-1.39.1-prel.vsix",
|
||||
"vscode-builtin-npm": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/npm-1.39.1-prel.vsix",
|
||||
"vscode-builtin-node-debug": "https://github.com/theia-ide/vscode-node-debug/releases/download/v1.35.3/node-debug-1.35.3.vsix",
|
||||
"vscode-builtin-node-debug2": "https://github.com/theia-ide/vscode-node-debug2/releases/download/v1.33.0/node-debug2-1.33.0.vsix",
|
||||
"vscode-builtin-objective-c": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/objective-c-1.39.1-prel.vsix",
|
||||
"vscode-builtin-perl": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/perl-1.39.1-prel.vsix",
|
||||
"vscode-builtin-powershell": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/powershell-1.39.1-prel.vsix",
|
||||
"vscode-builtin-pug": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/pug-1.39.1-prel.vsix",
|
||||
"vscode-builtin-python": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/python-1.39.1-prel.vsix",
|
||||
"vscode-builtin-r": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/r-1.39.1-prel.vsix",
|
||||
"vscode-builtin-razor": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/razor-1.39.1-prel.vsix",
|
||||
"vscode-builtin-ruby": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/ruby-1.39.1-prel.vsix",
|
||||
"vscode-builtin-rust": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/rust-1.39.1-prel.vsix",
|
||||
"vscode-builtin-scss": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/scss-1.39.1-prel.vsix",
|
||||
"vscode-builtin-shaderlab": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/shaderlab-1.39.1-prel.vsix",
|
||||
"vscode-builtin-shellscript": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/shellscript-1.39.1-prel.vsix",
|
||||
"vscode-builtin-sql": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/sql-1.39.1-prel.vsix",
|
||||
"vscode-builtin-swift": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/swift-1.39.1-prel.vsix",
|
||||
"vscode-builtin-theme-abyss": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-abyss-1.39.1-prel.vsix",
|
||||
"vscode-builtin-theme-defaults": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-defaults-1.39.1-prel.vsix",
|
||||
"vscode-builtin-theme-kimbie-dark": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-kimbie-dark-1.39.1-prel.vsix",
|
||||
"vscode-builtin-theme-monokai": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-monokai-1.39.1-prel.vsix",
|
||||
"vscode-builtin-theme-dimmed": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-monokai-dimmed-1.39.1-prel.vsix",
|
||||
"vscode-builtin-theme-quietlight": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-quietlight-1.39.1-prel.vsix",
|
||||
"vscode-builtin-theme-red": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-red-1.39.1-prel.vsix",
|
||||
"vscode-builtin-theme-solarized-dark": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-solarized-dark-1.39.1-prel.vsix",
|
||||
"vscode-builtin-theme-tomorrow-night-blue": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-tomorrow-night-blue-1.39.1-prel.vsix",
|
||||
"vscode-builtin-typescript": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/typescript-1.39.1-prel.vsix",
|
||||
"vscode-builtin-typescript-language-features": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/typescript-language-features-1.39.1-prel.vsix",
|
||||
"vscode-builtin-vb": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/vb-1.39.1-prel.vsix",
|
||||
"vscode-builtin-icon-theme-seti": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/vscode-theme-seti-1.39.1-prel.vsix",
|
||||
"vscode-builtin-xml": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/xml-1.39.1-prel.vsix",
|
||||
"vscode-builtin-yaml": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/yaml-1.39.1-prel.vsix",
|
||||
"vscode-editorconfig": "https://github.com/theia-ide/editorconfig-vscode/releases/download/v0.14.4/EditorConfig-0.14.4.vsix",
|
||||
"vscode-python": "https://github.com/microsoft/vscode-python/releases/download/2020.1.58038/ms-python-release.vsix",
|
||||
"nadim-vscode.infinity-dark-theme": "https://open-vsx.org/api/nadim-vscode/infinity-dark-theme/1.0.1/file/nadim-vscode.infinity-dark-theme-1.0.1.vsix",
|
||||
"emroussel.atomize-atom-one-dark-theme": "https://open-vsx.org/api/emroussel/atomize-atom-one-dark-theme/1.5.5/file/emroussel.atomize-atom-one-dark-theme-1.5.5.vsix",
|
||||
"mhutchie.git-graph": "https://open-vsx.org/api/mhutchie/git-graph/1.30.0/file/mhutchie.git-graph-1.30.0.vsix",
|
||||
"teabyii.ayu": "https://open-vsx.org/api/teabyii/ayu/0.20.1/file/teabyii.ayu-0.20.1.vsix",
|
||||
"yurihs.sublime-vscode-theme": "https://open-vsx.org/api/yurihs/sublime-vscode-theme/1.4.1/file/yurihs.sublime-vscode-theme-1.4.1.vsix",
|
||||
"wesbos.theme-cobalt2": "https://open-vsx.org/api/wesbos/theme-cobalt2/2.1.6/file/wesbos.theme-cobalt2-2.1.6.vsix",
|
||||
"robbowen.synthwave-vscode": "https://open-vsx.org/api/RobbOwen/synthwave-vscode/0.1.8/file/RobbOwen.synthwave-vscode-0.1.8.vsix"
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 192 KiB |
Before Width: | Height: | Size: 507 KiB |
Before Width: | Height: | Size: 514 KiB |
|
@ -1,130 +0,0 @@
|
|||
<style>
|
||||
/* These styles apply only to this page! */
|
||||
.md-content__button {
|
||||
display: none;
|
||||
}
|
||||
.md-sidebar--secondary{
|
||||
display: none !important;
|
||||
}
|
||||
.md-typeset h1 {
|
||||
line-height: 0;
|
||||
margin: 0;
|
||||
margin-left: -9999px;
|
||||
}
|
||||
.quickstart-wrapper {
|
||||
min-width: 300px;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
padding-left: -50px;
|
||||
column-gap: 50px;
|
||||
row-gap: 50px;
|
||||
}
|
||||
.quickstart-wrapper > div {
|
||||
flex: 300px;
|
||||
max-width: 300px;
|
||||
}
|
||||
.tool-img{
|
||||
box-shadow: rgba(0, 0, 0, 0.24) 0px 5px 5px;
|
||||
border-radius: 5px;
|
||||
min-width: 300px;
|
||||
max-width: 300px;
|
||||
max-height: 170px;
|
||||
min-height: 170px;
|
||||
}
|
||||
.tool-caption{
|
||||
font-family: inherit;
|
||||
text-align: center;
|
||||
margin-top: 10px;
|
||||
font-size: 1.2rem;
|
||||
font-weight: bold;
|
||||
|
||||
/* font-size: 1.25em;
|
||||
font-weight: 400; */
|
||||
letter-spacing: -.02em;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.tool-description{
|
||||
font-family: inherit;
|
||||
text-align: center;
|
||||
margin-top: 10px;
|
||||
font-size: 0.7rem;
|
||||
font-style: oblique;
|
||||
/* font-weight: bold; */
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
{%
|
||||
set tools = [
|
||||
{
|
||||
"env": "IDE_URL",
|
||||
"name": "IDE",
|
||||
"image": "assets/home/IDE.jpg",
|
||||
"description": "Browser-based version of Visual Studio Code. Develop in any language, install hundreeds of extensions"
|
||||
},
|
||||
{
|
||||
"env": "TERMINAL_URL",
|
||||
"name": "Terminal",
|
||||
"image": "assets/home/Terminal.png",
|
||||
"description": "Full-fledged WEB-based Command Line Interface"
|
||||
},
|
||||
{
|
||||
"env": "FILEBROWSER_URL",
|
||||
"name": "File Browser",
|
||||
"image": "assets/home/Filebrowser.png",
|
||||
"description": "Browse, upload and download files and folders to and from the Workspace"
|
||||
},
|
||||
{
|
||||
"env": "UNGIT_URL",
|
||||
"name": "Ungit",
|
||||
"image": "assets/home/Ungit.jpg",
|
||||
"description": "Manage Git repositories and work flow using beautiful UI"
|
||||
},
|
||||
{
|
||||
"env": "STATICFS_URL",
|
||||
"name": "Static File Server",
|
||||
"image": "assets/home/Static-server.png",
|
||||
"description": "Serve any static websites like a breeze"
|
||||
},
|
||||
{
|
||||
"env": "CRONICLE_URL",
|
||||
"name": "Cronicle",
|
||||
"image": "assets/home/Cronicle.jpg",
|
||||
"description": "Schedule jobs, manage schedules, observe and monitor executions (user/pass - admin/admin)"
|
||||
},
|
||||
{
|
||||
"env": "MC_URL",
|
||||
"name": "M.Commander",
|
||||
"image": "assets/home/MC.jpg",
|
||||
"description": "Feature rich visual file manager with internal text viewer and editor"
|
||||
},
|
||||
{
|
||||
"env": "HTOP_URL",
|
||||
"name": "Resource monitor",
|
||||
"image": "assets/home/Htop.jpg",
|
||||
"description": "Monitor running process and resource utilization"
|
||||
}
|
||||
]
|
||||
%}
|
||||
|
||||
|
||||
<div class="quickstart-wrapper">
|
||||
{% for tool in tools %}
|
||||
{% set tool_url = get_tool_url(tool.env) %}
|
||||
<div>
|
||||
<a href="{{ tool_url }}" target="_blank" rel="noopener noreferrer">
|
||||
<img src="{{ tool.image }}" class="tool-img"/>
|
||||
</a>
|
||||
<a href="{{ tool_url }}">
|
||||
<div class="tool-caption">{{ tool.name }}</div>
|
||||
</a>
|
||||
<div class="tool-description">{{ tool.description }}</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
General-purpose, fully isolated contaierized development environment.
|
||||
Includes code editor, terminal, filebrowser, git manager, static file server and job scheduler.
|
|
@ -1,60 +0,0 @@
|
|||
"""
|
||||
Basic example of a Mkdocs-macros module.
|
||||
Include this {{ macros_info() }} in any page to get complete macro info
|
||||
"""
|
||||
import os
|
||||
|
||||
port_increments = {
|
||||
"DOCS_URL": 0,
|
||||
"FILEBROWSER_URL": 1,
|
||||
"STATICFS_URL": 2,
|
||||
"CRONICLE_URL": 3,
|
||||
"UNGIT_URL": 4,
|
||||
"IDE_URL": 5,
|
||||
"TERMINAL_URL": 6,
|
||||
"MC_URL": 7,
|
||||
"HTOP_URL": 8,
|
||||
"PORT_8038": 18,
|
||||
"PORT_8039": 19,
|
||||
"PORT_8040": 20
|
||||
}
|
||||
|
||||
# this function name should not be changed
|
||||
def define_env(env):
|
||||
"""
|
||||
This is the hook for defining variables, macros and filters
|
||||
- variables: the dictionary that contains the environment variables
|
||||
- macro: a decorator function, to declare a macro.
|
||||
- filter: a function with one of more arguments,
|
||||
used to perform a transformation
|
||||
"""
|
||||
@env.macro
|
||||
def get_tool_url(env):
|
||||
try:
|
||||
return os.environ[env]
|
||||
except:
|
||||
# Get host
|
||||
host = "localhost"
|
||||
try:
|
||||
host = os.environ["WRK_HOST"]
|
||||
except:
|
||||
pass
|
||||
proto = "http"
|
||||
try:
|
||||
proto = os.environ["WRK_PROTO"]
|
||||
except:
|
||||
pass
|
||||
# Entry port - port relative to which other ports will be calculated
|
||||
entry_port = 8020
|
||||
try:
|
||||
entry_port = int(os.environ["ENTRY_PORT"])
|
||||
except:
|
||||
pass
|
||||
# Assign port
|
||||
try:
|
||||
port = port_increments[env] + entry_port
|
||||
except:
|
||||
port = 80
|
||||
return f"{proto}://{host}:{port}"
|
||||
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
# ===========================================================
|
||||
# NAVIGATION
|
||||
# ===========================================================
|
||||
|
||||
nav:
|
||||
- Home: README.md
|
||||
- My apps: pages/my-apps.md
|
||||
- About: about.md
|
||||
- Docs: https://docs.alnoda.org/ide-workspace/
|
||||
|
||||
# ===========================================================
|
||||
# CONFIGURATION
|
||||
# ===========================================================
|
||||
|
||||
site_name: IDE Workspace
|
||||
repo_url: https://github.com/bluxmit/alnoda-workspaces
|
||||
site_url: https://docs.alnoda.org
|
||||
edit_uri: ""
|
||||
|
||||
# ===========================================================
|
||||
# APPEARANCE
|
||||
# ===========================================================
|
||||
|
||||
theme:
|
||||
name: 'material'
|
||||
favicon: 'assets/laptop-circle.svg'
|
||||
logo: 'assets/laptop-circle-white.svg'
|
||||
custom_dir: overrides
|
||||
icon:
|
||||
repo: fontawesome/brands/github
|
||||
features:
|
||||
- navigation.instant
|
||||
palette:
|
||||
- scheme: workspace
|
||||
toggle:
|
||||
icon: material/brightness-7
|
||||
name: Switch to dark mode
|
||||
- scheme: workspace-dark
|
||||
toggle:
|
||||
icon: material/brightness-4
|
||||
name: Switch to light mode
|
||||
|
||||
extra:
|
||||
# Link to open when your logo is clicked
|
||||
homepage: https://docs.alnoda.org
|
||||
host_url: http://docs.alnoda.org
|
||||
|
||||
plugins:
|
||||
# Enable Macros and jinja2 templates
|
||||
- macros:
|
||||
module_name: macros/helpers
|
||||
|
||||
extra_css:
|
||||
- stylesheets/extra.css
|
||||
|
||||
extra_javascript:
|
||||
- javascripts/config.js
|
||||
- https://polyfill.io/v3/polyfill.min.js?features=es6
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
"terminal.integrated.shell.linux": "/bin/zsh",
|
||||
"workbench.colorTheme": "Ayu Mirage Bordered",
|
||||
"git-graph.maxDepthOfRepoSearch": 3
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
|
||||
[program:theia]
|
||||
directory=/opt/theia
|
||||
command=/bin/sh -c " . env/bin/activate && node /opt/theia/src-gen/backend/main.js --hostname=0.0.0.0 --port=8025 /home "
|
||||
stderr_logfile = /var/log/theia/theia-stderr.log
|
||||
stdout_logfile = /var/log/theia/theia-stdout.log
|
||||
logfile_maxbytes = 1024
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
FROM alnoda/theia-workspace:4.0
|
||||
FROM alnoda/codeserver-workspace:4.0
|
||||
|
||||
RUN sudo apt-get -y update \
|
||||
&& echo "------------------------------------------------------ java 17" \
|
||||
|
@ -22,6 +22,15 @@ ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/ \
|
|||
ENV GRADLE_HOME=/home/abc/gradle/gradle-7.4.2 \
|
||||
PATH="/home/abc/gradle/gradle-7.4.2/bin:${PATH}"
|
||||
|
||||
# Install additional codeserver extensions
|
||||
RUN echo "------------------------------------------------------ extensions" \
|
||||
&& code-server --install-extension redhat.java \
|
||||
&& code-server --install-extension vscjava.vscode-maven \
|
||||
&& code-server --install-extension zerodind.familiar-java-themes
|
||||
|
||||
# Change default codeserver theme
|
||||
COPY --chown=abc:abc settings.json /home/abc/.local/share/code-server/User/settings.json
|
||||
|
||||
# Copy example into the workspace
|
||||
COPY --chown=abc:abc example /home/abc/example
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
FROM alnoda/theia-workspace:4.0
|
||||
FROM alnoda/codeserver-workspace:4.0
|
||||
|
||||
RUN sudo apt-get -y update \
|
||||
&& echo "------------------------------------------------------ java 8" \
|
||||
|
@ -22,6 +22,15 @@ ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ \
|
|||
ENV GRADLE_HOME=/home/abc/gradle/gradle-7.4.2 \
|
||||
PATH="/home/abc/gradle/gradle-7.4.2/bin:${PATH}"
|
||||
|
||||
# Install additional codeserver extensions
|
||||
RUN echo "------------------------------------------------------ extensions" \
|
||||
&& code-server --install-extension redhat.java \
|
||||
&& code-server --install-extension vscjava.vscode-maven \
|
||||
&& code-server --install-extension zerodind.familiar-java-themes
|
||||
|
||||
# Change default codeserver theme
|
||||
COPY --chown=abc:abc settings.json /home/abc/.local/share/code-server/User/settings.json
|
||||
|
||||
# Copy example into the workspace
|
||||
COPY --chown=abc:abc example /home/abc/example
|
||||
|
||||
|
|
4
workspaces/java-workspace/settings.json
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"workbench.colorTheme": "Eclipse Light",
|
||||
"git-graph.maxDepthOfRepoSearch": 3
|
||||
}
|
|
@ -8,6 +8,8 @@ description: |
|
|||
# Java workspace
|
||||
Containerized isolated development environment for Java programming language.
|
||||
|
||||
tags: java, jre, jdk, maven, gradle
|
||||
|
||||
# UI icons
|
||||
logo: java-circle-white.svg
|
||||
favicon: java-circle.svg
|
||||
|
@ -20,13 +22,11 @@ styles:
|
|||
primary: "#2585C2"
|
||||
accent: "#2585C2"
|
||||
title: "#E61F24"
|
||||
subtitle: "#9B1C16"
|
||||
dark:
|
||||
primary: "#507E9C"
|
||||
accent: "#F09114"
|
||||
background: "#111B27"
|
||||
title: "#BAAD69"
|
||||
subtitle: "#BAAD69"
|
||||
text: "#BAAD69"
|
||||
common_colors:
|
||||
nav: "#eab676"
|
|
@ -1,123 +0,0 @@
|
|||
{
|
||||
"private": true,
|
||||
"theia": {
|
||||
"frontend": {
|
||||
"config": {
|
||||
"applicationName": "Theia IDE",
|
||||
"warnOnPotentiallyInsecureHostPattern": false,
|
||||
"preferences": {
|
||||
"files.enableTrash": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"resolutions": {
|
||||
"**/*/colors": "1.4.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@theia/editor-preview": "1.15.0",
|
||||
"@theia/file-search": "1.15.0",
|
||||
"@theia/getting-started": "1.15.0",
|
||||
"@theia/git": "1.15.0",
|
||||
"@theia/markers": "1.15.0",
|
||||
"@theia/messages": "1.15.0",
|
||||
"@theia/monaco": "1.15.0",
|
||||
"@theia/navigator": "1.15.0",
|
||||
"@theia/outline-view": "1.15.0",
|
||||
"@theia/plugin-ext-vscode": "1.15.0",
|
||||
"@theia/preferences": "1.15.0",
|
||||
"@theia/preview": "1.15.0",
|
||||
"@theia/search-in-workspace": "1.15.0",
|
||||
"@theia/terminal": "1.15.0",
|
||||
"@theia/vsx-registry": "1.15.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@theia/cli": "1.15.0"
|
||||
},
|
||||
"scripts": {
|
||||
"preinstall": "node-gyp install"
|
||||
},
|
||||
"theiaPluginsDir": "plugins",
|
||||
"theiaPlugins": {
|
||||
"vscode-builtin-bat": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/bat-1.39.1-prel.vsix",
|
||||
"vscode-builtin-clojure": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/clojure-1.39.1-prel.vsix",
|
||||
"vscode-builtin-coffeescript": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/coffeescript-1.39.1-prel.vsix",
|
||||
"vscode-builtin-configuration-editing": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/configuration-editing-1.39.1-prel.vsix",
|
||||
"vscode-builtin-cpp": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/cpp-1.39.1-prel.vsix",
|
||||
"vscode-builtin-csharp": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/csharp-1.39.1-prel.vsix",
|
||||
"vscode-builtin-css": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/css-1.39.1-prel.vsix",
|
||||
"vscode-builtin-debug-auto-launch": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/debug-auto-launch-1.39.1-prel.vsix",
|
||||
"vscode-builtin-docker": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/docker-1.39.1-prel.vsix",
|
||||
"vscode-builtin-emmet": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/emmet-1.39.1-prel.vsix",
|
||||
"vscode-builtin-fsharp": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/fsharp-1.39.1-prel.vsix",
|
||||
"vscode-builtin-go": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/go-1.39.1-prel.vsix",
|
||||
"vscode-builtin-groovy": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/groovy-1.39.1-prel.vsix",
|
||||
"vscode-builtin-grunt": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/grunt-1.39.1-prel.vsix",
|
||||
"vscode-builtin-gulp": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/gulp-1.39.1-prel.vsix",
|
||||
"vscode-builtin-handlebars": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/handlebars-1.39.1-prel.vsix",
|
||||
"vscode-builtin-hlsl": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/hlsl-1.39.1-prel.vsix",
|
||||
"vscode-builtin-html": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/html-1.39.1-prel.vsix",
|
||||
"vscode-builtin-html-language-features": "https://open-vsx.org/api/vscode/html-language-features/1.49.0/file/vscode.html-language-features-1.49.0.vsix",
|
||||
"vscode-builtin-ini": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/ini-1.39.1-prel.vsix",
|
||||
"vscode-builtin-jake": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/jake-1.39.1-prel.vsix",
|
||||
"vscode-builtin-java": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/java-1.39.1-prel.vsix",
|
||||
"vscode-builtin-javascript": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/javascript-1.39.1-prel.vsix",
|
||||
"vscode-builtin-json": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/json-1.39.1-prel.vsix",
|
||||
"vscode-builtin-json-language-features": "https://open-vsx.org/api/vscode/json-language-features/1.46.1/file/vscode.json-language-features-1.46.1.vsix",
|
||||
"vscode-builtin-less": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/less-1.39.1-prel.vsix",
|
||||
"vscode-builtin-log": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/log-1.39.1-prel.vsix",
|
||||
"vscode-builtin-lua": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/lua-1.39.1-prel.vsix",
|
||||
"vscode-builtin-make": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/make-1.39.1-prel.vsix",
|
||||
"vscode-builtin-markdown": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/markdown-1.39.1-prel.vsix",
|
||||
"vscode-builtin-merge-conflicts": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/merge-conflict-1.39.1-prel.vsix",
|
||||
"vscode-builtin-npm": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/npm-1.39.1-prel.vsix",
|
||||
"vscode-builtin-node-debug": "https://github.com/theia-ide/vscode-node-debug/releases/download/v1.35.3/node-debug-1.35.3.vsix",
|
||||
"vscode-builtin-node-debug2": "https://github.com/theia-ide/vscode-node-debug2/releases/download/v1.33.0/node-debug2-1.33.0.vsix",
|
||||
"vscode-builtin-objective-c": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/objective-c-1.39.1-prel.vsix",
|
||||
"vscode-builtin-perl": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/perl-1.39.1-prel.vsix",
|
||||
"vscode-builtin-powershell": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/powershell-1.39.1-prel.vsix",
|
||||
"vscode-builtin-pug": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/pug-1.39.1-prel.vsix",
|
||||
"vscode-builtin-python": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/python-1.39.1-prel.vsix",
|
||||
"vscode-builtin-r": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/r-1.39.1-prel.vsix",
|
||||
"vscode-builtin-razor": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/razor-1.39.1-prel.vsix",
|
||||
"vscode-builtin-ruby": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/ruby-1.39.1-prel.vsix",
|
||||
"vscode-builtin-rust": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/rust-1.39.1-prel.vsix",
|
||||
"vscode-builtin-scss": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/scss-1.39.1-prel.vsix",
|
||||
"vscode-builtin-shaderlab": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/shaderlab-1.39.1-prel.vsix",
|
||||
"vscode-builtin-shellscript": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/shellscript-1.39.1-prel.vsix",
|
||||
"vscode-builtin-sql": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/sql-1.39.1-prel.vsix",
|
||||
"vscode-builtin-swift": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/swift-1.39.1-prel.vsix",
|
||||
"vscode-builtin-theme-abyss": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-abyss-1.39.1-prel.vsix",
|
||||
"vscode-builtin-theme-defaults": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-defaults-1.39.1-prel.vsix",
|
||||
"vscode-builtin-theme-kimbie-dark": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-kimbie-dark-1.39.1-prel.vsix",
|
||||
"vscode-builtin-theme-monokai": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-monokai-1.39.1-prel.vsix",
|
||||
"vscode-builtin-theme-dimmed": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-monokai-dimmed-1.39.1-prel.vsix",
|
||||
"vscode-builtin-theme-quietlight": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-quietlight-1.39.1-prel.vsix",
|
||||
"vscode-builtin-theme-red": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-red-1.39.1-prel.vsix",
|
||||
"vscode-builtin-theme-solarized-dark": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-solarized-dark-1.39.1-prel.vsix",
|
||||
"vscode-builtin-theme-tomorrow-night-blue": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/theme-tomorrow-night-blue-1.39.1-prel.vsix",
|
||||
"vscode-builtin-typescript": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/typescript-1.39.1-prel.vsix",
|
||||
"vscode-builtin-typescript-language-features": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/typescript-language-features-1.39.1-prel.vsix",
|
||||
"vscode-builtin-vb": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/vb-1.39.1-prel.vsix",
|
||||
"vscode-builtin-icon-theme-seti": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/vscode-theme-seti-1.39.1-prel.vsix",
|
||||
"vscode-builtin-xml": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/xml-1.39.1-prel.vsix",
|
||||
"vscode-builtin-yaml": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/yaml-1.39.1-prel.vsix",
|
||||
"vscode-editorconfig": "https://github.com/theia-ide/editorconfig-vscode/releases/download/v0.14.4/EditorConfig-0.14.4.vsix",
|
||||
"vscode-python": "https://open-vsx.org/api/ms-python/python/2020.8.105369/file/ms-python.python-2020.8.105369.vsix",
|
||||
"nadim-vscode.infinity-dark-theme": "https://open-vsx.org/api/nadim-vscode/infinity-dark-theme/1.0.1/file/nadim-vscode.infinity-dark-theme-1.0.1.vsix",
|
||||
"emroussel.atomize-atom-one-dark-theme": "https://open-vsx.org/api/emroussel/atomize-atom-one-dark-theme/1.5.5/file/emroussel.atomize-atom-one-dark-theme-1.5.5.vsix",
|
||||
"mhutchie.git-graph": "https://open-vsx.org/api/mhutchie/git-graph/1.30.0/file/mhutchie.git-graph-1.30.0.vsix",
|
||||
"teabyii.ayu": "https://open-vsx.org/api/teabyii/ayu/0.20.1/file/teabyii.ayu-0.20.1.vsix",
|
||||
"yurihs.sublime-vscode-theme": "https://open-vsx.org/api/yurihs/sublime-vscode-theme/1.4.1/file/yurihs.sublime-vscode-theme-1.4.1.vsix",
|
||||
"wesbos.theme-cobalt2": "https://open-vsx.org/api/wesbos/theme-cobalt2/2.1.6/file/wesbos.theme-cobalt2-2.1.6.vsix",
|
||||
"github.github-vscode-theme": "https://open-vsx.org/api/GitHub/github-vscode-theme/4.1.1/file/GitHub.github-vscode-theme-4.1.1.vsix",
|
||||
"armandphilippot.coldark": "https://open-vsx.org/api/armandphilippot/coldark/1.2.9/file/armandphilippot.coldark-1.2.9.vsix",
|
||||
"radiolevity.search-lights": "https://open-vsx.org/api/radiolevity/search-lights/1.10.1/file/radiolevity.search-lights-1.10.1.vsix",
|
||||
"vladeeg.vscode-theme-vlight": "https://open-vsx.org/api/Vladeeg/vscode-theme-vlight/2.1.0/file/Vladeeg.vscode-theme-vlight-2.1.0.vsix",
|
||||
"akamud.vscode-theme-onelight": "https://open-vsx.org/api/akamud/vscode-theme-onelight/2.2.3/file/akamud.vscode-theme-onelight-2.2.3.vsix",
|
||||
"akamud.vscode-theme-onedark": "https://open-vsx.org/api/akamud/vscode-theme-onedark/2.2.3/file/akamud.vscode-theme-onedark-2.2.3.vsix",
|
||||
"laurenttreguier.vscode-simple-icons": "https://open-vsx.org/api/LaurentTreguier/vscode-simple-icons/1.16.0/file/LaurentTreguier.vscode-simple-icons-1.16.0.vsix",
|
||||
"technicolor-creamsicle.deepdark-material": "https://open-vsx.org/api/technicolor-creamsicle/deepdark-material/3.3.0/file/technicolor-creamsicle.deepdark-material-3.3.0.vsix",
|
||||
"jeppeandersen.vscode-kafka": "https://open-vsx.org/api/jeppeandersen/vscode-kafka/0.14.0/file/jeppeandersen.vscode-kafka-0.14.0.vsix"
|
||||
}
|
||||
}
|
|
@ -1,37 +1,4 @@
|
|||
ARG BUILD_IMAGE=node:12.18.3
|
||||
ARG MAIN_IMAGE=alnoda/extended-workspace:4.0
|
||||
################################################################################ BUILD THEIA
|
||||
FROM ${BUILD_IMAGE}
|
||||
RUN apt-get update \
|
||||
&& apt-get upgrade -y \
|
||||
&& apt-get install -y apt-utils \
|
||||
&& apt-get install -y git \
|
||||
&& apt-get install -y libsecret-1-dev \
|
||||
&& mkdir /opt/theia
|
||||
WORKDIR /opt/theia
|
||||
ADD theia_package.json ./package.json
|
||||
ARG GITHUB_TOKEN
|
||||
RUN yarn --pure-lockfile && \
|
||||
NODE_OPTIONS="--max_old_space_size=4096" yarn theia build && \
|
||||
yarn theia download:plugins && \
|
||||
yarn --production && \
|
||||
yarn autoclean --init && \
|
||||
echo *.ts >> .yarnclean && \
|
||||
echo *.ts.map >> .yarnclean && \
|
||||
echo *.spec.* >> .yarnclean && \
|
||||
yarn autoclean --force && \
|
||||
yarn cache clean
|
||||
################################################################################ WORKSPACE IMAGE
|
||||
FROM ${MAIN_IMAGE}
|
||||
|
||||
# Replace Theia with the new build, which includes additional pre-installed extensions
|
||||
# To do this, the existing Theia folder will be deleted, and new copied from the build stage
|
||||
ENV THEIA_DIR="/home/abc/apps/theia"
|
||||
RUN rm -rf $THEIA_DIR \
|
||||
&& mkdir "$THEIA_DIR" \
|
||||
&& cd $THEIA_DIR && nodeenv --node=12.18.3 env && . env/bin/activate
|
||||
# Copy built Theia from the build image
|
||||
COPY --from=0 --chown=abc:abc /opt/theia $THEIA_DIR
|
||||
FROM alnoda/extended-workspace:4.0
|
||||
|
||||
RUN echo "------------------------------------------------------ openjdk" \
|
||||
&& sudo apt-get -y update \
|
||||
|
@ -70,10 +37,14 @@ RUN echo "------------------------------------------------------ openjdk" \
|
|||
|
||||
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
|
||||
ENV PATH="/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH"
|
||||
|
||||
USER abc
|
||||
|
||||
|
||||
|
||||
# Install additional codeserver extensions
|
||||
RUN echo "------------------------------------------------------ extensions" \
|
||||
&& code-server --install-extension jeppeandersen.vscode-kafka
|
||||
|
||||
# Set another color theme for IDE
|
||||
COPY settings.json /home/abc/.theia/settings.json
|
||||
|
||||
# Build Alnoda workspace
|
||||
COPY --chown=abc:abc workspace /tmp/workspace
|
||||
RUN pipx uninstall alnoda-wrk; pipx install alnoda-wrk; alnoda-wrk build /tmp/workspace && rm -rf /tmp/workspace
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"terminal.integrated.shell.linux": "/bin/zsh",
|
||||
"workbench.colorTheme": "Search Lights Italic",
|
||||
"workbench.colorTheme": "Desert Lights",
|
||||
"git-graph.maxDepthOfRepoSearch": 3
|
||||
}
|
|
@ -3,7 +3,7 @@
|
|||
"theia": {
|
||||
"frontend": {
|
||||
"config": {
|
||||
"applicationName": "Theia JavaScript/TypeScript Example",
|
||||
"applicationName": "-IDE-",
|
||||
"preferences": {
|
||||
"files.enableTrash": false
|
||||
}
|
||||
|
@ -122,10 +122,9 @@
|
|||
"laurenttreguier.vscode-simple-icons": "https://open-vsx.org/api/LaurentTreguier/vscode-simple-icons/1.16.0/file/LaurentTreguier.vscode-simple-icons-1.16.0.vsix",
|
||||
"technicolor-creamsicle.deepdark-material": "https://open-vsx.org/api/technicolor-creamsicle/deepdark-material/3.3.0/file/technicolor-creamsicle.deepdark-material-3.3.0.vsix",
|
||||
"rubjo.ultimate-dark-neo": "https://open-vsx.org/api/rubjo/ultimate-dark-neo/0.1.0/file/rubjo.ultimate-dark-neo-0.1.0.vsix",
|
||||
"sainnhe.edge": "https://open-vsx.org/api/sainnhe/edge/0.1.8/file/sainnhe.edge-0.1.8.vsix",
|
||||
|
||||
"sainnhe.edge": "https://open-vsx.org/api/sainnhe/edge/0.1.8/file/sainnhe.edge-0.1.8.vsix",
|
||||
"robbowen.synthwave-vscode": "https://open-vsx.org/api/RobbOwen/synthwave-vscode/0.1.14/file/RobbOwen.synthwave-vscode-0.1.14.vsix",
|
||||
"4ops.terraform": "https://open-vsx.org/api/hashicorp/terraform/2.20.0/file/hashicorp.terraform-2.20.0.vsix",
|
||||
"samuelcolvin.jinjahtml": "https://open-vsx.org/api/samuelcolvin/jinjahtml/0.18.0/file/samuelcolvin.jinjahtml-0.18.0.vsix"
|
||||
|
||||
"jeppeandersen.vscode-kafka": "https://open-vsx.org/api/jeppeandersen/vscode-kafka/0.15.0/file/jeppeandersen.vscode-kafka-0.15.0.vsix"
|
||||
}
|
||||
}
|
|
@ -8,6 +8,8 @@ description: |
|
|||
# Kafka workspace
|
||||
Browser-based portable and containerized environment to interact, manage and administer Kafka clusters.
|
||||
|
||||
tags: kafka, kafka-cli
|
||||
|
||||
# UI icons
|
||||
logo: kafka-circle-white.svg
|
||||
favicon: kafka-circle.svg
|
||||
|
@ -19,15 +21,15 @@ styles:
|
|||
light:
|
||||
primary: "#252525"
|
||||
accent: "#19758F"
|
||||
subtitle: "#003B5C"
|
||||
background: "#F5F7F7"
|
||||
dark:
|
||||
primary: "#252525"
|
||||
accent: "#19758F"
|
||||
background: "#343741"
|
||||
title: "#9CDCFE"
|
||||
subtitle: "#9CDCFE"
|
||||
text: "#9CDCFE"
|
||||
code_text: "#000000"
|
||||
code_background: "#F0F0F0"
|
||||
|
||||
start:
|
||||
- name: Zookeeper
|
||||
|
|
|
@ -1,38 +1,15 @@
|
|||
ARG docker_registry=docker.io/alnoda
|
||||
ARG image_tag=3.0
|
||||
FROM lnoda/ansible-terraform-workspace:4.0
|
||||
|
||||
## Images used:
|
||||
ARG BUILD_IMAGE=node:12.18.3
|
||||
ARG DEPLOY_IMAGE=${docker_registry}/ansible-terraform-workspace:${image_tag}
|
||||
|
||||
|
||||
FROM ${DEPLOY_IMAGE}
|
||||
USER root
|
||||
|
||||
COPY supervisord-kubespray.conf /etc/supervisord/
|
||||
|
||||
COPY ./mkdocs/mkdocs.yml /home/docs/mkdocs.yml
|
||||
COPY ./mkdocs/img/* /home/docs/docs/assets/home/
|
||||
COPY ./mkdocs/helpers.py /home/docs/macros
|
||||
COPY ./mkdocs/README.md /home/docs/docs/README.md
|
||||
COPY ./mkdocs/k8s-circle.svg /home/docs/docs/assets/
|
||||
COPY ./mkdocs/k8s-circle-white.svg /home/docs/docs/assets/
|
||||
COPY ./mkdocs/extra.css /home/docs/docs/stylesheets/
|
||||
COPY ./mkdocs/about.md /home/docs/docs/about.md
|
||||
|
||||
|
||||
RUN apt-get -y update \
|
||||
&& echo "------------------------------------------------------ prep" \
|
||||
&& pip uninstall -y ansible-doctor \
|
||||
RUN sudo apt-get -y update \
|
||||
&& echo "------------------------------------------------------ Kubectl" \
|
||||
&& cd /tmp && curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" \
|
||||
&& install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl \
|
||||
&& install kubectl /home/abc/.local/bin/kubectl \
|
||||
&& rm /tmp/kubectl \
|
||||
&& echo "------------------------------------------------------ Helm" \
|
||||
&& cd /tmp && wget https://get.helm.sh/helm-v3.9.0-linux-386.tar.gz \
|
||||
&& tar -zxvf /tmp/helm-v3.9.0-linux-386.tar.gz \
|
||||
&& chmod +x /tmp/linux-386/helm \
|
||||
&& mv /tmp/linux-386/helm /usr/local/bin/helm \
|
||||
&& mv /tmp/linux-386/helm /home/abc/.local/bin/helm \
|
||||
&& rm /tmp/helm-v3.9.0-linux-386.tar.gz \
|
||||
&& rm -r /tmp/linux-386 \
|
||||
&& echo "------------------------------------------------------ K9s" \
|
||||
|
@ -40,25 +17,17 @@ RUN apt-get -y update \
|
|||
&& cd /tmp/k9s && wget https://github.com/derailed/k9s/releases/download/v0.25.18/k9s_Linux_x86_64.tar.gz \
|
||||
&& tar -zxvf /tmp/k9s/k9s_Linux_x86_64.tar.gz \
|
||||
&& chmod +x /tmp/k9s/k9s \
|
||||
&& mv /tmp/k9s/k9s /usr/local/bin/k9s \
|
||||
&& mv /tmp/k9s/k9s /home/abc/.local/bin/k9s \
|
||||
&& rm -r /tmp/k9s \
|
||||
&& echo "------------------------------------------------------ Octant" \
|
||||
&& mkdir -p /tmp/octant \
|
||||
&& cd /tmp/octant && wget https://github.com/vmware-tanzu/octant/releases/download/v0.25.1/octant_0.25.1_Linux-64bit.tar.gz \
|
||||
&& tar -zxvf /tmp/octant/octant_0.25.1_Linux-64bit.tar.gz \
|
||||
&& chmod +x /tmp/octant/octant_0.25.1_Linux-64bit/octant \
|
||||
&& mv /tmp/octant/octant_0.25.1_Linux-64bit/octant /usr/local/bin/ \
|
||||
&& rm -rf /tmp/octant \
|
||||
&& echo "------------------------------------------------------ user" \
|
||||
&& mkdir /var/log/octant && chown -R abc /var/log/octant \
|
||||
&& find /home -type d | xargs -I{} chown -R abc {} \
|
||||
&& find /home -type f | xargs -I{} chown abc {}
|
||||
&& mv /tmp/octant/octant_0.25.1_Linux-64bit/octant /home/abc/.local/bin/ \
|
||||
&& rm -rf /tmp/octant
|
||||
|
||||
USER abc
|
||||
|
||||
RUN echo "------------------------------------------------------ prep" \
|
||||
&& python3 -m pip install --user pipx \
|
||||
&& echo "------------------------------------------------------ kubespray" \
|
||||
RUN echo "------------------------------------------------------ kubespray" \
|
||||
&& git clone -b v2.19.0 --single-branch https://github.com/kubernetes-sigs/kubespray.git /home/project/kubespray \
|
||||
&& pip install -r /home/project/kubespray/requirements-2.12.txt \
|
||||
&& echo "------------------------------------------------------ Kube-shell" \
|
||||
|
@ -76,6 +45,15 @@ RUN echo "------------------------------------------------------ prep" \
|
|||
&& mkdir -p /home/abc/.ssh
|
||||
|
||||
ENV OCTANT_DISABLE_OPEN_BROWSER=1 \
|
||||
OCTANT_LISTENER_ADDR=0.0.0.0:8031
|
||||
OCTANT_LISTENER_ADDR=0.0.0.0:8035
|
||||
|
||||
ENV PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
|
||||
ENV PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
|
||||
|
||||
# Install additional codeserver extensions
|
||||
RUN echo "------------------------------------------------------ extensions" \
|
||||
&& code-server --install-extension ms-kubernetes-tools.vscode-kubernetes-tools \
|
||||
&& code-server --install-extension ipedrazas.kubernetes-snippets
|
||||
|
||||
# Build Alnoda workspace
|
||||
COPY --chown=abc:abc workspace /tmp/workspace
|
||||
RUN pipx uninstall alnoda-wrk; pipx install alnoda-wrk; alnoda-wrk build /tmp/workspace && rm -rf /tmp/workspace
|
|
@ -1,46 +0,0 @@
|
|||
# Features that can be added
|
||||
|
||||
- Pre-install Kubectl plugins:
|
||||
- [access-matrix](https://github.com/corneliusweig/rakkess) - show an RBAC access matrix for server resources.
|
||||
- [graph](https://github.com/steveteuber/kubectl-graph) - visualize Kubernetes resources and relationships.
|
||||
- [iexec](https://github.com/gabeduke/kubectl-iexec) - interactive selection tool for `kubectl exec`.
|
||||
- [janitor](https://github.com/dastergon/kubectl-janitor) - find objects in a problematic state in your Kubernetes cluster.
|
||||
- [ktop](https://github.com/vladimirvivien/ktop) - display workload metrics.
|
||||
- [kurt](https://github.com/soraro/kurt) - find what's restarting and why.
|
||||
- [kpexec](https://github.com/ssup2/kpexec) - run commands in a container with high privileges.
|
||||
- [mtail](https://gitlab.com/grzesuav/kubectl-mtail) - tail logs from multiple pods matching label selector.
|
||||
- [modify-secret](https://github.com/rajatjindal/kubectl-modify-secret) - modify secret with implicit base64 translations.
|
||||
- [node-restart](https://github.com/mnrgreg/kubectl-node-restart) - restart cluster nodes sequentially and gracefully.
|
||||
- [operator](https://github.com/operator-framework/kubectl-operator) - manage operators with Operator Lifecycle Manager.
|
||||
- [pod-lens](https://pod-lens.guoxudong.io/) - view pod-related resources with an interactive cli tool.
|
||||
- [pv-migrate](https://github.com/utkuozdemir/pv-migrate) - migrate data across persistent volumes.
|
||||
- [resource-capacity](https://github.com/robscott/kube-capacity) - overview resource requests, limits, and utilization.
|
||||
- [sshd](https://github.com/ottoyiu/kubectl-sshd) - run a temporary SSH server on any Running Pod in your Kubernetes cluster.
|
||||
- [sql](https://github.com/yaacov/kubectl-sql) - query the cluster via pseudo-SQL.
|
||||
- [stern](https://github.com/stern/stern) - logs from multiple pods on Kubernetes and multiple containers within the pod. Each result is color coded for quicker debugging.
|
||||
- [tree](https://github.com/ahmetb/kubectl-tree) - show a tree of object hierarchies through ownerReferences.
|
||||
- [view-secret](https://github.com/elsesiy/kubectl-view-secret) - easy secret decoding. Useful if you want to see what's inside of a secret.
|
||||
|
||||
```
|
||||
kubectl krew install access-matrix \
|
||||
&& kubectl krew install df-pv \
|
||||
&& kubectl krew install graph \
|
||||
&& kubectl krew install iexec \
|
||||
&& kubectl krew install janitor \
|
||||
&& kubectl krew install ktop \
|
||||
&& kubectl krew install mtail \
|
||||
&& kubectl krew install modify-secret \
|
||||
&& kubectl krew install nsenter \
|
||||
&& kubectl krew install node-restart \
|
||||
&& kubectl krew install operator \
|
||||
&& kubectl krew install pexec \
|
||||
&& kubectl krew install pod-lens \
|
||||
&& kubectl krew install popeye \
|
||||
&& kubectl krew install pv-migrate \
|
||||
&& kubectl krew install resource-capacity \
|
||||
&& kubectl krew install sshd \
|
||||
&& kubectl krew install sql \
|
||||
&& kubectl krew install stern \
|
||||
&& kubectl krew install tree \
|
||||
&& kubectl krew install view-secret
|
||||
```
|
Before Width: | Height: | Size: 3.9 MiB |
|
@ -1,154 +0,0 @@
|
|||
<style>
|
||||
/* These styles apply only to this page! */
|
||||
.md-content__button {
|
||||
display: none;
|
||||
}
|
||||
.md-sidebar--secondary{
|
||||
display: none !important;
|
||||
}
|
||||
.md-typeset h1 {
|
||||
line-height: 0;
|
||||
margin: 0;
|
||||
margin-left: -9999px;
|
||||
}
|
||||
.quickstart-wrapper {
|
||||
min-width: 300px;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
padding-left: -50px;
|
||||
column-gap: 50px;
|
||||
row-gap: 50px;
|
||||
}
|
||||
.quickstart-wrapper > div {
|
||||
flex: 300px;
|
||||
max-width: 300px;
|
||||
}
|
||||
.tool-img{
|
||||
box-shadow: rgba(0, 0, 0, 0.24) 0px 5px 5px;
|
||||
border-radius: 5px;
|
||||
min-width: 300px;
|
||||
max-width: 300px;
|
||||
max-height: 170px;
|
||||
min-height: 170px;
|
||||
}
|
||||
.tool-caption{
|
||||
font-family: Roboto, Helvetica, sans-serif;
|
||||
text-align: center;
|
||||
margin-top: 10px;
|
||||
font-size: 1.2rem;
|
||||
font-weight: bold;
|
||||
|
||||
/* font-size: 1.25em;
|
||||
font-weight: 400; */
|
||||
letter-spacing: -.02em;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.tool-description{
|
||||
font-family: Helvetica, sans-serif;
|
||||
text-align: center;
|
||||
margin-top: 10px;
|
||||
font-size: 0.7rem;
|
||||
font-style: oblique;
|
||||
/* font-weight: bold; */
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
{%
|
||||
set tools = [
|
||||
{
|
||||
"env": "IDE_URL",
|
||||
"name": "IDE",
|
||||
"image": "assets/home/IDE.jpg",
|
||||
"description": "Browser-based version of Visual Studio Code. Develop in any language, install hundreeds of extensions"
|
||||
},
|
||||
{
|
||||
"env": "TERMINAL_URL",
|
||||
"name": "Terminal",
|
||||
"image": "assets/home/Terminal.png",
|
||||
"description": "Full-fledged browser-based terminal with Z-shell"
|
||||
},
|
||||
{
|
||||
"env": "FILEBROWSER_URL",
|
||||
"name": "File Browser",
|
||||
"image": "assets/home/Filebrowser.png",
|
||||
"description": "Browse, upload and download files and folders to and from the Workspace"
|
||||
},
|
||||
{
|
||||
"env": "OCTANT",
|
||||
"name": "Octant",
|
||||
"image": "assets/home/octant.png",
|
||||
"description": "Understand better the complexity of Kubernetes clusters."
|
||||
},
|
||||
{
|
||||
"env": "ANSIBLE_ARA",
|
||||
"name": "Ansible Ara",
|
||||
"image": "assets/home/Ara.png",
|
||||
"description": "Monitor for all Ansible plays"
|
||||
},
|
||||
{
|
||||
"env": "TERRAFORM_ROVER",
|
||||
"name": "Terraform Rover",
|
||||
"image": "assets/home/Terraform-Rover.png",
|
||||
"description": "Not started! Start manually with your Terraform project dir, i.e. <b>cd /home/examples/terraform-scaleway/; terraform init; rover --workingDir /home/examples/terraform-scaleway/</b>"
|
||||
},
|
||||
{
|
||||
"env": "BLAST_RADIUS",
|
||||
"name": "Blast Radius",
|
||||
"image": "assets/home/Blast-radius.png",
|
||||
"description": "Not started! Start manually with your Terraform project dir, i.e. <b>cd /home/examples/terraform-scaleway; terraform init; blast-radius --serve --port 8030</b>"
|
||||
},
|
||||
{
|
||||
"env": "CRONICLE_URL",
|
||||
"name": "Cronicle",
|
||||
"image": "assets/home/Cronicle.jpg",
|
||||
"description": "Schedule jobs, manage schedules, observe and monitor executions (user/pass - admin/admin)"
|
||||
},
|
||||
{
|
||||
"env": "UNGIT_URL",
|
||||
"name": "Ungit",
|
||||
"image": "assets/home/Ungit.jpg",
|
||||
"description": "Manage Git repositories and work flow using beautiful UI"
|
||||
},
|
||||
{
|
||||
"env": "STATICFS_URL",
|
||||
"name": "Static File Server",
|
||||
"image": "assets/home/Static-server.png",
|
||||
"description": "Serve any static websites like a breeze"
|
||||
},
|
||||
{
|
||||
"env": "MC_URL",
|
||||
"name": "M.Commander",
|
||||
"image": "assets/home/MC.jpg",
|
||||
"description": "Feature rich visual file manager with internal text viewer and editor"
|
||||
},
|
||||
{
|
||||
"env": "HTOP_URL",
|
||||
"name": "Process monitor",
|
||||
"image": "assets/home/Htop.jpg",
|
||||
"description": "Monitor running process and resource utilization"
|
||||
}
|
||||
]
|
||||
%}
|
||||
|
||||
|
||||
<div class="quickstart-wrapper">
|
||||
{% for tool in tools %}
|
||||
{% set tool_url = get_tool_url(tool.env) %}
|
||||
<div>
|
||||
<a href="{{ tool_url }}" target="_blank" rel="noopener noreferrer">
|
||||
<img src="{{ tool.image }}" class="tool-img"/>
|
||||
</a>
|
||||
<a href="{{ tool_url }}">
|
||||
<div class="tool-caption">{{ tool.name }}</div>
|
||||
</a>
|
||||
<div class="tool-description">{{ tool.description }}</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
Containerized development, execution and admin environment for Kubernetes, Ansible and Terraform.
|
||||
Create, provision, visualize and manage infrastructures.
|
||||
Deploy and develop Kubernetes clusters.
|
||||
Administer and schedule maintenance tasks.
|
|
@ -1,20 +0,0 @@
|
|||
[data-md-color-scheme="k8s"] {
|
||||
--md-primary-fg-color: #316CE6;
|
||||
--md-primary-fg-color--light: #7747A7;
|
||||
--md-primary-fg-color--dark: #7747A7;
|
||||
--md-accent-fg-color: #1040a1;
|
||||
|
||||
--md-default-bg-color: #FFFFFF;
|
||||
--md-typeset-a-color: #303030;
|
||||
}
|
||||
|
||||
[data-md-color-scheme="k8s-dark"] {
|
||||
--md-primary-fg-color: #316CE6;
|
||||
--md-accent-fg-color: #DF736A;
|
||||
|
||||
--md-default-bg-color: #232834;
|
||||
--md-default-fg-color--light: #E3EAF2;
|
||||
--md-typeset-color: #E3EAF2;
|
||||
--md-typeset-a-color: #E3EAF2;
|
||||
}
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
"""
|
||||
Basic example of a Mkdocs-macros module.
|
||||
Include this {{ macros_info() }} in any page to get complete macro info
|
||||
"""
|
||||
import os
|
||||
|
||||
port_increments = {
|
||||
"DOCS_URL": 0,
|
||||
"FILEBROWSER_URL": 1,
|
||||
"STATICFS_URL": 2,
|
||||
"CRONICLE_URL": 3,
|
||||
"UNGIT_URL": 4,
|
||||
"IDE_URL": 5,
|
||||
"TERMINAL_URL": 6,
|
||||
"MC_URL": 7,
|
||||
"HTOP_URL": 8,
|
||||
"ANSIBLE_ARA": 9,
|
||||
"BLAST_RADIUS": 10,
|
||||
"OCTANT": 11,
|
||||
"PORT_8038": 18,
|
||||
"PORT_8039": 19,
|
||||
"PORT_8040": 20
|
||||
}
|
||||
|
||||
# this function name should not be changed
|
||||
def define_env(env):
|
||||
"""
|
||||
This is the hook for defining variables, macros and filters
|
||||
- variables: the dictionary that contains the environment variables
|
||||
- macro: a decorator function, to declare a macro.
|
||||
- filter: a function with one of more arguments,
|
||||
used to perform a transformation
|
||||
"""
|
||||
@env.macro
|
||||
def get_tool_url(env):
|
||||
try:
|
||||
return os.environ[env]
|
||||
except:
|
||||
# Get host
|
||||
host = "localhost"
|
||||
try:
|
||||
host = os.environ["WRK_HOST"]
|
||||
except:
|
||||
pass
|
||||
proto = "http"
|
||||
try:
|
||||
proto = os.environ["WRK_PROTO"]
|
||||
except:
|
||||
pass
|
||||
# Entry port - port relative to which other ports will be calculated
|
||||
entry_port = 8020
|
||||
try:
|
||||
entry_port = int(os.environ["ENTRY_PORT"])
|
||||
except:
|
||||
pass
|
||||
# Assign port
|
||||
try:
|
||||
port = port_increments[env] + entry_port
|
||||
except:
|
||||
port = 80
|
||||
return f"{proto}://{host}:{port}"
|
||||
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="g10" transform="matrix(3, 0, 0, -3, 0, 900)" style="">
|
||||
<g id="g12" transform="scale(0.1)">
|
||||
<path d="M 1500 3000 C 671.57 3000 0 2328.43 0 1500 C 0 671.57 671.57 0 1500 0 C 2328.43 0 3000 671.57 3000 1500 C 3000 2328.43 2328.43 3000 1500 3000 Z M 2454.59 545.41 C 2199.61 290.422 1860.6 150 1500 150 C 1139.4 150 800.387 290.422 545.406 545.41 C 290.426 800.391 150 1139.4 150 1500 C 150 1860.6 290.426 2199.61 545.406 2454.59 C 800.387 2709.57 1139.4 2850 1500 2850 C 1860.6 2850 2199.61 2709.57 2454.59 2454.59 C 2709.57 2199.61 2850 1860.6 2850 1500 C 2850 1139.4 2709.57 800.391 2454.59 545.41" style="fill-opacity: 1; fill-rule: nonzero; stroke: none;" id="path14"/>
|
||||
<title>Go icon</title>
|
||||
<title>Elixir icon</title>
|
||||
<title>R icon</title>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<g transform="matrix(2.18986, 0, 0, 2.141408, 100, 100)" style=""/>
|
||||
<path d="M 781.253 499.904 L 698.671 481.057 C 706.165 423.072 692.64 364.318 660.548 315.444 L 724.048 264.81 L 692.873 225.711 L 629.391 276.319 C 588.492 234.253 534.063 207.963 475.686 202.077 L 475.686 125.808 L 425.686 125.808 L 425.686 202.077 C 367.309 207.965 312.88 234.258 271.981 276.328 L 208.498 225.711 L 177.322 264.808 L 240.821 315.442 C 208.73 364.317 195.206 423.072 202.7 481.057 L 120.12 499.917 L 131.253 548.647 L 213.687 529.823 C 232.448 585.608 270.224 633.022 320.406 663.772 L 287.157 732.85 L 332.201 754.543 L 365.436 685.512 C 420.447 705.905 480.946 705.905 535.957 685.512 L 569.186 754.543 L 614.231 732.836 L 580.98 663.772 C 631.164 633.022 668.939 585.608 687.701 529.823 L 770.134 548.635 L 781.253 499.904 Z M 650.686 450.807 C 650.686 457.24 650.316 463.587 649.721 469.875 L 524.72 441.335 C 524.088 436.279 522.935 431.3 521.281 426.48 L 621.186 346.807 C 640.452 378.078 650.665 414.079 650.686 450.807 Z M 425.686 450.807 C 425.686 431.563 446.52 419.534 463.186 429.157 C 479.853 438.779 479.853 462.835 463.186 472.457 C 459.386 474.652 455.074 475.807 450.687 475.807 C 436.884 475.796 425.698 464.609 425.686 450.807 Z M 590.082 307.668 L 490.186 387.329 C 485.615 384.511 480.754 382.192 475.686 380.41 L 475.686 252.54 C 518.806 257.959 558.976 277.316 590.082 307.668 Z M 425.686 252.54 L 425.686 380.41 C 420.619 382.192 415.758 384.511 411.186 387.329 L 311.298 307.668 C 342.401 277.317 382.567 257.96 425.686 252.54 Z M 250.686 450.807 C 250.708 414.079 260.92 378.078 280.186 346.807 L 380.091 426.473 C 378.437 431.293 377.284 436.271 376.65 441.328 L 251.651 469.867 C 251.056 463.587 250.686 457.24 250.686 450.807 Z M 262.774 518.617 L 387.154 490.212 C 390.093 495.06 393.57 499.56 397.519 503.628 L 342.171 618.557 C 305.539 594.767 277.664 559.68 262.774 518.617 Z M 450.687 650.808 C 429.09 650.772 407.642 647.226 387.186 640.307 L 442.701 525 C 445.346 525.411 448.012 525.681 450.687 525.808 C 453.357 525.681 456.018 525.413 458.661 525.003 L 514.186 640.307 C 493.73 647.233 472.282 650.779 450.687 650.808 Z M 559.202 618.557 L 503.854 503.617 C 507.802 499.55 511.279 495.049 514.219 490.202 L 638.598 518.608 C 623.71 559.675 595.834 594.764 559.202 618.557 Z" style=""/>
|
||||
<rect id="_Transparent_Rectangle_" data-name="<Transparent Rectangle>" class="cls-1" width="800" height="800" style="fill: none;" y="60.148" x="43.806"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 4.3 KiB |
|
@ -1,61 +0,0 @@
|
|||
# ===========================================================
|
||||
# NAVIGATION
|
||||
# ===========================================================
|
||||
|
||||
nav:
|
||||
- Home: README.md
|
||||
- My apps: pages/my-apps.md
|
||||
- About: about.md
|
||||
- Docs: https://docs.alnoda.org/kubespray-workspace/
|
||||
|
||||
# ===========================================================
|
||||
# CONFIGURATION
|
||||
# ===========================================================
|
||||
|
||||
site_name: Kubespray Workspace
|
||||
repo_url: https://github.com/bluxmit/alnoda-workspaces
|
||||
site_url: https://docs.alnoda.org
|
||||
edit_uri: ""
|
||||
|
||||
# ===========================================================
|
||||
# APPEARANCE
|
||||
# ===========================================================
|
||||
|
||||
theme:
|
||||
name: 'material'
|
||||
favicon: 'assets/k8s-circle.svg'
|
||||
logo: 'assets/k8s-circle-white.svg'
|
||||
custom_dir: overrides
|
||||
font:
|
||||
text: Roboto
|
||||
icon:
|
||||
repo: fontawesome/brands/github
|
||||
features:
|
||||
- navigation.instant
|
||||
palette:
|
||||
- scheme: k8s
|
||||
toggle:
|
||||
icon: material/brightness-7
|
||||
name: Switch to dark mode
|
||||
- scheme: k8s-dark
|
||||
toggle:
|
||||
icon: material/brightness-4
|
||||
name: Switch to light mode
|
||||
|
||||
extra:
|
||||
# Link to open when your logo is clicked
|
||||
homepage: https://docs.alnoda.org
|
||||
host_url: http://docs.alnoda.org
|
||||
|
||||
plugins:
|
||||
# Enable Macros and jinja2 templates
|
||||
- macros:
|
||||
module_name: macros/helpers
|
||||
|
||||
extra_css:
|
||||
- stylesheets/extra.css
|
||||
|
||||
extra_javascript:
|
||||
- javascripts/config.js
|
||||
- https://polyfill.io/v3/polyfill.min.js?features=es6
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
[program:octant]
|
||||
directory=/home
|
||||
command=/bin/sh -c " octant "
|
||||
stderr_logfile = /var/log/octant/stderr.log
|
||||
stdout_logfile = /var/log/octant/arastdout.log
|
||||
logfile_maxbytes = 1024
|
|
@ -3,36 +3,36 @@
|
|||
"theia": {
|
||||
"frontend": {
|
||||
"config": {
|
||||
"applicationName": "Theia IDE",
|
||||
"warnOnPotentiallyInsecureHostPattern": false,
|
||||
"applicationName": "-IDE-",
|
||||
"preferences": {
|
||||
"files.enableTrash": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"resolutions": {
|
||||
"**/*/colors": "1.4.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@theia/editor-preview": "1.15.0",
|
||||
"@theia/file-search": "1.15.0",
|
||||
"@theia/getting-started": "1.15.0",
|
||||
"@theia/git": "1.15.0",
|
||||
"@theia/markers": "1.15.0",
|
||||
"@theia/messages": "1.15.0",
|
||||
"@theia/monaco": "1.15.0",
|
||||
"@theia/navigator": "1.15.0",
|
||||
"@theia/outline-view": "1.15.0",
|
||||
"@theia/plugin-ext-vscode": "1.15.0",
|
||||
"@theia/preferences": "1.15.0",
|
||||
"@theia/preview": "1.15.0",
|
||||
"@theia/search-in-workspace": "1.15.0",
|
||||
"@theia/terminal": "1.15.0",
|
||||
"@theia/vsx-registry": "1.15.0"
|
||||
"@theia/callhierarchy": "1.29.0",
|
||||
"@theia/debug": "1.29.0",
|
||||
"@theia/editor-preview": "1.29.0",
|
||||
"@theia/file-search": "1.29.0",
|
||||
"@theia/getting-started": "1.29.0",
|
||||
"@theia/git": "1.29.0",
|
||||
"@theia/markers": "1.29.0",
|
||||
"@theia/messages": "1.29.0",
|
||||
"@theia/mini-browser": "1.29.0",
|
||||
"@theia/navigator": "1.29.0",
|
||||
"@theia/outline-view": "1.29.0",
|
||||
"@theia/plugin": "1.29.0",
|
||||
"@theia/plugin-ext": "1.29.0",
|
||||
"@theia/plugin-ext-vscode": "1.29.0",
|
||||
"@theia/preferences": "1.29.0",
|
||||
"@theia/preview": "1.29.0",
|
||||
"@theia/search-in-workspace": "1.29.0",
|
||||
"@theia/terminal": "1.29.0",
|
||||
"@theia/vsx-registry": "1.29.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@theia/cli": "1.15.0"
|
||||
"@theia/cli": "1.29.0"
|
||||
},
|
||||
"scripts": {
|
||||
"preinstall": "node-gyp install"
|
||||
|
@ -103,6 +103,8 @@
|
|||
"vscode-builtin-xml": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/xml-1.39.1-prel.vsix",
|
||||
"vscode-builtin-yaml": "https://github.com/theia-ide/vscode-builtin-extensions/releases/download/v1.39.1-prel/yaml-1.39.1-prel.vsix",
|
||||
"vscode-editorconfig": "https://github.com/theia-ide/editorconfig-vscode/releases/download/v0.14.4/EditorConfig-0.14.4.vsix",
|
||||
"vscode-eslint": "https://github.com/theia-ide/vscode-eslint/releases/download/release%2F2.0.15/vscode-eslint-2.0.15.vsix",
|
||||
|
||||
"vscode-python": "https://open-vsx.org/api/ms-python/python/2020.8.105369/file/ms-python.python-2020.8.105369.vsix",
|
||||
"nadim-vscode.infinity-dark-theme": "https://open-vsx.org/api/nadim-vscode/infinity-dark-theme/1.0.1/file/nadim-vscode.infinity-dark-theme-1.0.1.vsix",
|
||||
"emroussel.atomize-atom-one-dark-theme": "https://open-vsx.org/api/emroussel/atomize-atom-one-dark-theme/1.5.5/file/emroussel.atomize-atom-one-dark-theme-1.5.5.vsix",
|
||||
|
@ -118,6 +120,16 @@
|
|||
"akamud.vscode-theme-onedark": "https://open-vsx.org/api/akamud/vscode-theme-onedark/2.2.3/file/akamud.vscode-theme-onedark-2.2.3.vsix",
|
||||
"emroussel.atom-icons": "https://open-vsx.org/api/emroussel/atom-icons/1.2.0/file/emroussel.atom-icons-1.2.0.vsix",
|
||||
"laurenttreguier.vscode-simple-icons": "https://open-vsx.org/api/LaurentTreguier/vscode-simple-icons/1.16.0/file/LaurentTreguier.vscode-simple-icons-1.16.0.vsix",
|
||||
"technicolor-creamsicle.deepdark-material": "https://open-vsx.org/api/technicolor-creamsicle/deepdark-material/3.3.0/file/technicolor-creamsicle.deepdark-material-3.3.0.vsix"
|
||||
"technicolor-creamsicle.deepdark-material": "https://open-vsx.org/api/technicolor-creamsicle/deepdark-material/3.3.0/file/technicolor-creamsicle.deepdark-material-3.3.0.vsix",
|
||||
"rubjo.ultimate-dark-neo": "https://open-vsx.org/api/rubjo/ultimate-dark-neo/0.1.0/file/rubjo.ultimate-dark-neo-0.1.0.vsix",
|
||||
"sainnhe.edge": "https://open-vsx.org/api/sainnhe/edge/0.1.8/file/sainnhe.edge-0.1.8.vsix",
|
||||
"robbowen.synthwave-vscode": "https://open-vsx.org/api/RobbOwen/synthwave-vscode/0.1.14/file/RobbOwen.synthwave-vscode-0.1.14.vsix",
|
||||
|
||||
"4ops.terraform": "https://open-vsx.org/api/hashicorp/terraform/2.20.0/file/hashicorp.terraform-2.20.0.vsix",
|
||||
"samuelcolvin.jinjahtml": "https://open-vsx.org/api/samuelcolvin/jinjahtml/0.18.0/file/samuelcolvin.jinjahtml-0.18.0.vsix",
|
||||
|
||||
"ms-kubernetes-tools.vscode-kubernetes-tools": "https://open-vsx.org/api/ms-kubernetes-tools/vscode-kubernetes-tools/1.3.10/file/ms-kubernetes-tools.vscode-kubernetes-tools-1.3.10.vsix",
|
||||
"ipedrazas.kubernetes-snippets": "https://open-vsx.org/api/ipedrazas/kubernetes-snippets/0.1.9/file/ipedrazas.kubernetes-snippets-0.1.9.vsix",
|
||||
"tumido.crd-snippets": "https://open-vsx.org/api/tumido/crd-snippets/1.1.0/file/tumido.crd-snippets-1.1.0.vsix"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
"terminal.integrated.shell.linux": "/bin/zsh",
|
||||
"workbench.colorTheme": "SynthWave '84",
|
||||
"git-graph.maxDepthOfRepoSearch": 3
|
||||
"git-graph.maxDepthOfRepoSearch": 3,
|
||||
"workbench.iconTheme": "vs-seti"
|
||||
}
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 383 KiB After Width: | Height: | Size: 383 KiB |
54
workspaces/kubespray-workspace/workspace/workspace.yaml
Normal file
|
@ -0,0 +1,54 @@
|
|||
---
|
||||
# mandatory
|
||||
name: Kubespray Workspace
|
||||
doc_url: https://docs.alnoda.org/workspaces/kubespray-workspace/
|
||||
author: bluxmit
|
||||
version: 4.0
|
||||
description: |
|
||||
# Kubespray workspace
|
||||
Browser-based portable and containerized environment for Kubernetes, Ansible and Terraform.
|
||||
Create, provision, visualize and manage infrastructures.
|
||||
Deploy and develop Kubernetes clusters.
|
||||
Administer and schedule maintenance tasks.
|
||||
|
||||
tags: kubespray, kubectl, k9s, helm, octant, krew
|
||||
|
||||
# UI icons
|
||||
logo: k8s-circle-white.svg
|
||||
favicon: k8s-circle.svg
|
||||
|
||||
# (Homepage UI appearance)
|
||||
styles:
|
||||
font: Ubuntu
|
||||
colors:
|
||||
light:
|
||||
primary: "#0B0438"
|
||||
accent: "#B8610B"
|
||||
subtitle: "#7747A7"
|
||||
background: "#F0F0F0"
|
||||
title: "#303030"
|
||||
code_text: "#FFFFFF"
|
||||
code_background: "#0B0438"
|
||||
dark:
|
||||
primary: "#4B0BB8"
|
||||
accent: "#B8610B"
|
||||
background: "#00031C"
|
||||
title: "#E3EAF2"
|
||||
subtitle: "#E3EAF2"
|
||||
text: "#E3EAF2"
|
||||
code_text: "#000000"
|
||||
code_background: "#F0F0F0"
|
||||
|
||||
pages:
|
||||
home:
|
||||
- name: Octannt
|
||||
port: 8035
|
||||
path: /
|
||||
title: Octant
|
||||
description: "Understand better the complexity of Kubernetes clusters"
|
||||
image: octant.png
|
||||
|
||||
start:
|
||||
- name: Octant
|
||||
cmd: octant
|
||||
|
|
@ -1,46 +1,23 @@
|
|||
ARG docker_registry=docker.io/alnoda
|
||||
ARG image_tag=3.0
|
||||
FROM alnoda/extended-workspace:4.0
|
||||
|
||||
FROM ${docker_registry}/ide-workspace:${image_tag}
|
||||
# More dependencies for mkdocs and markdown
|
||||
COPY mkdocs-requirements.txt /home/abc/python-requirements
|
||||
|
||||
USER root
|
||||
RUN sudo apt-get -y update \
|
||||
&& echo "-------------------------------------------- weasyprint" \
|
||||
&& sudo apt-get install -y build-essential python3-dev python3-pip python3-setuptools python3-wheel python3-cffi libcairo2 libpango-1.0-0 libpangocairo-1.0-0 libgdk-pixbuf2.0-0 libffi-dev shared-mime-info \
|
||||
&& echo "-------------------------------------------- mkdocs plugins" \
|
||||
&& pip install -r /home/abc/python-requirements/mkdocs-requirements.txt
|
||||
|
||||
# Copy example project
|
||||
COPY ./examples/ /home/examples/
|
||||
|
||||
# Change Theia color theme for this magic workspace to stand out
|
||||
COPY settings.json /home/abc/.theia/settings.json
|
||||
# More dependencies for mkdocs and markdown
|
||||
COPY mkdocs-requirements.txt /home/abc/installed-python-packages
|
||||
|
||||
COPY ./examples/ /home/examples/
|
||||
bierner.markdown-mermaid
|
||||
hall.draw
|
||||
|
||||
# Customize mkdocs
|
||||
COPY ./mkdocs/mkdocs.yml /home/docs/mkdocs.yml
|
||||
COPY ./mkdocs/README.md /home/docs/docs/
|
||||
COPY ./mkdocs/about.md /home/docs/docs/
|
||||
COPY ./mkdocs/IDE.jpg /home/docs/docs/assets/home/
|
||||
COPY ./mkdocs/Magicspace-web.png /home/docs/docs/assets/home/
|
||||
COPY ./mkdocs/helpers.py /home/docs/macros
|
||||
COPY ./mkdocs/alnoda-dark.svg /home/docs/docs/assets/
|
||||
COPY ./mkdocs/alnoda-white.svg /home/docs/docs/assets/
|
||||
COPY ./mkdocs/about.md /home/docs/docs/about.md
|
||||
|
||||
RUN apt-get -y update \
|
||||
&& echo "-------------------------------------------- weasyprint" \
|
||||
&& apt-get install -y build-essential python3-dev python3-pip python3-setuptools python3-wheel python3-cffi libcairo2 libpango-1.0-0 libpangocairo-1.0-0 libgdk-pixbuf2.0-0 libffi-dev shared-mime-info \
|
||||
&& echo "-------------------------------------------- mkdocs plugins" \
|
||||
&& pip install -r /home/abc/installed-python-packages/mkdocs-requirements.txt \
|
||||
&& echo "------------------------------------------------------ utils" \
|
||||
&& rm -rf /home/abc/utils || true \
|
||||
&& git clone https://github.com/bluxmit/alnoda-workspaces /tmp/alnoda-workspaces \
|
||||
&& mv /tmp/alnoda-workspaces/utils /home/abc/ \
|
||||
&& rm -rf /tmp/alnoda-workspaces \
|
||||
&& echo "------------------------------------------------------ user" \
|
||||
&& chown -R abc /home/examples \
|
||||
&& chown -R abc /home/abc/utils \
|
||||
&& chown -R abc /home/abc/installed-python-packages \
|
||||
&& find /home -type d | xargs -I{} chown -R abc {} \
|
||||
&& find /home -type f | xargs -I{} chown abc {}
|
||||
|
||||
USER abc
|
||||
|
||||
# Custom docs for this workspace
|
||||
COPY mkdocs /home/docs
|
||||
# Build Alnoda workspace
|
||||
COPY --chown=abc:abc workspace /tmp/workspace
|
||||
RUN pipx uninstall alnoda-wrk; pipx install alnoda-wrk; alnoda-wrk build /tmp/workspace && rm -rf /tmp/workspace
|
|
@ -1 +0,0 @@
|
|||
https://github.com/benweet/stackedit
|
Before Width: | Height: | Size: 1.4 MiB |
Before Width: | Height: | Size: 25 MiB |
Before Width: | Height: | Size: 3.6 MiB |
Before Width: | Height: | Size: 476 KiB |
|
@ -1,136 +0,0 @@
|
|||
<style>
|
||||
/* These styles apply only to this page! */
|
||||
.md-content__button {
|
||||
display: none;
|
||||
}
|
||||
.md-sidebar--secondary{
|
||||
display: none !important;
|
||||
}
|
||||
.md-typeset h1 {
|
||||
line-height: 0;
|
||||
margin: 0;
|
||||
margin-left: -9999px;
|
||||
}
|
||||
.quickstart-wrapper {
|
||||
min-width: 300px;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
padding-left: -50px;
|
||||
column-gap: 50px;
|
||||
row-gap: 50px;
|
||||
}
|
||||
.quickstart-wrapper > div {
|
||||
flex: 300px;
|
||||
max-width: 300px;
|
||||
}
|
||||
.tool-img{
|
||||
box-shadow: rgba(0, 0, 0, 0.24) 0px 5px 5px;
|
||||
border-radius: 5px;
|
||||
min-width: 300px;
|
||||
max-width: 300px;
|
||||
max-height: 170px;
|
||||
min-height: 170px;
|
||||
}
|
||||
.tool-caption{
|
||||
font-family: Roboto, Helvetica, sans-serif;
|
||||
text-align: center;
|
||||
margin-top: 10px;
|
||||
font-size: 1.2rem;
|
||||
font-weight: bold;
|
||||
|
||||
/* font-size: 1.25em;
|
||||
font-weight: 400; */
|
||||
letter-spacing: -.02em;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.tool-description{
|
||||
font-family: Helvetica, sans-serif;
|
||||
text-align: center;
|
||||
margin-top: 10px;
|
||||
font-size: 0.7rem;
|
||||
font-style: oblique;
|
||||
/* font-weight: bold; */
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
{%
|
||||
set tools = [
|
||||
{
|
||||
"env": "IDE_URL",
|
||||
"name": "IDE",
|
||||
"image": "assets/home/IDE.jpg",
|
||||
"description": "Browser-based version of Visual Studio Code. Develop in any language, install hundreeds of extensions"
|
||||
},
|
||||
{
|
||||
"env": "TERMINAL_URL",
|
||||
"name": "Terminal",
|
||||
"image": "assets/home/Terminal.png",
|
||||
"description": "Full-fledged browser-based terminal with Z-shell"
|
||||
},
|
||||
{
|
||||
"env": "FILEBROWSER_URL",
|
||||
"name": "File Browser",
|
||||
"image": "assets/home/Filebrowser.png",
|
||||
"description": "Browse, upload and download files and folders to and from the Workspace"
|
||||
},
|
||||
{
|
||||
"env": "MKDOCS_LIVE",
|
||||
"name": "MkDocs live server",
|
||||
"image": "assets/home/Magicspace-web.png",
|
||||
"description": "Serve your MkDocs project with live reload. For example, <b>cd /home/examples/mkdocs-material; mkdocs serve -a 0.0.0.0:8030</b>"
|
||||
},
|
||||
{
|
||||
"env": "CRONICLE_URL",
|
||||
"name": "Cronicle",
|
||||
"image": "assets/home/Cronicle.jpg",
|
||||
"description": "Schedule jobs, manage schedules, observe and monitor executions (user/pass - admin/admin)"
|
||||
},
|
||||
{
|
||||
"env": "UNGIT_URL",
|
||||
"name": "Ungit",
|
||||
"image": "assets/home/Ungit.jpg",
|
||||
"description": "Manage Git repositories and work flow using beautiful UI"
|
||||
},
|
||||
{
|
||||
"env": "STATICFS_URL",
|
||||
"name": "Static File Server",
|
||||
"image": "assets/home/Static-server.png",
|
||||
"description": "Serve any static websites like a breeze"
|
||||
},
|
||||
{
|
||||
"env": "MC_URL",
|
||||
"name": "M.Commander",
|
||||
"image": "assets/home/MC.jpg",
|
||||
"description": "Feature rich visual file manager with internal text viewer and editor"
|
||||
},
|
||||
{
|
||||
"env": "HTOP_URL",
|
||||
"name": "Process monitor",
|
||||
"image": "assets/home/Htop.jpg",
|
||||
"description": "Monitor running process and resource utilization"
|
||||
}
|
||||
]
|
||||
%}
|
||||
|
||||
|
||||
<div class="quickstart-wrapper">
|
||||
{% for tool in tools %}
|
||||
{% set tool_url = get_tool_url(tool.env) %}
|
||||
<div>
|
||||
<a href="{{ tool_url }}" target="_blank" rel="noopener noreferrer">
|
||||
<img src="{{ tool.image }}" class="tool-img"/>
|
||||
</a>
|
||||
<a href="{{ tool_url }}">
|
||||
<div class="tool-caption">{{ tool.name }}</div>
|
||||
</a>
|
||||
<div class="tool-description">{{ tool.description }}</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
Containerized environment which helps to develop complex and awesome-looking documentation websites.
|
||||
Create docs from all your GitHub, GitLab and Bitbucket repositories, automate periodic builds.
|
|
@ -1,70 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1280" height="1024" viewBox="0 0 10000 9600" xml:space="preserve">
|
||||
<desc>Created with Fabric.js 3.6.3</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g transform="matrix(2,0,0,2,640,512)" id="background-logo" >
|
||||
</g>
|
||||
<g transform="matrix(2,0,0,2,640,416.3)" id="logo-logo" >
|
||||
<g transform="matrix(18.9,0,0,24.4,-502.2,-1009.3)" style="" paint-order="stroke" >
|
||||
<g transform="matrix(0.2,0,0,-0.2,0,-61.6)" >
|
||||
<path style="fill: rgb(64, 50, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1625,-1745)" d="M 3062 1050.1 c -466.3 107.3 -950.8 107.3 -1417.1 0 c -16.2 -3.7 -26.6 -18.2 -23.3 -32.1 c 3.4 -13.9 19 -22.1 34.9 -18.4 c 458.6 105.5 935.2 105.5 1393.9 0 c 15.9 -3.7 31.5 4.5 34.9 18.4 c 3.4 13.9 -7 28.4 -23.3 32.1" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(0.2,0,0,-0.2,-95.7,12.6)" >
|
||||
<path style="fill: rgb(64, 50, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1210,-1423.3)" d="M 1847.7 878.7 c 0 52.1 44.1 94.1 97 90.6 c 48.2 -3.2 84.6 -45.5 84.6 -93.8 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 384 c 0 76.7 -58.8 142.8 -135.5 146.6 c -81.9 4 -149.8 -61.4 -149.8 -142.5 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 388.2" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(0.2,0,0,-0.2,-111.1,21.9)" >
|
||||
<path style="fill: rgb(81, 173, 229); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1143.2,-1383.2)" d="M 1861.3 912.4 v -419.2 c 0 -5.8 4.7 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(0.2,0,0,-0.2,-103.4,18.6)" >
|
||||
<path style="fill: rgb(81, 173, 229); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1176.6,-1397.2)" d="M 1894.7 940.4 v -447.2 c 0 -5.8 4.7 -10.5 10.4 -10.5 c 5.7 0 10.4 4.7 10.4 10.5 v 447.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(0.2,0,0,-0.2,-95.7,17.5)" >
|
||||
<path style="fill: rgb(81, 173, 229); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1210,-1401.8)" d="M 1928.1 949.5 v -456.1 c 0 -5.9 4.6 -10.6 10.4 -10.6 c 5.7 0 10.4 4.8 10.4 10.6 v 456.1 c 0 5.9 -4.6 10.7 -10.4 10.7 c -5.7 0 -10.4 -4.8 -10.4 -10.7" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(0.2,0,0,-0.2,-88,18.6)" >
|
||||
<path style="fill: rgb(81, 173, 229); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1243.4,-1397.2)" d="M 1961.5 939.8 v -445.9 c 0 -6.1 4.6 -11.1 10.4 -11.1 c 5.7 0 10.4 5 10.4 11.1 v 445.9 c 0 6.1 -4.7 11.1 -10.4 11.1 c -5.7 0 -10.4 -5 -10.4 -11.1" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(0.2,0,0,-0.2,-80.3,21.9)" >
|
||||
<path style="fill: rgb(81, 173, 229); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1276.8,-1383.2)" d="M 1994.9 912.4 v -419.2 c 0 -5.8 4.6 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.7 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(0.2,0,0,-0.2,0,12.6)" >
|
||||
<path style="fill: rgb(64, 50, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1625,-1423.3)" d="M 2262.7 878.7 c 0 52.1 44.1 94.1 97 90.6 c 48.2 -3.2 84.6 -45.5 84.6 -93.8 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 384 c 0 76.7 -58.8 142.8 -135.5 146.6 c -81.9 4 -149.8 -61.4 -149.8 -142.5 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 388.2" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(0.2,0,0,-0.2,-15.4,21.9)" >
|
||||
<path style="fill: rgb(191, 27, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1558.2,-1383.2)" d="M 2276.3 912.4 v -419.2 c 0 -5.8 4.7 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(0.2,0,0,-0.2,-7.7,18.6)" >
|
||||
<path style="fill: rgb(191, 27, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1591.6,-1397.2)" d="M 2309.7 940.4 v -447.2 c 0 -5.8 4.7 -10.5 10.4 -10.5 c 5.7 0 10.4 4.7 10.4 10.5 v 447.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(0.2,0,0,-0.2,0,17.5)" >
|
||||
<path style="fill: rgb(191, 27, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1625,-1401.8)" d="M 2343.1 949.5 v -456.1 c 0 -5.9 4.6 -10.6 10.4 -10.6 c 5.7 0 10.4 4.8 10.4 10.6 v 456.1 c 0 5.9 -4.6 10.7 -10.4 10.7 c -5.7 0 -10.4 -4.8 -10.4 -10.7" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(0.2,0,0,-0.2,7.7,18.6)" >
|
||||
<path style="fill: rgb(191, 27, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1658.4,-1397.2)" d="M 2376.5 939.8 v -445.9 c 0 -6.1 4.6 -11.1 10.4 -11.1 c 5.7 0 10.4 5 10.4 11.1 v 445.9 c 0 6.1 -4.7 11.1 -10.4 11.1 c -5.7 0 -10.4 -5 -10.4 -11.1" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(0.2,0,0,-0.2,15.4,21.9)" >
|
||||
<path style="fill: rgb(191, 27, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1691.8,-1383.2)" d="M 2409.9 912.4 v -419.2 c 0 -5.8 4.6 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.7 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(0.2,0,0,-0.2,95.7,12.6)" >
|
||||
<path style="fill: rgb(64, 50, 44); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-2040,-1423.3)" d="M 2677.7 878.7 c 0 52.1 44.1 94.1 97 90.6 c 48.2 -3.2 84.6 -45.5 84.6 -93.8 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 384 c 0 76.7 -58.8 142.8 -135.5 146.6 c -81.9 4 -149.8 -61.4 -149.8 -142.5 V 490.5 c 0 -14.3 11.6 -25.9 25.9 -25.9 c 14.3 0 25.9 11.6 25.9 25.9 v 388.2" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(0.2,0,0,-0.2,80.3,21.9)" >
|
||||
<path style="fill: rgb(128, 204, 40); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-1973.2,-1383.2)" d="M 2691.3 912.4 v -419.2 c 0 -5.8 4.7 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(0.2,0,0,-0.2,88,18.6)" >
|
||||
<path style="fill: rgb(128, 204, 40); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-2006.6,-1397.2)" d="M 2724.7 940.4 v -447.2 c 0 -5.8 4.7 -10.5 10.4 -10.5 c 5.7 0 10.4 4.7 10.4 10.5 v 447.2 c 0 5.8 -4.6 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(0.2,0,0,-0.2,95.7,17.5)" >
|
||||
<path style="fill: rgb(128, 204, 40); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-2040,-1401.8)" d="M 2758.1 949.5 v -456.1 c 0 -5.9 4.6 -10.6 10.4 -10.6 c 5.7 0 10.4 4.8 10.4 10.6 v 456.1 c 0 5.9 -4.6 10.7 -10.4 10.7 c -5.7 0 -10.4 -4.8 -10.4 -10.7" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(0.2,0,0,-0.2,103.4,18.6)" >
|
||||
<path style="fill: rgb(128, 204, 40); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-2073.4,-1397.2)" d="M 2791.5 939.8 v -445.9 c 0 -6.1 4.6 -11.1 10.4 -11.1 c 5.7 0 10.4 5 10.4 11.1 v 445.9 c 0 6.1 -4.7 11.1 -10.4 11.1 c -5.7 0 -10.4 -5 -10.4 -11.1" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(0.2,0,0,-0.2,111.1,21.9)" >
|
||||
<path style="fill: rgb(128, 204, 40); fill-rule: nonzero; stroke: none; stroke-width: 1; stroke-linecap: butt; stroke-linejoin: miter; stroke-dasharray: none; stroke-dashoffset: 0; stroke-miterlimit: 4; opacity: 1" paint-order="stroke" transform="translate(-2106.8,-1383.2)" d="M 2824.8 912.4 v -419.2 c 0 -5.8 4.6 -10.4 10.4 -10.4 c 5.7 0 10.4 4.7 10.4 10.4 v 419.2 c 0 5.8 -4.7 10.4 -10.4 10.4 c -5.7 0 -10.4 -4.7 -10.4 -10.4" stroke-linecap="round" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 11 KiB |
|
@ -1,61 +0,0 @@
|
|||
"""
|
||||
Basic example of a Mkdocs-macros module.
|
||||
Include this {{ macros_info() }} in any page to get complete macro info
|
||||
"""
|
||||
import os
|
||||
|
||||
port_increments = {
|
||||
"DOCS_URL": 0,
|
||||
"FILEBROWSER_URL": 1,
|
||||
"STATICFS_URL": 2,
|
||||
"CRONICLE_URL": 3,
|
||||
"UNGIT_URL": 4,
|
||||
"IDE_URL": 5,
|
||||
"TERMINAL_URL": 6,
|
||||
"MC_URL": 7,
|
||||
"HTOP_URL": 8,
|
||||
"MKDOCS_LIVE": 10,
|
||||
"PORT_8038": 18,
|
||||
"PORT_8039": 19,
|
||||
"PORT_8040": 20
|
||||
}
|
||||
|
||||
# this function name should not be changed
|
||||
def define_env(env):
|
||||
"""
|
||||
This is the hook for defining variables, macros and filters
|
||||
- variables: the dictionary that contains the environment variables
|
||||
- macro: a decorator function, to declare a macro.
|
||||
- filter: a function with one of more arguments,
|
||||
used to perform a transformation
|
||||
"""
|
||||
@env.macro
|
||||
def get_tool_url(env):
|
||||
try:
|
||||
return os.environ[env]
|
||||
except:
|
||||
# Get host
|
||||
host = "localhost"
|
||||
try:
|
||||
host = os.environ["WRK_HOST"]
|
||||
except:
|
||||
pass
|
||||
proto = "http"
|
||||
try:
|
||||
proto = os.environ["WRK_PROTO"]
|
||||
except:
|
||||
pass
|
||||
# Entry port - port relative to which other ports will be calculated
|
||||
entry_port = 8020
|
||||
try:
|
||||
entry_port = int(os.environ["ENTRY_PORT"])
|
||||
except:
|
||||
pass
|
||||
# Assign port
|
||||
try:
|
||||
port = port_increments[env] + entry_port
|
||||
except:
|
||||
port = 80
|
||||
return f"{proto}://{host}:{port}"
|
||||
|
||||
|
|
@ -1,107 +0,0 @@
|
|||
# ===========================================================
|
||||
# NAVIGATION
|
||||
# ===========================================================
|
||||
|
||||
nav:
|
||||
- Home: README.md
|
||||
- My apps: pages/my-apps.md
|
||||
- About: about.md
|
||||
- Docs: https://docs.alnoda.org/mkdocs-workspace/
|
||||
|
||||
# ===========================================================
|
||||
# CONFIGURATION
|
||||
# ===========================================================
|
||||
|
||||
site_name: MkDocs workspace
|
||||
repo_url: https://github.com/bluxmit/alnoda-workspaces
|
||||
site_url: https://docs.alnoda.org
|
||||
edit_uri: ""
|
||||
|
||||
# ===========================================================
|
||||
# APPEARANCE
|
||||
# ===========================================================
|
||||
|
||||
theme:
|
||||
name: 'material'
|
||||
favicon: 'assets/alnoda-dark.svg'
|
||||
logo: 'assets/alnoda-white.svg'
|
||||
custom_dir: overrides
|
||||
font:
|
||||
text: Lexend
|
||||
icon:
|
||||
repo: fontawesome/brands/github
|
||||
features:
|
||||
- search.suggest
|
||||
palette:
|
||||
- scheme: default
|
||||
toggle:
|
||||
icon: material/brightness-7
|
||||
name: Switch to dark mode
|
||||
primary: deep purple
|
||||
accent: deep orange
|
||||
- scheme: slate
|
||||
toggle:
|
||||
icon: material/brightness-4
|
||||
name: Switch to light mode
|
||||
primary: deep purple
|
||||
accent: lime
|
||||
|
||||
extra:
|
||||
# Link to open when your logo is clicked
|
||||
homepage: https://docs.alnoda.org
|
||||
host_url: https://docs.alnoda.org
|
||||
|
||||
plugins:
|
||||
- include-markdown
|
||||
# Enable Macros and jinja2 templates
|
||||
- macros:
|
||||
module_name: macros/helpers
|
||||
- awesome-pages
|
||||
# mermaid2 diagrams: https://mermaid-js.github.io/mermaid/#/
|
||||
- mermaid2:
|
||||
arguments:
|
||||
theme: forest # default, forest, dark, neutral, base
|
||||
themeCSS: ".er.entityLabel{fill: black;} .messageLine0{stroke: orange;} .messageLine1{stroke: orange;} #arrowhead{fill: orange;} .messageText{fill: black; stroke: black}"
|
||||
|
||||
markdown_extensions:
|
||||
- def_list
|
||||
- pymdownx.tasklist:
|
||||
custom_checkbox: true
|
||||
- pymdownx.arithmatex:
|
||||
generic: true
|
||||
- admonition
|
||||
- pymdownx.inlinehilite
|
||||
- pymdownx.details
|
||||
- pymdownx.superfences:
|
||||
# make exceptions to highlighting of code:
|
||||
custom_fences:
|
||||
- name: mermaid
|
||||
class: mermaid
|
||||
format: !!python/name:mermaid2.fence_mermaid
|
||||
- pymdownx.tabbed
|
||||
- abbr
|
||||
- pymdownx.snippets
|
||||
- attr_list
|
||||
- pymdownx.emoji:
|
||||
emoji_index: !!python/name:materialx.emoji.twemoji
|
||||
emoji_generator: !!python/name:materialx.emoji.to_svg
|
||||
- pymdownx.keys
|
||||
- pymdownx.betterem
|
||||
- pymdownx.caret
|
||||
- pymdownx.critic
|
||||
- pymdownx.escapeall
|
||||
- pymdownx.smartsymbols
|
||||
- pymdownx.tilde:
|
||||
smart_delete: true
|
||||
- footnotes
|
||||
|
||||
extra_javascript:
|
||||
- javascripts/config.js
|
||||
- https://polyfill.io/v3/polyfill.min.js?features=es6
|
||||
- https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js
|
||||
- https://unpkg.com/mermaid/dist/mermaid.min.js
|
||||
|
||||
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |