Port Forward using Inlets with Colab
Project description
Inlets Colab
Run CodeServer
on Colab
using Inlets
in less than 60 secs using your own domain.
Features
- Optimized for Inlets/InletsPro
- Use your own Custom Domain
i.e. https://colab.yourdomain.com
- Quick Deployment
- Password Protection (Optional)
- Notebook/CLI Support
- GDrive Integration
- Cloud Storage Integration (gcs, s3, minio, etc.)
Currently Tested Storage Backends
- GCP Cloud Storage
- AWS S3
- Minio
Installation
# From pypi
pip install --upgrade inlets-colab
# From source
pip install --upgrade git+https://github.com/trisongz/inlets-colab
Requirements
Usage in Colab Notebook
import os
os.environ['INLETS_LICENSE'] = ... # Inlets Pro License
os.environ['INLETS_TOKEN'] = ... # Inlets Token
os.environ['INLETS_TUNNEL_HOST'] = "inlets.domain.com" # Inlets Tunnel Host (ControlPlane)
os.environ['INLETS_SERVER_HOST'] = "colab.domain.com" # Inlets Tunnel Host (DataPlane)
os.environ['INLETS_CLIENT_HOST'] = "127.0.0.1" # The Local Server IP
os.environ['INLETS_CLIENT_PORT'] = "7070" # The Local Server IP
os.environ['GENERATE_AUTH'] = "true" # Will generate password if not provided
os.environ['MOUNT_GS'] = "true" # Bool to mount GCS Bucket
os.environ['GS_BUCKET'] = "gs_bucket" # Name of GCS Bucket to Mount
os.environ['GS_PROJECT'] = "gcs_project" # Project Name within GCP
os.environ['GS_AUTH'] = ... # Base64 Encoded String of your ServiceAccount.json
from inletscolab.client import InletsColab
InletsColab.start()
Usage in Colab Notebook + Terminal
## Write your env config to envfile.yaml
%%writefile /content/envfile.yaml
INLETS_LICENSE: ...
INLETS_TOKEN: ...
INLETS_TUNNEL_HOST: inlets.domain.com
INLETS_SERVER_HOST: colab.domain.com
INLETS_CLIENT_HOST: 127.0.0.1
INLETS_CLIENT_PORT: '7070'
GENERATE_AUTH: 'true'
MOUNT_GS: 'true'
GS_BUCKET: gs_bucket
GS_PROJECT: gcs_project
GS_AUTH: ...
## Now use the CLI to launch targeting the envfile.yaml
inletscolab start --envfile /content/envfile.yaml
Currently Tested Inlets Server
- Inlets in VM
- Inlets in Kubernetes Cluster
- External:
ExternalDNS
CertManager
- Repo:
https://inlets.github.io/inlets-pro/charts/
- Chart:
inlets-pro/inlets-pro
- Helm Values:
- ingress.domain:
$INLETS_TUNNEL_HOST
- dataPlane.ports[0].port:
$INLETS_CLIENT_PORT
- dataPlane.ports[0].targetPort:
$INLETS_CLIENT_PORT
- ingress.domain:
- Provider:
aws-eks
- Ingress:
- Type:
loadbalancer from nginx-controller
- Class:
nginx
- Service:
...-inlets-pro-data-plane
- Port:
$INLETS_CLIENT_PORT
- Path:
/
- PathType:
Prefix
- Host:
$INLETS_SERVER_HOST
- Type:
- External:
Currently Tested Inlets Cloud Providers
- GCP ComputeEngine
- GCP GKE
- AWS EC2
- AWS EKS
- DigitalOcean Droplet
- DigitalOcean Kubernetes
- Linode
- Azure
- Oracle
Code Server
Default Version: 3.12.0
Default Plugins:
Environment Variables
Below are the Environment Variables that are used to build the Config
class InletsConfig:
license: str = Env.to_str('INLETS_LICENSE', '')
token: str = Env.to_str('INLETS_TOKEN', '')
tunnel_host: str = Env.to_str('INLETS_TUNNEL_HOST', '')
server_host: str = Env.to_str('INLETS_SERVER_HOST', '')
server_port: int = Env.to_int('INLETS_SERVER_PORT', 8123)
client_host: str = Env.to_str('INLETS_CLIENT_HOST', '127.0.0.1')
client_port: int = Env.to_int('INLETS_CLIENT_PORT', 7070)
domain_name: str = Env.to_str('INLETS_DOMAIN', 'localhost')
is_cluster: bool = Env.to_bool('INLETS_CLUSTER', 'true')
client_type: str = Env.to_str('INLETS_CLIENT_TYPE', 'tcp')
use_sudo: bool = Env.to_bool('INLETS_USE_SUDO', 'true')
class ServerConfig:
extensions: List[str] = Env.to_list('CODESERVER_EXTENSIONS', DefaultCodeServerExtensions)
version: str = Env.to_str('CODESERVER_VERSION', DefaultCodeServerVersion)
authtoken: str = Env.to_str('SERVER_AUTHTOKEN', '')
password: str = Env.to_str('SERVER_PASSWORD', '')
code: bool = Env.to_bool('RUN_CODE', 'true')
lab: bool = Env.to_bool('RUN_LAB')
generate_auth: bool = Env.to_bool('GENERATE_AUTH', 'true')
class StorageConfig:
## Bool to mount/not mount
## should be 'true'/'false'
mount_drive: bool = Env.to_bool('MOUNT_DRIVE')
mount_s3: bool = Env.to_bool('MOUNT_S3')
mount_gs: bool = Env.to_bool('MOUNT_GS')
mount_minio: bool = Env.to_bool('MOUNT_MINIO')
## Paths to Bucket(s)
## All bucket should exclude their prefixes
## i.e. gs://gsbucket -> gsbucket
## s3://s3bucket -> s3bucket
s3_bucket: str = Env.to_str('S3_BUCKET')
gs_bucket: str = Env.to_str('GS_BUCKET')
minio_bucket: str = Env.to_str('MINIO_BUCKET')
## Paths to Mount Bucket(s)
## along with the defaults
s3_mount_path: str = Env.to_str('S3_MOUNT_PATH', '/content/s3')
gs_mount_path: str = Env.to_str('GS_MOUNT_PATH', '/content/gs')
minio_mount_path: str = Env.to_str('MINIO_MOUNT_PATH', '/content/minio')
## GCP Cloud Auth
## GS_AUTH should be a base64 encoded string of the serviceaccount.json
## To create it, run `base64 -i /path/to/serviceaccount.json`
## It will likely be _very_ long
## If it exists, it will be decoded and saved as proper json to /authz/adc.json
gauth: PathLike = Env.to_json_b64('GS_AUTH', 'GOOGLE_APPLICATION_CREDENTIALS', '/authz/adc.json')
gproject: str = Env.to_str('GS_PROJECT')
## AWS Cloud Auth
## Note: as Colab Locations are Randomly selected globally
## you may incur increased ingress/egress charges with large files
## in your S3 if regions are far apart. Use with Caution
s3_key_id: str = Env.to_str_env('AWS_KEYID', 'AWS_ACCESS_KEY_ID', '')
s3_secret: str = Env.to_str_env('AWS_SECRET', 'AWS_SECRET_ACCESS_KEY', '')
s3_region: str = Env.to_str('AWS_REGION', 'us-east-1')
## Minio Cloud Auth
## Currently Untested
## MINIO_ENDPOINT should be the full http/https along with port
## i.e. https://minio.yourdomain.com
## http://1.2.3.4:9000
minio_endpoint: str = Env.to_str('MINIO_ENDPOINT')
minio_key_id: str = Env.to_str('MINIO_KEYID')
minio_secret: str = Env.to_str('MINIO_SECRET')
Libraries & Dependencies
Python Dependencies
Runtime Dependencies
Helpful Links
Below are some helpful links in setting up Inlets if you do not already have one set up.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
inletscolab-0.0.1.tar.gz
(13.1 kB
view details)
Built Distribution
File details
Details for the file inletscolab-0.0.1.tar.gz
.
File metadata
- Download URL: inletscolab-0.0.1.tar.gz
- Upload date:
- Size: 13.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 910dcdc1c4000ba6a2fd22786a6761d35257ba5f1a371266543eaafb98ba8d11 |
|
MD5 | 9fd9f6d32f2a922ca518c5d5a421adab |
|
BLAKE2b-256 | a252599755b7f07295f56a74ef41803e680dc3e6bc309d12a6a3d03ff26a97bc |
File details
Details for the file inletscolab-0.0.1-py3-none-any.whl
.
File metadata
- Download URL: inletscolab-0.0.1-py3-none-any.whl
- Upload date:
- Size: 12.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | df7ed86e97ebf60179bfd43c6c04c0f86753b661ef80ad66d370c6c859f3f286 |
|
MD5 | 6005e13cb87b4baf13ace98ca277cd83 |
|
BLAKE2b-256 | 7ed90dd202d478173eb7d436f1ba4682dd355d35c02cf74b40c53d7b93b493c3 |