├── .dockerignore ├── start.sh ├── preview.gif ├── .gitignore ├── client ├── postcss.config.js ├── src │ ├── utils │ │ └── constants.js │ ├── main.js │ ├── components │ │ ├── LanguageSwitcher.vue │ │ ├── DarkModeToggle.vue │ │ ├── CredentialCard.vue │ │ └── CredentialFormModal.vue │ ├── stores │ │ ├── credentialStore.js │ │ ├── llmHelperStore.js │ │ ├── settingsStore.js │ │ └── sessionStore.js │ ├── router │ │ └── index.js │ ├── views │ │ ├── CredentialsView.vue │ │ ├── ForgotPasswordView.vue │ │ ├── SshDebugView.vue │ │ ├── LoginView.vue │ │ └── ResetPasswordView.vue │ └── assets │ │ └── main.css ├── index.html ├── package.json ├── vite.config.js └── tailwind.config.js ├── FUNDING.yml ├── docker-compose.yml ├── server ├── .env.example ├── src │ ├── db │ │ ├── addCredentialIdToSessionsMigration.js │ │ ├── updateProviderDescription.js │ │ ├── createCredentialsTableMigration.js │ │ ├── userProfileMigration.js │ │ ├── addTotpToUsersMigration.js │ │ ├── testCustomApi.js │ │ ├── passwordResetMigration.js │ │ ├── emailSettingsMigration.js │ │ ├── customApiMigration.js │ │ └── database.js │ ├── api │ │ ├── debug.js │ │ ├── credentials.js │ │ ├── files.js │ │ └── sessions.js │ ├── services │ │ ├── encryptionService.js │ │ ├── emailService.js │ │ └── credentialService.js │ ├── middleware │ │ └── authMiddleware.js │ ├── socket │ │ └── terminal.js │ └── app.js └── package.json ├── LICENSE ├── Dockerfile ├── docker-compose-dev.yml ├── .github └── workflows │ ├── docker-build-and-push.yml │ └── docker-build-and-publish.yml ├── docs └── LLM-HELPER.md └── README.md /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | **/.env 3 | **/*.db 4 | **/*.db.bak 5 | -------------------------------------------------------------------------------- /start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | cd /app/server 5 | npm start 6 | -------------------------------------------------------------------------------- /preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clusterzx/intellissh/HEAD/preview.gif -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .env 3 | *.db 4 | *.db.bak 5 | client/dist/ 6 | .DS_Store 7 | -------------------------------------------------------------------------------- /client/postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /client/src/utils/constants.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Application-wide constants 3 | */ 4 | 5 | // Application version 6 | export const APP_VERSION = '1.2.0'; 7 | -------------------------------------------------------------------------------- /FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [clusterzx] 2 | ko_fi: clusterzx 3 | patreon: Clusterzx 4 | buy_me_a_coffee: clusterzx 5 | custom: ["https://www.paypal.me/bech0r"] 6 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | 3 | services: 4 | intellissh: 5 | image: clusterzx/intellissh:latest 6 | container_name: intellissh 7 | ports: 8 | - 8080:3000 9 | volumes: 10 | # Mount for persistent backend data (SQLite DB, session info, etc.) 11 | - ./data:/app/server/data 12 | restart: unless-stopped 13 | -------------------------------------------------------------------------------- /client/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 |{{ $t('message.loading_credentials') }}
27 |{{ $t('message.no_credentials_saved') }}
28 |Hello ${username},
76 |You recently requested to reset your password for your ${siteName} account. Click the button below to reset it:
77 |78 | Reset Your Password 79 |
80 |This link will expire in 1 hour.
81 |If you did not request a password reset, please ignore this email or contact an administrator if you have concerns.
82 |
83 | Thanks,
84 | The ${siteName} Team
85 |
If the button above doesn't work, copy and paste this link into your browser: ${resetLink}
87 |9 | {{ $t('message.forgot_password_description') }} 10 |
11 |23 | {{ successMessage }} 24 |
25 |38 | {{ errorMessage }} 39 |
40 |{{ $t('message.test_ssh_connections') }}
10 |{{ result.message }}
120 |{{ result.message }}
138 | 141 |15 | {{ isRegistering ? $t('message.create_account') : $t('message.sign_in_to_account') }} 16 |
17 |{{ $t('message.secure_connection_encrypted') }}
133 |9 | {{ $t('message.verifying_reset_link') }} 10 |
11 |12 | {{ $t('message.hi_create_new_password', { username: username }) }} 13 |
14 |37 | {{ $t('message.invalid_expired_link_description') }} 38 |
39 |64 | {{ $t('message.password_reset_successful_description') }} 65 |
66 |88 | {{ errorMessage }} 89 |
90 |