diff --git a/admin/app/services/docker_service.ts b/admin/app/services/docker_service.ts
index 0ee8858..75533b3 100644
--- a/admin/app/services/docker_service.ts
+++ b/admin/app/services/docker_service.ts
@@ -18,6 +18,7 @@ export class DockerService {
public static OPENSTREETMAP_IMPORT_SERVICE_NAME = 'nomad_openstreetmap_import';
public static OLLAMA_SERVICE_NAME = 'nomad_ollama';
public static OPEN_WEBUI_SERVICE_NAME = 'nomad_open_webui';
+ public static CYBERCHEF_SERVICE_NAME = 'nomad_cyberchef';
public static NOMAD_STORAGE_ABS_PATH = '/opt/project-nomad/storage';
constructor() {
diff --git a/admin/database/seeders/service_seeder.ts b/admin/database/seeders/service_seeder.ts
index 8ca30e7..6b0e1af 100644
--- a/admin/database/seeders/service_seeder.ts
+++ b/admin/database/seeders/service_seeder.ts
@@ -74,6 +74,22 @@ export default class ServiceSeeder extends BaseSeeder {
is_dependency_service: false,
depends_on: DockerService.OLLAMA_SERVICE_NAME,
},
+ {
+ service_name: DockerService.CYBERCHEF_SERVICE_NAME,
+ container_image: 'ghcr.io/gchq/cyberchef:latest',
+ container_command: null,
+ container_config: JSON.stringify({
+ HostConfig: {
+ RestartPolicy: { Name: 'unless-stopped' },
+ PortBindings: { '80/tcp': [{ HostPort: '8100' }] }
+ },
+ ExposedPorts: { '80/tcp': {} }
+ }),
+ ui_location: '8100',
+ installed: false,
+ is_dependency_service: false,
+ depends_on: null,
+ },
]
async run() {
diff --git a/admin/inertia/pages/settings/apps.tsx b/admin/inertia/pages/settings/apps.tsx
index 24b684f..048a87c 100644
--- a/admin/inertia/pages/settings/apps.tsx
+++ b/admin/inertia/pages/settings/apps.tsx
@@ -13,6 +13,7 @@ import { useTransmit } from 'react-adonis-transmit'
import LoadingSpinner from '~/components/LoadingSpinner'
import useErrorNotification from '~/hooks/useErrorNotification'
import useInternetStatus from '~/hooks/useInternetStatus'
+import { ArrowDownTrayIcon } from '@heroicons/react/24/outline'
export default function SettingsPage(props: { system: { services: ServiceSlim[] } }) {
const { openModal, closeAllModals } = useModals()
@@ -64,7 +65,7 @@ export default function SettingsPage(props: { system: { services: ServiceSlim[]
confirmText="Install"
cancelText="Cancel"
confirmVariant='primary'
- icon='ArrowDownTrayIcon'
+ icon={
Are you sure you want to install {service.service_name}? This will start the service and