morphbox
Version:
Docker-based AI sandbox for development with Claude integration
279 lines (270 loc) • 39.5 kB
JavaScript
import { c as create_ssr_component, v as validate_component, f as each, e as escape, m as missing_component } from './ssr-Bi8A3Ffq.js';
import { D as Download } from './download-RwF-ht7F.js';
import { I as Icon } from './Icon-BX2G3WyD.js';
const Circle_alert = create_ssr_component(($$result, $$props, $$bindings, slots) => {
const iconNode = [
["circle", { "cx": "12", "cy": "12", "r": "10" }],
[
"line",
{
"x1": "12",
"x2": "12",
"y1": "8",
"y2": "12"
}
],
[
"line",
{
"x1": "12",
"x2": "12.01",
"y1": "16",
"y2": "16"
}
]
];
return `${validate_component(Icon, "Icon").$$render($$result, Object.assign({}, { name: "circle-alert" }, $$props, { iconNode }), {}, {
default: () => {
return `${slots.default ? slots.default({}) : ``}`;
}
})}`;
});
const Circle_check_big = create_ssr_component(($$result, $$props, $$bindings, slots) => {
const iconNode = [
["path", { "d": "M21.801 10A10 10 0 1 1 17 3.335" }],
["path", { "d": "m9 11 3 3L22 4" }]
];
return `${validate_component(Icon, "Icon").$$render($$result, Object.assign({}, { name: "circle-check-big" }, $$props, { iconNode }), {}, {
default: () => {
return `${slots.default ? slots.default({}) : ``}`;
}
})}`;
});
const Cpu = create_ssr_component(($$result, $$props, $$bindings, slots) => {
const iconNode = [
["path", { "d": "M12 20v2" }],
["path", { "d": "M12 2v2" }],
["path", { "d": "M17 20v2" }],
["path", { "d": "M17 2v2" }],
["path", { "d": "M2 12h2" }],
["path", { "d": "M2 17h2" }],
["path", { "d": "M2 7h2" }],
["path", { "d": "M20 12h2" }],
["path", { "d": "M20 17h2" }],
["path", { "d": "M20 7h2" }],
["path", { "d": "M7 20v2" }],
["path", { "d": "M7 2v2" }],
[
"rect",
{
"x": "4",
"y": "4",
"width": "16",
"height": "16",
"rx": "2"
}
],
[
"rect",
{
"x": "8",
"y": "8",
"width": "8",
"height": "8",
"rx": "1"
}
]
];
return `${validate_component(Icon, "Icon").$$render($$result, Object.assign({}, { name: "cpu" }, $$props, { iconNode }), {}, {
default: () => {
return `${slots.default ? slots.default({}) : ``}`;
}
})}`;
});
const Globe = create_ssr_component(($$result, $$props, $$bindings, slots) => {
const iconNode = [
["circle", { "cx": "12", "cy": "12", "r": "10" }],
[
"path",
{
"d": "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"
}
],
["path", { "d": "M2 12h20" }]
];
return `${validate_component(Icon, "Icon").$$render($$result, Object.assign({}, { name: "globe" }, $$props, { iconNode }), {}, {
default: () => {
return `${slots.default ? slots.default({}) : ``}`;
}
})}`;
});
const Hard_drive = create_ssr_component(($$result, $$props, $$bindings, slots) => {
const iconNode = [
[
"line",
{
"x1": "22",
"x2": "2",
"y1": "12",
"y2": "12"
}
],
[
"path",
{
"d": "M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"
}
],
[
"line",
{
"x1": "6",
"x2": "6.01",
"y1": "16",
"y2": "16"
}
],
[
"line",
{
"x1": "10",
"x2": "10.01",
"y1": "16",
"y2": "16"
}
]
];
return `${validate_component(Icon, "Icon").$$render($$result, Object.assign({}, { name: "hard-drive" }, $$props, { iconNode }), {}, {
default: () => {
return `${slots.default ? slots.default({}) : ``}`;
}
})}`;
});
const css = {
code: ".installation-guide.svelte-987zpp.svelte-987zpp{padding:2rem;max-width:1000px;margin:0 auto}.page-header.svelte-987zpp.svelte-987zpp{display:flex;align-items:center;gap:1rem;margin-bottom:2rem}.page-header.svelte-987zpp h1.svelte-987zpp{margin:0}.intro.svelte-987zpp.svelte-987zpp{font-size:1.1rem;color:var(--text-secondary);margin-bottom:3rem}.requirements-section.svelte-987zpp.svelte-987zpp{margin-bottom:3rem}.requirements-grid.svelte-987zpp.svelte-987zpp{display:grid;grid-template-columns:repeat(auto-fit, minmax(200px, 1fr));gap:1rem;margin-top:1rem}.requirement-card.svelte-987zpp.svelte-987zpp{display:flex;align-items:center;gap:1rem;padding:1rem;background:var(--surface-secondary);border-radius:8px}.requirement-info.svelte-987zpp .label.svelte-987zpp{font-weight:600;color:var(--text-primary)}.requirement-info.svelte-987zpp .value.svelte-987zpp{font-size:0.9rem;color:var(--text-secondary)}.installation-steps.svelte-987zpp.svelte-987zpp{margin-bottom:3rem}.step.svelte-987zpp.svelte-987zpp{display:flex;gap:1.5rem;margin-bottom:2rem}.step-number.svelte-987zpp.svelte-987zpp{flex-shrink:0;width:40px;height:40px;background:var(--primary);color:white;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600}.step-content.svelte-987zpp.svelte-987zpp{flex:1}.step-content.svelte-987zpp h3.svelte-987zpp{margin:0 0 0.5rem 0}.step-content.svelte-987zpp p.svelte-987zpp{margin:0 0 1rem 0;color:var(--text-secondary)}.commands.svelte-987zpp.svelte-987zpp{display:flex;flex-direction:column;gap:0.5rem}.command-block.svelte-987zpp.svelte-987zpp{display:flex;flex-direction:column;gap:0.25rem}.command-label.svelte-987zpp.svelte-987zpp{font-size:0.85rem;color:var(--text-secondary);font-weight:500}.command-wrapper.svelte-987zpp.svelte-987zpp{display:flex;align-items:center;gap:0.5rem;background:var(--surface-primary);border:1px solid var(--border);border-radius:4px;padding:0.75rem}.command-wrapper.large.svelte-987zpp.svelte-987zpp{padding:1rem;margin-top:1rem}code.svelte-987zpp.svelte-987zpp{flex:1;font-family:'SF Mono', Monaco, 'Cascadia Code', monospace;font-size:0.9rem}.copy-btn.svelte-987zpp.svelte-987zpp{padding:0.25rem 0.5rem;background:var(--surface-secondary);border:1px solid var(--border);border-radius:4px;font-size:0.85rem;cursor:pointer;transition:all 0.2s}.copy-btn.svelte-987zpp.svelte-987zpp:hover{background:var(--surface-tertiary)}.quick-start.svelte-987zpp.svelte-987zpp{background:var(--surface-secondary);border-radius:8px;padding:1.5rem;margin-bottom:3rem}.installation-modes.svelte-987zpp.svelte-987zpp{margin-bottom:3rem}.mode-cards.svelte-987zpp.svelte-987zpp{display:grid;grid-template-columns:repeat(auto-fit, minmax(300px, 1fr));gap:1.5rem;margin-top:1rem}.mode-card.svelte-987zpp.svelte-987zpp{position:relative;background:var(--surface-secondary);border:1px solid var(--border);border-radius:8px;padding:1.5rem}.mode-card.recommended.svelte-987zpp.svelte-987zpp{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.recommended-badge.svelte-987zpp.svelte-987zpp{position:absolute;top:-10px;right:20px;background:var(--primary);color:white;padding:0.25rem 0.75rem;border-radius:4px;font-size:0.75rem;font-weight:600}.mode-card.svelte-987zpp h3.svelte-987zpp{margin:0 0 0.5rem 0}.mode-card.svelte-987zpp p.svelte-987zpp{margin:0.5rem 0 1rem 0;color:var(--text-secondary)}.mode-card.svelte-987zpp code.svelte-987zpp{display:block;padding:0.5rem;background:var(--surface-primary);border:1px solid var(--border);border-radius:4px;margin-bottom:1rem}.mode-card.svelte-987zpp ul.svelte-987zpp{margin:0;padding-left:1.5rem}.configuration.svelte-987zpp pre.svelte-987zpp{background:var(--surface-primary);border:1px solid var(--border);border-radius:4px;padding:1rem;overflow-x:auto}.verification.svelte-987zpp.svelte-987zpp{background:var(--surface-secondary);border-radius:8px;padding:1.5rem;margin-bottom:3rem}.verify-steps.svelte-987zpp.svelte-987zpp{display:flex;flex-direction:column;gap:1rem;margin-top:1rem}.verify-step.svelte-987zpp.svelte-987zpp{display:flex;align-items:flex-start;gap:0.75rem}.verify-step.svelte-987zpp h4.svelte-987zpp{margin:0 0 0.25rem 0}.verify-step.svelte-987zpp code.svelte-987zpp{display:inline-block;padding:0.25rem 0.5rem;background:var(--surface-primary);border:1px solid var(--border);border-radius:4px}.success{color:var(--success)}.troubleshooting.svelte-987zpp.svelte-987zpp{margin-bottom:3rem}.trouble-item.svelte-987zpp.svelte-987zpp{background:var(--surface-secondary);border-radius:8px;padding:1rem;margin-bottom:1rem}.trouble-header.svelte-987zpp.svelte-987zpp{display:flex;align-items:center;gap:0.5rem;margin-bottom:0.5rem}.trouble-header.svelte-987zpp h4.svelte-987zpp{margin:0}.trouble-item.svelte-987zpp p.svelte-987zpp{margin:0.5rem 0;color:var(--text-secondary)}.trouble-item.svelte-987zpp code.svelte-987zpp{display:inline-block;padding:0.25rem 0.5rem;background:var(--surface-primary);border:1px solid var(--border);border-radius:4px}.next-steps.svelte-987zpp.svelte-987zpp{background:var(--surface-secondary);border-radius:8px;padding:1.5rem}.next-steps.svelte-987zpp ul.svelte-987zpp{margin:1rem 0 0 0;padding-left:1.5rem}.next-steps.svelte-987zpp li.svelte-987zpp{margin-bottom:0.5rem}.next-steps.svelte-987zpp a.svelte-987zpp{color:var(--primary);text-decoration:none}.next-steps.svelte-987zpp a.svelte-987zpp:hover{text-decoration:underline}@media(max-width: 768px){.installation-guide.svelte-987zpp.svelte-987zpp{padding:1rem}.mode-cards.svelte-987zpp.svelte-987zpp{grid-template-columns:1fr}}",
map: `{"version":3,"file":"+page.svelte","sources":["+page.svelte"],"sourcesContent":["<script>\\n import { Terminal, Download, CheckCircle, AlertCircle, Cpu, HardDrive, Globe } from 'lucide-svelte';\\n \\n const requirements = [\\n { icon: Cpu, label: 'CPU', value: '2+ cores recommended' },\\n { icon: HardDrive, label: 'RAM', value: '4GB minimum, 8GB recommended' },\\n { icon: HardDrive, label: 'Storage', value: '10GB free space' },\\n { icon: Globe, label: 'Network', value: 'Internet connection for updates' }\\n ];\\n \\n const steps = [\\n {\\n title: 'Install Docker',\\n description: 'MorphBox runs in Docker containers for consistency across platforms.',\\n commands: [\\n { label: 'macOS', cmd: 'brew install docker' },\\n { label: 'Ubuntu/Debian', cmd: 'sudo apt install docker.io docker-compose' },\\n { label: 'Windows', cmd: 'Download Docker Desktop from docker.com' }\\n ]\\n },\\n {\\n title: 'Clone Repository',\\n description: 'Get the latest MorphBox source code.',\\n commands: [\\n { label: 'HTTPS', cmd: 'git clone https://github.com/morphbox/morphbox.git' },\\n { label: 'SSH', cmd: 'git clone git@github.com:morphbox/morphbox.git' }\\n ]\\n },\\n {\\n title: 'Configure Environment',\\n description: 'Set up your environment variables.',\\n commands: [\\n { label: 'Copy template', cmd: 'cp .env.example .env' },\\n { label: 'Edit settings', cmd: 'nano .env' }\\n ]\\n },\\n {\\n title: 'Start MorphBox',\\n description: 'Launch the application with Docker Compose.',\\n commands: [\\n { label: 'Standard', cmd: 'docker-compose up -d' },\\n { label: 'With persistence', cmd: 'docker-compose -f docker-compose.persist.yml up -d' }\\n ]\\n }\\n ];\\n<\/script>\\n\\n<svelte:head>\\n <title>Installation - MorphBox Documentation</title>\\n</svelte:head>\\n\\n<div class=\\"installation-guide\\">\\n <div class=\\"page-header\\">\\n <Download size={32} />\\n <h1>Installation Guide</h1>\\n </div>\\n\\n <p class=\\"intro\\">\\n Get MorphBox up and running in minutes. Choose between standard installation or persistent mode for production use.\\n </p>\\n\\n <div class=\\"requirements-section\\">\\n <h2>System Requirements</h2>\\n <div class=\\"requirements-grid\\">\\n {#each requirements as req}\\n <div class=\\"requirement-card\\">\\n <svelte:component this={req.icon} size={24} />\\n <div class=\\"requirement-info\\">\\n <div class=\\"label\\">{req.label}</div>\\n <div class=\\"value\\">{req.value}</div>\\n </div>\\n </div>\\n {/each}\\n </div>\\n </div>\\n\\n <div class=\\"installation-steps\\">\\n <h2>Installation Steps</h2>\\n \\n {#each steps as step, i}\\n <div class=\\"step\\">\\n <div class=\\"step-number\\">{i + 1}</div>\\n <div class=\\"step-content\\">\\n <h3>{step.title}</h3>\\n <p>{step.description}</p>\\n <div class=\\"commands\\">\\n {#each step.commands as cmd}\\n <div class=\\"command-block\\">\\n <div class=\\"command-label\\">{cmd.label}:</div>\\n <div class=\\"command-wrapper\\">\\n <code>{cmd.cmd}</code>\\n <button class=\\"copy-btn\\" on:click={() => navigator.clipboard.writeText(cmd.cmd)}>\\n Copy\\n </button>\\n </div>\\n </div>\\n {/each}\\n </div>\\n </div>\\n </div>\\n {/each}\\n </div>\\n\\n <div class=\\"quick-start\\">\\n <h2>Quick Start (One-liner)</h2>\\n <p>For the impatient, here's a one-line installation:</p>\\n <div class=\\"command-wrapper large\\">\\n <code>curl -fsSL https://get.morphbox.io | bash</code>\\n <button class=\\"copy-btn\\" on:click={() => navigator.clipboard.writeText('curl -fsSL https://get.morphbox.io | bash')}>\\n Copy\\n </button>\\n </div>\\n </div>\\n\\n <div class=\\"installation-modes\\">\\n <h2>Installation Modes</h2>\\n \\n <div class=\\"mode-cards\\">\\n <div class=\\"mode-card\\">\\n <h3>Standard Mode</h3>\\n <p>Best for development and testing. Quick to set up but data doesn't persist between restarts.</p>\\n <code>docker-compose up -d</code>\\n <ul>\\n <li>Quick setup</li>\\n <li>Minimal configuration</li>\\n <li>Good for testing</li>\\n </ul>\\n </div>\\n \\n <div class=\\"mode-card recommended\\">\\n <div class=\\"recommended-badge\\">Recommended</div>\\n <h3>Persistent Mode</h3>\\n <p>Production-ready setup with data persistence, session recovery, and automatic backups.</p>\\n <code>docker-compose -f docker-compose.persist.yml up -d</code>\\n <ul>\\n <li>Data persists between restarts</li>\\n <li>Terminal sessions survive</li>\\n <li>Automatic Claude updates</li>\\n <li>Custom panels preserved</li>\\n </ul>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\"configuration\\">\\n <h2>Configuration</h2>\\n \\n <h3>Environment Variables</h3>\\n <p>Key settings in your <code>.env</code> file:</p>\\n \\n <pre><code>{\`# Port Configuration\\nMORPHBOX_PORT=3000\\nWEBSOCKET_PORT=3001\\n\\n# Security\\nAUTH_SECRET=your-secret-key\\nENABLE_AUTH=true\\n\\n# Persistence\\nENABLE_PERSISTENCE=true\\nBACKUP_INTERVAL=3600\\n\\n# Custom Panels\\nCUSTOM_PANELS_DIR=~/morphbox/panels\\n\\n# Theme\\nDEFAULT_THEME=dark\`}</code></pre>\\n\\n <h3>Custom Configuration</h3>\\n <p>Create <code>morphbox.config.js</code> for advanced settings:</p>\\n \\n <pre><code>{\`export default {\\n // Terminal settings\\n terminal: {\\n shell: '/bin/bash',\\n fontSize: 14,\\n scrollback: 10000\\n },\\n \\n // Editor settings\\n editor: {\\n theme: 'vs-dark',\\n tabSize: 2,\\n wordWrap: 'on'\\n },\\n \\n // Panel defaults\\n panels: {\\n defaultLayout: 'split',\\n animationSpeed: 300\\n }\\n}\`}</code></pre>\\n </div>\\n\\n <div class=\\"verification\\">\\n <h2>Verify Installation</h2>\\n \\n <div class=\\"verify-steps\\">\\n <div class=\\"verify-step\\">\\n <CheckCircle size={20} class=\\"success\\" />\\n <div>\\n <h4>Check Docker Status</h4>\\n <code>docker ps | grep morphbox</code>\\n </div>\\n </div>\\n \\n <div class=\\"verify-step\\">\\n <CheckCircle size={20} class=\\"success\\" />\\n <div>\\n <h4>Access Web Interface</h4>\\n <code>http://localhost:3000</code>\\n </div>\\n </div>\\n \\n <div class=\\"verify-step\\">\\n <CheckCircle size={20} class=\\"success\\" />\\n <div>\\n <h4>Test Terminal</h4>\\n <p>Open a terminal panel and run: <code>echo \\"Hello MorphBox!\\"</code></p>\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\"troubleshooting\\">\\n <h2>Troubleshooting</h2>\\n \\n <div class=\\"trouble-item\\">\\n <div class=\\"trouble-header\\">\\n <AlertCircle size={20} />\\n <h4>Port Already in Use</h4>\\n </div>\\n <p>Change the port in your <code>.env</code> file:</p>\\n <code>MORPHBOX_PORT=8080</code>\\n </div>\\n \\n <div class=\\"trouble-item\\">\\n <div class=\\"trouble-header\\">\\n <AlertCircle size={20} />\\n <h4>Permission Denied</h4>\\n </div>\\n <p>Add your user to the docker group:</p>\\n <code>sudo usermod -aG docker $USER</code>\\n </div>\\n \\n <div class=\\"trouble-item\\">\\n <div class=\\"trouble-header\\">\\n <AlertCircle size={20} />\\n <h4>Container Won't Start</h4>\\n </div>\\n <p>Check logs for errors:</p>\\n <code>docker-compose logs -f morphbox</code>\\n </div>\\n </div>\\n\\n <div class=\\"next-steps\\">\\n <h2>Next Steps</h2>\\n <p>Now that MorphBox is installed:</p>\\n <ul>\\n <li><a href=\\"/docs/getting-started/first-steps\\">First Steps Guide</a> - Learn the basics</li>\\n <li><a href=\\"/docs/user-guide/terminal-persistence\\">Set up persistence</a> - Keep your work safe</li>\\n <li><a href=\\"/docs/user-guide/custom-panels\\">Create custom panels</a> - Extend functionality</li>\\n <li><a href=\\"/docs/user-guide/keyboard-shortcuts\\">Learn shortcuts</a> - Work faster</li>\\n </ul>\\n </div>\\n</div>\\n\\n<style>\\n .installation-guide {\\n padding: 2rem;\\n max-width: 1000px;\\n margin: 0 auto;\\n }\\n\\n .page-header {\\n display: flex;\\n align-items: center;\\n gap: 1rem;\\n margin-bottom: 2rem;\\n }\\n\\n .page-header h1 {\\n margin: 0;\\n }\\n\\n .intro {\\n font-size: 1.1rem;\\n color: var(--text-secondary);\\n margin-bottom: 3rem;\\n }\\n\\n .requirements-section {\\n margin-bottom: 3rem;\\n }\\n\\n .requirements-grid {\\n display: grid;\\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\\n gap: 1rem;\\n margin-top: 1rem;\\n }\\n\\n .requirement-card {\\n display: flex;\\n align-items: center;\\n gap: 1rem;\\n padding: 1rem;\\n background: var(--surface-secondary);\\n border-radius: 8px;\\n }\\n\\n .requirement-info .label {\\n font-weight: 600;\\n color: var(--text-primary);\\n }\\n\\n .requirement-info .value {\\n font-size: 0.9rem;\\n color: var(--text-secondary);\\n }\\n\\n .installation-steps {\\n margin-bottom: 3rem;\\n }\\n\\n .step {\\n display: flex;\\n gap: 1.5rem;\\n margin-bottom: 2rem;\\n }\\n\\n .step-number {\\n flex-shrink: 0;\\n width: 40px;\\n height: 40px;\\n background: var(--primary);\\n color: white;\\n border-radius: 50%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n font-weight: 600;\\n }\\n\\n .step-content {\\n flex: 1;\\n }\\n\\n .step-content h3 {\\n margin: 0 0 0.5rem 0;\\n }\\n\\n .step-content p {\\n margin: 0 0 1rem 0;\\n color: var(--text-secondary);\\n }\\n\\n .commands {\\n display: flex;\\n flex-direction: column;\\n gap: 0.5rem;\\n }\\n\\n .command-block {\\n display: flex;\\n flex-direction: column;\\n gap: 0.25rem;\\n }\\n\\n .command-label {\\n font-size: 0.85rem;\\n color: var(--text-secondary);\\n font-weight: 500;\\n }\\n\\n .command-wrapper {\\n display: flex;\\n align-items: center;\\n gap: 0.5rem;\\n background: var(--surface-primary);\\n border: 1px solid var(--border);\\n border-radius: 4px;\\n padding: 0.75rem;\\n }\\n\\n .command-wrapper.large {\\n padding: 1rem;\\n margin-top: 1rem;\\n }\\n\\n code {\\n flex: 1;\\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\\n font-size: 0.9rem;\\n }\\n\\n .copy-btn {\\n padding: 0.25rem 0.5rem;\\n background: var(--surface-secondary);\\n border: 1px solid var(--border);\\n border-radius: 4px;\\n font-size: 0.85rem;\\n cursor: pointer;\\n transition: all 0.2s;\\n }\\n\\n .copy-btn:hover {\\n background: var(--surface-tertiary);\\n }\\n\\n .quick-start {\\n background: var(--surface-secondary);\\n border-radius: 8px;\\n padding: 1.5rem;\\n margin-bottom: 3rem;\\n }\\n\\n .installation-modes {\\n margin-bottom: 3rem;\\n }\\n\\n .mode-cards {\\n display: grid;\\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\\n gap: 1.5rem;\\n margin-top: 1rem;\\n }\\n\\n .mode-card {\\n position: relative;\\n background: var(--surface-secondary);\\n border: 1px solid var(--border);\\n border-radius: 8px;\\n padding: 1.5rem;\\n }\\n\\n .mode-card.recommended {\\n border-color: var(--primary);\\n box-shadow: 0 0 0 1px var(--primary);\\n }\\n\\n .recommended-badge {\\n position: absolute;\\n top: -10px;\\n right: 20px;\\n background: var(--primary);\\n color: white;\\n padding: 0.25rem 0.75rem;\\n border-radius: 4px;\\n font-size: 0.75rem;\\n font-weight: 600;\\n }\\n\\n .mode-card h3 {\\n margin: 0 0 0.5rem 0;\\n }\\n\\n .mode-card p {\\n margin: 0.5rem 0 1rem 0;\\n color: var(--text-secondary);\\n }\\n\\n .mode-card code {\\n display: block;\\n padding: 0.5rem;\\n background: var(--surface-primary);\\n border: 1px solid var(--border);\\n border-radius: 4px;\\n margin-bottom: 1rem;\\n }\\n\\n .mode-card ul {\\n margin: 0;\\n padding-left: 1.5rem;\\n }\\n\\n .configuration pre {\\n background: var(--surface-primary);\\n border: 1px solid var(--border);\\n border-radius: 4px;\\n padding: 1rem;\\n overflow-x: auto;\\n }\\n\\n .verification {\\n background: var(--surface-secondary);\\n border-radius: 8px;\\n padding: 1.5rem;\\n margin-bottom: 3rem;\\n }\\n\\n .verify-steps {\\n display: flex;\\n flex-direction: column;\\n gap: 1rem;\\n margin-top: 1rem;\\n }\\n\\n .verify-step {\\n display: flex;\\n align-items: flex-start;\\n gap: 0.75rem;\\n }\\n\\n .verify-step h4 {\\n margin: 0 0 0.25rem 0;\\n }\\n\\n .verify-step code {\\n display: inline-block;\\n padding: 0.25rem 0.5rem;\\n background: var(--surface-primary);\\n border: 1px solid var(--border);\\n border-radius: 4px;\\n }\\n\\n :global(.success) {\\n color: var(--success);\\n }\\n\\n .troubleshooting {\\n margin-bottom: 3rem;\\n }\\n\\n .trouble-item {\\n background: var(--surface-secondary);\\n border-radius: 8px;\\n padding: 1rem;\\n margin-bottom: 1rem;\\n }\\n\\n .trouble-header {\\n display: flex;\\n align-items: center;\\n gap: 0.5rem;\\n margin-bottom: 0.5rem;\\n }\\n\\n .trouble-header h4 {\\n margin: 0;\\n }\\n\\n .trouble-item p {\\n margin: 0.5rem 0;\\n color: var(--text-secondary);\\n }\\n\\n .trouble-item code {\\n display: inline-block;\\n padding: 0.25rem 0.5rem;\\n background: var(--surface-primary);\\n border: 1px solid var(--border);\\n border-radius: 4px;\\n }\\n\\n .next-steps {\\n background: var(--surface-secondary);\\n border-radius: 8px;\\n padding: 1.5rem;\\n }\\n\\n .next-steps ul {\\n margin: 1rem 0 0 0;\\n padding-left: 1.5rem;\\n }\\n\\n .next-steps li {\\n margin-bottom: 0.5rem;\\n }\\n\\n .next-steps a {\\n color: var(--primary);\\n text-decoration: none;\\n }\\n\\n .next-steps a:hover {\\n text-decoration: underline;\\n }\\n\\n (max-width: 768px) {\\n .installation-guide {\\n padding: 1rem;\\n }\\n\\n .mode-cards {\\n grid-template-columns: 1fr;\\n }\\n }\\n</style>"],"names":[],"mappings":"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"}`
};
const Page = create_ssr_component(($$result, $$props, $$bindings, slots) => {
const requirements = [
{
icon: Cpu,
label: "CPU",
value: "2+ cores recommended"
},
{
icon: Hard_drive,
label: "RAM",
value: "4GB minimum, 8GB recommended"
},
{
icon: Hard_drive,
label: "Storage",
value: "10GB free space"
},
{
icon: Globe,
label: "Network",
value: "Internet connection for updates"
}
];
const steps = [
{
title: "Install Docker",
description: "MorphBox runs in Docker containers for consistency across platforms.",
commands: [
{
label: "macOS",
cmd: "brew install docker"
},
{
label: "Ubuntu/Debian",
cmd: "sudo apt install docker.io docker-compose"
},
{
label: "Windows",
cmd: "Download Docker Desktop from docker.com"
}
]
},
{
title: "Clone Repository",
description: "Get the latest MorphBox source code.",
commands: [
{
label: "HTTPS",
cmd: "git clone https://github.com/morphbox/morphbox.git"
},
{
label: "SSH",
cmd: "git clone git@github.com:morphbox/morphbox.git"
}
]
},
{
title: "Configure Environment",
description: "Set up your environment variables.",
commands: [
{
label: "Copy template",
cmd: "cp .env.example .env"
},
{ label: "Edit settings", cmd: "nano .env" }
]
},
{
title: "Start MorphBox",
description: "Launch the application with Docker Compose.",
commands: [
{
label: "Standard",
cmd: "docker-compose up -d"
},
{
label: "With persistence",
cmd: "docker-compose -f docker-compose.persist.yml up -d"
}
]
}
];
$$result.css.add(css);
return `${$$result.head += `<!-- HEAD_svelte-1xe0rd5_START -->${$$result.title = `<title>Installation - MorphBox Documentation</title>`, ""}<!-- HEAD_svelte-1xe0rd5_END -->`, ""} <div class="installation-guide svelte-987zpp"><div class="page-header svelte-987zpp">${validate_component(Download, "Download").$$render($$result, { size: 32 }, {}, {})} <h1 class="svelte-987zpp" data-svelte-h="svelte-1c1peq4">Installation Guide</h1></div> <p class="intro svelte-987zpp" data-svelte-h="svelte-dfwciv">Get MorphBox up and running in minutes. Choose between standard installation or persistent mode for production use.</p> <div class="requirements-section svelte-987zpp"><h2 data-svelte-h="svelte-1f9dk5f">System Requirements</h2> <div class="requirements-grid svelte-987zpp">${each(requirements, (req) => {
return `<div class="requirement-card svelte-987zpp">${validate_component(req.icon || missing_component, "svelte:component").$$render($$result, { size: 24 }, {}, {})} <div class="requirement-info svelte-987zpp"><div class="label svelte-987zpp">${escape(req.label)}</div> <div class="value svelte-987zpp">${escape(req.value)}</div></div> </div>`;
})}</div></div> <div class="installation-steps svelte-987zpp"><h2 data-svelte-h="svelte-1rwahlh">Installation Steps</h2> ${each(steps, (step, i) => {
return `<div class="step svelte-987zpp"><div class="step-number svelte-987zpp">${escape(i + 1)}</div> <div class="step-content svelte-987zpp"><h3 class="svelte-987zpp">${escape(step.title)}</h3> <p class="svelte-987zpp">${escape(step.description)}</p> <div class="commands svelte-987zpp">${each(step.commands, (cmd) => {
return `<div class="command-block svelte-987zpp"><div class="command-label svelte-987zpp">${escape(cmd.label)}:</div> <div class="command-wrapper svelte-987zpp"><code class="svelte-987zpp">${escape(cmd.cmd)}</code> <button class="copy-btn svelte-987zpp" data-svelte-h="svelte-1qgnsj0">Copy
</button></div> </div>`;
})} </div></div> </div>`;
})}</div> <div class="quick-start svelte-987zpp"><h2 data-svelte-h="svelte-1fa1inz">Quick Start (One-liner)</h2> <p data-svelte-h="svelte-1nppkux">For the impatient, here's a one-line installation:</p> <div class="command-wrapper large svelte-987zpp"><code class="svelte-987zpp" data-svelte-h="svelte-byep9p">curl -fsSL https://get.morphbox.io | bash</code> <button class="copy-btn svelte-987zpp" data-svelte-h="svelte-zygkax">Copy</button></div></div> <div class="installation-modes svelte-987zpp" data-svelte-h="svelte-1h5wpxm"><h2>Installation Modes</h2> <div class="mode-cards svelte-987zpp"><div class="mode-card svelte-987zpp"><h3 class="svelte-987zpp">Standard Mode</h3> <p class="svelte-987zpp">Best for development and testing. Quick to set up but data doesn't persist between restarts.</p> <code class="svelte-987zpp">docker-compose up -d</code> <ul class="svelte-987zpp"><li>Quick setup</li> <li>Minimal configuration</li> <li>Good for testing</li></ul></div> <div class="mode-card recommended svelte-987zpp"><div class="recommended-badge svelte-987zpp">Recommended</div> <h3 class="svelte-987zpp">Persistent Mode</h3> <p class="svelte-987zpp">Production-ready setup with data persistence, session recovery, and automatic backups.</p> <code class="svelte-987zpp">docker-compose -f docker-compose.persist.yml up -d</code> <ul class="svelte-987zpp"><li>Data persists between restarts</li> <li>Terminal sessions survive</li> <li>Automatic Claude updates</li> <li>Custom panels preserved</li></ul></div></div></div> <div class="configuration svelte-987zpp"><h2 data-svelte-h="svelte-bx2tqs">Configuration</h2> <h3 data-svelte-h="svelte-1qu7z5y">Environment Variables</h3> <p data-svelte-h="svelte-fm2xbw">Key settings in your <code class="svelte-987zpp">.env</code> file:</p> <pre class="svelte-987zpp"><code class="svelte-987zpp">${escape(`# Port Configuration
MORPHBOX_PORT=3000
WEBSOCKET_PORT=3001
# Security
AUTH_SECRET=your-secret-key
ENABLE_AUTH=true
# Persistence
ENABLE_PERSISTENCE=true
BACKUP_INTERVAL=3600
# Custom Panels
CUSTOM_PANELS_DIR=~/morphbox/panels
# Theme
DEFAULT_THEME=dark`)}</code></pre> <h3 data-svelte-h="svelte-jfr615">Custom Configuration</h3> <p data-svelte-h="svelte-1bufhhb">Create <code class="svelte-987zpp">morphbox.config.js</code> for advanced settings:</p> <pre class="svelte-987zpp"><code class="svelte-987zpp">${escape(`export default {
// Terminal settings
terminal: {
shell: '/bin/bash',
fontSize: 14,
scrollback: 10000
},
// Editor settings
editor: {
theme: 'vs-dark',
tabSize: 2,
wordWrap: 'on'
},
// Panel defaults
panels: {
defaultLayout: 'split',
animationSpeed: 300
}
}`)}</code></pre></div> <div class="verification svelte-987zpp"><h2 data-svelte-h="svelte-15arycz">Verify Installation</h2> <div class="verify-steps svelte-987zpp"><div class="verify-step svelte-987zpp">${validate_component(Circle_check_big, "CheckCircle").$$render($$result, { size: 20, class: "success" }, {}, {})} <div data-svelte-h="svelte-1ajsj32"><h4 class="svelte-987zpp">Check Docker Status</h4> <code class="svelte-987zpp">docker ps | grep morphbox</code></div></div> <div class="verify-step svelte-987zpp">${validate_component(Circle_check_big, "CheckCircle").$$render($$result, { size: 20, class: "success" }, {}, {})} <div data-svelte-h="svelte-1a8vuot"><h4 class="svelte-987zpp">Access Web Interface</h4> <code class="svelte-987zpp">http://localhost:3000</code></div></div> <div class="verify-step svelte-987zpp">${validate_component(Circle_check_big, "CheckCircle").$$render($$result, { size: 20, class: "success" }, {}, {})} <div data-svelte-h="svelte-1danrr"><h4 class="svelte-987zpp">Test Terminal</h4> <p>Open a terminal panel and run: <code class="svelte-987zpp">echo "Hello MorphBox!"</code></p></div></div></div></div> <div class="troubleshooting svelte-987zpp"><h2 data-svelte-h="svelte-n7t7a8">Troubleshooting</h2> <div class="trouble-item svelte-987zpp"><div class="trouble-header svelte-987zpp">${validate_component(Circle_alert, "AlertCircle").$$render($$result, { size: 20 }, {}, {})} <h4 class="svelte-987zpp" data-svelte-h="svelte-1slvz99">Port Already in Use</h4></div> <p class="svelte-987zpp" data-svelte-h="svelte-4xorn6">Change the port in your <code class="svelte-987zpp">.env</code> file:</p> <code class="svelte-987zpp" data-svelte-h="svelte-zywo4a">MORPHBOX_PORT=8080</code></div> <div class="trouble-item svelte-987zpp"><div class="trouble-header svelte-987zpp">${validate_component(Circle_alert, "AlertCircle").$$render($$result, { size: 20 }, {}, {})} <h4 class="svelte-987zpp" data-svelte-h="svelte-2b5u0c">Permission Denied</h4></div> <p class="svelte-987zpp" data-svelte-h="svelte-1nxlxpu">Add your user to the docker group:</p> <code class="svelte-987zpp" data-svelte-h="svelte-14tgc98">sudo usermod -aG docker $USER</code></div> <div class="trouble-item svelte-987zpp"><div class="trouble-header svelte-987zpp">${validate_component(Circle_alert, "AlertCircle").$$render($$result, { size: 20 }, {}, {})} <h4 class="svelte-987zpp" data-svelte-h="svelte-a7csoy">Container Won't Start</h4></div> <p class="svelte-987zpp" data-svelte-h="svelte-6poead">Check logs for errors:</p> <code class="svelte-987zpp" data-svelte-h="svelte-28qqn4">docker-compose logs -f morphbox</code></div></div> <div class="next-steps svelte-987zpp" data-svelte-h="svelte-xt48r2"><h2>Next Steps</h2> <p>Now that MorphBox is installed:</p> <ul class="svelte-987zpp"><li class="svelte-987zpp"><a href="/docs/getting-started/first-steps" class="svelte-987zpp">First Steps Guide</a> - Learn the basics</li> <li class="svelte-987zpp"><a href="/docs/user-guide/terminal-persistence" class="svelte-987zpp">Set up persistence</a> - Keep your work safe</li> <li class="svelte-987zpp"><a href="/docs/user-guide/custom-panels" class="svelte-987zpp">Create custom panels</a> - Extend functionality</li> <li class="svelte-987zpp"><a href="/docs/user-guide/keyboard-shortcuts" class="svelte-987zpp">Learn shortcuts</a> - Work faster</li></ul></div> </div>`;
});
export { Page as default };
//# sourceMappingURL=_page.svelte-BCdp_f8y.js.map