Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions blueprints/minepanel/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
services:
backend:
image: ketbom/minepanel-backend:1.7.1
restart: unless-stopped
environment:
- NODE_ENV=production
- FRONTEND_URL=${FRONTEND_URL}
- JWT_SECRET=${JWT_SECRET}
- CLIENT_PASSWORD=${CLIENT_PASSWORD}
- CLIENT_USERNAME=${CLIENT_USERNAME}
- BASE_DIR=${BASE_DIR}
volumes:
- minepanel-servers:/app/servers
- minepanel-data:/app/data
Copy link

Copilot AI Jan 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mounting the Docker socket grants the container full control over the host's Docker daemon, which is a significant security risk. While this may be necessary for Minepanel's functionality to manage Minecraft server containers, this creates a potential privilege escalation vector. Consider documenting this security implication in the template description or adding a warning comment in the docker-compose.yml file.

Suggested change
- minepanel-data:/app/data
- minepanel-data:/app/data
# WARNING: Mounting the Docker socket gives this container full control over the host's Docker daemon.
# Only use this in trusted environments and be aware this is a potential privilege escalation vector.

Copilot uses AI. Check for mistakes.
- /var/run/docker.sock:/var/run/docker.sock

frontend:
image: ketbom/minepanel-frontend:1.7.1
restart: unless-stopped
environment:
- NEXT_PUBLIC_BACKEND_URL=${NEXT_PUBLIC_BACKEND_URL}
- NEXT_PUBLIC_DEFAULT_LANGUAGE=${NEXT_PUBLIC_DEFAULT_LANGUAGE}
depends_on:
- backend

volumes:
minepanel-servers:
minepanel-data:
Binary file added blueprints/minepanel/minepanel.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
29 changes: 29 additions & 0 deletions blueprints/minepanel/template.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
[variables]
frontend_domain = "${domain}"
backend_domain = "${domain}"
jwt_secret = "${base64:32}"
client_username = "admin"
client_password = "${password:16}"
default_language = "en"

[config]
mounts = []

[[config.domains]]
serviceName = "frontend"
port = 3_000
host = "${frontend_domain}"

[[config.domains]]
serviceName = "backend"
port = 8_091
host = "api-${backend_domain}"

[config.env]
JWT_SECRET = "${jwt_secret}"
CLIENT_USERNAME = "${client_username}"
CLIENT_PASSWORD = "${client_password}"
FRONTEND_URL = "http://${frontend_domain}"
NEXT_PUBLIC_BACKEND_URL = "http://api-${backend_domain}"
NEXT_PUBLIC_DEFAULT_LANGUAGE = "${default_language}"
BASE_DIR = "/app"
Comment on lines +22 to +29
Copy link

Copilot AI Jan 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The [config.env] section defines environment variables but doesn't specify which service they apply to. According to the docker-compose.yml, the backend service needs JWT_SECRET, CLIENT_USERNAME, CLIENT_PASSWORD, FRONTEND_URL, and BASE_DIR, while the frontend needs NEXT_PUBLIC_BACKEND_URL and NEXT_PUBLIC_DEFAULT_LANGUAGE. This configuration will apply all variables to all services, which works but is not explicit. Consider using the array format with service-specific variables like env = [...] in the README examples, or document that all variables are shared across services.

Suggested change
[config.env]
JWT_SECRET = "${jwt_secret}"
CLIENT_USERNAME = "${client_username}"
CLIENT_PASSWORD = "${client_password}"
FRONTEND_URL = "http://${frontend_domain}"
NEXT_PUBLIC_BACKEND_URL = "http://api-${backend_domain}"
NEXT_PUBLIC_DEFAULT_LANGUAGE = "${default_language}"
BASE_DIR = "/app"
[[config.env]]
serviceName = "backend"
env = [
"JWT_SECRET=${jwt_secret}",
"CLIENT_USERNAME=${client_username}",
"CLIENT_PASSWORD=${client_password}",
"FRONTEND_URL=http://${frontend_domain}",
"BASE_DIR=/app",
]
[[config.env]]
serviceName = "frontend"
env = [
"NEXT_PUBLIC_BACKEND_URL=http://api-${backend_domain}",
"NEXT_PUBLIC_DEFAULT_LANGUAGE=${default_language}",
]

Copilot uses AI. Check for mistakes.
18 changes: 18 additions & 0 deletions meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -3921,6 +3921,24 @@
"storage"
]
},
{
"id": "minepanel",
"name": "Minepanel",
"version": "1.7.1",
"description": "Web panel for managing Minecraft servers with Docker. Create, configure, start/stop, and monitor multiple instances from a modern UI.",
"logo": "minepanel.webp",
"links": {
"github": "https://github.com/Ketbome/minepanel",
"website": "https://minepanel.ketbome.lat",
"docs": "https://minepanel.ketbome.lat"
},
"tags": [
"gaming",
"minecraft",
"server-management",
"docker"
]
},
{
"id": "mixpost",
"name": "Mixpost",
Expand Down
Loading