mirror of
https://github.com/Mo3he/Axis_Cam_Tailscale.git
synced 2026-10-01 12:05:37 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6148fc3298 | ||
|
|
bd60c24b5b | ||
|
|
7926c58b3d | ||
|
|
6bdca7eadd | ||
|
|
8b941b08a5 | ||
|
|
d157a91bae | ||
|
|
b35ed437b5 | ||
|
|
cb390384a1 | ||
|
|
533fc53040 | ||
|
|
0a85c286b4 | ||
|
|
d7e7b63952 | ||
|
|
ed7643b2eb | ||
|
|
c4b24aee40 | ||
|
|
bec473f0a8 | ||
|
|
5278677098 | ||
|
|
c21f640622 | ||
|
|
83e108bb05 | ||
|
|
38d7af6c86 | ||
|
|
51ead4a708 | ||
|
|
123906c98b | ||
|
|
f6999311b7 | ||
|
|
a95415d687 | ||
|
|
7d584d1a22 | ||
|
|
e27f0cdb34 | ||
|
|
e5954eac52 | ||
|
|
91a45be400 | ||
|
|
9b06b49fef | ||
|
|
811aa9e2f5 | ||
|
|
f69a1971a2 | ||
|
|
e01a2ab95f | ||
|
|
5b87555295 | ||
|
|
4a4618344a | ||
|
|
de739dec13 | ||
|
|
ef0cb156be |
@@ -0,0 +1,149 @@
|
|||||||
|
name: Auto Build & Release Tailscale ACAP
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "0 3 * * 1" # Every Monday at 03:00 UTC
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-and-release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
|
||||||
|
# 1. Checkout repo
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
persist-credentials: true
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
# 2. Get latest Tailscale version
|
||||||
|
- name: Get latest Tailscale version
|
||||||
|
id: tailscale_version
|
||||||
|
run: |
|
||||||
|
VERSION=$(curl -s https://api.github.com/repos/tailscale/tailscale/releases/latest | jq -r .tag_name)
|
||||||
|
VERSION=${VERSION#v} # remove leading 'v'
|
||||||
|
echo "RELEASE_VERSION=$VERSION" >> $GITHUB_ENV
|
||||||
|
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Get current repo version
|
||||||
|
id: current
|
||||||
|
run: |
|
||||||
|
CURRENT=$(find . -path "*/app/manifest.json" -exec jq -r '.acapPackageConf.setup.version' {} \; | sort -u | head -n1)
|
||||||
|
echo "CURRENT_VERSION=$CURRENT" >> $GITHUB_ENV
|
||||||
|
echo "Current repo version: $CURRENT"
|
||||||
|
|
||||||
|
- name: Compare versions
|
||||||
|
id: compare
|
||||||
|
run: |
|
||||||
|
echo "Repo version: $CURRENT_VERSION"
|
||||||
|
echo "Latest Tailscale version: $RELEASE_VERSION"
|
||||||
|
|
||||||
|
if [ "$CURRENT_VERSION" = "$RELEASE_VERSION" ]; then
|
||||||
|
echo "build_needed=false" >> $GITHUB_ENV
|
||||||
|
echo "Already up to date. Skipping build."
|
||||||
|
else
|
||||||
|
echo "build_needed=true" >> $GITHUB_ENV
|
||||||
|
echo "New version detected. Will build."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 3. Download Tailscale binaries
|
||||||
|
- name: Download Tailscale binaries
|
||||||
|
if: env.build_needed == 'true'
|
||||||
|
run: |
|
||||||
|
mkdir -p tailscale_bins
|
||||||
|
curl -L "https://pkgs.tailscale.com/stable/tailscale_${RELEASE_VERSION}_arm.tgz" -o tailscale_arm.tgz
|
||||||
|
tar -xzf tailscale_arm.tgz -C tailscale_bins --strip-components=1
|
||||||
|
mv tailscale_bins/tailscale tailscale_bins/tailscale_arm
|
||||||
|
mv tailscale_bins/tailscaled tailscale_bins/tailscaled_arm
|
||||||
|
|
||||||
|
curl -L "https://pkgs.tailscale.com/stable/tailscale_${RELEASE_VERSION}_arm64.tgz" -o tailscale_arm64.tgz
|
||||||
|
tar -xzf tailscale_arm64.tgz -C tailscale_bins --strip-components=1
|
||||||
|
mv tailscale_bins/tailscale tailscale_bins/tailscale_arm64
|
||||||
|
mv tailscale_bins/tailscaled tailscale_bins/tailscaled_arm64
|
||||||
|
|
||||||
|
# 4. Build each folder, update manifest, and copy .eap files
|
||||||
|
- name: Build all folders
|
||||||
|
if: env.build_needed == 'true'
|
||||||
|
run: |
|
||||||
|
mkdir -p build
|
||||||
|
rm -rf releases
|
||||||
|
mkdir -p releases
|
||||||
|
|
||||||
|
for folder in */ ; do
|
||||||
|
[[ ! -d "$folder/app" ]] && continue
|
||||||
|
FOLDER_NAME="${folder%/}" # remove trailing slash
|
||||||
|
echo "Processing folder $FOLDER_NAME"
|
||||||
|
|
||||||
|
# Detect architecture
|
||||||
|
if [[ "$FOLDER_NAME" == arm* ]]; then
|
||||||
|
cp tailscale_bins/tailscale_arm "$folder/app/lib/tailscale"
|
||||||
|
cp tailscale_bins/tailscaled_arm "$folder/app/lib/tailscaled"
|
||||||
|
else
|
||||||
|
cp tailscale_bins/tailscale_arm64 "$folder/app/lib/tailscale"
|
||||||
|
cp tailscale_bins/tailscaled_arm64 "$folder/app/lib/tailscaled"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Stage updated binaries for commit
|
||||||
|
git add "$folder/app/lib/tailscale" "$folder/app/lib/tailscaled"
|
||||||
|
|
||||||
|
# Detect variant suffix for .eap naming
|
||||||
|
if [[ "$FOLDER_NAME" == *_ROOT ]]; then
|
||||||
|
VARIANT="_root"
|
||||||
|
elif [[ "$FOLDER_NAME" == *_custom ]]; then
|
||||||
|
VARIANT="_custom"
|
||||||
|
else
|
||||||
|
VARIANT=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Update manifest version
|
||||||
|
sed -i "s/\"version\": \".*\"/\"version\": \"${RELEASE_VERSION}\"/" "$folder/app/manifest.json"
|
||||||
|
|
||||||
|
# Docker build
|
||||||
|
TAG_NAME=$(echo "$FOLDER_NAME" | tr '[:upper:]' '[:lower:]' | tr '/ ' '_') # lowercase and clean
|
||||||
|
echo "Building $TAG_NAME"
|
||||||
|
docker build -f "$folder/Dockerfile" --tag "$TAG_NAME" "$folder"
|
||||||
|
|
||||||
|
# Extract .eap files into build folder
|
||||||
|
EAP_OUTPUT="./build/${TAG_NAME}"
|
||||||
|
mkdir -p "$EAP_OUTPUT"
|
||||||
|
docker cp $(docker create "$TAG_NAME"):/opt/app "$EAP_OUTPUT"
|
||||||
|
|
||||||
|
# Move all .eap files to releases folder, append variant if needed
|
||||||
|
find "$EAP_OUTPUT" -type f -name "*.eap" | while read eap; do
|
||||||
|
BASENAME=$(basename "$eap" .eap)
|
||||||
|
if [[ -n "$VARIANT" ]]; then
|
||||||
|
mv "$eap" "releases/${BASENAME}${VARIANT}.eap"
|
||||||
|
else
|
||||||
|
mv "$eap" "releases/${BASENAME}.eap"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
# Clean up
|
||||||
|
rm -rf build tailscale_bins *.tgz
|
||||||
|
|
||||||
|
# 5. Commit updated manifests and .eap files directly to main
|
||||||
|
- name: Commit updates to main
|
||||||
|
if: env.build_needed == 'true'
|
||||||
|
run: |
|
||||||
|
git config user.name "github-actions[bot]"
|
||||||
|
git config user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
|
|
||||||
|
git add */app/manifest.json releases/*
|
||||||
|
if git diff --cached --quiet; then
|
||||||
|
echo "No changes to commit"
|
||||||
|
else
|
||||||
|
git commit -m "Update Tailscale to v${RELEASE_VERSION}"
|
||||||
|
git push https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/Mo3he/Axis_Cam_Tailscale.git main
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 6. Create GitHub Release with all new .eap files
|
||||||
|
- name: Create GitHub Release
|
||||||
|
if: env.build_needed == 'true'
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
with:
|
||||||
|
tag_name: v${{ env.RELEASE_VERSION }}
|
||||||
|
name: "Tailscale VPN ${{ env.RELEASE_VERSION }}"
|
||||||
|
files: releases/*
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -1,117 +1,143 @@
|
|||||||
# The Tailscale installer ACAP
|
# Tailscale Installer ACAP for Axis Cameras
|
||||||
|
|
||||||
This ACAP packages the scripts and files required to install the Tailscale VPN client on Axis Cameras.
|
This repository contains an **ACAP package** that installs the [Tailscale VPN client](https://tailscale.com/) on Axis cameras.
|
||||||
|
|
||||||
Current version 1.82.0
|
- ✅ Secure remote access to cameras
|
||||||
|
- ✅ Easy to install via EAP package
|
||||||
|
- ✅ Works on **Axis OS 12+** (non-root version)
|
||||||
|
- ✅ Based on **WireGuard VPN** technology
|
||||||
|
|
||||||
https://tailscale.com/changelog/
|
[](https://github.com/Mo3he/Axis_Cam_Tailscale/releases)
|
||||||
|
[](LICENSE)
|
||||||
|
[](https://github.com/sponsors/Mo3he)
|
||||||
|
|
||||||
The "ROOT" versions require root privileges on the camera and will not work on OS 12 up.
|
---
|
||||||
|
|
||||||
If you like my work and want to help me to keep maintaining it, a sponsor would be amazing, every bit helps.
|
## 📑 Table of Contents
|
||||||
|
|
||||||
[:dollar: Sponsor](https://github.com/sponsors/Mo3he)
|
- [📥 Installation](#-installation)
|
||||||
|
- [🚀 Usage](#-usage)
|
||||||
|
- [🔄 Updating Tailscale](#-updating-tailscale)
|
||||||
|
- [🧪 Testers Needed](#-testers-needed)
|
||||||
|
- [🎉 Good News](#-good-news)
|
||||||
|
- [🎯 Purpose](#-purpose)
|
||||||
|
- [🔗 Useful Links](#-useful-links)
|
||||||
|
- [🖥️ Compatibility](#️-compatibility)
|
||||||
|
- [⭐ Star History](#-star-history)
|
||||||
|
- [💖 Support](#-support)
|
||||||
|
|
||||||
## Testers needed
|
---
|
||||||
|
|
||||||
I have added a new "custom" version (Tailscale_VPN_Custom_1_82_0_aarch64.eap) which allows you to set a custom server and auth key for use of headscale.
|
## 📥 Installation
|
||||||
|
|
||||||
Click the three dots then "settings" to add your details.
|
The recommended way is to use the **prebuilt `.eap` file** from the [Releases page](https://github.com/Mo3he/Axis_Cam_Tailscale/releases).
|
||||||
If you get a tls error restart the app.
|
|
||||||
|
|
||||||
Please give it a try and let me know if it works well or if you have issues.
|
1. Log into your Axis camera.
|
||||||
|
2. Go to **Apps → Add App**.
|
||||||
|
3. Upload the `.eap` file.
|
||||||
|
|
||||||
## Good news, everyone!
|
Once installed:
|
||||||
|
- Start the app.
|
||||||
|
- Click **Open** to view logs and get your Tailscale authentication URL.
|
||||||
|
- On uninstall, all changes/files are removed.
|
||||||
|
|
||||||
We have found a way to run the Tailscale ACAP without root privileges allowing it to run on Axis OS 12.
|
> ⚠️ You’ll need a [Tailscale account](https://tailscale.com/) to authenticate.
|
||||||
|
|
||||||
Please note this new version runs in user space networking mode and therefore has some limitations, most notably the camera will not be able to connect out to other Tailscale nodes.
|
---
|
||||||
This does not affect the normal use case of using Tailscale to connect to the camera.
|
|
||||||
If you require full functionality, please do not upgrade to Axis OS 12 and use the version marked "ROOT".
|
|
||||||
|
|
||||||
The changes are implemented from version 1.68.1 of the acap.
|
## 🚀 Usage
|
||||||
|
|
||||||
Thank you for your continued support.
|
- Runs a startup script to set permissions and launch Tailscale.
|
||||||
|
- View logs via the **Open** button in the app.
|
||||||
|
- Authenticate using the provided URL.
|
||||||
|
|
||||||
## Purpose
|
---
|
||||||
|
|
||||||
Adding a VPN client directly to the camera allows secure remote access to the device without requiring any other equipment or network configuration.
|
## 🔄 Updating Tailscale
|
||||||
Tailscale achieves this in a secure, simple to setup and easy to use way.
|
|
||||||
Tailscale is based on WireGuard VPN tunneling technology.
|
|
||||||
|
|
||||||
https://tailscale.com/blog/how-tailscale-works/
|
- New `.eap` files are auto-built and released **weekly** (if a new Tailscale version is available).
|
||||||
|
- To update, simply install the new `.eap` over the existing one.
|
||||||
|
|
||||||
## Links
|
### Manual update (advanced)
|
||||||
|
|
||||||
https://tailscale.com/
|
Replace the binaries in the `lib/` folder:
|
||||||
|
- `tailscale`
|
||||||
|
- `tailscaled`
|
||||||
|
|
||||||
https://github.com/tailscale/tailscale
|
Download the latest versions: [Tailscale static builds](https://pkgs.tailscale.com/stable/#static)
|
||||||
|
|
||||||
https://www.wireguard.com/
|
#### Build locally
|
||||||
|
|
||||||
https://www.axis.com/
|
From the main directory of the version you want (`arm` / `aarch64`):
|
||||||
|
|
||||||
## Compatibility
|
```bash
|
||||||
|
docker build --tag <package_name> .
|
||||||
The Tailscale ACAP is compatable with Axis cameras with arm and aarch64 based Soc's.
|
docker cp $(docker create <package_name>):/opt/app ./build
|
||||||
|
|
||||||
```
|
|
||||||
curl --anyauth "*" -u <username>:<password> <device ip>/axis-cgi/basicdeviceinfo.cgi --data "{\"apiVersion\":\"1.0\",\"context\":\"Client defined request ID\",\"method\":\"getAllProperties\"}"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
where `<device ip>` is the IP address of the Axis device, `<username>` is the root username and `<password>` is the root password. Please
|
---
|
||||||
note that you need to enclose your password with quotes (`'`) if it contains special characters.
|
|
||||||
|
|
||||||
## Installing
|
## 🧪 Testers Needed
|
||||||
|
|
||||||
The recommended way to install this ACAP is to use the pre built eap file.
|
A new **custom** version is available:
|
||||||
Go to "Apps" on the camera and click "Add app".
|
- Allows setting a custom server and auth key (for [Headscale](https://headscale.net/)).
|
||||||
|
- Go to **Settings (⋮ → Settings)** to add your details.
|
||||||
|
|
||||||
|
Please give it a try and share your feedback!
|
||||||
|
|
||||||
## Using the Tailscale ACAP
|
---
|
||||||
|
|
||||||
The Tailscale ACAP will run a script on startup that sets the required permissions and starts the service and app.
|
## 🎉 Good News
|
||||||
Once started click "Open" to see the output of the logs for further instructions and obtain the authetication URL.
|
|
||||||
|
|
||||||
When uninstalling the ACAP, all changes and files are removed from the camera.
|
Tailscale ACAP can now run **without root privileges**, making it compatible with **Axis OS 12+**.
|
||||||
|
|
||||||
You will need a tailscale.com account to use the ACAP
|
- Runs in **user space networking mode**.
|
||||||
|
|
||||||
## Updating Tailscale version
|
For **full networking features**, use the **ROOT** version on Axis OS < 12.
|
||||||
|
|
||||||
The eap files will be updated from time to time and simply installing the new version over the old will update all files.
|
---
|
||||||
|
|
||||||
It's also possible to build and use a locally built image as all necesary files are provided.
|
## 🎯 Purpose
|
||||||
|
|
||||||
Replace binaries "tailscale" and "tailscaled" in lib folder with new versions.
|
Adding a VPN client directly to the camera enables:
|
||||||
Make sure you use the files for the correct Soc.
|
- Secure remote access without additional hardware or complex network configuration.
|
||||||
|
- Easy setup through Tailscale’s lightweight WireGuard-based tunnel.
|
||||||
|
|
||||||
Latest versions can be found at
|
🔗 Learn more: [How Tailscale Works](https://tailscale.com/blog/how-tailscale-works/)
|
||||||
|
|
||||||
https://pkgs.tailscale.com/stable/#static
|
---
|
||||||
|
|
||||||
|
## 🔗 Useful Links
|
||||||
|
|
||||||
To build,
|
- [Tailscale](https://tailscale.com/)
|
||||||
From main directory of the version you want (arm/aarch64)
|
- [Tailscale GitHub](https://github.com/tailscale/tailscale)
|
||||||
|
- [WireGuard](https://www.wireguard.com/)
|
||||||
|
- [Axis Communications](https://www.axis.com/)
|
||||||
|
|
||||||
```
|
---
|
||||||
docker build --tag <package name> .
|
|
||||||
```
|
## 🖥️ Compatibility
|
||||||
```
|
|
||||||
docker cp $(docker create <package name>):/opt/app ./build
|
The Tailscale ACAP is compatible with Axis cameras with **ARM** and **AARCH64**-based SoCs.
|
||||||
|
|
||||||
|
You can verify your device details using the following command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl --anyauth "*" -u <username>:<password> <device_ip>/axis-cgi/basicdeviceinfo.cgi --data '{"apiVersion":"1.0","context":"Client defined request ID","method":"getAllProperties"}'
|
||||||
```
|
```
|
||||||
|
|
||||||
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.
|
> Replace `<device_ip>`, `<username>`, and `<password>` with your device credentials.
|
||||||
|
> Enclose your password in quotes `' '` if it contains special characters.
|
||||||
|
|
||||||
1. Architecture specific build directories are not required, target arch is now an argument
|
---
|
||||||
|
|
||||||
2. manifest files are templated as part of the build
|
## ⭐ Star History
|
||||||
|
|
||||||
3. Tailscale binaries are downloaded as part of the build
|
|
||||||
|
|
||||||
|
|
||||||
## Star History
|
|
||||||
|
|
||||||
[](https://www.star-history.com/#Mo3he/Axis_Cam_Tailscale&Date)
|
[](https://www.star-history.com/#Mo3he/Axis_Cam_Tailscale&Date)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💖 Support
|
||||||
|
|
||||||
|
If you like this project and want to support future updates:
|
||||||
|
👉 [Sponsor Me](https://github.com/sponsors/Mo3he)
|
||||||
|
|||||||
@@ -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 --tun=userspace-networking --socket=/usr/local/packages/Tailscale_VPN/tailscaled.sock &
|
/usr/local/packages/Tailscale_VPN/lib/tailscaled --socks5-server=localhost:1055 --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 --socket=/usr/local/packages/Tailscale_VPN/tailscaled.sock up
|
/usr/local/packages/Tailscale_VPN/lib/tailscale --socket=/usr/local/packages/Tailscale_VPN/tailscaled.sock up
|
||||||
wait
|
wait
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"embeddedSdkVersion": "3.0",
|
"embeddedSdkVersion": "3.0",
|
||||||
"vendorUrl": "https://www.tailscale.com",
|
"vendorUrl": "https://www.tailscale.com",
|
||||||
"runMode": "once",
|
"runMode": "once",
|
||||||
"version": "1.84.0",
|
"version": "1.90.6",
|
||||||
"architecture": "aarch64"
|
"architecture": "aarch64"
|
||||||
},
|
},
|
||||||
"configuration": {
|
"configuration": {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
},
|
},
|
||||||
"vendorUrl": "https://www.tailscale.com",
|
"vendorUrl": "https://www.tailscale.com",
|
||||||
"runMode": "once",
|
"runMode": "once",
|
||||||
"version": "1.84.0",
|
"version": "1.90.6",
|
||||||
"architecture": "aarch64"
|
"architecture": "aarch64"
|
||||||
},
|
},
|
||||||
"configuration": {
|
"configuration": {
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ fi
|
|||||||
|
|
||||||
# Start tailscaled
|
# Start tailscaled
|
||||||
logger -t "tailscale_script" "Starting tailscaled daemon"
|
logger -t "tailscale_script" "Starting tailscaled daemon"
|
||||||
$TAILSCALED_PATH --tun=userspace-networking --socket=$SOCKET_PATH &
|
$TAILSCALED_PATH --socks5-server=localhost:1055 --tun=userspace-networking --socket=$SOCKET_PATH &
|
||||||
TAILSCALED_PID=$!
|
TAILSCALED_PID=$!
|
||||||
|
|
||||||
# Wait for tailscaled to initialize
|
# Wait for tailscaled to initialize
|
||||||
@@ -61,4 +61,4 @@ logger -t "tailscale_script" "Tailscale VPN is running"
|
|||||||
logger -t "tailscale_script" "To change settings, modify parameters in ACAP web interface"
|
logger -t "tailscale_script" "To change settings, modify parameters in ACAP web interface"
|
||||||
|
|
||||||
# Wait for tailscaled process to exit
|
# Wait for tailscaled process to exit
|
||||||
wait $TAILSCALED_PID
|
wait $TAILSCALED_PID
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"embeddedSdkVersion": "3.0",
|
"embeddedSdkVersion": "3.0",
|
||||||
"vendorUrl": "https://www.tailscale.com",
|
"vendorUrl": "https://www.tailscale.com",
|
||||||
"runMode": "respawn",
|
"runMode": "respawn",
|
||||||
"version": "1.84.0"
|
"version": "1.90.6"
|
||||||
},
|
},
|
||||||
"configuration": {
|
"configuration": {
|
||||||
"settingPage": "index.html",
|
"settingPage": "index.html",
|
||||||
|
|||||||
@@ -1,32 +0,0 @@
|
|||||||
# 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 ./
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
# 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
|
|
||||||
```
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
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.
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
nop:
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
#!/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
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
<!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>
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
{
|
|
||||||
"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 --tun=userspace-networking --socket=/usr/local/packages/Tailscale_VPN/tailscaled.sock &
|
/usr/local/packages/Tailscale_VPN/lib/tailscaled --socks5-server=localhost:1055 --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 --socket=/usr/local/packages/Tailscale_VPN/tailscaled.sock up
|
/usr/local/packages/Tailscale_VPN/lib/tailscale --socket=/usr/local/packages/Tailscale_VPN/tailscaled.sock up
|
||||||
wait
|
wait
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"embeddedSdkVersion": "3.0",
|
"embeddedSdkVersion": "3.0",
|
||||||
"vendorUrl": "https://www.tailscale.com",
|
"vendorUrl": "https://www.tailscale.com",
|
||||||
"runMode": "once",
|
"runMode": "once",
|
||||||
"version": "1.84.0",
|
"version": "1.90.6",
|
||||||
"architecture": "armv7hf"
|
"architecture": "armv7hf"
|
||||||
},
|
},
|
||||||
"configuration": {
|
"configuration": {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
},
|
},
|
||||||
"vendorUrl": "https://www.tailscale.com",
|
"vendorUrl": "https://www.tailscale.com",
|
||||||
"runMode": "once",
|
"runMode": "once",
|
||||||
"version": "1.84.0",
|
"version": "1.90.6",
|
||||||
"architecture": "armv7hf"
|
"architecture": "armv7hf"
|
||||||
},
|
},
|
||||||
"configuration": {
|
"configuration": {
|
||||||
|
|||||||
Reference in New Issue
Block a user