In this post, I am gonna show you some interesting usage for Deepnote's free plan VPS.
Free Plan
For individual data scientists who want to experience the power of Deepnote.
- Up to 3 editors
- Up to 5 projects
- Unlimited Basic machines with 5GB RAM, 2vCPU
- 7 day revision history
Register an account
No credit card, no work email required. You can use any email address to register an account as long as you can verify it.
By default it already has some demo project installed in your account. You can click Run notebook button to start it. Here is a example project "Plato's Pizza Sales"
Performance Test
Once you have your project running, you can create a terminal session to have root access to the machine.
Github: https://github.com/masonr/yet-another-bench-script/blob/master/yabs.sh
The script might take 20-30 minutes to get all testing done, depending on VM's performance. you wll get a score for single core and multi core:
- apt update -y && apt install -y curl wget sudo
- curl -sL yabs.sh | bash
Here is what we got:
(venv) root@deepnote:~/work # curl -sL yabs.sh | bash
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
# Yet-Another-Bench-Script #
# v2023-04-23 #
# https://github.com/masonr/yet-another-bench-script #
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
Sat 01 Jul 2023 01:19:41 AM UTC
Basic System Information:
---------------------------------
Uptime : 0 days, 10 hours, 21 minutes
Processor : Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
CPU cores : 4 @ 3099.993 MHz
AES-NI : ✔ Enabled
VM-x/AMD-V : ❌ Disabled
RAM : 30.9 GiB
Swap : 0.0 KiB
Disk : 100.0 GiB
Distro : Debian GNU/Linux 10 (buster)
Kernel : 5.4.231-137.341.amzn2.x86_64
VM Type :
IPv4/IPv6 : ✔ Online / ❌ Offline
IPv4 Network Information:
---------------------------------
ISP : Amazon Technologies Inc.
ASN : AS14618 Amazon.com, Inc.
Host : AWS EC2 (us-east-1)
Location : Ashburn, Virginia (VA)
Country : United States
fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k (IOPS) | 64k (IOPS)
------ | --- ---- | ---- ----
Read | () | ()
Write | () | ()
Total | 0.00 KB/s (0) | 0.00 KB/s (0)
| |
Block Size | 512k (IOPS) | 1m (IOPS)
------ | --- ---- | ---- ----
Read | () | ()
Write | () | ()
Total | 0.00 KB/s (0) | 0.00 KB/s (0)
iperf3 Network Speed Tests (IPv4):
---------------------------------
Provider | Location (Link) | Send Speed | Recv Speed | Ping
----- | ----- | ---- | ---- | ----
Clouvider | London, UK (10G) | 101 Mbits/sec | 2.10 Gbits/sec | --
Scaleway | Paris, FR (10G) | busy | busy | --
NovoServe | North Holland, NL (40G) | 101 Mbits/sec | 1.88 Gbits/sec | --
Uztelecom | Tashkent, UZ (10G) | 98.4 Mbits/sec | 891 Mbits/sec | --
Clouvider | NYC, NY, US (10G) | 104 Mbits/sec | 5.85 Gbits/sec | --
Clouvider | Dallas, TX, US (10G) | 103 Mbits/sec | 4.04 Gbits/sec | --
Clouvider | Los Angeles, CA, US (10G) | 103 Mbits/sec | 2.74 Gbits/sec | --
Running GB6 benchmark test... *cue elevator music*
Geekbench 6 Benchmark Test:
---------------------------------
Test | Value
|
Single Core | 707
Multi Core | 615
Full Test | https://browser.geekbench.com/v6/cpu/1776637
YABS completed in 19 min 20 sec
Environment Settings
In case your machine will be stopped by Deepnote automatically in 15 minutes, you can change it to maximum 24 hours. That is maximum hours you can have for free plan.
Basically here, we got a 5G RAM , 2vCPU VPS to use for 24 hours.
Expose Port to Internet
vi hello.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
app.run(host='0.0.0.0', port=8080)
(venv) root@deepnote:~/work # pip install flask
Collecting flask
Downloading Flask-2.3.2-py3-none-any.whl (96 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 96.9/96.9 KB 5.0 MB/s eta 0:00:00
Collecting blinker>=1.6.2
Downloading blinker-1.6.2-py3-none-any.whl (13 kB)
Collecting itsdangerous>=2.1.2
Downloading itsdangerous-2.1.2-py3-none-any.whl (15 kB)
Requirement already satisfied: importlib-metadata>=3.6.0 in /shared-libs/python3.9/py/lib/python3.9/site-packages (from flask) (5.0.0)
Requirement already satisfied: click>=8.1.3 in /shared-libs/python3.9/py/lib/python3.9/site-packages (from flask) (8.1.3)
Collecting Jinja2>=3.1.2
Downloading Jinja2-3.1.2-py3-none-any.whl (133 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 133.1/133.1 KB 21.1 MB/s eta 0:00:00
Collecting Werkzeug>=2.3.3
Downloading Werkzeug-2.3.6-py3-none-any.whl (242 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 242.5/242.5 KB 40.2 MB/s eta 0:00:00
Requirement already satisfied: zipp>=0.5 in /shared-libs/python3.9/py/lib/python3.9/site-packages (from importlib-metadata>=3.6.0->flask) (3.9.0)
Requirement already satisfied: MarkupSafe>=2.0 in /shared-libs/python3.9/py-core/lib/python3.9/site-packages (from Jinja2>=3.1.2->flask) (2.0.0)
Collecting MarkupSafe>=2.0
Downloading MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25 kB)
Installing collected packages: MarkupSafe, itsdangerous, blinker, Werkzeug, Jinja2, flask
Attempting uninstall: MarkupSafe
Found existing installation: MarkupSafe 2.0.0
Not uninstalling markupsafe at /shared-libs/python3.9/py-core/lib/python3.9/site-packages, outside environment /root/venv
Can't uninstall 'MarkupSafe'. No files were found to uninstall.
Attempting uninstall: Werkzeug
Found existing installation: Werkzeug 2.2.2
Not uninstalling werkzeug at /shared-libs/python3.9/py/lib/python3.9/site-packages, outside environment /root/venv
Can't uninstall 'Werkzeug'. No files were found to uninstall.
Attempting uninstall: Jinja2
Found existing installation: Jinja2 2.11.3
Not uninstalling jinja2 at /shared-libs/python3.9/py-core/lib/python3.9/site-packages, outside environment /root/venv
Can't uninstall 'Jinja2'. No files were found to uninstall.
Successfully installed Jinja2-3.1.2 MarkupSafe-2.1.3 Werkzeug-2.3.6 blinker-1.6.2 flask-2.3.2 itsdangerous-2.1.2
WARNING: You are using pip version 22.0.4; however, version 23.1.2 is available.
You should consider upgrading via the '/root/venv/bin/python -m pip install --upgrade pip' command.
Run code:
(venv) root@deepnote:~/work # python hello.py
* Serving Flask app 'hello'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:8080
* Running on http://172.3.82.202:8080
Press CTRL+C to quit
Change port:
Right now we only support exposing port 8080. To expose other ports, you can either reconfigure your tool, or use utilities like socat
which can forward traffic from port 8080
to the port of your choosing. You can use the example below to set up port forwarding with socat
in the terminal:
apt update && apt install socat
socat tcp-l:8080,fork,reuseaddr tcp:127.0.0.1:YOUR_PORT
Install nginx
(venv) root@deepnote:~/work # apt update
(venv) root@deepnote:~/work # apt install nginx
(venv) root@deepnote:~/work # service nginx start
Install ngrok
1. Install Ngrok
(venv) root@deepnote:~/work # wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz
--2023-06-30 15:43:34-- https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz
Resolving bin.equinox.io (bin.equinox.io)... 52.202.168.65, 54.161.241.46, 18.205.222.128, ...
Connecting to bin.equinox.io (bin.equinox.io)|52.202.168.65|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8850130 (8.4M) [application/octet-stream]
Saving to: ‘ngrok-v3-stable-linux-amd64.tgz’
ngrok-v3-stable-linux-am 100%[===============================>] 8.44M --.-KB/s in 0.09s
2023-06-30 15:43:34 (98.9 MB/s) - ‘ngrok-v3-stable-linux-amd64.tgz’ saved [8850130/8850130]
(venv) root@deepnote:~/work # tar -xvzf ngrok-v3-stable-linux-amd64.tgz
ngrok
2. Connect Ngrok service to your own account
- ngrok config add-authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
3. Expose your internal service port
(venv) root@deepnote:~/work # ./ngrok http 80
ou will get a url similar as https://5e70-162-213-39-162.ngrok-free.app/
4. You might want to put it into screen session to run
(venv) root@deepnote:~/work # apt install screen
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libutempter0
Suggested packages:
byobu | screenie | iselect ncurses-term
The following NEW packages will be installed:
libutempter0 screen
0 upgraded, 2 newly installed, 0 to remove and 21 not upgraded.
Need to get 606 kB of archives.
After this operation, 1,066 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://deb.debian.org/debian buster/main amd64 libutempter0 amd64 1.1.6-3 [7,812 B]
Get:2 http://deb.debian.org/debian buster/main amd64 screen amd64 4.6.2-3+deb10u1 [598 kB]
Fetched 606 kB in 0s (28.3 MB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package libutempter0:amd64.
(Reading database ... 31318 files and directories currently installed.)
Preparing to unpack .../libutempter0_1.1.6-3_amd64.deb ...
Unpacking libutempter0:amd64 (1.1.6-3) ...
Selecting previously unselected package screen.
Preparing to unpack .../screen_4.6.2-3+deb10u1_amd64.deb ...
Unpacking screen (4.6.2-3+deb10u1) ...
Setting up libutempter0:amd64 (1.1.6-3) ...
Setting up screen (4.6.2-3+deb10u1) ...
Processing triggers for libc-bin (2.28-10+deb10u2) ...
(venv) root@deepnote:~/work #
- screen -S nginx
- ./ngrok http 80
Each time you run ngrok command for your internal service, you will get a different first four diget number for URL
This time I got https://5157-162-213-39-162.ngrok-free.app/
Click Visit Site button you will be able to open this Nginx default web page:
Ngrok - One Session, Multiple Tunnel
ngrok config check
(venv) root@deepnote:~/work # ./ngrok config check
Valid configuration file at /root/.config/ngrok/ngrok.yml
- Linux:
"~/.config/ngrok/ngrok.yml"
vi /root/.config/ngrok/ngrok.yml
version: "2"
authtoken: 2R4VMDo0BU4ETqRZkeiufuuKFnQ_7BbZiCAknkZt7W8mHpNr7
tunnels:
http1:
proto: http
addr: 80
http2:
proto: http
addr: 81
(venv) root@deepnote:~/work # ./ngrok start http1 http2
ngrok (Ctrl+C to quit)
🤯e Announcing ngrok's Kubernetes Ingress Controller: https://ngrok.com/s/k8s-ingress
Session Status online
Account [email protected] (Plan: Free)
Version 3.3.1
Region United States (us)
Latency 12ms
Web Interface http://127.0.0.1:4040
Forwarding https://c6cd-3-220-159-34.ngrok-free.app -> http://localhost:80
Forwarding https://c9df-3-220-159-34.ngrok-free.app -> http://localhost:81
Connections ttl opn rt1 rt5 p50 p90
3 0 0.00 0.00 0.01 65.37
HTTP Requests
-------------
GET /favicon.ico 404 NOT FOUND
GET / 200 OK
GET /favicon.ico 404 Not Found
GET / 200 OK
Screen Usage
- Install screen (Depends on the Linux Distribution if it came pre installed or not) : yum install screen
- Initiate a Screen : screen or screen -S <screen name> <command to execute>
- Detach from the screen : "CTRL+A,D" not "CTRL+A+D"
- List all the screen currently working : screen -ls
- Reattach to a screen : screen -r <session number> or screen -r <screen name>
- Kill specific screen: screen -X -S <screen name> quit
- Kill all screens : pkill screen
Bro I need your help. I am trying to install windows on ionos cloud server. But it showing me gateway unreachable error
ReplyDelete