Add Docker image and build script for DSM 7

This commit is contained in:
Joseph Henry 2022-04-05 16:38:20 -07:00
parent 3c59de7c00
commit 8ee8870c27
No known key found for this signature in database
GPG Key ID: C45B33FF5EBC9344
6 changed files with 89 additions and 2 deletions

View File

@ -1,3 +1,5 @@
# vim: ft=dockerfile
FROM debian:buster
ENV LANG C.UTF-8

View File

@ -1,6 +1,7 @@
## Synology
## Package for Synology's DSM 6
Documentation and downloads: [docs.zerotier.com/devices/synology](https://docs.zerotier.com/devices/synology)
### DSM 6 Packaging procedure
```
./build.sh build

View File

@ -0,0 +1,32 @@
# vim: ft=dockerfile
FROM alpine:latest as builder
ARG COMMIT=04b77773c4cd384c359e3a48f40307b288233194
RUN apk add --no-cache rust cargo
RUN apk add openssl-dev
RUN apk add --update alpine-sdk linux-headers \
&& git clone --quiet https://github.com/zerotier/ZeroTierOne.git /src \
&& git -C src reset --quiet --hard ${COMMIT} \
&& cd /src \
&& make -f make-linux.mk
FROM alpine:latest
LABEL version="1.8.7"
LABEL description="ZeroTier One docker image for Synology NAS"
RUN apk add --update --no-cache bash jq libc6-compat libstdc++
EXPOSE 9993/udp
COPY --from=builder /src/zerotier-one /usr/sbin/
RUN mkdir -p /var/lib/zerotier-one \
&& ln -s /usr/sbin/zerotier-one /usr/sbin/zerotier-idtool \
&& ln -s /usr/sbin/zerotier-one /usr/sbin/zerotier-cli
COPY entrypoint.sh /entrypoint.sh
RUN chmod 755 /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

View File

@ -0,0 +1,3 @@
## Docker image for Synology's DSM7
Documentation: [docs.zerotier.com/devices/synology](https://docs.zerotier.com/devices/synology)

20
synology/dsm7-docker/build.sh Executable file
View File

@ -0,0 +1,20 @@
#!/bin/bash
ZTO_VER=$(jq -r '.version' ../config.json)
build()
{
sudo docker build --load --rm -t zerotier-synology .
LATEST_DOCKER_IMAGE_HASH=$(sudo docker images -q zerotier-synology)
sudo docker tag ${LATEST_DOCKER_IMAGE_HASH} zerotier/zerotier-synology:${ZTO_VER}
sudo docker tag ${LATEST_DOCKER_IMAGE_HASH} zerotier/zerotier-synology:latest
}
push()
{
sudo docker login --username=${DOCKERHUB_USERNAME}
sudo docker push zerotier/zerotier-synology:${ZTO_VER}
sudo docker push zerotier/zerotier-synology:latest
}
"$@"

View File

@ -0,0 +1,29 @@
#!/bin/bash
zerotier-one -d
# Wait for ZT service to come online before attempting queries
sleep 15
while true
do
NETWORK_COUNT=$(zerotier-cli -j listnetworks | jq -r '. | length')
if [ "$NETWORK_COUNT" -gt 0 ]; then
for ((j=0; j<=$((NETWORK_COUNT-1)); j++))
do
ROUTE_COUNT=$(zerotier-cli -j listnetworks | jq -r '.['$j'].routes | length')
for ((k=0; k<=$((ROUTE_COUNT-1)); k++))
do
ROUTE=$(zerotier-cli -j listnetworks | jq -r '.['$j'].routes['$k'].target')
EXIST=$(ip route show $ROUTE | wc -l)
if [ $EXIST -eq 0 ];
then
IFNAME=$(zerotier-cli -j listnetworks | jq -r '.['$j'] | .portDeviceName')
ip route add $ROUTE dev $IFNAME
# Routes will be deleted when ZT brings the interface down
fi
done
done
sleep 15
fi
done