Compare commits

..
21 Commits
Author SHA1 Message Date
github-actions[bot] 713550d1c0 Update Tailscale to v1.94.2 2026-02-26 02:46:36 +00:00
github-actions[bot] 14db783425 Update Tailscale to v1.94.1 2026-01-28 02:26:05 +00:00
github-actions[bot] c02f0aa498 Update Tailscale to v1.92.5 2026-01-07 02:22:01 +00:00
github-actions[bot] 96477cdb0d Update Tailscale to v1.92.3 2025-12-17 08:38:44 +00:00
Weston BliedenandGitHub 4e0eabeec3 Update version in manifest.json to 1.92.1 2025-12-17 09:36:08 +01:00
Weston BliedenandGitHub 59161ccd91 Downgrade version from 1.92.3 to 1.92.1 2025-12-17 09:35:26 +01:00
Weston BliedenandGitHub e1b2ac3490 Downgrade version from 1.92.3 to 1.92.1 2025-12-17 09:35:04 +01:00
Weston BliedenandGitHub 5f03ac918f Update version in manifest.json to 1.92.1 2025-12-17 09:34:45 +01:00
Weston BliedenandGitHub 2db9f27181 Update version in manifest.json to 1.92.1 2025-12-17 09:34:26 +01:00
Weston Blieden 396b450415 Store state in localdata
The tailscaled.state file in localdata will now persist across updates, so your camera stays connected to Tailscale without re-authentication
2025-12-17 09:31:34 +01:00
github-actions[bot] 2d1ff5e8a6 Update Tailscale to v1.92.3 2025-12-17 07:36:38 +00:00
Weston BliedenandGitHub 7655028477 Update cron schedule for build workflow 2025-12-17 08:33:36 +01:00
Mo3he f890d8df1a Re add lib folders after housekeeping 2025-12-15 15:48:21 +01:00
Weston BliedenandGitHub df0756a64d Update .gitignore to exclude release and Tailscale files
Added entries to ignore release artifacts and Tailscale files.
2025-12-15 12:25:06 +01:00
Weston BliedenandGitHub df2cf84c6c Modify build.yml to limit git add to manifest files
Only commit manifest files and ignore release artifacts.
2025-12-15 12:23:57 +01:00
github-actions[bot] f420e7d24c Update Tailscale to v1.92.1 2025-12-15 11:02:54 +00:00
Weston BliedenandGitHub 3dc49f1254 Enhance Tailscale version retrieval logic
Updated the workflow to check for ARM build availability and fallback to the latest version if not found.
2025-12-15 11:58:09 +01:00
github-actions[bot] 2005ba32db Update Tailscale to v1.90.9 2025-11-26 15:08:35 +00:00
github-actions[bot] 1f9c6a9e45 Update Tailscale to v1.90.8 2025-11-20 14:26:56 +00:00
github-actions[bot] 6148fc3298 Update Tailscale to v1.90.6 2025-11-03 03:52:08 +00:00
github-actions[bot] bd60c24b5b Update Tailscale to v1.90.3 2025-10-28 07:40:27 +00:00
23 changed files with 193 additions and 59 deletions
+25 -5
View File
@@ -2,7 +2,7 @@ name: Auto Build & Release Tailscale ACAP
on:
schedule:
- cron: "0 3 * * 1" # Every Monday at 03:00 UTC
- cron: "0 0 * * *" # Every Monday at 03:00 UTC
workflow_dispatch:
jobs:
@@ -20,8 +20,28 @@ jobs:
- 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'
# 1. Start from GitHub latest
GH_TAG=$(curl -s https://api.github.com/repos/tailscale/tailscale/releases/latest | jq -r .tag_name)
GH_VERSION=${GH_TAG#v}
echo "GitHub latest: $GH_VERSION"
# 2. See if static ARM build exists for that version
if curl -sfI "https://pkgs.tailscale.com/stable/tailscale_${GH_VERSION}_arm.tgz" > /dev/null; then
VERSION="$GH_VERSION"
echo "Using GitHub latest (has ARM package): $VERSION"
else
echo "No ARM package for $GH_VERSION, falling back to latest version on pkgs.tailscale.com"
# 3. Derive latest version that actually has an ARM tarball
VERSION=$(
curl -s https://pkgs.tailscale.com/stable/ \
| grep -o 'tailscale_[0-9.]*_arm\.tgz' \
| sed -E 's/^tailscale_([0-9.]+)_arm\.tgz$/\1/' \
| sort -V | tail -n1
)
echo "Fallback version: $VERSION"
fi
echo "RELEASE_VERSION=$VERSION" >> $GITHUB_ENV
echo "version=$VERSION" >> $GITHUB_OUTPUT
@@ -128,8 +148,8 @@ jobs:
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/*
# Only commit manifests; do not track release artifacts
git add */app/manifest.json
if git diff --cached --quiet; then
echo "No changes to commit"
else
+8
View File
@@ -1,2 +1,10 @@
**/.DS_Store
**/build
# Do not track release artifacts
releases/
build/
# Do not track downloaded Tailscale tarballs and temp bins
tailscale_bins/
*.tgz
+28 -8
View File
@@ -1,10 +1,30 @@
#!/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 --socks5-server=localhost:1055 --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
echo "Starting Service"
# Define paths
APP_DIR="/usr/local/packages/Tailscale_VPN"
STATE_DIR="$APP_DIR/localdata"
# Create localdata directory if it doesn't exist
mkdir -p "$STATE_DIR"
# Set permissions
chmod 777 "$APP_DIR/lib/tailscale"
chmod 777 "$APP_DIR/lib/tailscaled"
# Start tailscaled with state stored in localdata
"$APP_DIR/lib/tailscaled" \
--state="$STATE_DIR/tailscaled.state" \
--socket="$STATE_DIR/tailscaled.sock" \
--socks5-server=localhost:1055 \
--tun=userspace-networking &
echo "Service Started"
sleep 2
echo "Scroll to Bottom for link"
# Run tailscale up with the socket in localdata
"$APP_DIR/lib/tailscale" --socket="$STATE_DIR/tailscaled.sock" up
wait
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+2 -2
View File
@@ -8,11 +8,11 @@
"embeddedSdkVersion": "3.0",
"vendorUrl": "https://www.tailscale.com",
"runMode": "once",
"version": "1.90.2",
"version": "1.94.2",
"architecture": "aarch64"
},
"configuration": {
"settingPage": "index.html"
}
}
}
}
+26 -8
View File
@@ -1,10 +1,28 @@
#!/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 &
echo "Service Started"
echo "Scroll to Bottom for link"
/usr/local/packages/Tailscale_VPN/lib/tailscale up --accept-routes
wait
echo "Starting Service"
# Define paths
APP_DIR="/usr/local/packages/Tailscale_VPN"
STATE_DIR="$APP_DIR/localdata"
# Create localdata directory if it doesn't exist
mkdir -p "$STATE_DIR"
# Set permissions
chmod 777 "$APP_DIR/lib/tailscale"
chmod 777 "$APP_DIR/lib/tailscaled"
# Start tailscaled with state stored in localdata
"$APP_DIR/lib/tailscaled" \
--state="$STATE_DIR/tailscaled.state" \
--socket="$STATE_DIR/tailscaled.sock" &
echo "Service Started"
sleep 2
echo "Scroll to Bottom for link"
# Run tailscale up with the socket in localdata
"$APP_DIR/lib/tailscale" --socket="$STATE_DIR/tailscaled.sock" up --accept-routes
wait
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+2 -2
View File
@@ -12,11 +12,11 @@
},
"vendorUrl": "https://www.tailscale.com",
"runMode": "once",
"version": "1.90.2",
"version": "1.94.2",
"architecture": "aarch64"
},
"configuration": {
"settingPage": "index.html"
}
}
}
}
+27 -6
View File
@@ -17,7 +17,9 @@
#include <errno.h>
#define APP_NAME "serverconfig"
#define CONFIG_FILE "/usr/local/packages/serverconfig/config.txt"
#define APP_DIR "/usr/local/packages/serverconfig"
#define STATE_DIR APP_DIR "/localdata"
#define CONFIG_FILE STATE_DIR "/config.txt"
#define SCRIPT_PATH "/usr/local/packages/serverconfig/start_tailscale.sh"
#define SCRIPT_SOURCE "/usr/local/packages/serverconfig/lib/start_tailscale.sh"
@@ -27,6 +29,19 @@ static gboolean signal_handler(gpointer loop) {
return G_SOURCE_REMOVE;
}
// Create localdata directory
static void ensure_localdata_exists(void) {
struct stat st = {0};
if (stat(STATE_DIR, &st) == -1) {
if (mkdir(STATE_DIR, 0755) != 0) {
syslog(LOG_ERR, "Failed to create localdata directory: %s", strerror(errno));
} else {
syslog(LOG_INFO, "Created localdata directory: %s", STATE_DIR);
}
}
}
// Copy script from lib folder to main directory
static void copy_script_file(void) {
char buffer[4096];
@@ -109,6 +124,9 @@ static void update_config_file(AXParameter* handle) {
gchar* key_value = NULL;
FILE* file;
// Ensure localdata directory exists
ensure_localdata_exists();
// Get parameter values
if (!ax_parameter_get(handle, "CustomServer", &server_value, &error)) {
syslog(LOG_ERR, "Failed to get CustomServer: %s",
@@ -125,7 +143,7 @@ static void update_config_file(AXParameter* handle) {
key_value = g_strdup("");
}
// Write to config file
// Write to config file in localdata
file = fopen(CONFIG_FILE, "w");
if (file) {
fprintf(file, "custom_server=%s\n", server_value ? server_value : "");
@@ -135,12 +153,12 @@ static void update_config_file(AXParameter* handle) {
// Set permissions to ensure the file is readable
chmod(CONFIG_FILE, 0644);
syslog(LOG_INFO, "Updated configuration file: custom_server=%s",
syslog(LOG_INFO, "Updated configuration file in local custom_server=%s",
server_value ? server_value : "");
syslog(LOG_INFO, "Updated configuration file: auth_key=%s",
syslog(LOG_INFO, "Updated configuration file in local auth_key=%s",
key_value && strlen(key_value) > 0 ? "(set)" : "(empty)");
} else {
syslog(LOG_ERR, "Failed to open config file for writing");
syslog(LOG_ERR, "Failed to open config file for writing: %s", strerror(errno));
}
// Clean up
@@ -185,6 +203,9 @@ int main(void) {
exit(1);
}
// Ensure localdata directory exists
ensure_localdata_exists();
// Ensure script is copied from lib folder
copy_script_file();
@@ -229,4 +250,4 @@ int main(void) {
ax_parameter_free(handle);
return 0;
}
}
+15 -6
View File
@@ -5,10 +5,15 @@
pkill -f tailscaled || true
# Simple script to start Tailscale with custom configuration
CONFIG_FILE="/usr/local/packages/serverconfig/config.txt"
TAILSCALED_PATH="/usr/local/packages/serverconfig/lib/tailscaled"
TAILSCALE_PATH="/usr/local/packages/serverconfig/lib/tailscale"
SOCKET_PATH="/usr/local/packages/serverconfig/tailscaled.sock"
APP_DIR="/usr/local/packages/serverconfig"
STATE_DIR="$APP_DIR/localdata"
CONFIG_FILE="$STATE_DIR/config.txt"
TAILSCALED_PATH="$APP_DIR/lib/tailscaled"
TAILSCALE_PATH="$APP_DIR/lib/tailscale"
SOCKET_PATH="$STATE_DIR/tailscaled.sock"
# Create localdata directory if it doesn't exist
mkdir -p "$STATE_DIR"
# Log to syslog
logger -t "tailscale_script" "Starting Tailscale VPN service"
@@ -31,9 +36,13 @@ if [ -f "$CONFIG_FILE" ]; then
done < "$CONFIG_FILE"
fi
# Start tailscaled
# Start tailscaled with state stored in localdata
logger -t "tailscale_script" "Starting tailscaled daemon"
$TAILSCALED_PATH --socks5-server=localhost:1055 --tun=userspace-networking --socket=$SOCKET_PATH &
$TAILSCALED_PATH \
--state="$STATE_DIR/tailscaled.state" \
--socket=$SOCKET_PATH \
--socks5-server=localhost:1055 \
--tun=userspace-networking &
TAILSCALED_PID=$!
# Wait for tailscaled to initialize
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+2 -2
View File
@@ -8,7 +8,7 @@
"embeddedSdkVersion": "3.0",
"vendorUrl": "https://www.tailscale.com",
"runMode": "respawn",
"version": "1.90.2"
"version": "1.94.2"
},
"configuration": {
"settingPage": "index.html",
@@ -26,4 +26,4 @@
]
}
}
}
}
+28 -8
View File
@@ -1,10 +1,30 @@
#!/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 --socks5-server=localhost:1055 --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
echo "Starting Service"
# Define paths
APP_DIR="/usr/local/packages/Tailscale_VPN"
STATE_DIR="$APP_DIR/localdata"
# Create localdata directory if it doesn't exist
mkdir -p "$STATE_DIR"
# Set permissions
chmod 777 "$APP_DIR/lib/tailscale"
chmod 777 "$APP_DIR/lib/tailscaled"
# Start tailscaled with state stored in localdata
"$APP_DIR/lib/tailscaled" \
--state="$STATE_DIR/tailscaled.state" \
--socket="$STATE_DIR/tailscaled.sock" \
--socks5-server=localhost:1055 \
--tun=userspace-networking &
echo "Service Started"
sleep 2
echo "Scroll to Bottom for link"
# Run tailscale up with the socket in localdata
"$APP_DIR/lib/tailscale" --socket="$STATE_DIR/tailscaled.sock" up
wait
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+2 -2
View File
@@ -8,11 +8,11 @@
"embeddedSdkVersion": "3.0",
"vendorUrl": "https://www.tailscale.com",
"runMode": "once",
"version": "1.90.2",
"version": "1.94.2",
"architecture": "armv7hf"
},
"configuration": {
"settingPage": "index.html"
}
}
}
}
+26 -8
View File
@@ -1,10 +1,28 @@
#!/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 &
echo "Service Started"
echo "Scroll to Bottom for link"
/usr/local/packages/Tailscale_VPN/lib/tailscale up --accept-routes
wait
echo "Starting Service"
# Define paths
APP_DIR="/usr/local/packages/Tailscale_VPN"
STATE_DIR="$APP_DIR/localdata"
# Create localdata directory if it doesn't exist
mkdir -p "$STATE_DIR"
# Set permissions
chmod 777 "$APP_DIR/lib/tailscale"
chmod 777 "$APP_DIR/lib/tailscaled"
# Start tailscaled with state stored in localdata
"$APP_DIR/lib/tailscaled" \
--state="$STATE_DIR/tailscaled.state" \
--socket="$STATE_DIR/tailscaled.sock" &
echo "Service Started"
sleep 2
echo "Scroll to Bottom for link"
# Run tailscale up with the socket in localdata
"$APP_DIR/lib/tailscale" --socket="$STATE_DIR/tailscaled.sock" up --accept-routes
wait
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+2 -2
View File
@@ -12,11 +12,11 @@
},
"vendorUrl": "https://www.tailscale.com",
"runMode": "once",
"version": "1.90.2",
"version": "1.94.2",
"architecture": "armv7hf"
},
"configuration": {
"settingPage": "index.html"
}
}
}
}