---
layout: page
title: "Installation on a Synology NAS"
description: "Instructions to install Home Assistant on a Synology NAS."
date: 2016-04-16 11:36
sidebar: true
comments: false
sharing: true
footer: true
redirect_from: /getting-started/installation-synology/
---

There are 2 alternatives, when using Home Assistant on Synology NAS:
1. using Docker
2. directly running on DSM

Option 1 is described on the [Docker installation page](/docs/installation/docker/), whereas Option 2 is described below.


The following configuration has been tested on Synology 413j running DSM 6.0-7321 Update 1.

Running these commands will:

 - Install Home Assistant
 - Enable Home Assistant to be launched on [http://localhost:8123](http://localhost:8123)

Using the Synology webadmin:

 - Install python3 using the Synology Package Center
 - Create homeassistant user and add to the "users" group

SSH onto your synology & login as admin or root

 - Log in with your own administrator account
 - Switch to root using:

```bash
$ sudo -i
```


Check the path to python3 (assumed to be /volume1/@appstore/py3k/usr/local/bin)

```bash
# cd /volume1/@appstore/py3k/usr/local/bin
```

Install PIP (Python's package management system)

```bash
# ./python3 -m ensurepip
```

Use PIP to install Homeassistant package

```bash
# ./python3 -m pip install homeassistant
```

Create homeassistant config directory & switch to it

```bash
# mkdir /volume1/homeassistant
# cd /volume1/homeassistant
```
Hint: alternatively you can also create a "Shared Folder" via Synology WebUI (e.g. via "File Station") - this has the advantage that the folder is visible via "File Station".

Create hass-daemon file using the following code (edit the variables in uppercase if necessary)

```bash
#!/bin/sh

# Package
PACKAGE="homeassistant"
DNAME="Home Assistant"

# Others
USER="homeassistant"
PYTHON_DIR="/volume1/@appstore/py3k/usr/local/bin"
PYTHON="$PYTHON_DIR/python3"
HASS="$PYTHON_DIR/hass"
INSTALL_DIR="/volume1/homeassistant"
PID_FILE="$INSTALL_DIR/home-assistant.pid"
FLAGS="-v --config $INSTALL_DIR --pid-file $PID_FILE --daemon"
REDIRECT="> $INSTALL_DIR/home-assistant.log 2>&1"

start_daemon ()
{
    sudo -u ${USER} /bin/sh -c "$PYTHON $HASS $FLAGS $REDIRECT;"
}

stop_daemon ()
{
    kill `cat ${PID_FILE}`
    wait_for_status 1 20 || kill -9 `cat ${PID_FILE}`
    rm -f ${PID_FILE}
}

daemon_status ()
{
    if [ -f ${PID_FILE} ] && kill -0 `cat ${PID_FILE}` > /dev/null 2>&1; then
        return
    fi
    rm -f ${PID_FILE}
    return 1
}

wait_for_status ()
{
    counter=$2
    while [ ${counter} -gt 0 ]; do
        daemon_status
        [ $? -eq $1 ] && return
        let counter=counter-1
        sleep 1
    done
    return 1
}

case $1 in
    start)
        if daemon_status; then
            echo ${DNAME} is already running
            exit 0
        else
            echo Starting ${DNAME} ...
            start_daemon
            exit $?
        fi
        ;;
    stop)
        if daemon_status; then
            echo Stopping ${DNAME} ...
            stop_daemon
            exit $?
        else
            echo ${DNAME} is not running
            exit 0
        fi
        ;;
        restart)
        if daemon_status; then
            echo Stopping ${DNAME} ...
            stop_daemon
            echo Starting ${DNAME} ...
            start_daemon
            exit $?
        else
            echo ${DNAME} is not running
            echo Starting ${DNAME} ...
            start_daemon
            exit $?
        fi
        ;;
    status)
        if daemon_status; then
            echo ${DNAME} is running
            exit 0
        else
            echo ${DNAME} is not running
            exit 1
        fi
        ;;
    log)
        echo ${LOG_FILE}
        exit 0
        ;;
    *)
        exit 1
        ;;
esac

```

Create links to python folders to make things easier in the future:

```bash
# ln -s /volume1/@appstore/py3k/usr/local/bin python3
# ln -s /volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/homeassistant
```

Set the owner and permissions on your config folder

```bash
# chown -R homeassistant:users /volume1/homeassistant
# chmod -R 664 /volume1/homeassistant
```

Make the daemon file executable:

```bash
# chmod 755 /volume1/homeassistant/hass-daemon
```

Update your firewall (if it is turned on the Synology device):

 - Go to your Synology control panel
 - Go to security 
 - Go to firewall
 - Go to Edit Rules
 - Click Create
 - Select Custom: Destination port "TCP"
 - Type "8123" in port
 - Click on OK
 - Click on OK again


Copy your configuration.yaml file into the config folder
That's it... you're all set to go

Here are some useful commands:

- Start Home Assistant:

```bash
$ sudo /volume1/homeassistant/hass-daemon start
```

- Stop Home Assistant:

```bash
$ sudo /volume1/homeassistant/hass-daemon stop
```

- Restart Home Assistant:

```bash
$ sudo /volume1/homeassistant/hass-daemon restart
```

- Upgrade Home Assistant::

```bash
$  /volume1/@appstore/py3k/usr/local/bin/python3 -m pip install --upgrade homeassistant
```

