diff --git a/README.md b/README.md
index d5453aff5..36a75e2ca 100644
--- a/README.md
+++ b/README.md
@@ -744,10 +744,18 @@ Download and extract the latest `Jackett.Binaries.macOS.tar.gz` or `Jackett.Bina
Detailed instructions are available at [LinuxServer.io Jackett Docker](https://hub.docker.com/r/linuxserver/jackett/). The Jackett Docker is highly recommended, especially if you are having Mono stability issues or having issues running Mono on your system e.g. QNAP, Synology. Thanks to [LinuxServer.io](https://linuxserver.io)
+## Installation on Alpine Linux
+Detailed instructions are available at [Jackett's Wiki](https://github.com/Jackett/Jackett/wiki/Installation-on-Alpine-Linux).
+
+
## Installation on Synology
Jackett is available as a [beta package](https://synocommunity.com/package/jackett) from [SynoCommunity](https://synocommunity.com/)
+## Installation on OpenWrt
+Detailed instructions are available at [Jackett's Wiki](https://github.com/Jackett/Jackett/wiki/Installation-on-OpenWrt).
+
+
## Running Jackett behind a reverse proxy
When running jackett behind a reverse proxy make sure that the original hostname of the request is passed to Jackett. If HTTPS is used also set the X-Forwarded-Proto header to "https". Don't forget to adjust the "Base path override" Jackett option accordingly.
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 50b98f02d..b2d8f9cc2 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -78,6 +78,27 @@ stages:
runtime: linux-arm64
archiveType: tar
artifactName: Jackett.Binaries.LinuxARM64.tar.gz
+ LinuxMuslAMDx64:
+ buildDescription: Linux musl AMD x64
+ imageName: ubuntu-20.04
+ framework: $(netCoreFramework)
+ runtime: linux-musl-x64
+ archiveType: tar
+ artifactName: Jackett.Binaries.LinuxMuslAMDx64.tar.gz
+ LinuxMuslARM32:
+ buildDescription: Linux musl ARM32
+ imageName: ubuntu-20.04
+ framework: $(netCoreFramework)
+ runtime: linux-musl-arm
+ archiveType: tar
+ artifactName: Jackett.Binaries.LinuxMuslARM32.tar.gz
+ LinuxMuslARM64:
+ buildDescription: Linux musl ARM64
+ imageName: ubuntu-20.04
+ framework: $(netCoreFramework)
+ runtime: linux-musl-arm64
+ archiveType: tar
+ artifactName: Jackett.Binaries.LinuxMuslARM64.tar.gz
pool:
vmImage: $(imageName)
displayName: ${{ variables.buildDescription }}
diff --git a/src/Jackett.Common/Services/UpdateService.cs b/src/Jackett.Common/Services/UpdateService.cs
index 8be99be54..37d3e0124 100644
--- a/src/Jackett.Common/Services/UpdateService.cs
+++ b/src/Jackett.Common/Services/UpdateService.cs
@@ -161,7 +161,9 @@ namespace Jackett.Common.Services
private string GetUpdaterPath(string tempDirectory) =>
variant == Variants.JackettVariant.CoreMacOs || variant == Variants.JackettVariant.CoreMacOsArm64 ||
variant == Variants.JackettVariant.CoreLinuxAmdx64 || variant == Variants.JackettVariant.CoreLinuxArm32 ||
- variant == Variants.JackettVariant.CoreLinuxArm64
+ variant == Variants.JackettVariant.CoreLinuxArm64 ||
+ variant == Variants.JackettVariant.CoreLinuxMuslAmdx64 || variant == Variants.JackettVariant.CoreLinuxMuslArm32 ||
+ variant == Variants.JackettVariant.CoreLinuxMuslArm64
? Path.Combine(tempDirectory, "Jackett", "JackettUpdater")
: Path.Combine(tempDirectory, "Jackett", "JackettUpdater.exe");
@@ -265,7 +267,9 @@ namespace Jackett.Common.Services
if (variant == Variants.JackettVariant.CoreMacOs || variant == Variants.JackettVariant.CoreMacOsArm64
|| variant == Variants.JackettVariant.CoreLinuxAmdx64 || variant == Variants.JackettVariant.CoreLinuxArm32
- || variant == Variants.JackettVariant.CoreLinuxArm64 || variant == Variants.JackettVariant.Mono)
+ || variant == Variants.JackettVariant.CoreLinuxArm64 || variant == Variants.JackettVariant.Mono
+ || variant == Variants.JackettVariant.CoreLinuxMuslAmdx64 || variant == Variants.JackettVariant.CoreLinuxMuslArm32
+ || variant == Variants.JackettVariant.CoreLinuxMuslArm64)
{
// When the files get extracted, the execute permission for jackett and JackettUpdater don't get carried across
diff --git a/src/Jackett.Common/Utils/Variants.cs b/src/Jackett.Common/Utils/Variants.cs
index a9bc5020f..9420da011 100644
--- a/src/Jackett.Common/Utils/Variants.cs
+++ b/src/Jackett.Common/Utils/Variants.cs
@@ -15,7 +15,10 @@ namespace Jackett.Common.Utils
CoreMacOsArm64,
CoreLinuxAmdx64,
CoreLinuxArm32,
- CoreLinuxArm64
+ CoreLinuxArm64,
+ CoreLinuxMuslAmdx64,
+ CoreLinuxMuslArm32,
+ CoreLinuxMuslArm64
}
public JackettVariant GetVariant()
@@ -29,12 +32,21 @@ namespace Jackett.Common.Utils
return JackettVariant.CoreMacOs;
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) && RuntimeInformation.ProcessArchitecture == Architecture.Arm64)
return JackettVariant.CoreMacOsArm64;
+#if ISLINUXMUSL
+ if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && RuntimeInformation.ProcessArchitecture == Architecture.X64)
+ return JackettVariant.CoreLinuxMuslAmdx64;
+ if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && RuntimeInformation.ProcessArchitecture == Architecture.Arm)
+ return JackettVariant.CoreLinuxMuslArm32;
+ if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && RuntimeInformation.ProcessArchitecture == Architecture.Arm64)
+ return JackettVariant.CoreLinuxMuslArm64;
+#else
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && RuntimeInformation.ProcessArchitecture == Architecture.X64)
return JackettVariant.CoreLinuxAmdx64;
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && RuntimeInformation.ProcessArchitecture == Architecture.Arm)
return JackettVariant.CoreLinuxArm32;
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && RuntimeInformation.ProcessArchitecture == Architecture.Arm64)
return JackettVariant.CoreLinuxArm64;
+#endif
}
else
{
@@ -67,6 +79,12 @@ namespace Jackett.Common.Utils
return "Jackett.Binaries.LinuxARM32.tar.gz";
case JackettVariant.CoreLinuxArm64:
return "Jackett.Binaries.LinuxARM64.tar.gz";
+ case JackettVariant.CoreLinuxMuslAmdx64:
+ return "Jackett.Binaries.LinuxMuslAMDx64.tar.gz";
+ case JackettVariant.CoreLinuxMuslArm32:
+ return "Jackett.Binaries.LinuxMuslARM32.tar.gz";
+ case JackettVariant.CoreLinuxMuslArm64:
+ return "Jackett.Binaries.LinuxMuslARM64.tar.gz";
default:
return "";
}
@@ -76,7 +94,9 @@ namespace Jackett.Common.Utils
{
return (variant == JackettVariant.CoreMacOs || variant == JackettVariant.CoreMacOsArm64
|| variant == JackettVariant.CoreLinuxAmdx64 || variant == JackettVariant.CoreLinuxArm32
- || variant == JackettVariant.CoreLinuxArm64);
+ || variant == JackettVariant.CoreLinuxArm64
+ || variant == JackettVariant.CoreLinuxMuslAmdx64 || variant == JackettVariant.CoreLinuxMuslArm32
+ || variant == JackettVariant.CoreLinuxMuslArm64);
}
}
}
diff --git a/src/Jackett.Server/Jackett.Server.csproj b/src/Jackett.Server/Jackett.Server.csproj
index 6f0664420..a5a4fb503 100644
--- a/src/Jackett.Server/Jackett.Server.csproj
+++ b/src/Jackett.Server/Jackett.Server.csproj
@@ -6,6 +6,7 @@
Exe
false
+ ISLINUXMUSL
@@ -64,7 +65,9 @@
-
+
+ DefineConstants=ISLINUXMUSL
+
diff --git a/src/Jackett.Updater/Jackett.Updater.csproj b/src/Jackett.Updater/Jackett.Updater.csproj
index f536c127e..445c000c6 100644
--- a/src/Jackett.Updater/Jackett.Updater.csproj
+++ b/src/Jackett.Updater/Jackett.Updater.csproj
@@ -10,6 +10,7 @@
false
+ ISLINUXMUSL
@@ -18,7 +19,9 @@
-
+
+ DefineConstants=ISLINUXMUSL
+
diff --git a/src/Jackett.Updater/Program.cs b/src/Jackett.Updater/Program.cs
index 26e844cdc..73512f70c 100644
--- a/src/Jackett.Updater/Program.cs
+++ b/src/Jackett.Updater/Program.cs
@@ -671,7 +671,9 @@ namespace Jackett.Updater
if (variant == Variants.JackettVariant.CoreMacOs || variant == Variants.JackettVariant.CoreMacOsArm64
|| variant == Variants.JackettVariant.CoreLinuxAmdx64 || variant == Variants.JackettVariant.CoreLinuxArm32
- || variant == Variants.JackettVariant.CoreLinuxArm64)
+ || variant == Variants.JackettVariant.CoreLinuxArm64
+ || variant == Variants.JackettVariant.CoreLinuxMuslAmdx64 || variant == Variants.JackettVariant.CoreLinuxMuslArm32
+ || variant == Variants.JackettVariant.CoreLinuxMuslArm64)
{
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;