SSH server with WebPack

romanbon

rbondarenko

Posted on December 19, 2017

SSH server with WebPack

Hi!

I've just made a nice solution I want to share with you. It's an SSH server with WebPack for front-end developers who work with JavaScript.
What I like about this stuff is that I don't have to count on my machine resources when writing code - I just synchronize my local developer environment (e.g. WebStorm or other IDE) with a cloud self-hosted machine and don't waste my local resources to run WebPack applications.

How it works:

SSH server captures all changes in your local project files and instantly synchronizes them with the project files on you hosting. Webpack configures your project build and displays it in your browser in real time.

Or you can use sshfs to mount a remote file system over SSH.

It consists of:

  • Ubuntu:16.04
  • Openssh-server
  • Nodejs
  • Webpack-dev-server
  • Webpack 3.8.1
  • Yarn 1.3.2

To launch this solution on Containerum.com sign up with the service, download and use Containerum CLI chkit.

1. Run the Solution with chkit solution:

$ chkit solution run containerum/webpack-3.8-ssh-solution -e USER=react -e USER_PASS=12345678 -e NAME=websln -e CPU=500m -e RAM=500Mi
Enter fullscreen mode Exit fullscreen mode
  • USER - username,
  • USER_PASS - password,
  • NAME - Solution name
  • CPU, RAM - compute resources for this Solution

2. Make sure that the Solution is running:

$ chkit get deploy

+-------------------+------+-------------+------+-------+-----+
| NAME              | PODS | PODS ACTIVE | CPU  | RAM   | AGE |
+-------------------+------+-------------+------+-------+-----+
| websln-13k4y      | 1    | 1           | 500m | 500Mi | 22m |
+-------------------+------+-------------+------+-------+-----+
Enter fullscreen mode Exit fullscreen mode

3. Check through the list of services using chkit get command, mark the port used to connect to the running VM:

$ chkit get svc

+--------------+-----------------+----------+-------------------+-------------+-----+
| NAME         | CLUSTER-IP      | EXTERNAL | HOST              | PORT(S)     | AGE |
+--------------+-----------------+----------+-------------------+-------------+-----+
| websln-13k4y | 10.105.25.198   | true     | x3.containerum.io | 33176:22/TCP| 18m |
+--------------+-----------------+----------+-------------------+-------------+-----+
Enter fullscreen mode Exit fullscreen mode

4. Connect to the running machine:

$ ssh react@x3.containerum.io -p33176
Enter fullscreen mode Exit fullscreen mode

5. Create a working directory:

react@websln:~$ mkdir react
Enter fullscreen mode Exit fullscreen mode

and jump to this directory:

react@websln:~$ cd react
Enter fullscreen mode Exit fullscreen mode

6. Install a sample react application on your local machine https://github.com/facebookincubator/create-react-app:

$ npm install -g create-react-app
Enter fullscreen mode Exit fullscreen mode

Note: You'll need to have Node >= 6 on your machine.

and create a new app:

$ create-react-app my-app

$ cd my-app
Enter fullscreen mode Exit fullscreen mode

Open WebStorm on your machine and set the following project settings:



Test the connection:


Upload the selected project folders to the running VM:


7. Run the following commands on the running machine:

react@websln:~$ npm i

react@websln:~$ npm start
Enter fullscreen mode Exit fullscreen mode

8. To provide access to the launched Solution, we’ll create a service with chkit expose command locally:

chkit expose deploy websln-13k4y -p portname:3000:TCP
Enter fullscreen mode Exit fullscreen mode

9. Using chkit get get the address and the port to access the running Solution:

$ chkit get svc

+-------------------+-----------------+----------+-------------------+---------------+-----+
| NAME              | CLUSTER-IP      | EXTERNAL | HOST              | PORT(S)       | AGE |
+-------------------+-----------------+----------+-------------------+---------------+-----+
| websln-13k4y      | 10.105.25.198   | true     | x3.containerum.io | 33176:22/TCP  | 22m |
+-------------------+-----------------+----------+-------------------+---------------+-----+
| websln-13k4y-3ac7 | 10.111.121.79   | true     | x2.containerum.io | 19451:3000/TCP| 9s  |
+-------------------+-----------------+----------+-------------------+---------------+-----+
Enter fullscreen mode Exit fullscreen mode

http://x2.containerum.io:19451

10. All changes that you make in src/App.js are now immediately reflected in your project and can be viewed in your browser at http://x2.containerum.io:19451

Pretty neat, right? And it saves your local resources, so you can work from any machine pretty fast. I hope you'll find it useful too. If you have any questions or suggestions, or if I missed something, please comment.

πŸ’– πŸ’ͺ πŸ™… 🚩
romanbon
rbondarenko

Posted on December 19, 2017

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related