March 12, 20251 yr Overview: Support for Docker image Termix Application Name: Termix Application: https://github.com/LukeGus/Termix Documentation: https://github.com/LukeGus/Termix Termix is an open-source forever free self-hosted SSH (other protocols planned, see [Planned Features](#planned-features)) server management panel inspired by [Nexterm](https://github.com/gnmyt/Nexterm). Its purpose is to provide an all-in-one docker-hosted web solution to manage your servers in one easy place. I'm using this project to help me learn [React](https://github.com/facebook/react), [Vite](https://github.com/vitejs/vite-plugin-react), and [Docker](https://www.docker.com) but also because I could never settle on a server management software that I enjoyed to use. > [!WARNING] > This app is in the VERY early stages of development. Expect bugs, data loss, and unexplainable issues! For that reason, I recommend you securely tunnel your connection to Termix through a VPN. Make sure to look at the complete documentation Please post any questions/issues relating to this docker template you have in this thread.
November 14, 2025Nov 14 Missing Path for Persistent DataThis app requires /app/data to be mapped to a directory outside of the docker vdisk. Otherwise app configuration is lost on rebuild. Please add this path to the template and map it to somewhere in /mnt/user/appdata/termix/*
November 15, 2025Nov 15 Author 4 hours ago, eggplant said:Missing Path for Persistent DataThis app requires /app/data to be mapped to a directory outside of the docker vdisk. Otherwise app configuration is lost on rebuild. Please add this path to the template and map it to somewhere in /mnt/user/appdata/termix/*Thanks for the feedbackI will take care of it thanks
November 17, 2025Nov 17 Author On 11/14/2025 at 4:08 PM, eggplant said:Missing Path for Persistent DataThis app requires /app/data to be mapped to a directory outside of the docker vdisk. Otherwise app configuration is lost on rebuild. Please add this path to the template and map it to somewhere in /mnt/user/appdata/termix/*Update Done.Thanks for the report
January 1Jan 1 After termix 1.10 release container throws erros:Executing Unraid Docker Hook for TailscaleERROR: No root privileges!ERROR: Unraid Docker Hook script throw an error! Starting container without Tailscale!Starting container...
January 1Jan 1 Author I will have a look,i did not upgrade yet will revert back with updateEdit : thinking of it quick, this is weird , as this template do not set anything for tailscale ?did you add anything ? Edited January 1Jan 1 by ZappyZap
January 1Jan 1 @ZappyZap i just installed it for the first time and have having a similar issue. Can't load the app at all. I've not changed anything in the setup except port. All stock. syscall: 'open', path: '/app/data/.env' } [10:54:22 AM] [ERROR] [] Failed to initialize JWT secret [op:jwt_init_failed] Error: EACCES: permission denied, open '/app/data/.env' at async open (node:internal/fs/promises:641:25) at async Object.writeFile (node:internal/fs/promises:1215:14) at async SystemCrypto.updateEnvFile (file:///app/dist/backend/backend/utils/system-crypto.js:285:13) at async SystemCrypto.generateAndGuideUser (file:///app/dist/backend/backend/utils/system-crypto.js:184:9) at async SystemCrypto.initializeJWTSecret (file:///app/dist/backend/backend/utils/system-crypto.js:49:13) at async file:///app/dist/backend/backend/starter.js:76:9 { errno: -13, code: 'EACCES', syscall: 'open', path: '/app/data/.env' } [10:54:22 AM] [ERROR] [] Failed to initialize backend services [op:startup_failed] Error: JWT secret initialization failed at SystemCrypto.initializeJWTSecret (file:///app/dist/backend/backend/utils/system-crypto.js:55:19) at async file:///app/dist/backend/backend/starter.js:76:9 [10:54:24 AM] [ERROR] [] Failed to update .env file with JWT_SECRET [op:env_file_update_failed] Error: EACCES: permission denied, open '/app/data/.env' at async open (node:internal/fs/promises:641:25) at async Object.writeFile (node:internal/fs/promises:1215:14) at async SystemCrypto.updateEnvFile (file:///app/dist/backend/backend/utils/system-crypto.js:285:13) at async SystemCrypto.generateAndGuideUser (file:///app/dist/backend/backend/utils/system-crypto.js:184:9) at async SystemCrypto.initializeJWTSecret (file:///app/dist/backend/backend/utils/system-crypto.js:49:13) at async file:///app/dist/backend/backend/starter.js:76:9 { errno: -13, code: 'EACCES', syscall: 'open', path: '/app/data/.env' } [10:54:24 AM] [ERROR] [] Failed to initialize JWT secret [op:jwt_init_failed] Error: EACCES: permission denied, open '/app/data/.env' at async open (node:internal/fs/promises:641:25) at async Object.writeFile (node:internal/fs/promises:1215:14) at async SystemCrypto.updateEnvFile (file:///app/dist/backend/backend/utils/system-crypto.js:285:13) at async SystemCrypto.generateAndGuideUser (file:///app/dist/backend/backend/utils/system-crypto.js:184:9) at async SystemCrypto.initializeJWTSecret (file:///app/dist/backend/backend/utils/system-crypto.js:49:13) at async file:///app/dist/backend/backend/starter.js:76:9 { errno: -13, code: 'EACCES', syscall: 'open', path: '/app/data/.env' } [10:54:24 AM] [ERROR] [] Failed to initialize backend services [op:startup_failed] Error: JWT secret initialization failed at SystemCrypto.initializeJWTSecret (file:///app/dist/backend/backend/utils/system-crypto.js:55:19) at async file:///app/dist/backend/backend/starter.js:76:9 [10:54:28 AM] [ERROR] [] Failed to update .env file with JWT_SECRET [op:env_file_update_failed] Error: EACCES: permission denied, open '/app/data/.env' at async open (node:internal/fs/promises:641:25) at async Object.writeFile (node:internal/fs/promises:1215:14) at async SystemCrypto.updateEnvFile (file:///app/dist/backend/backend/utils/system-crypto.js:285:13) at async SystemCrypto.generateAndGuideUser (file:///app/dist/backend/backend/utils/system-crypto.js:184:9) at async SystemCrypto.initializeJWTSecret (file:///app/dist/backend/backend/utils/system-crypto.js:49:13) at async file:///app/dist/backend/backend/starter.js:76:9 { errno: -13, code: 'EACCES', syscall: 'open', path: '/app/data/.env' } [10:54:28 AM] [ERROR] [] Failed to initialize JWT secret [op:jwt_init_failed] Error: EACCES: permission denied, open '/app/data/.env' at async open (node:internal/fs/promises:641:25) at async Object.writeFile (node:internal/fs/promises:1215:14) at async SystemCrypto.updateEnvFile (file:///app/dist/backend/backend/utils/system-crypto.js:285:13) at async SystemCrypto.generateAndGuideUser (file:///app/dist/backend/backend/utils/system-crypto.js:184:9) at async SystemCrypto.initializeJWTSecret (file:///app/dist/backend/backend/utils/system-crypto.js:49:13) at async file:///app/dist/backend/backend/starter.js:76:9 { errno: -13, code: 'EACCES', syscall: 'open', path: '/app/data/.env' } [10:54:28 AM] [ERROR] [] Failed to initialize backend services [op:startup_failed] Error: JWT secret initialization failed at SystemCrypto.initializeJWTSecret (file:///app/dist/backend/backend/utils/system-crypto.js:55:19) at async file:///app/dist/backend/backend/starter.js:76:9 Configuring web UI to run on port: 8080 SSL disabled - using HTTP-only configuration (default) Starting nginx... Starting backend services... [10:54:24 AM] [INFO] [] Termix Backend starting - Version: 1.10.0 [op:startup] Configuring web UI to run on port: 8080 SSL disabled - using HTTP-only configuration (default) Starting nginx... Starting backend services...
January 1Jan 1 20 minutes ago, PZ303 said:@ZappyZap i just installed it for the first time and have having a similar issue. Can't load the app at all. I've not changed anything in the setup except port. All stock. syscall: 'open', path: '/app/data/.env' } [10:54:22 AM] [ERROR] [] Failed to initialize JWT secret [op:jwt_init_failed] Error: EACCES: permission denied, open '/app/data/.env' at async open (node:internal/fs/promises:641:25) at async Object.writeFile (node:internal/fs/promises:1215:14) at async SystemCrypto.updateEnvFile (file:///app/dist/backend/backend/utils/system-crypto.js:285:13) at async SystemCrypto.generateAndGuideUser (file:///app/dist/backend/backend/utils/system-crypto.js:184:9) at async SystemCrypto.initializeJWTSecret (file:///app/dist/backend/backend/utils/system-crypto.js:49:13) at async file:///app/dist/backend/backend/starter.js:76:9 { errno: -13, code: 'EACCES', syscall: 'open', path: '/app/data/.env' } [10:54:22 AM] [ERROR] [] Failed to initialize backend services [op:startup_failed] Error: JWT secret initialization failed at SystemCrypto.initializeJWTSecret (file:///app/dist/backend/backend/utils/system-crypto.js:55:19) at async file:///app/dist/backend/backend/starter.js:76:9 [10:54:24 AM] [ERROR] [] Failed to update .env file with JWT_SECRET [op:env_file_update_failed] Error: EACCES: permission denied, open '/app/data/.env' at async open (node:internal/fs/promises:641:25) at async Object.writeFile (node:internal/fs/promises:1215:14) at async SystemCrypto.updateEnvFile (file:///app/dist/backend/backend/utils/system-crypto.js:285:13) at async SystemCrypto.generateAndGuideUser (file:///app/dist/backend/backend/utils/system-crypto.js:184:9) at async SystemCrypto.initializeJWTSecret (file:///app/dist/backend/backend/utils/system-crypto.js:49:13) at async file:///app/dist/backend/backend/starter.js:76:9 { errno: -13, code: 'EACCES', syscall: 'open', path: '/app/data/.env' } [10:54:24 AM] [ERROR] [] Failed to initialize JWT secret [op:jwt_init_failed] Error: EACCES: permission denied, open '/app/data/.env' at async open (node:internal/fs/promises:641:25) at async Object.writeFile (node:internal/fs/promises:1215:14) at async SystemCrypto.updateEnvFile (file:///app/dist/backend/backend/utils/system-crypto.js:285:13) at async SystemCrypto.generateAndGuideUser (file:///app/dist/backend/backend/utils/system-crypto.js:184:9) at async SystemCrypto.initializeJWTSecret (file:///app/dist/backend/backend/utils/system-crypto.js:49:13) at async file:///app/dist/backend/backend/starter.js:76:9 { errno: -13, code: 'EACCES', syscall: 'open', path: '/app/data/.env' } [10:54:24 AM] [ERROR] [] Failed to initialize backend services [op:startup_failed] Error: JWT secret initialization failed at SystemCrypto.initializeJWTSecret (file:///app/dist/backend/backend/utils/system-crypto.js:55:19) at async file:///app/dist/backend/backend/starter.js:76:9 [10:54:28 AM] [ERROR] [] Failed to update .env file with JWT_SECRET [op:env_file_update_failed] Error: EACCES: permission denied, open '/app/data/.env' at async open (node:internal/fs/promises:641:25) at async Object.writeFile (node:internal/fs/promises:1215:14) at async SystemCrypto.updateEnvFile (file:///app/dist/backend/backend/utils/system-crypto.js:285:13) at async SystemCrypto.generateAndGuideUser (file:///app/dist/backend/backend/utils/system-crypto.js:184:9) at async SystemCrypto.initializeJWTSecret (file:///app/dist/backend/backend/utils/system-crypto.js:49:13) at async file:///app/dist/backend/backend/starter.js:76:9 { errno: -13, code: 'EACCES', syscall: 'open', path: '/app/data/.env' } [10:54:28 AM] [ERROR] [] Failed to initialize JWT secret [op:jwt_init_failed] Error: EACCES: permission denied, open '/app/data/.env' at async open (node:internal/fs/promises:641:25) at async Object.writeFile (node:internal/fs/promises:1215:14) at async SystemCrypto.updateEnvFile (file:///app/dist/backend/backend/utils/system-crypto.js:285:13) at async SystemCrypto.generateAndGuideUser (file:///app/dist/backend/backend/utils/system-crypto.js:184:9) at async SystemCrypto.initializeJWTSecret (file:///app/dist/backend/backend/utils/system-crypto.js:49:13) at async file:///app/dist/backend/backend/starter.js:76:9 { errno: -13, code: 'EACCES', syscall: 'open', path: '/app/data/.env' } [10:54:28 AM] [ERROR] [] Failed to initialize backend services [op:startup_failed] Error: JWT secret initialization failed at SystemCrypto.initializeJWTSecret (file:///app/dist/backend/backend/utils/system-crypto.js:55:19) at async file:///app/dist/backend/backend/starter.js:76:9 Configuring web UI to run on port: 8080 SSL disabled - using HTTP-only configuration (default) Starting nginx... Starting backend services... [10:54:24 AM] [INFO] [] Termix Backend starting - Version: 1.10.0 [op:startup] Configuring web UI to run on port: 8080 SSL disabled - using HTTP-only configuration (default) Starting nginx... Starting backend services...That's permission issue so just change your /app/data directory to 777 and it should be fine, that container doesn't have UID/GID variables, then you can try tailscale but I suspect whole container has to be rebuilt.
January 1Jan 1 Author Thanks @cpu @PZ303 Cpu is correct, seems like a permission issue in your case @cpu i just upgrade from 1.9.0 to 1.10.0 no issue.Configuring web UI to run on port: 8080SSL disabled - using HTTP-only configuration (default)Starting nginx...Starting backend services...[9:15:46 AM] [INFO] [📦] Termix Backend starting - Version: 1.10.0 [op:startup][9:15:46 AM] [SUCCESS] [🗄️] JWT secret auto-generated and saved to .env [op:jwt_auto_generated][9:15:46 AM] [SUCCESS] [🗄️] Database key auto-generated and saved to .env [op:db_key_auto_generated][9:15:46 AM] [SUCCESS] [🗄️] Internal auth token auto-generated and saved to .env [op:internal_auth_auto_generated][9:15:46 AM] [INFO] [🚀] SSL not enabled - skipping certificate generation [op:ssl_disabled_default][9:15:46 AM] [INFO] [🗄️] Initializing SQLite database [op:db_init][9:15:46 AM] [SUCCESS] [🗄️] Schema migration completed [op:schema_migration][9:15:48 AM] [INFO] [📡] Found 0 autostart hosts and 0 total hosts for endpointHost resolutioni will need to dig a bit further on this one .... Edited January 1Jan 1 by ZappyZap
January 1Jan 1 So tailscale does work inside container and thus serve?Tried to create second container and yes throws permission error at first - appdata/termix is root:root while appdata/termix/data is nobody:users - fixable with permisssion. But tailscale does not work Edited January 1Jan 1 by cpu
January 1Jan 1 Author ok make sense , as i am not using tailscale , i will try installing it on my dev instance et retestso do not look like an issue with this template.Thanks
January 2Jan 2 Yes so the outcome is from 1.10.0 container does not allow to inject tailscale so only option is either sidecar or tailscale service.
January 10Jan 10 @ZappyZap Does this app support SSH logins using a signed certificate? In addition to the usual SSH public and private keys, I need to present a signed public key to my target.private key: id_ed25519public key: id_ed25519.pubsigned certificate: id_ed25519-cert.pubThis uses ssh's "-o CertificateFile=id_ed25519-cert.pub" syntax.
January 10Jan 10 Author 5 minutes ago, frakman1 said:@ZappyZapDoes this app support SSH logins using a signed certificate? In addition to the usual SSH public and private keys, I need to present a signed public key to my target.private key: id_ed25519public key: id_ed25519.pubsigned certificate: id_ed25519-cert.pubThis uses ssh's "-o CertificateFile=id_ed25519-cert.pub" syntax.Pretty good question, i dont use cert with this app , but directly iwth SSHthe best would be to ask on the github : https://github.com/LukeGus/Termixlet me know
January 25Jan 25 Any workaround for the permission issue? It seems to be related to unraid (I'm using compose instead of your app but the issue exists on both). An issue exists and they suggest to use the root user which I really wouldn't use 😰https://github.com/Termix-SSH/Support/issues/425 Edited January 25Jan 25 by Ikeasofa
January 31Jan 31 I ran into the same issue. For now, I would suggest opening a terminal on Unraid and doing the following, assuming you are using the default path.chown -R 1000:1000 /mnt/user/appdata/termix/data chmod -R 755 /mnt/user/appdata/termix/data Edited January 31Jan 31 by d8sychain
March 15Mar 15 v2.0.0 also requires additional container to utilise RDP/VNCservices:termix-dev:image: ghcr.io/lukegus/termix:dev-2.0.0container_name: termix-devrestart: unless-stoppedports:- "8080:8080"volumes:- /home/YOUR_USER/apps/termix-dev:/app/dataenvironment:PORT: "8080"depends_on:- guacdnetworks:- termix-netguacd:image: guacamole/guacd:latestcontainer_name: guacdrestart: unless-stoppedports:- "4822:4822"networks:- termix-netnetworks:termix-net:driver: bridge
March 16Mar 16 I have "desktop service not found' on a new install trying to RDP. Can use mstsc and remmina just fine. Cant see any obvious notes in the documentation.EDIT - i just saw the post right above my comment (its been a long day). I dont really want to run another non hosted container to get RDP to work. I'll check in if you manage to get it all in one docker. It looks good otherwise, but if i have to run guacamole anyway, i'd just use that. Edited March 16Mar 16 by Oxxy
March 16Mar 16 Author 9 hours ago, Oxxy said:I have "desktop service not found' on a new install trying to RDP. Can use mstsc and remmina just fine. Cant see any obvious notes in the documentation.EDIT - i just saw the post right above my comment (its been a long day). I dont really want to run another non hosted container to get RDP to work. I'll check in if you manage to get it all in one docker. It looks good otherwise, but if i have to run guacamole anyway, i'd just use that.I will tend to agree with your last statement.Unless me or somebody make a single container with all the piece , you need to run an other ocntainer.
March 17Mar 17 9 hours ago, ZappyZap said:I will tend to agree with your last statement.What you have done so far looks good, responsive and clean. Thanks for your work.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.