mirror of
https://github.com/Mo3he/Axis_Cam_Tailscale.git
synced 2026-10-01 12:05:37 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
17c2ae705c | ||
|
|
54be4dd84f | ||
|
|
452f7d54d8 | ||
|
|
b444c964f6 | ||
|
|
e0178b531e | ||
|
|
46f7a524c0 | ||
|
|
f5ab42fd3f | ||
|
|
019beb3c73 | ||
|
|
db343b4447 | ||
|
|
f3163cae45 | ||
|
|
b7391743d6 | ||
|
|
2b373227d2 | ||
|
|
fa4e6edde1 | ||
|
|
c26643adf0 | ||
|
|
39bc29e1ab | ||
|
|
af3813135a | ||
|
|
5fe5a01f59 | ||
|
|
080b3bb90e | ||
|
|
41b9bd04b5 | ||
|
|
86d902d289 | ||
|
|
f4b64b7f3a | ||
|
|
d00a45effb | ||
|
|
74af48b024 | ||
|
|
0e89c01546 | ||
|
|
87de22b8a1 | ||
|
|
0ddd3c1ee2 | ||
|
|
0e6227149f | ||
|
|
7943176695 |
@@ -1,3 +0,0 @@
|
|||||||
@Mo3he
|
|
||||||
@pandosme
|
|
||||||
@johanssonfrans
|
|
||||||
@@ -6,6 +6,7 @@ All types of contributions are encouraged and valued. See the [Table of contents
|
|||||||
> - Tweet about it
|
> - Tweet about it
|
||||||
> - Refer this project in your project's readme
|
> - Refer this project in your project's readme
|
||||||
> - Mention the project at local meetups and tell your friends/colleagues
|
> - Mention the project at local meetups and tell your friends/colleagues
|
||||||
|
> - A sponsorship of any amount is always appreciated
|
||||||
|
|
||||||
<!-- omit in toc -->
|
<!-- omit in toc -->
|
||||||
## Table of contents
|
## Table of contents
|
||||||
|
|||||||
@@ -2,7 +2,20 @@
|
|||||||
|
|
||||||
This ACAP packages the scripts and files required to install the Tailscale VPN client on Axis Cameras.
|
This ACAP packages the scripts and files required to install the Tailscale VPN client on Axis Cameras.
|
||||||
|
|
||||||
Current version 1.48.2
|
Current version 1.78.1
|
||||||
|
|
||||||
|
https://tailscale.com/changelog/
|
||||||
|
|
||||||
|
|
||||||
|
The "Auto Update" version has been removed since it no longer works given the files are not stored in the default location.
|
||||||
|
|
||||||
|
## Good news, everyone!
|
||||||
|
|
||||||
|
We have found a way to run the Tailscale ACAP without root privileges allowing it to run on Axis OS 12.
|
||||||
|
|
||||||
|
The changes are implemented from version 1.68.1
|
||||||
|
|
||||||
|
Thank you for your continued support.
|
||||||
|
|
||||||
## Purpose
|
## Purpose
|
||||||
|
|
||||||
@@ -72,6 +85,14 @@ docker build --tag <package name> .
|
|||||||
docker cp $(docker create <package name>):/opt/app ./build
|
docker cp $(docker create <package name>):/opt/app ./build
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Thanks to wesQ3 there is now also a version in the "all" folder with a script that simplifies the build process with the following changes.
|
||||||
|
|
||||||
|
1. Architecture specific build directories are not required, target arch is now an argument
|
||||||
|
|
||||||
|
2. manifest files are templated as part of the build
|
||||||
|
|
||||||
|
3. Tailscale binaries are downloaded as part of the build
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
echo "Starting Service"
|
echo "Starting Service"
|
||||||
chmod 777 /usr/local/packages/Tailscale_VPN/lib/tailscale
|
chmod 777 /usr/local/packages/Tailscale_VPN/lib/tailscale
|
||||||
chmod 777 /usr/local/packages/Tailscale_VPN/lib/tailscaled
|
chmod 777 /usr/local/packages/Tailscale_VPN/lib/tailscaled
|
||||||
/usr/local/packages/Tailscale_VPN/lib/tailscaled &
|
/usr/local/packages/Tailscale_VPN/lib/tailscaled --tun=userspace-networking --socket=/usr/local/packages/Tailscale_VPN/tailscaled.sock &
|
||||||
echo "Service Started"
|
echo "Service Started"
|
||||||
echo "Scroll to Bottom for link"
|
echo "Scroll to Bottom for link"
|
||||||
/usr/local/packages/Tailscale_VPN/lib/tailscale up
|
/usr/local/packages/Tailscale_VPN/lib/tailscale --socket=/usr/local/packages/Tailscale_VPN/tailscaled.sock up
|
||||||
wait
|
wait
|
||||||
+15
-18
@@ -1,21 +1,18 @@
|
|||||||
{
|
{
|
||||||
"schemaVersion": "1.3",
|
"schemaVersion": "1.3",
|
||||||
"acapPackageConf": {
|
"acapPackageConf": {
|
||||||
"setup": {
|
"setup": {
|
||||||
"appName": "Tailscale_VPN",
|
"appName": "Tailscale_VPN",
|
||||||
"friendlyName": "Tailscale VPN",
|
"friendlyName": "Tailscale VPN",
|
||||||
"vendor": "Tailscale - Packaged by Mo3he",
|
"vendor": "Tailscale - Packaged by Mo3he",
|
||||||
"embeddedSdkVersion": "3.0",
|
"embeddedSdkVersion": "3.0",
|
||||||
"user": {
|
"vendorUrl": "https://www.tailscale.com",
|
||||||
"group": "root",
|
"runMode": "once",
|
||||||
"username": "root"
|
"version": "1.78.1",
|
||||||
},
|
"architecture": "aarch64"
|
||||||
"vendorUrl": "https://www.tailscale.com",
|
|
||||||
"runMode": "once",
|
|
||||||
"version": "1.48.2"
|
|
||||||
},
|
},
|
||||||
"configuration": {
|
"configuration": {
|
||||||
"settingPage": "index.html"
|
"settingPage": "index.html"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
# example usage:
|
||||||
|
# docker build --build-arg ARCH=armv7hf --build-arg TAILSCALE_VERSION=1.70.0 -t axis_tailscale:latest .
|
||||||
|
# docker cp $(docker create axis_tailscale):/opt/app ./build
|
||||||
|
|
||||||
|
ARG REPO=axisecp
|
||||||
|
ARG SDK=acap-native-sdk
|
||||||
|
ARG VERSION=1.3
|
||||||
|
ARG ARCH=armv7hf
|
||||||
|
ARG UBUNTU_VERSION=22.04
|
||||||
|
|
||||||
|
FROM ${REPO}/${SDK}:${VERSION}-${ARCH}-ubuntu${UBUNTU_VERSION}
|
||||||
|
WORKDIR /opt/app
|
||||||
|
COPY ./app /opt/app/
|
||||||
|
|
||||||
|
ARG ARCH=armv7hf
|
||||||
|
ARG TAILSCALE_VERSION=1.68.1
|
||||||
|
|
||||||
|
# template files
|
||||||
|
RUN sed -i "s/@@ARCH@@/${ARCH}/g" /opt/app/manifest.json \
|
||||||
|
&& sed -i "s/@@TAILSCALE_VERSION@@/${TAILSCALE_VERSION}/g" /opt/app/manifest.json
|
||||||
|
|
||||||
|
# tailscale uses "arm(64)" instead of the more specific arm arch names
|
||||||
|
RUN \
|
||||||
|
if [ "${ARCH}" = "armv7hf" ]; then TAILSCALE_ARCH="arm"; \
|
||||||
|
elif [ "${ARCH}" = "aarch64" ]; then TAILSCALE_ARCH="arm64"; \
|
||||||
|
else TAILSCALE_ARCH="${ARCH}"; fi \
|
||||||
|
&& curl -sS --fail -L -o /tmp/tailscale.tgz https://pkgs.tailscale.com/stable/tailscale_${TAILSCALE_VERSION}_${TAILSCALE_ARCH}.tgz \
|
||||||
|
&& mkdir -p /opt/app/lib \
|
||||||
|
&& tar xzf /tmp/tailscale.tgz -C /opt/app/lib --strip-components=1 --wildcards --no-anchored '*/tailscale' '*/tailscaled' \
|
||||||
|
&& rm /tmp/tailscale.tgz
|
||||||
|
|
||||||
|
RUN . /opt/axis/acapsdk/environment-setup* && acap-build ./
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Building
|
||||||
|
|
||||||
|
Set your preferred build parameters via the docker build command.
|
||||||
|
|
||||||
|
* `ARCH` - use the Axis architecture string you can fetch from `/axis-cgi/param.cgi?action=list&group=Properties.System.Architecture`
|
||||||
|
* `TAILSCALE_VERSION` - Specify the version string as it appears on the [Tailscale archive](https://pkgs.tailscale.com/stable/#static)
|
||||||
|
|
||||||
|
Tailscale arm arch strings are different than the axis format. The Dockerfile has some mappings for common strings.
|
||||||
|
|
||||||
|
```
|
||||||
|
docker build --build-arg ARCH=armv7hf --build-arg TAILSCALE_VERSION=1.70.0 -t axis_tailscale:latest .
|
||||||
|
```
|
||||||
|
|
||||||
|
Then copy out the build artifacts:
|
||||||
|
|
||||||
|
```
|
||||||
|
docker cp $(docker create axis_tailscale):/opt/app ./build
|
||||||
|
```
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
BSD 3-Clause License
|
||||||
|
|
||||||
|
Copyright (c) 2020 Tailscale & AUTHORS.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright notice, this
|
||||||
|
list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
3. Neither the name of the copyright holder nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived from
|
||||||
|
this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||||
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
nop:
|
||||||
Executable
+10
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo "Starting Service"
|
||||||
|
chmod 777 /usr/local/packages/Tailscale_VPN/lib/tailscale
|
||||||
|
chmod 777 /usr/local/packages/Tailscale_VPN/lib/tailscaled
|
||||||
|
/usr/local/packages/Tailscale_VPN/lib/tailscaled --tun=userspace-networking --socket=/usr/local/packages/Tailscale_VPN/tailscaled.sock &
|
||||||
|
echo "Service Started"
|
||||||
|
echo "Scroll to Bottom for link"
|
||||||
|
/usr/local/packages/Tailscale_VPN/lib/tailscale --socket=/usr/local/packages/Tailscale_VPN/tailscaled.sock up
|
||||||
|
wait
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<head>
|
||||||
|
<h1 style="color:red;">Scroll to the bottom to find authentication URL</h1>
|
||||||
|
<script>
|
||||||
|
function refreshIFrame() {
|
||||||
|
var x = document.getElementById("*Your_iframe_id*");
|
||||||
|
x.contentWindow.location.reload();
|
||||||
|
var t = setTimeout(refreshIFrame, 5000);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body onload="refreshIFrame()">
|
||||||
|
<iframe id="*Your_iframe_id*" src= "/axis-cgi/admin/systemlog.cgi?appname=Tailscale_VPN" style="height:600px;width:100%;border: none;" ></iframe>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": "1.3",
|
||||||
|
"acapPackageConf": {
|
||||||
|
"setup": {
|
||||||
|
"appName": "Tailscale_VPN",
|
||||||
|
"friendlyName": "Tailscale VPN",
|
||||||
|
"vendor": "Tailscale - Packaged by Mo3he",
|
||||||
|
"embeddedSdkVersion": "3.0",
|
||||||
|
"vendorUrl": "https://www.tailscale.com",
|
||||||
|
"runMode": "once",
|
||||||
|
"version": "@@TAILSCALE_VERSION@@",
|
||||||
|
"architecture": "@@ARCH@@"
|
||||||
|
},
|
||||||
|
"configuration": {
|
||||||
|
"settingPage": "index.html"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,8 +3,8 @@
|
|||||||
echo "Starting Service"
|
echo "Starting Service"
|
||||||
chmod 777 /usr/local/packages/Tailscale_VPN/lib/tailscale
|
chmod 777 /usr/local/packages/Tailscale_VPN/lib/tailscale
|
||||||
chmod 777 /usr/local/packages/Tailscale_VPN/lib/tailscaled
|
chmod 777 /usr/local/packages/Tailscale_VPN/lib/tailscaled
|
||||||
/usr/local/packages/Tailscale_VPN/lib/tailscaled &
|
/usr/local/packages/Tailscale_VPN/lib/tailscaled --tun=userspace-networking --socket=/usr/local/packages/Tailscale_VPN/tailscaled.sock &
|
||||||
echo "Service Started"
|
echo "Service Started"
|
||||||
echo "Scroll to Bottom for link"
|
echo "Scroll to Bottom for link"
|
||||||
/usr/local/packages/Tailscale_VPN/lib/tailscale up
|
/usr/local/packages/Tailscale_VPN/lib/tailscale --socket=/usr/local/packages/Tailscale_VPN/tailscaled.sock up
|
||||||
wait
|
wait
|
||||||
+15
-18
@@ -1,21 +1,18 @@
|
|||||||
{
|
{
|
||||||
"schemaVersion": "1.3",
|
"schemaVersion": "1.3",
|
||||||
"acapPackageConf": {
|
"acapPackageConf": {
|
||||||
"setup": {
|
"setup": {
|
||||||
"appName": "Tailscale_VPN",
|
"appName": "Tailscale_VPN",
|
||||||
"friendlyName": "Tailscale VPN",
|
"friendlyName": "Tailscale VPN",
|
||||||
"vendor": "Tailscale - Packaged by Mo3he",
|
"vendor": "Tailscale - Packaged by Mo3he",
|
||||||
"embeddedSdkVersion": "3.0",
|
"embeddedSdkVersion": "3.0",
|
||||||
"user": {
|
"vendorUrl": "https://www.tailscale.com",
|
||||||
"group": "root",
|
"runMode": "once",
|
||||||
"username": "root"
|
"version": "1.78.1",
|
||||||
},
|
"architecture": "armv7hf"
|
||||||
"vendorUrl": "https://www.tailscale.com",
|
|
||||||
"runMode": "once",
|
|
||||||
"version": "1.48.2"
|
|
||||||
},
|
},
|
||||||
"configuration": {
|
"configuration": {
|
||||||
"settingPage": "index.html"
|
"settingPage": "index.html"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1 +0,0 @@
|
|||||||
|
|
||||||
Reference in New Issue
Block a user