Compare commits

..

36 Commits

15 changed files with 117 additions and 94 deletions

4
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,4 @@
---
github: frenck
patreon: frenck
custom: https://frenck.dev/donate/

6
.github/config.yml vendored
View File

@@ -34,14 +34,14 @@ requestInfoUserstoExclude: []
newIssueWelcomeComment: >
:wave: Thanks for opening your first issue here!
If you're reporting a :bug: bug, please make sure you include steps to reproduce it.
Also, logs, error messages and information about your hardware might be usefull.
Also, logs, error messages and information about your hardware might be useful.
# Configuration for new-pr-welcome - https://github.com/behaviorbot/new-pr-welcome
# Comment to be posted to on PRs from first time contributors in your repository
newPRWelcomeComment: >
:sparkling_heart: Thanks for opening this pull request! :sparkling_heart:
If your PR gets accepted and merged in, we will invite you to the project :tada:
:sparkling_heart: Thanks for opening this pull request! :sparkling_heart:
If your PR gets accepted and merged in, we will invite you to the project :tada:
# Configuration for first-pr-merge - https://github.com/behaviorbot/first-pr-merge

12
.github/settings.yml vendored
View File

@@ -42,24 +42,24 @@ labels:
description: "New features or options."
- name: "Type: Support"
color: 5319e7
description: "Marks an issue as an support ticket."
description: "Marks an issue as a support ticket."
- name: "Type: Discussion"
color: d4c5f9
description: "Marks an issue as an generic discussion ticket."
- name: "Type: Maintaince"
description: "Marks an issue as a generic discussion ticket."
- name: "Type: Maintenance"
color: 2af79e
description: "Generic maintaince tasks, e.g., package updates."
description: "Generic maintenance tasks, e.g., package updates."
# Additional markers
- name: "Security"
color: ee0701
description: "Marks an security issues that needs to be resolved asap."
description: "Marks a security issue that needs to be resolved asap."
- name: "Idea"
color: fef2c0
description: "Marks an idea, which might be excepted and implemented."
- name: "Incomplete"
color: fef2c0
description: "Marks an PR or issue that is missing information."
description: "Marks a PR or issue that is missing information."
- name: "Pull request"
color: fbca04
description: "There is an PR opened for this issue."

View File

@@ -7,8 +7,8 @@ variables:
ADDON_TARGET: "zerotier"
ADDON_LEGACY_TAGS: "true"
ADDON_AARCH64_BASE: "hassioaddons/base-aarch64:3.0.1"
ADDON_AMD64_BASE: "hassioaddons/base-amd64:3.0.1"
ADDON_ARMHF_BASE: "hassioaddons/base-armhf:3.0.1"
ADDON_ARMV7_BASE: "hassioaddons/base-armv7:3.0.1"
ADDON_I386_BASE: "hassioaddons/base-i386:3.0.1"
ADDON_AARCH64_BASE: "hassioaddons/base-aarch64:6.0.1"
ADDON_AMD64_BASE: "hassioaddons/base-amd64:6.0.1"
ADDON_ARMHF_BASE: "hassioaddons/base-armhf:6.0.1"
ADDON_ARMV7_BASE: "hassioaddons/base-armv7:6.0.1"
ADDON_I386_BASE: "hassioaddons/base-i386:6.0.1"

View File

