Hi,
Im stuck - Have spent 2 days on this now and still scratching my head over this.
Just migrated from truenas 13.3 to Scale FangTooth 25.04
All good until I stumbled across this issue…
No matter what I do, the ix-apps content ends up outside my pools.
There;s no ix-applications created anywhere.
So I tried to start from scratch by…
Unset Pool
Manually deleted the /mnt/.ix-apps
Choose Pool (in my case /mnt/STORE05)
Once created I can see STORE05 being the default when re-entering Choose Pool
No /mnt/STORE05/ix-applications created on my /mnt/STORE05 pool
However a fresh /mnt/.ix-apps located outside my pools
So figured that the ix-applications only might be created once I actually install an app - so installed Plex - Runs - but NO ix-applications created.
What the…???
The missing ix-applications creates issues when I plan to install openvpn as part of transmission.
Also not keen on having stuff hanging outside my pools
Anyone with ideas on why this is happening and the solution, please get in touch
The answer is simple: the ix-application dataset was used by the old kubernetes apps backend until 24.04 and doesn’t get used by the new docker backend from 24.10 or newer. The docker backend uses a hidden dataset called .ix-apps which gets created on the pool you choose.
Thank for the reply Lars *eller blir det Lasse i Svea )
I am trying to follow some vids on how to install openvpn for transmission on scale and so far they all expects this ix-applications on the pool.
The ./ix-apps that get created on my system doesnt seem to have anything near the content the ix-applications used to have.
Any idea/suggestion of installation source on how to integrate openvpn PIA with transmission?
As it sits I setup the vpn on my router but since all apps goes through the main trunas scale ip, there’s some drawbacks I dont like.
For one, there;;s no way I can open a port on router level since PIA’s port assisgned is dynamic and keep changing.
I had a nice openvpn setup for pia running on core 13.3 but I havent found a way to implement this on scale
That’s because those videos are propably for the old kubernetes based apps backend and are no longer applicable for the new docker backend.
i’d suggest you follow this guide since it’s written for the new docker backend.
Edit:
Another option would be to assign transmition its own ip address and then tell your router to tunnel to that ip address.
But i believe there’s still routing issues with the per-app-ip setup
Option 1 is where I started going down the rabbit hole of ix-applications
Option 2 is pretty much what I have used up until recently, but that option wont allow me to find the ever changing port that PIA provides dynamically.
I just tried the YAML but that also shat itself once I tried to run " docker-compose up -d" resulting in “command not found”
Honestly think it was easier under freebsd - At least I could see what the f’ actually goes on. Feels like I am blind here - No visibility or access to bin libraries etc and scratching my head biig time atm
Im sure once I get over this hurdle it will be fine, but right now it feels very frustrating
I would propably not use docker commands from shell, you’re supposed to use the truenas gui, which has a build in way to deploy compose yaml.
Sadly that option is kind of hidden away. If you navigate to the apps section in the gui top right corner big blue “discover apps” button and then click on the three dots next to the blue custom app button. That should open a window where you can paste in your compose files or you follow this version
which saves the yaml on a dataset but deploys it via truenas gui
If it fails to deploy from the gui you can check with
The ix-apps dataset is stored on one of your pools, but the mountpoint is different. You’re not really intended to be doing anything with that mountpoint or the hidden dataset for that matter.
ix-applications isn’t used anymore.
Did you also try docker compose up -d?
And why run it in the first place?
Hi Lars. I need your input - going complete nuts over this and I feel like a complete idiot
Can you see whats wrong with this YAML???
What I need…
Transmission with openvpn for PIA
Trying to use “haugene/transmission-openvpn” image
Have created the following datasets.
/mnt/STORE05/TrueNasScaleApps
/mnt/STORE05/TrueNasScaleApps/Transmission-vpn
/mnt/STORE05/TrueNasScaleApps/Transmission-vpn/TransmissionConfig
Above datasets was all created with the “apps” user as owner. i.e Uid and Gid=568
The YAML deploys but spits the dummy with “No containers are available.”
During its deployment I see the following cycling between
"tcp://0.0.0.0:51413 : 51413
tcp://::::51413 : 51413
tcp://0.0.0.0:30096 : 9091
tcp://::::30096 : 9091
Containers 1"
and
“No containers are available.”
until it gives up in stopped mode.
This is the YAML I plastered together from various sources
services:
transmission-vpn:
image: haugene/transmission-openvpn:latest
container_name: transmission-vpn
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
volumes:
- >-
/mnt/STORE05/TrueNasScaleApps/Transmission-vpn/TransmissionConfig:/config
- /mnt/TORRENT/BitTorrent:/media
- /mnt/TORRENT/BitTorrent/tv-sonarr:/media/tv-sonarr
- /mnt/TORRENT/BitTorrent/radarr:/media/radarr
environment:
- OPENVPN_PROVIDER=PIA
- OPENVPN_CONFIG=Australia/Perth
- OPENVPN_COUNTRY=AU
- OPENVPN_USERNAME=
- OPENVPN_PASSWORD=
- LOCAL_NETWORK=192.168.2.0/24
- PUID=568
- PGID=568
- TZ=Australia/Perth
- TRANSMISSION_WEB_HOME=/transmission/web
- TRANSMISSION_RPC_AUTHENTICATION_REQUIRED=false
- TRANSMISSION_RPC_USERNAME=
- TRANSMISSION_RPC_PASSWORD=
- WEBUI_PORT=9091
ports:
# Map the Web UI port to a host port (e.g., 30096)
- “30096:9091”
# Optional: Port for torrent traffic
- “51413:51413”
restart: unless-stopped
first thing i notice is that you have quotes around the port mappings, which should not be nessessary. But it was kinda hard to read without the proper formating. For the future post yaml or any code for that matter as “preformated text” using ``` at the start and end of the code. It will look much cleaner and lets you copy the code
just deployed this YAML and it starts at least, but the transmission log spits out
“[2025-10-15 15:46:23.456] ERR utils.cc:105 Couldn’t read ‘/transmission/web/index.html’: No such file or directory (2) (utils.cc:105)”
when trying to access http://192.168.2.100:30096/transmission/web/
This is the YAML config
services:
transmission-vpn:
image: haugene/transmission-openvpn:latest
container_name: transmission-vpn
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
volumes:
- >-
/mnt/STORE05/TrueNasScaleApps/Transmission-vpn/TransmissionConfig:/config
- /mnt/TORRENT/BitTorrent:/media
- /mnt/TORRENT/BitTorrent/tv-sonarr:/media/tv-sonarr
- /mnt/TORRENT/BitTorrent/radarr:/media/radarr
environment:
- OPENVPN_PROVIDER=PIA
- OPENVPN_COUNTRY=AU
- OPENVPN_USERNAME=
- OPENVPN_PASSWORD=
- LOCAL_NETWORK=192.168.2.0/24
- PUID=568
- PGID=568
- TZ=Australia/Perth
- TRANSMISSION_WEB_HOME=/transmission/web
- TRANSMISSION_RPC_AUTHENTICATION_REQUIRED=false
- TRANSMISSION_RPC_USERNAME=
- TRANSMISSION_RPC_PASSWORD=
- WEBUI_PORT=9091
ports:
# Map the Web UI port to a host port (e.g., 30096)
- “30096:9091”
# Optional: Port for torrent traffic
- “51413:51413”
restart: unless-stopped
Ok i may have trouble testing further since i don’t have a vpn subscription i could test it with. I can’t even get the container to start… it just fails in a reboot loop because i can’t provide vpn login credentials.
For comparison i used the linuxserver transmition compose file and had no problems… so it may be something specific to the included vpn setup i can’t test… I’m sorry.
Appreciate your help regardless - I will continue my quest
At least it runs and apart from not finding the transmission/web it seem to work.
I found a similar issue with transmissions pid id. Default json tries to write it to /var/run/transmission/ folder, but this folder isnt created as part of the installation and creating it manually is pointless since the container would be re-created on each start. So I ended up pointing it to the config root instead and that worked just fine.
lol - I simply removed TRANSMISSION_WEB_HOME=transmission/web from the yaml and it works - Go figure
Interestingly it ignores my vpn location and takes me to a different country - But at least it works.
Will now try to figure out why my preferred vpn location is ignored.
No sure if your interested, but might be interesting to others scratching their head over this.
I found a couple of interesting quirks that I had to resolve.
Apart from completely removing the TRANSMISSION_WEB_HOME from the YAML I had to do these fixes as well.
The YAML must have a
TRANSMISSION_DOWNLOAD_DIR=<location>
if you want to use something other than the default /data/completed
Pointless trying to change this within the webUI since it will revert back
As for my preferred vpn location. Apparently you need to replace
OPENVPN_COUNTRY=<CountryCode>
with
OPENVPN_CONFIG=<country_city>
when using PIA
If you don’t specify this, PIA ignores your location picks first available service regardless of you location.
So to get you closes server you need to replace this with the
OPENVPN_CONFIG=<country_city>
within the YAML
The country_city is case sensitive so you need to enter it like
OPENVPN_CONFIG=au_sydney
The exact naming of the <country_city> would be found within the list of .ovpm’s
i.e
docker exec -it transmission ls /etc/openvpn/pia
Next I need to fix some permission issues with the integration of sonarr and radarr.
But at least I now have a fully working transmission using vpn