stronghold/README.md
robojerk c31e48e2b1 Proof of concept: Container management with FastAPI backend
- FastAPI backend with REST API endpoints
- SQLite database for container metadata
- Docker/Podman SDK integration with label filtering
- Frontend: Server creation form and management page
- Container operations: create, list, start, stop, delete
- Single container deployment (nginx + Python + supervisor)
- Support for Docker and Podman (rootless)
- Volume management for persistent data
2025-10-31 11:50:31 -07:00

57 lines
1.6 KiB
Markdown

# Stronghold
A web ui to manage minecraft server using the itzg docker container
https://github.com/itzg/docker-minecraft-server
Also manage proxy servers like velocity, bungeecord
## Development
See design.md for design notes
## Quick Start (Proof of Concept)
Stronghold is a web UI for managing Minecraft servers using Docker/Podman containers.
### Running the POC
**Using Docker Compose (Docker users)**
```bash
docker-compose up -d --build
```
**Using Podman Compose (Podman users)**
```bash
podman-compose up -d --build
```
**Note**: The container needs access to your Docker/Podman socket to manage containers. The compose file mounts:
- `/var/run/docker.sock` (Docker)
- `/run/podman/podman.sock` (Podman)
Then open http://localhost:8080 in your browser.
### Features
**Current POC Features:**
- ✅ Generate docker-compose.yml files
- ✅ Create Minecraft server containers directly
- ✅ List and manage containers
- ✅ Start/Stop/Delete containers
- ✅ Support for Docker and Podman
- ✅ SQLite database for container metadata
- ✅ Multiple server types (Vanilla, Paper, Forge, Fabric, etc.)
- ✅ Modpack support (CurseForge, Modrinth, URL, Local)
- ✅ Advanced configuration options
**Pages:**
- `/` (index.html) - Create new servers
- `/manage.html` - Manage existing servers
### Architecture
- **Frontend**: Static HTML/CSS/JavaScript
- **Backend**: Python FastAPI
- **Database**: SQLite (stored in `./data/stronghold.db`)
- **Container Engine**: Docker SDK (works with both Docker and Podman)
All containers created by Stronghold are labeled with `stronghold.managed=true` to isolate them from other containers.