@@ -1,6 +1,6 @@
# MIT License
Copyright (c) 2019 Franck Nijhof
Copyright (c) 2019-2020 Franck Nijhof
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -17,9 +17,9 @@
[![Discord][discord-shield]][discord]
[![Community Forum][forum-shield]][forum]
[![Buy me a coffee][buymeacoffee-shield]][buymeacoffee]
[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
[![Support my work on Patreon][patreon-shield]][patreon]
[![Support Frenck on Patreon][patreon-shield]][patreon]
Radically simplify your network with a virtual networking layer that works
the same everywhere.
@@ -40,17 +40,14 @@ can now add your Home Assistant instance using this add-on.
The installation of this add-on is pretty straightforward and not different in
comparison to installing any other Hass.io add-on.
1. [Add our Hass.io add-ons repository][repository] to your Hass.io instance.
1. Install the "ZeroTier One" add-on.
1. Search for the "ZeroTier One" add-on in the Hass.io add-on store
and install it.
1. Create a free account at [zerotier.com][zerotier] and get a network ID.
1. Set the "network_id" add-on option with your network ID.
1. Start the "ZeroTier One" add-on
1. Check the logs of the "ZeroTier One" add-on to see if everything went well.
1. The instance will show up in your ZeroTier account.
**NOTE**: Do not add this repository to Hass.io, please use:
`https://github.com/hassio-addons/repository`.
## Configuration
**Note**: _Remember to restart the add-on when the configuration is changed._
@@ -59,9 +56,11 @@ Example add-on configuration:
```json
{
"log_level": "info",
"port": 9993,
"network_id":"wgfyiwe73747457"
"networks":[
"wgfyiwe73747457",
"fhu3888892jjfdk"
],
"api_auth_token":""
}
```
@@ -85,20 +84,13 @@ more severe level, e.g., `debug` also shows `info` messages. By default,
the `log_level` is set to `info`, which is the recommended setting unless
you are troubleshooting.
### Option: `network_id`
### Option: `networks`
Configures the network identifier of the network (VLAN) to join.
Configures one or more network identifiers of the networks (VLAN) to join.
You can find this number in your ZeroTier account.
**Note**: _This option support secrets, e.g., `!secret zerotier_network_id`._
### Option: `port`
ZeroTier UDP & TCP port for communications.
You **do not** need to expose this port to the outside world!
So please **do not** forward this port in your router.
### Option: `api_auth_token`
ZeroTier exposes a local HTTP JSON API, which uses the port set using the
@@ -169,7 +161,7 @@ our [GitHub Repository][repository].
MIT License
Copyright (c) 2019 Franck Nijhof
Copyright (c) 2019-2020 Franck Nijhof
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -194,8 +186,6 @@ SOFTWARE.
[api]: https://www.zerotier.com/manual.shtml#4_1
[armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
[armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg
[buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/guidelines/download-assets-sm-2.svg
[buymeacoffee]: https://www.buymeacoffee.com/frenck
[commits-shield]: https://img.shields.io/github/commit-activity/y/hassio-addons/addon-zerotier.svg
[commits]: https://github.com/hassio-addons/addon-zerotier/commits/master
[contributors]: https://github.com/hassio-addons/addon-zerotier/graphs/contributors
@@ -206,6 +196,8 @@ SOFTWARE.
[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
[forum]: https://community.home-assistant.io/?u=frenck
[frenck]: https://github.com/frenck
[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
[github-sponsors]: https://github.com/sponsors/frenck
[gitlabci-shield]: https://gitlab.com/hassio-addons/addon-zerotier/badges/master/pipeline.svg
[gitlabci]: https://gitlab.com/hassio-addons/addon-zerotier/pipelines
[home-assistant]: https://home-assistant.io
@@ -213,8 +205,8 @@ SOFTWARE.
[issue]: https://github.com/hassio-addons/addon-zerotier/issues
[keepchangelog]: http://keepachangelog.com/en/1.0.0/
[license-shield]: https://img.shields.io/github/license/hassio-addons/addon-zerotier.svg
[maintenance-shield]: https://img.shields.io/maintenance/yes/2019.svg
[patreon-shield]: https://www.frenck.nl/images/patreon.png
[maintenance-shield]: https://img.shields.io/maintenance/yes/2020.svg
[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png
[patreon]: https://www.patreon.com/
[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg
[reddit]: https://reddit.com/r/homeassistant

View File

@@ -4,9 +4,9 @@
[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
[![Buy me a coffee][buymeacoffee-shield]][buymeacoffee]
[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
[![Support my work on Patreon][patreon-shield]][patreon]
[![Support Frenck on Patreon][patreon-shield]][patreon]
Radically simplify your network with a virtual networking layer that works
the same everywhere.
@@ -63,15 +63,15 @@ If you are more interested in stable releases of our add-ons:
<https://github.com/hassio-addons/repository>
{% endif %}
[buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/guidelines/download-assets-sm-2.svg
[buymeacoffee]: https://www.buymeacoffee.com/frenck
[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
[discord]: https://discord.me/hassioaddons
[docs]: {{ repo }}/blob/{{ version }}/README.md
[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
[forum]: https://community.home-assistant.io/?u=frenck
[maintenance-shield]: https://img.shields.io/maintenance/yes/2019.svg
[patreon-shield]: https://www.frenck.nl/images/patreon.png
[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
[github-sponsors]: https://github.com/sponsors/frenck
[maintenance-shield]: https://img.shields.io/maintenance/yes/2020.svg
[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png
[patreon]: https://www.patreon.com/frenck
[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg
[release-shield]: https://img.shields.io/badge/version-{{ version }}-blue.svg

View File

@@ -1,26 +1,30 @@
ARG BUILD_FROM=hassioaddons/base:3.0.1
ARG BUILD_FROM=hassioaddons/base:6.0.1
# hadolint ignore=DL3006
FROM ${BUILD_FROM}
# Set shell
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# We need to copy in the patches need during build
COPY rootfs/patches /patches
# Setup base
# hadolint ignore=DL3003
RUN \
apk add --no-cache --virtual .build-dependencies \
build-base=0.5-r1 \
linux-headers=4.18.13-r1 \
git=2.20.1-r0 \
linux-headers=4.19.36-r0 \
git=2.24.1-r0 \
\
&& apk add --no-cache \
libgcc=8.2.0-r2 \
libstdc++=8.2.0-r2 \
libgcc=9.2.0-r3 \
libstdc++=9.2.0-r3 \
\
&& git clone --branch "1.2.12" --depth=1 \
&& git clone --branch "1.4.6" --depth=1 \
"https://github.com/zerotier/ZeroTierOne.git" /tmp/zerotier \
\
&& cd /tmp/zerotier \
&& patch -p1 < /patches/ZeroTierOne/gcc9-compat.patch \
&& make \
&& make install \
\

View File

@@ -1,10 +1,10 @@
{
"build_from": {
"aarch64": "hassioaddons/base-aarch64:3.0.1",
"amd64": "hassioaddons/base-amd64:3.0.1",
"armhf": "hassioaddons/base-armhf:3.0.1",
"armv7": "hassioaddons/base-armv7:3.0.1",
"i386": "hassioaddons/base-i386:3.0.1"
},
"args": {}
"build_from": {
"aarch64": "hassioaddons/base-aarch64:6.0.1",
"amd64": "hassioaddons/base-amd64:6.0.1",
"armhf": "hassioaddons/base-armhf:6.0.1",
"armv7": "hassioaddons/base-armv7:6.0.1",
"i386": "hassioaddons/base-i386:6.0.1"
},
"args": {}
}

View File

@@ -12,12 +12,17 @@
"armv7",
"i386"
],
"ports": {
"9993/tcp": 9993
},
"ports_description": {
"9993/tcp": "ZeroTier's primary port"
},
"boot": "auto",
"hassio_api": true,
"hassio_role": "default",
"homeassistant_api": false,
"host_network": true,
"apparmor": true,
"privileged": [
"NET_ADMIN",
"SYS_ADMIN"
@@ -26,18 +31,15 @@
"/dev/net/tun:/dev/net/tun:rwm"
],
"map": [
"config",
"ssl:rw"
],
"options": {
"network_id":"",
"port": 9993,
"networks":[],
"api_auth_token": ""
},
"schema": {
"networks":["match(^!secret [a-zA-Z0-9_\\-]+$|[0-9a-z]{16})"],
"api_auth_token": "str",
"log_level": "match(^(trace|debug|info|notice|warning|error|fatal)$)?",
"network_id":"match([0-9a-z]{16})",
"port": "port"
"log_level": "match(^(trace|debug|info|notice|warning|error|fatal)$)?"
}
}

View File

@@ -1,10 +0,0 @@
#!/usr/bin/with-contenv bashio
# ==============================================================================
# Community Hass.io Add-ons: ZeroTier One
# Sets the auth token for the local JSON API
# ==============================================================================
declare token
if bashio::config.has_value 'api_auth_token'; then
token=$(bashio::config 'api_auth_token')
echo "${token}" > /data/authtoken.secret
fi

View File

@@ -1,17 +0,0 @@
#!/usr/bin/with-contenv bashio
# ==============================================================================
# Community Hass.io Add-ons: ZeroTier One
# Creates ZeroTier One configuration in case it is non-existing
# ==============================================================================
readonly network=$(bashio::config 'network_id')
# Ensure network folder exists
mkdir -p "/var/lib/zerotier-one/networks.d" \
|| bashio::exit.nok "Could not create networks folder"
# Ensure the file exists. An empty file will cause automatic join.
touch "/data/network.${network}.conf"
ln -s \
"/data/network.${network}.conf" \
"/var/lib/zerotier-one/networks.d/${network}.conf" \
|| bashio::exit.nok "Could not create network file"

View File

@@ -5,7 +5,9 @@
# ==============================================================================
readonly private='/ssl/zerotier/identity.secret'
readonly public='/ssl/zerotier/identity.public'
declare network
declare node
declare token
# Generate identity if it does not exist
if ! bashio::fs.file_exists "${private}" \
@@ -36,3 +38,28 @@ ln -s "${public}" /var/lib/zerotier-one/identity.public
node=$(cut -d ':' -f1 < "${private}")
bashio::log.info "ZeroTier node address: ${node}"
# Sets the auth token for the local JSON API
if bashio::config.has_value 'api_auth_token'; then
token=$(bashio::config 'api_auth_token')
echo "${token}" > /data/authtoken.secret
fi
# Ensure network folder exists
mkdir -p "/var/lib/zerotier-one/networks.d" \
|| bashio::exit.nok "Could not create networks folder"
# Install user configured/requested packages
if bashio::config.has_value 'networks'; then
while read -r network; do
bashio::log.info "Configuring network: ${network}"
# Ensure the file exists. An empty file will cause automatic join.
touch "/data/network.${network}.conf"
ln -s \
"/data/network.${network}.conf" \
"/var/lib/zerotier-one/networks.d/${network}.conf" \
|| bashio::exit.nok "Could not create network file"
done <<< "$(bashio::config 'networks')"
fi

View File

@@ -9,7 +9,7 @@ bashio::log.info "Starting ZeroTier One..."
# Note sure what this does.
options+=(-U)
options+=("-p$(bashio::config 'port')")
options+=("-p$(bashio::addon.port 9993)")
# Run the ZeroTier One
exec zerotier-one "${options[@]}"

View File

@@ -0,0 +1,21 @@
diff --git a/make-linux.mk b/make-linux.mk
index 9fd4f7b9..c409ce0b 100644
--- a/make-linux.mk
+++ b/make-linux.mk
@@ -260,12 +260,12 @@ endif
# ARM32 hell -- use conservative CFLAGS
ifeq ($(ZT_ARCHITECTURE),3)
ifeq ($(shell if [ -e /usr/bin/dpkg ]; then dpkg --print-architecture; fi),armel)
- override CFLAGS+=-march=armv5 -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm
- override CXXFLAGS+=-march=armv5 -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm
+ override CFLAGS+=-march=armv6 -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm
+ override CXXFLAGS+=-march=armv6 -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm
ZT_USE_ARM32_NEON_ASM_CRYPTO=0
else
- override CFLAGS+=-march=armv5 -mno-unaligned-access -marm -fexceptions
- override CXXFLAGS+=-march=armv5 -mno-unaligned-access -marm -fexceptions
+ override CFLAGS+=-march=armv6 -mno-unaligned-access -marm -fexceptions
+ override CXXFLAGS+=-march=armv6 -mno-unaligned-access -marm -fexceptions
ZT_USE_ARM32_NEON_ASM_CRYPTO=0
endif
endif