feat: add cyberchef as app

This commit is contained in:
Jake Turner 2025-10-06 23:21:34 -07:00 committed by Jake Turner
parent 478427060f
commit 1df7c490a6
3 changed files with 19 additions and 1 deletions

View File

@ -18,6 +18,7 @@ export class DockerService {
public static OPENSTREETMAP_IMPORT_SERVICE_NAME = 'nomad_openstreetmap_import'; public static OPENSTREETMAP_IMPORT_SERVICE_NAME = 'nomad_openstreetmap_import';
public static OLLAMA_SERVICE_NAME = 'nomad_ollama'; public static OLLAMA_SERVICE_NAME = 'nomad_ollama';
public static OPEN_WEBUI_SERVICE_NAME = 'nomad_open_webui'; 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'; public static NOMAD_STORAGE_ABS_PATH = '/opt/project-nomad/storage';
constructor() { constructor() {

View File

@ -74,6 +74,22 @@ export default class ServiceSeeder extends BaseSeeder {
is_dependency_service: false, is_dependency_service: false,
depends_on: DockerService.OLLAMA_SERVICE_NAME, 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() { async run() {

View File

@ -13,6 +13,7 @@ import { useTransmit } from 'react-adonis-transmit'
import LoadingSpinner from '~/components/LoadingSpinner' import LoadingSpinner from '~/components/LoadingSpinner'
import useErrorNotification from '~/hooks/useErrorNotification' import useErrorNotification from '~/hooks/useErrorNotification'
import useInternetStatus from '~/hooks/useInternetStatus' import useInternetStatus from '~/hooks/useInternetStatus'
import { ArrowDownTrayIcon } from '@heroicons/react/24/outline'
export default function SettingsPage(props: { system: { services: ServiceSlim[] } }) { export default function SettingsPage(props: { system: { services: ServiceSlim[] } }) {
const { openModal, closeAllModals } = useModals() const { openModal, closeAllModals } = useModals()
@ -64,7 +65,7 @@ export default function SettingsPage(props: { system: { services: ServiceSlim[]
confirmText="Install" confirmText="Install"
cancelText="Cancel" cancelText="Cancel"
confirmVariant='primary' confirmVariant='primary'
icon='ArrowDownTrayIcon' icon={<ArrowDownTrayIcon className="h-12 w-12 text-desert-green" />}
> >
<p className="text-gray-700"> <p className="text-gray-700">
Are you sure you want to install {service.service_name}? This will start the service and Are you sure you want to install {service.service_name}? This will start the service and