Hey Unraiders, new member here! 👋
The new native ZFS support plus the Tailscale integration pushed me to try Unraid and so far I'm loving it!
I have installed a couple of Docker containers and they all play nice with Tailscale, so I can access them privately from anywhere with the qualified domain name of my Tailnet. It's glorious.
When I install StirlingPDF without Tailscale it works perfectly locally. But when I enable Tailscale (after authenticating it) the GUI stops working both locally (ERR_CONNECTION_REFUSED) and via Tailscale (HTTP ERROR 502).
The logs are different in each case, but I don't see anything actionable.
Working logs (without Tailscale)
cp: can't stat '/usr/share/tesseract-ocr/5/tessdata/*': No such file or directory
Picked up JAVA_TOOL_OPTIONS: -XX:+UnlockExperimentalVMOptions -XX:MaxRAMPercentage=75 -XX:InitiatingHeapOccupancyPercent=20 -XX:+G1PeriodicGCInvokesConcurrent -XX:G1PeriodicGCInterval=10000 -XX:+UseStringDeduplication -XX:G1PeriodicGCSystemLoadThreshold=70
INFO:unoserver:Starting unoserver 3.1.
INFO:unoserver:Command: /usr/bin/soffice --headless --invisible --nocrashreport --nodefault --nologo --nofirststartwizard --norestore -env:UserInstallation=file:///tmp/tmpe0yo30od --accept=socket,host=127.0.0.1,port=2002,tcpNoDelay=1;urp;StarOffice.ComponentContext
Invalid APP_LOCALE environment variable value. Falling back to default Locale.UK.
INFO:unoserver:Starting UnoConverter.
INFO:unoserver:Starting UnoComparer.
INFO:unoserver:Server PID: 48
Copying original files without overwriting existing files
Running Stirling PDF with DOCKER_ENABLE_SECURITY=false and VERSION_TAG=0.44.2
Setting permissions and ownership for necessary directories...
19:55:41.347 [main] INFO s.s.SPDF.config.ConfigInitializer - Settings file updated based on template changes.
19:55:41.362 [main] INFO s.software.SPDF.SPDFApplication - Settings file: ./configs/settings.yml
19:55:41.365 [main] INFO s.software.SPDF.SPDFApplication - Custom settings file: ./configs/custom_settings.yml
____ _____ ___ ____ _ ___ _ _ ____ ____ ____ _____
/ ___|_ _|_ _| _ \| | |_ _| \ | |/ ___| | _ \| _ \| ___|
\___ \ | | | || |_) | | | || \| | | _ _____| |_) | | | | |_
___) || | | || _ <| |___ | || |\ | |_| |_____| __/| |_| | _|
|____/ |_| |___|_| \_\_____|___|_| \_|\____| |_| |____/|_|
Powered by Spring Boot 3.4.3
19:55:41.910 [main] INFO s.software.SPDF.SPDFApplication - Starting SPDFApplication v0.44.2 using Java 21.0.6 with PID 21 (/app.jar started by stirlingpdfuser in /)
19:55:41.911 [main] INFO s.software.SPDF.SPDFApplication - The following 1 profile is active: "default"
19:55:43.984 [main] INFO s.software.SPDF.SPDFApplication - Running configs ApplicationProperties(legal=ApplicationProperties.Legal(termsAndConditions=https://www.stirlingpdf.com/terms-and-conditions, privacyPolicy=https://www.stirlingpdf.com/privacy-policy, accessibilityStatement=, cookiePolicy=, impressum=), security=ApplicationProperties.Security(enableLogin=false, csrfDisabled=false, initialLogin=ApplicationProperties.Security.InitialLogin(username=), oauth2=ApplicationProperties.Security.OAUTH2(enabled=false, issuer=, clientId=, autoCreateUser=true, blockRegistration=false, useAsUsername=email, scopes=[openid, profile, email], provider=google, client=ApplicationProperties.Security.OAUTH2.Client(google=Google [clientId=, clientSecret=NULL, scopes=[email, profile], useAsUsername=EMAIL], github=GitHub [clientId=, clientSecret=NULL, scopes=[read:user], useAsUsername=LOGIN], keycloak=Keycloak [issuer=, clientId=, clientSecret=NULL, scopes=[openid, profile, email], useAsUsername=PREFERRED_USERNAME]), logoutUrl=null), saml2=ApplicationProperties.Security.SAML2(provider=, enabled=false, autoCreateUser=true, blockRegistration=false, registrationId=stirling, idpSingleLogoutUrl=https://dev-XXXXXXXX.okta.com/app/dev-XXXXXXXX_stirlingpdf_1/externalKey/slo/saml, idpSingleLoginUrl=https://dev-XXXXXXXX.okta.com/app/dev-XXXXXXXX_stirlingpdf_1/externalKey/sso/saml, idpIssuer=, idpCert=class path resource [okta.cert]), loginAttemptCount=5, loginResetTimeMinutes=120, loginMethod=all, customGlobalAPIKey=null), system=ApplicationProperties.System(defaultLocale=en_GB, googlevisibility=false, showUpdate=false, showUpdateOnlyAdmin=false, customHTMLFiles=false, tessdataDir=/usr/share/tessdata, enableAlphaFunctionality=false, enableAnalytics=false, datasource=ApplicationProperties.Datasource(enableCustomDatabase=false, customDatabaseUrl=, type=postgresql, hostName=localhost, port=5432, name=postgres, username=postgres), disableSanitize=false, customPaths=ApplicationProperties.CustomPaths(pipeline=ApplicationProperties.CustomPaths.Pipeline(watchedFoldersDir=, finishedFoldersDir=, webUIConfigsDir=null), operations=ApplicationProperties.CustomPaths.Operations(weasyprint=, unoconvert=))), ui=ApplicationProperties.Ui(appName=null, homeDescription=null, appNameNavbar=null, languages=[]), endpoints=ApplicationProperties.Endpoints(toRemove=[], groupsToRemove=[]), metrics=ApplicationProperties.Metrics(enabled=false), automaticallyGenerated=ApplicationProperties.AutomaticallyGenerated(UUID=184dfeec-d0dd-4451-b1aa-cf7003677954, appVersion=0.44.2), enterpriseEdition=ApplicationProperties.EnterpriseEdition(enabled=false, maxUsers=0, ssoAutoLogin=false, customMetadata=ApplicationProperties.EnterpriseEdition.CustomMetadata(autoUpdateMetadata=false, author=username, creator=Stirling-PDF, producer=Stirling-PDF)), autoPipeline=ApplicationProperties.AutoPipeline(outputFolder=null), processExecutor=ApplicationProperties.ProcessExecutor(sessionLimit=ApplicationProperties.ProcessExecutor.SessionLimit(libreOfficeSessionLimit=1, pdfToHtmlSessionLimit=1, pythonOpenCvSessionLimit=8, weasyPrintSessionLimit=16, installAppSessionLimit=1, calibreSessionLimit=1, qpdfSessionLimit=4, tesseractSessionLimit=1), timeoutMinutes=ApplicationProperties.ProcessExecutor.TimeoutMinutes(libreOfficeTimeoutMinutes=30, pdfToHtmlTimeoutMinutes=20, pythonOpenCvTimeoutMinutes=30, weasyPrintTimeoutMinutes=30, installAppTimeoutMinutes=60, calibreTimeoutMinutes=30, tesseractTimeoutMinutes=30, qpdfTimeoutMinutes=30)))
19:55:45.031 [main] INFO s.s.S.c.api.SplitPdfBySizeController - SplitPdfBySizeController initialized with pdfDocumentFactory: CustomPDFDocumentFactory
19:55:45.106 [main] INFO s.software.SPDF.utils.FileMonitor - Monitoring directory: ./pipeline/watchedFolders
19:55:46.575 [main] INFO s.software.SPDF.SPDFApplication - Started SPDFApplication in 5.206 seconds (process running for 6.575)
19:55:46.583 [scheduling-1] WARN s.software.SPDF.utils.FileMonitor - not monitoring any directory, even the root directory itself: ./pipeline/watchedFolders
19:55:46.584 [scheduling-1] INFO s.software.SPDF.utils.FileMonitor - Registered directory: ./pipeline/watchedFolders
19:55:46.587 [main] INFO s.software.SPDF.SPDFApplication - Stirling-PDF Started.
19:55:46.587 [main] INFO s.software.SPDF.SPDFApplication - Navigate to http://localhost:8080
Non-working logs (with Tailscale active)
-cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
--class-path <class search path of directories and zip/jar files>
A : separated list of directories, JAR archives,
and ZIP archives to search for class files.
-p <module path>
--module-path <module path>...
A : separated list of elements, each element is a file path
to a module or a directory containing modules. Each module is either
a modular JAR or an exploded-module directory.
--upgrade-module-path <module path>...
A : separated list of elements, each element is a file path
to a module or a directory containing modules to replace
upgradeable modules in the runtime image. Each module is either
a modular JAR or an exploded-module directory.
--add-modules <module name>[,<module name>...]
root modules to resolve in addition to the initial module.
<module name> can also be ALL-DEFAULT, ALL-SYSTEM,
ALL-MODULE-PATH.
--enable-native-access <module name>[,<module name>...]
modules that are permitted to perform restricted native operations.
<module name> can also be ALL-UNNAMED.
--list-modules
list observable modules and exit
-d <module name>
--describe-module <module name>
describe a module and exit
--dry-run create VM and load main class but do not execute main method.
The --dry-run option may be useful for validating the
command-line options such as the module system configuration.
--validate-modules
validate all modules and exit
The --validate-modules option may be useful for finding
conflicts and other errors with modules on the module path.
-D<name>=<value>
set a system property
-verbose:[class|module|gc|jni]
enable verbose output for the given subsystem
-version print product version to the error stream and exit
--version print product version to the output stream and exit
-showversion print product version to the error stream and continue
--show-version
print product version to the output stream and continue
--show-module-resolution
show module resolution output during startup
-? -h -help
print this help message to the error stream
--help print this help message to the output stream
-X print help on extra options to the error stream
--help-extra print help on extra options to the output stream
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
enable assertions with specified granularity
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
disable assertions with specified granularity
-esa | -enablesystemassertions
enable system assertions
-dsa | -disablesystemassertions
disable system assertions
-agentlib:<libname>[=<options>]
load native agent library <libname>, e.g. -agentlib:jdwp
see also -agentlib:jdwp=help
-agentpath:<pathname>[=<options>]
load native agent library by full pathname
-javaagent:<jarpath>[=<options>]
load Java programming language agent, see java.lang.instrument
-splash:<imagepath>
show splash screen with specified image
HiDPI scaled images are automatically supported and used
if available. The unscaled image filename, e.g. image.ext,
should always be passed as the argument to the -splash option.
The most appropriate scaled image provided will be picked up
automatically.
See the SplashScreen API documentation for more information
@argument files
one or more argument files containing options
--disable-@files
prevent further argument file expansion
--enable-preview
allow classes to depend on preview features of this release
To specify an argument for a long option, you can use --<name>=<value> or
--<name> <value>.
INFO:unoserver:Starting unoserver 3.1.
INFO:unoserver:Command: /usr/bin/soffice --headless --invisible --nocrashreport --nodefault --nologo --nofirststartwizard --norestore -env:UserInstallation=file:///tmp/tmpigv1_62i --accept=socket,host=127.0.0.1,port=2002,tcpNoDelay=1;urp;StarOffice.ComponentContext
INFO:unoserver:Starting UnoConverter.
INFO:unoserver:Starting UnoComparer.
INFO:unoserver:Server PID: 154
Does anyone else have the same problem?