diff --git a/docs/getting-started/installation/docker.mdx b/docs/getting-started/installation/docker.mdx index be3a502d..aaa4c8cc 100644 --- a/docs/getting-started/installation/docker.mdx +++ b/docs/getting-started/installation/docker.mdx @@ -1,3 +1,5 @@ +import { DockerInstallSnippet } from '../../../src/components/pages/installation/docker/dynamic-docker-install' + # Docker Docker is our recommended installation method for beginners and professionals. It is easy to use, ships with all dependencies inside a single container and is easy to use and maintain. @@ -13,27 +15,8 @@ We recommend [NetworkChuck's Docker Containers 101](https://www.youtube.com/watc ### Installation -To install Homarr using Docker Compose, simply create a file called ``docker-compose.yml`` and paste the following code into it. - -```yml title="docker-compose.yml" -#---------------------------------------------------------------------# -# Homarr - A simple, yet powerful dashboard for your server. # -#---------------------------------------------------------------------# -services: - homarr: - container_name: homarr - image: ghcr.io/homarr-labs/homarr:latest - restart: unless-stopped - volumes: - - /var/run/docker.sock:/var/run/docker.sock # Optional, only if you want docker integration - - ./homarr/appdata:/appdata - environment: - - SECRET_ENCRYPTION_KEY=your_64_character_hex_string # <--- can be generated with `openssl rand -hex 32` - ports: - - '7575:7575' -``` - -Then, run ``docker compose up -d`` in the same directory. This will start the Homarr container in the background. + +Finally, run ``docker compose up -d`` in the same directory. This will start the Homarr container in the background. :::caution diff --git a/src/components/pages/installation/docker/dynamic-docker-install.tsx b/src/components/pages/installation/docker/dynamic-docker-install.tsx new file mode 100644 index 00000000..4bb3b6ac --- /dev/null +++ b/src/components/pages/installation/docker/dynamic-docker-install.tsx @@ -0,0 +1,53 @@ +import type React from 'react'; +import CodeBlock from '@theme/CodeBlock'; +import Admonition from '@theme/Admonition'; +import { useEffect, useState } from 'react'; + +const generateRandomHex = (length = 64): string => { + const array = new Uint8Array(length / 2); + crypto.getRandomValues(array); + return Array.from(array, (byte) => byte.toString(16).padStart(2, '0')).join(''); +}; + +export const DockerInstallSnippet: React.FC = () => { + const [randomHex, setRandomHex] = useState(''); + const generateNewHex = () => { + setRandomHex(generateRandomHex()); + }; + + useEffect(() => { + generateNewHex(); + }, []); + + return ( +
+

+ First, create a docker-compose.yml file with the following content: +

+ + {`#---------------------------------------------------------------------# +# Homarr - A simple, yet powerful dashboard for your server. # +#---------------------------------------------------------------------# +services: + homarr: + container_name: homarr + image: ghcr.io/homarr-labs/homarr:latest + restart: unless-stopped + volumes: + - /var/run/docker.sock:/var/run/docker.sock # Optional, only if you want docker integration + - ./homarr/appdata:/appdata + environment: + - SECRET_ENCRYPTION_KEY=${randomHex} + ports: + - '7575:7575' + `} + + + Key provided above for the SECRET_ENCRYPTION_KEY environment variable is + randomly generated using your browser cryotography API. It will be different every time You + can generate one yourself using openssl rand -hex 32 + + +
+ ); +};