From 1d02d4308f404c8fd1867b441d7429bb3800225e Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 29 Dec 2024 17:19:17 -0600 Subject: [PATCH] feat: add unifi template --- apps/dokploy/public/templates/unifi.webp | Bin 0 -> 19004 bytes apps/dokploy/templates/templates.ts | 15 ++++++ .../templates/unifi/docker-compose.yml | 48 ++++++++++++++++++ apps/dokploy/templates/unifi/index.ts | 27 ++++++++++ 4 files changed, 90 insertions(+) create mode 100644 apps/dokploy/public/templates/unifi.webp create mode 100644 apps/dokploy/templates/unifi/docker-compose.yml create mode 100644 apps/dokploy/templates/unifi/index.ts diff --git a/apps/dokploy/public/templates/unifi.webp b/apps/dokploy/public/templates/unifi.webp new file mode 100644 index 0000000000000000000000000000000000000000..ffe1f244084de7041d4db222e77687ada7254acf GIT binary patch literal 19004 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 eA!Wnon* import("./onedev/index").then((m) => m.generate), }, + { + id: "unifi", + name: "Unifi Network", + version: "11.6.6", + description: + "Unifi Network is an open-source enterprise network management platform for wireless networks.", + logo: "unifi.webp", + links: { + github: "https://github.com/ubiquiti", + website: "https://www.ui.com/", + docs: "https://help.ui.com/hc/en-us/articles/360012282453-Self-Hosting-a-UniFi-Network-Server", + }, + tags: ["self-hosted", "networking"], + load: () => import("./unifi/index").then((m) => m.generate), + }, ]; diff --git a/apps/dokploy/templates/unifi/docker-compose.yml b/apps/dokploy/templates/unifi/docker-compose.yml new file mode 100644 index 00000000..ee531f67 --- /dev/null +++ b/apps/dokploy/templates/unifi/docker-compose.yml @@ -0,0 +1,48 @@ +services: + unifi-network-application: + image: lscr.io/linuxserver/unifi-network-application:latest + environment: + - PUID=1000 # User ID + - PGID=1000 # Group ID + - TZ=Etc/UTC # Timezone + - MONGO_HOST=unifi-db + - MONGO_USER=unifi + - MONGO_PASS=unifi_password + - MONGO_PORT=27017 + - MONGO_DBNAME=unifi + - MEM_LIMIT=1024 + - MEM_STARTUP=1024 + - MONGO_TLS= #optional # MongoDB TLS setting + - MONGO_AUTHSOURCE= #optional # MongoDB authentication source + volumes: # Volumes to mount in the container + - ../files/config:/config # Map host directory to container directory + ports: + - 8443:8443 # HTTPS portal + # - 3478:3478/udp # STUN service + # - 10001:10001/udp # UniFi AP discovery + # - 8080:8080 # HTTP portal + # - 1900:1900/udp #optional # For DLNA + # - 8843:8843 #optional # HTTPS guest portal + # - 8880:8880 #optional # HTTP guest portal + # - 6789:6789 #optional # Mobile speed test port + # - 5514:5514/udp #optional # Remote syslog port + restart: unless-stopped + depends_on: + - unifi-db + networks: + - dokploy-network + + unifi-db: + image: mongo:4.4 + volumes: + - ../files/db/data:/data/db + - ../files/init-mongo.sh:/docker-entrypoint-initdb.d/init-mongo.sh:ro + ports: + - 27017 + restart: unless-stopped + networks: + - dokploy-network + +networks: + dokploy-network: + external: true diff --git a/apps/dokploy/templates/unifi/index.ts b/apps/dokploy/templates/unifi/index.ts new file mode 100644 index 00000000..975ce63d --- /dev/null +++ b/apps/dokploy/templates/unifi/index.ts @@ -0,0 +1,27 @@ +import type { Schema, Template } from "../utils"; + +export function generate(schema: Schema): Template { + const mounts: Template["mounts"] = [ + { + filePath: "init-mongo.sh", + content: ` + #!/bin/bash + mongo <