Skip to content

Commit 890dc68

Browse files
authored
Merge pull request #25 from Ketbome/feature/native-file-browser
Feature/native file browser
2 parents a4afbaa + a1abaf3 commit 890dc68

104 files changed

Lines changed: 2655 additions & 1198 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Readme.md

Lines changed: 6 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,11 @@ I got tired of managing Minecraft servers through terminal and tried several pan
2626
- Handles multiple servers in separate containers
2727
- Real-time logs with error detection
2828
- Resource monitoring (CPU, RAM)
29-
- Built-in file editor
29+
- Built-in file browser with drag & drop upload
30+
- Code editor with syntax highlighting
3031
- Automatic backups
3132
- Supports all server types: Vanilla, Paper, Forge, Fabric, Spigot, Purpur, etc.
32-
- CurseForge modpack installation
33+
- CurseForge & Modrinth mod auto-download
3334
- Multi-language (English/Spanish/Dutch)
3435

3536
## Requirements
@@ -61,27 +62,13 @@ services:
6162
# - HOST_LAN_IP=${HOST_LAN_IP} # Optional: Your LAN IP for local network play
6263

6364
# Frontend Configuration
64-
- NEXT_PUBLIC_FILEBROWSER_URL=${NEXT_PUBLIC_FILEBROWSER_URL:-http://localhost:8080}
6565
- NEXT_PUBLIC_BACKEND_URL=${NEXT_PUBLIC_BACKEND_URL:-http://localhost:8091}
6666
- NEXT_PUBLIC_DEFAULT_LANGUAGE=${NEXT_PUBLIC_DEFAULT_LANGUAGE:-en}
6767
volumes:
6868
- ${BASE_DIR:-$PWD}/servers:/app/servers
6969
- /var/run/docker.sock:/var/run/docker.sock
7070
- ${BASE_DIR:-$PWD}/data:/app/data
7171
restart: always
72-
73-
filebrowser:
74-
image: filebrowser/filebrowser:latest
75-
command: --database /database/filebrowser.db
76-
ports:
77-
- "${FILEBROWSER_PORT:-8080}:80"
78-
volumes:
79-
- ${BASE_DIR:-$PWD}/servers:/srv
80-
- filebrowser-db:/database
81-
restart: always
82-
83-
volumes:
84-
filebrowser-db:
8572
```
8673
8774
Then:
@@ -111,9 +98,8 @@ docker compose -f docker-compose.split.yml up -d
11198

11299
This setup exposes:
113100

114-
- Backend on `9090`
101+
- Backend on `8091`
115102
- Frontend on `3000`
116-
- Filebrowser on `8080`
117103

118104
#### Example with nginx-proxy + Let's Encrypt
119105

@@ -122,7 +108,7 @@ Add these to each service in `docker-compose.split.yml`:
122108
```yaml
123109
networks:
124110
default:
125-
name: ngnix
111+
name: nginx
126112
external: true
127113

128114
services:
@@ -147,25 +133,13 @@ services:
147133
- LETSENCRYPT_HOST=api.yourdomain.com
148134
- LETSENCRYPT_EMAIL=your-email@example.com
149135
# ... rest of config
150-
151-
filebrowser:
152-
image: filebrowser/filebrowser:latest
153-
expose:
154-
- 80
155-
environment:
156-
- VIRTUAL_HOST=files.yourdomain.com
157-
- VIRTUAL_PORT=80
158-
- LETSENCRYPT_HOST=files.yourdomain.com
159-
- LETSENCRYPT_EMAIL=your-email@example.com
160-
# ... rest of config
161136
```
162137

163138
Put all services on the same network as nginx-proxy.
164139

165140
### Access
166141

167142
- **Web Panel**: http://localhost:3000
168-
- **Filebrowser**: http://localhost:8080
169143

170144
**Default login:** `admin` / `admin` (change this after first login)
171145

@@ -174,7 +148,6 @@ Put all services on the same network as nginx-proxy.
174148
If you want to access the panel from outside your local network, you'll need to use your server's public IP address or DNS name. Always use the protocol prefix:
175149

176150
- **Web Panel**: `http://your-server-ip:3000` or `https://your-domain.com`
177-
- **Filebrowser**: `http://your-server-ip:8080` or `https://files.your-domain.com`
178151

179152
**Important - Update environment variables:**
180153

@@ -187,7 +160,6 @@ environment:
187160

188161
# Frontend - Must point to your server's address
189162
- NEXT_PUBLIC_BACKEND_URL=http://your-server-ip:8091 # or https://api.your-domain.com
190-
- NEXT_PUBLIC_FILEBROWSER_URL=http://your-server-ip:8080 # or https://files.your-domain.com
191163
```
192164
193165
**Notes:**
@@ -238,27 +210,6 @@ Now when a Minecraft server is running, the panel will show both:
238210
- **Public IP**: For external players (obtained automatically via ipify.org)
239211
- **LAN IP**: For local network players (the IP you configured)
240212

241-
### Filebrowser setup
242-
243-
Default credentials:
244-
245-
- Username: `admin`
246-
- Password: `admin`
247-
248-
**Important:** Change the password after first login!
249-
250-
1. Login to http://localhost:8080
251-
2. Go to Settings (gear icon) → User Management
252-
3. Click on admin user and change the password
253-
254-
**Reset password:** If you forget it, delete the database and restart:
255-
256-
```bash
257-
docker compose down
258-
docker volume rm minepanel_filebrowser-db # Remove filebrowser volume
259-
docker compose up -d
260-
```
261-
262213
## Database
263214

264215
Minepanel uses SQLite for data persistence. The database file is stored at `./data/minepanel.db`.
@@ -289,7 +240,7 @@ Minepanel runs in a single container with:
289240
- Backend (NestJS) on port 8091
290241
- Frontend (Next.js) on port 3000
291242
- SQLite database for data persistence
292-
- Filebrowser for file management
243+
- Built-in file browser (no external dependencies)
293244

294245
The backend talks to Docker through the socket to create and manage server containers. Each Minecraft server runs in its own isolated container.
295246

@@ -363,7 +314,6 @@ docker buildx build --platform linux/amd64,linux/arm64 -t username/minepanel:lat
363314
- Better log viewer with filtering and search
364315
- Edit server.properties from the UI
365316
- Reverse proxy config helper
366-
- CurseForge modpack browser
367317

368318
### Planned
369319

0 commit comments

Comments
 (0)