From 714e72b47458800142e06289f0cf72af602c18e4 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 14 May 2017 11:16:10 -0700 Subject: [PATCH] Update hass.io tutorial --- source/_addons/ssh.markdown | 9 ++++++++- source/hassio/addon_tutorial.markdown | 20 +++++++++++++++++++- source/images/hassio/tutorial/samba.png | Bin 0 -> 5165 bytes source/images/hassio/tutorial/ssh.png | Bin 0 -> 7832 bytes 4 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 source/images/hassio/tutorial/samba.png create mode 100644 source/images/hassio/tutorial/ssh.png diff --git a/source/_addons/ssh.markdown b/source/_addons/ssh.markdown index 6223abed42e..2d4da8096b0 100644 --- a/source/_addons/ssh.markdown +++ b/source/_addons/ssh.markdown @@ -9,7 +9,7 @@ sharing: true footer: true --- -Setting up a [SSH](https://openssh.org/) server allows access to hass.io folders with SSH client. It also allows tunneling for access from an external network. Please note that you only need to do this on a ResinOS platform as most Linux flavors have their own SSH server. +Setting up an [SSH](https://openssh.org/) server allows access to your Hass.io folders with any SSH client. To use this add-on, you must have a private/public key to log in. To generate them, follow the [instructions for Windows][win] and [these for other platforms][other]. ```json { @@ -22,3 +22,10 @@ Setting up a [SSH](https://openssh.org/) server allows access to hass.io folders Configuration variables: - **authorized_keys** (*Required*): Your public-keys for authorized keyfile. Every element will be a line inside that file. + +[win]: https://www.digitalocean.com/community/tutorials/how-to-create-ssh-keys-with-putty-to-connect-to-a-vps +[other]: https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/ + +

+This add-on is not compatible when you installed Hass.io via the generic Linux installer. +

diff --git a/source/hassio/addon_tutorial.markdown b/source/hassio/addon_tutorial.markdown index 1b686f00538..804872d2626 100644 --- a/source/hassio/addon_tutorial.markdown +++ b/source/hassio/addon_tutorial.markdown @@ -11,7 +11,25 @@ footer: true So you've got Home Assistant going and you've been enjoying the built-in add-ons but you're missing this one application. Time to make your own add-on! In Hass.io 0.24 we introduced the option to have local add-ons be build on your device. This is great for developing new add-ons locally. -To get started with developing add-ons, we first need access to where Hass.io looks for local add-ons. You can choose to either enable the Samba add-on for this or use the SSH add-on. Once you have located your add-on directory, it's time to get started! +To get started with developing add-ons, we first need access to where Hass.io looks for local add-ons. For this you can use the Samba add-on or the SSH add-on. + +For Samba, once you have enabled and started it, your Hass.io instance will show up in your local network tab and share a folder called "addons". This is the folder to store your custom add-ons. + +

+ +With Samba add-on enabled, you can browse to your Hass.io server over the local network. It will contain an addons folder to store your local add-ons. +

+ +For SSH, you will have to install it. Before you can start it, you will have to have a private/public key pair and store your public key in the add-on config ([see docs for more info][ssh]). Once started, you can SSH to Hass.io and store your custom add-ons in "/addons". + +

+ +Once you SSH into your Hass.io box, you have access to your add-ons in "/addons". +

+ +Once you have located your add-on directory, it's time to get started! + +[ssh]: /addons/ssh/ ## {% linkable_title Step 1: The basics %} diff --git a/source/images/hassio/tutorial/samba.png b/source/images/hassio/tutorial/samba.png new file mode 100644 index 0000000000000000000000000000000000000000..bcd2af8e6d1478f0dc2abc251fff102fe96e26b8 GIT binary patch literal 5165 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